導讀:3D目標檢測的主要應用場景就是自動駕駛,雖然現階段基于點云的3D目標檢測的方法的性能不斷提升,但相比于激光雷達高昂的造價以及在復雜天氣情況下的敏感性。研究人員將目光投向了基于視覺的方案,因此單目3D目標檢測逐漸成為了研究熱點。小編今天將為大家分享一篇名為Is Pseudo-Lidar needed for Monocular 3D Object detection的文章,文中提出了DD3D的方法,讓我們一起來學習一下吧。 Part 01 3D目標檢測應用背景 3D目標檢測目前應用的主要場景就是自動駕駛,汽車在行駛過程中,需要時刻感知周圍的環境,并及時獲取障礙物的3維信息。3維信息的獲取通常會依靠3D傳感器,如激光雷達,雙目相機等,但此類傳感器成本通常較高。低成本的方案是通過單目相機結合深度估計的方式,目前該方案也在大力發展中。3D目標檢測所使用的數據集大部分也就是自動駕駛數據集,類別主要是車輛和行人。通過3D目標檢測算法,可以給出障礙物的3D bbox,可以精準的判斷物體的位置和朝向,將該信息提供給規劃模塊,就可以對車輛的行駛路線進行合理的規劃。 Part 02 3D目標檢測方法分類 按輸入數據類型來劃分,可分為: 單模:Lidar or Camera 多模:Lidar + Camera 按特征提取的方式來分,可分為: Point Cloud:直接使用原始點云信息進行特征的提取; Voxel:將點云通過網格的方式進行劃分,隨后提取網格的特征信息 2D View:將3D的信息投影到2D平面中,通常采用鳥瞰圖(BEV)的視角,隨后使用成熟的2D卷積網絡進行特征的提取;
Graph:利用圖的方式,對半徑R內的點建立圖,隨后進行特征提取; Part 03 DD3D網絡的提出 當前,基于單目圖像做3D目標檢測的一個主要方向是將單目深度估計整合進來預測三維點云,從而將相機轉變為偽激光雷達傳感器。而3D檢測效果的好壞與否和深度估計網絡的性能提升高度相關。同時此類方法大都是2階段的網絡,通常網絡結構較為復雜且容易過擬合。本文提出了一種end-to-end、single-stage的單目3D目標檢測網絡DD3D(Dense Depth-pre-trained 3D Detector),網絡結構圖如下: 網絡結構圖 DD3D網絡的創新點: DD3D是一個single-stage且end-to-end的網絡,作者通過設計使得深度估計模塊在預訓練中學到的參數可以與3D檢測模塊進行共享,最終網絡能夠和偽雷達方法一樣從基于大量數據的深度估計預訓練中受益,同時又擁有端到端方法的簡單和強泛化性的優勢。偽雷達方式和DD3D方式的對比圖如下。 偽雷達方法和DD3D方法的對比 DD3D的性能表現: 該方法目前在2大數據集下獲得了SOTA的性能表現,在KITTI-3D數據集下,對車輛和行人的檢測任務中分別獲得了16.34%和9.28%的AP值,在NuScenes數據集下獲得了41.5%的mAP值。 Part 04 DD3D網絡的具體實現 DD3D是在FCOS上進行擴展的全卷積單階段網絡,可以進行3D目標檢測和稠密深度預測。網絡以FPN作為backbone進行特征的提取并輸出多尺度特征圖,在生成的每個特征圖上應用3個head進行獨立的預測任務。其中分類模塊進行對象類別的預測,并根據類別C生成對應數量的置信度。2D 檢測模塊生成預測目標的2D檢測結果。以上2個模塊和FCOS網絡的方式一致,這里不作詳細的介紹,而本文的重點內容是3D detection head的設計,下面將對該模塊進行詳細的介紹。 3D detection head的設計 在3D物體檢測中,與2D目標檢測不同,預定義的 3D detection head以FPN輸出的特征圖作為輸入,經過4個3X3的2D卷積后,對每一個的位置將會預測出12個數值,其中3D Bounding box包含10個數值,逐像素深度圖包含1個數值,3D預測置信度包含一個數值。下面將會對每一個數值的含義進行介紹: 3D bounding box包含四個物理量:q,Zc,o和δ。 q = (qw,qx,qy,qz)是用四元數表示的3D邊界框朝向,文中使用完整的 3 個自由度預測方向。 Z{c,p}這二個量值都表示和深度相關的預測信息,其中Zc表示為目標3D bbox中心的Z分量,因此只與前景特征相關。而Zp則與每個像素相關聯,更像是逐像素的depth maps。深度信息的度量值可以通過下面的轉換公式得到: 其中Z∈Z{c,p}為網絡輸出,d∈{dc,dp}為預測深度,(σl和μl)為可學習的縮放因子和偏移量,p為從焦距f計算得到的像素大小fx和fy,c為常數。 上述的公式中用到了相機的內參,而這賦予了DD3D模型以相機感知能力,使得學習到的深度不僅與圖像有關還與像素的大小密切相關。文中作者也提到了這將對穩定訓練起到重要的作用。如果再訓練時需要對圖像的尺寸進行縮放,則不需要對3D框的ground truth進行修改,只需要要調整相機的內參即可,即通過調整每一個像素的大小。 O =(?u,?v)表示從特征位置到投影到相機平面上的 3D 邊界框中心的偏移量。最終將通過反投影得到3D框中線點的3D坐標,過程為,先通過偏移量計算出3D框中心點在圖像上的投影坐標,接下來結合投影坐標、3D框中心的深度值dc和相機的內參這3部分的內容進行反投影操作,就得到了3D坐標。 δ = (δW , δH, δH) 表示 3D 邊界框的大小與特定類別物體的規范大小的偏差。通俗來說,在上面已經獲得了3D框的朝向信息和位置信息,但需要預測3D box,則還需要指導3D框的大小,即物體的長寬高信息。由于在實際中,每一類具體的物體的物理尺寸通常變化不大,因此可以通過對每一類的物體預設一個尺度(可以在訓練集中計算出每一類物體的平均尺寸),然后在此基礎上預測尺寸的偏差即可。 β3D表示 3D 邊界框預測的置信度,作用是對評估的結果進行過濾。其轉換成概率為: 將該概率與classification head中的類別概率相乘,作為最終的得分對檢測結果進行過濾。 損失函數loss的設計 分類損失和2D bbox 的損失和FCOS方法中的計算方式一樣,如下: 對于3D bbox 的loss,定義如下: 其中B*和B^和分別表示3D邊界框真值和預測值的8個頂點, 由于預測值包含:朝向、投影中心、距離和尺寸,因此在計算loss的時候,總共計算四次,分別對四個預測值進行約束。 置信度loss采用自監督損失,它使用3D框預測中的錯誤來計算3D置信度的替代目標。定義如下: 因此,DD3D的總損失定義如下: 深度預訓練 文中作者提出的DD3D的方法是一個單階段且端到端的目標檢測的方案,但為了運用偽雷達的信息,作者首先對DD3D網絡在深度估計的大型數據集上執行了深度估計的預訓練任務。同時作者在文中提到,深度估計和3D目標檢測這二條支路僅僅是最后的3×3的卷積層有區別,而其他的網絡結構相同,因此,二條支路幾乎所有的參數都相同,那么深度估計模型中學習到的參數可以在一定程度上幫助3D目標檢測模型的訓練,使得模型的精度得到一定的提升。 Part 05 實驗 文章在二大數據集上進行了實驗,以下是KITTI數據集和NuScenes數據集下的實驗結果: 以下是在數據集下的可視化檢測效果。 Part 06 總結 文中作者提出了一個端到端的單階段3D目標檢測器,使其具備偽雷達方法的優勢,但同時又避免了其局限性。文章證明了偽雷達方式的局限性,即過度的依賴in-domain單目深度估計,而文章中認為3D目標檢測的訓練集和訓練深度估計時的訓練集并不需要同一domain,文章提出了引入單目深度估計的預訓練步驟。DD3D的方法在二大數據集上都取得了出色的效果,值得學習和參考。