CaDDN:基于單目的3D目標檢測新方法(CVPR2021)
以下文章來源于CV研習社 ,作者元氣滿滿的打工人
作者丨元氣滿滿的打工人
來源丨CV研習社
文章導讀
導讀:在自動駕駛的技術中,3D目標檢測能夠提更加豐富的信息,如:目標的類別、位置和姿態(tài)。因此,與2D檢測相比,3D目標檢測的難度更大。目前很多的方法都是使用激光雷達進行3D目標檢測,但激光雷達的方案成本高且壽命短,而相機的方案成本低且壽命長。小編今天要分享的論文是基于單目的3D目標檢測方法CaDDN,名為:Categorical Depth Distribution Network for Monocular 3D Object Detection。讓我們一起來學習一下吧。
Part 01
單目3D目標檢測的優(yōu)點和難點
優(yōu)點:
在自動駕駛中,相比于使用昂貴的激光雷達等傳感器,相機傳感器成本低廉,且壽命長、易于安裝,同時圖像的檢測技術相對更加成熟,有利于研究工作的快速進行。
難點:
單目3D目標檢測的難點就在于對深度信息的預測,而這也恰恰是激光雷達的優(yōu)勢所在。在單目的方案中,將實例從3D空間投影到2D圖像平面就必然會損失圖像的深度信息。因此,對于深度信息的處理一直是單目目標檢測的重點研究內容。
Part 02
單目3D目標檢測方法分類
單目3D目標檢測的方法通常都需要生成中間表示來輔助三維檢測任務?;谶@些表示,方法可以分為三類,分別是直接檢測、基于深度檢測和基于網格檢測。
直接檢測:直接檢測的方法可以結合二維圖像平面和三維空間之間的關系來輔助檢測,例如通過關鍵點檢測的方法,并使用已知的幾何特征來協(xié)助3D box的構建。這類方法較為簡單高效,但由于沒有顯式的學習深度信息,因此性能不如其他的方法。
基于深度檢測:基于深度的方法通常都會創(chuàng)建一個深度預測的分支,輸出結果是一張深度圖來輔助對于深度的檢測。深度圖可以和圖像結合使用,也可以轉化為點云。但由于在訓練時,檢測和深度預測是分離訓練的,這可能會到導致一些信息的損失,從而影響網絡的整體效果。
基于網格的方法:基于網格的方法通過預測BEV網格作為3D目標檢測的輸入,從而避免了對深度信息的直接預測。如OFT的方法提出了一種體素網格,通過把體素投影到圖像平面上進而采樣圖像特征將其轉換成BEV的形式。但缺點是多個體素會投影到相同的圖像特征上,造成特征的重疊,而導致網絡性能的降低。
Part 03
CaDDN網絡的提出
CaDDN網絡結合了上面提到三種方法的優(yōu)點,所提出的網絡通過以端到端的方式聯(lián)合執(zhí)行深度估計和3D目標檢測,并利用深度估計生成具有準確和局部特征的有意義的鳥瞰圖表示,網絡結構圖如下。
網絡結構圖
CaDDN網絡的創(chuàng)新點:
(1)網絡預測像素級分類深度分布以準確定位 3D 空間中的圖像信息。每個預測分布描述了像素屬于一組預定義深度容器的概率。
(2)網絡以端到端的方式學習深度分布,聯(lián)合優(yōu)化精確的深度預測和準確的3D目標檢測。
(3)網絡提出使用分類深度分布和投影幾何從單個圖像生成高質量鳥瞰圖場景表示的新方法。
CaDDN的性能表現(xiàn):網絡在KITTI 3D目標檢測數據集中的汽車和行人的檢測任務中,在文章發(fā)表時,在所有的方法中排名第一。同時也是第一個在Waymo數據集下提交檢測結果的網絡。
Part 04
CaDDN的具體實現(xiàn)
文章大體上分為幾個部分,為每個像素預測深度網格分布、體素網格映射、生成鳥瞰圖和3D檢測,下面是每個部分的具體解析。
(1)圖像特征--->視錐特征
在這一步驟中,將會每個像素預測深度網格分布。網絡的輸入是(H×W×3)的彩色圖片,輸出是(H×W×D×C)的視錐特征圖,其中C為特征通道數,D為劃分好的深度網格。在這步驟中間有幾個過程,過程如下圖所示:
首先輸入的彩色圖像需要經過image backbone提取圖像特征,通道數為C。之后會分為二個分支,第一個分支進行圖像特征的降維,對圖像特征進行提煉。第二個分支是進行分類深度分布計算,為圖像特征中的每個像素預測D個概率,其中每個概率表示深度值屬于指定depth bin的置信度。
然后,圖像特征和分類深度分布做外積操作生成視椎體特征網格。具體的操作過程如下圖所示。
使用(u, v, c) 表示圖像特征F中的坐標,(u, v, di)表示分類深度分布D中的坐標,其中(u, v)是特征像素位置,c是通道索引,di是深度bin索引。為了生成視錐特征網格G,每個特征像素F(u,v)由其關聯(lián)的D(u,v)中的depth bin概率加權,以填充到深度軸di處。特征像素可以使用外積按深度概率加權,定義如下:
分類深度分布D與圖像特征F外積之后得到視椎體特征矩陣G(WF×HF×D×C),即(WF×HF)每個像素處對應著一個D×C的矩陣。
(2)視錐特征-->體素特征
這一步的主要目的是進行視錐到3D空間的映射過程,即對于體素空間中的點(x,y,z),找到其在視錐空間中的映射點,通過trilinear interpolation獲取視錐體網格采樣點深度值,將其填充至體素空間。具體的操作過程如下圖。
體素采樣點[x, y, z]在每個體素的中心產生并變換到視錐網格,形成視錐網格采樣點[u, v, dc],其中dc是連續(xù)的沿視錐深度軸di的深度值。深度離散化方法將每個連續(xù)深度值dc轉換為離散深度bin索引di,形成視錐網格采樣點[u, v, di]。最后通過trilinear interpolation獲取視椎體網格采樣點[u, v, di]處的數值,并將該數值復制到體素采樣點[x, y, z]處。
(3)體素特征-->鳥瞰圖(BEV)
直接折疊體素特征V(X×Y×Z×C)就可以得到鳥瞰圖B(X×Y×C)。具體的操作過程是:將Z軸和C軸拼接起來,然后采用1x1 convolution + BatchNorm +ReLU layer將(Z×C)通道降維至C,就得到了鳥瞰圖B(X×Y×C)。
(4)3D目標檢測
文章在生成的鳥瞰圖上執(zhí)行3D目標檢測,這里作者使用了PointPillar的方法,并對網絡結構進行了一定的調整,最終完成檢測過程。
對深度進行網格化的估計是本文的創(chuàng)新點,文章給出了深度網格的監(jiān)督,其實核心方法是如何將連續(xù)值離散化。這里作者給出了3種離散方式,分別是均勻離散(UD)、間距增加的離散(SID)和線性增加的離散化(LID)。并最終選用LID,因為LID的離散化為不同深度提供了平衡的深度估計。
三種離散方式
Part 05
實驗
作者在KITTI和Waymo二大數據集上進行了實驗,實驗結果如下。
KITTI數據集:在汽車和行人的檢測任務上,CaDDN取得了較好的效果,在騎行者的檢測中,效果雖然不如MonoPSR效果好,但較其余的方法則有大幅度的提升。下表是KITTI數據集下的檢測結果。
KITTI數據集檢測結果
Waymo數據集:由于CaDDN是一個提交結果,所以作者和M3D-RPN進行了比較,同樣取得了較好的檢測結果。下表是Waymo數據集車輛類別的檢測結果。
Waymo數據集檢測結果
Part 06
總結
本文提出了一種新的單目3D目標檢測的方法,該方法可以精確的估計每個像素的分類深度分布。將深度分布和圖像特征相結合,生成保留深度置信度的鳥瞰圖表示,并用于3D目標檢測。該方法取得了較好的性能表現(xiàn),論文較先前方法的改進之處,值得學習。
本文僅做學術分享,如有侵權,請聯(lián)系刪文。
*博客內容為網友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。