朱珩
(蘇州智加科技有限公司,江蘇蘇州 215100)
盡管對于圖像2D檢測業界已經發掘了諸多算法并在自動駕駛中發揮了重要作用,3D檢測任務,即獲得圖像中目標物體的尺度信息、位置信息和朝向信息依然是一個開放的問題。本文我們著重研究使用單個攝像頭獲取的圖像數據,對其中的目標物體進行自由度回歸的3D檢測。目前,先進的2D目標檢測都是通過一個深度學習神經網絡來回歸目標在圖像中的位置。隨著神經網絡發展,2D檢測算法按照是否有預設的錨框(anchor)分為基于anchor的檢測算法和基于點的檢測算法。基于anchor的目標檢測算法分為單階段和兩階段目標檢測。兩階段算法諸如RCNN系列,即先生成候選區域,再用神經網絡對候選區域進行分類和邊界框回歸。單階段算法例如YOLO系列,如YOLOv1[1]直接將圖片化為柵格,并對每個柵格進行分類和目標值回歸,YOLOv2在YOLOv1的基礎上對每個位置添加了設計的anchor box,提高了召回,YOLOv3通過聚類的方法得到9種尺度的anchor,并將anchor box按照大小均勻的分配給3個尺度的特征圖,實現了多尺度預測。之后的YOLO系列通過特征金字塔、殘差網絡等技巧提高模型能力。
盡管上述算法在2D檢測中表現較好,但無法估計目標在真實空間中的位置和朝向問題。單目3D目標檢測是一項具有挑戰性的任務,在研究路線上,目前有這幾種方案:基于空間預設包圍框的算法、包圍盒的關鍵點檢測算法,以及基于深度估計的偽雷達方法。Mono3D[2]提出在3D空間中對包圍盒進行采樣并對這些框在圖像上的投影進行語義分析,然后得到真實目標在空間中的姿態。RTM3D[3]算法,MonoFlex[4]算法,通過對圖像上目標物的3D回歸框在圖上的8個頂點位置進行回歸,并通過幾何約束得到目標在空間中的位置、大小和朝向信息。Pseudo-lidar[5]算法對圖像逐像素進行深度估計,并生成偽點云圖,在偽點云圖的基礎上進行3D目標檢測。
本文首先回顧了2D檢測以及3D檢測算法。在第二部分詳細介紹了基于圖像的2D檢測算法并按照第一階段和第二階段對有代表性的幾種算法進行了分析比較。同時我們將介紹目前基于圖像的有代表性的3D檢測工作。在第三部分,我們將詳細闡述提出的單目3D檢測算法,我們創新地將2D檢測算法,基于3D包圍框的關鍵點檢測算法,和一種不確定性算法結合起來,提出一種基于深度,尺度不確定性的單目3D檢測算法。我們從3個部分入手,首先介紹了什么是不確定性以及如何使用不確定性提高算法精度,然后設計了一種全卷積的深度學習網絡用來回歸目標的深度以及尺度的不確定性,最后設計一種基于不確定性的損失函數。在第四部分,將提供我們的實驗依據來觀察基于尺度、深度的不確定性3D檢測算法在公開數據集上的表現,在第五部分給出算法的總結。
目前的2D檢測算法主要分為兩個派別:一階段檢測器和二階段檢測器。一階段檢測器直接進行定位和分類,檢測器使用預定義的不同比例和長寬比的boxes/points來定位目標。兩階段檢測器是指存在一個單獨的模塊來生成區域候選框(region proposals),也即是在第一階段找到一定數量的候選框,然后在第二階段對每個候選框進行定位和分類,一階段檢測器的代表算法有YOLO。二階段檢測器則以RCNN為主,RCNN系列經歷了從RCNN到Fast RCNN再到Faster RCNN的變遷,最終的Faster RCNN可以認為是二階段檢測器的集大成者。
Mono3D[2]提出在3D空間中對包圍盒進行采樣并對這些框在圖像上的投影框進行語義分析。首先在空間中預設許多3D立體框,每個立體框在圖像上都有其對應的投影信息。基于這些投影框在圖像上的實例分割、形狀、圖像上下文等語義信息去找到真實目標在空間中的位置和姿態。這種方法需要神經網絡對多個任務進行處理,耗時和內存占用過大,且如何設計立體框,以及大量負樣本的立體框對模型的學習不是非常友好。
如圖1所示,共享主干網絡可選取RegNet,后接多個預測分支用于預測對象屬性。其中,訓練與推理共有的主任務預測包括中心點熱力圖、關鍵點偏差、絕對深度及其不確定性、物體的3D尺度、物體的3D朝向、基于關鍵點的深度不確定性。對于訓練過程,增加了幾個輔助任務,用于幫助網絡更好地學習主任務中的輸出目標,包括關鍵點熱力圖、2D物體中心偏移量、2D尺寸、關鍵點殘差、2D中心點殘差和2D中心點殘差。
物體中心點預測[6]可被定義為,3hw是類別數,h、w分別為特征圖的高與寬。關鍵點預測可被定義為9hw,預測3D框的8個頂點以及中心點。對于中心點熱力圖預測和關鍵點熱力圖預測,采用高斯核加權focal loss進行監督。偏移預測包括3D中心的偏移量、2D中心的偏移量、2D尺寸、關鍵點偏移量、2D中心殘差、關鍵點殘差,均使用L1損失進行監督。預測物體的長寬高(l, w, h),輸出為3hw,使用尺度L1損失進行監督。朝向預測將角度分為12個等份,先對角度進行分類,再進行區間內的角度回歸,定義為24hw,使用交叉熵損失監督分類,使用L1損失監督角度回歸。在貝葉斯建模中,通常將不確定性研究分為兩種:一種是認知不確定性,它主要描述了模型中參數的不確定性;另一種是偶然不確定性,它可以觀察到數據中的噪聲,這在物體檢測領域已經有著廣泛的運用。在本文中,我們對深度估計的不確定性進行建模,利用多個預測器得到的深度估計以及他們對應的不確定性,組合計算出最終的深度預測值。我們將物體深度的估計表述為M+1個獨立估計器的自適應集成,包括直接回歸的深度和基于M個關鍵點預測的幾何解深。
對于特征圖上的每一個位置,預測其對應的物體中心絕對深度zr和不確定性σdep。如果模型預測的深度不準確,則誤差值較大,那么就會輸出更大的不確定性,從而減少損失。
根據預測的8個關鍵點,可以畫出4條垂直的邊,每條邊的深度zl可以根據它對應的像素高度hl和物體的實際高度H計算得到:
其中f為相機焦距。物體中心的深度可以通過平均兩條對角垂直邊的深度得到,一共有4個垂直邊,那么就會有兩對平均對角深度,分別記為zd1和zd2,他們應該與上述直接回歸的物體中心深度盡可能接近。通過加權計算得到最終的深度預測,使模型對于潛在的不精確預測更魯棒:
KITTI數據集為自動駕駛中各種視覺任務提供了廣泛使用的基準,包括2D檢測、平均方向相似度(AOS)、Bird's Eye View(BEV)和3D檢測。官方數據集包含7481張訓練圖像和7518張測試圖像,標注文件包含汽車、行人和騎車人的2D和3D邊界框,其中3D邊界框共80256個。本文將訓練集進一步拆分為兩個子集,包含3712個用于訓練的圖像和3619個用于驗證的圖像。標注邊界框分為3個難度級別:簡單、中等和困難,級別劃分由2D邊界框高度、物體遮擋和截斷程度確定。本文實驗使用3D空間和鳥瞰圖的邊界框平均精度來評估模型性能,訓練模型時使用汽車、行人和自行車3個類別數據。表1中展示了本文和其他單目3D檢測算法在KITTI驗證集上的結果,表明本文算法對于汽車類別檢測實現了顯著的性能改進。與此同時,本文算法性能在KITTI 3D檢測排行榜上也有著不錯的表現。
表1 KITTI驗證集上汽車類別檢測結果
在本篇論文中,我們提出了一種基于尺度、深度不確定性的單目3D檢測算法。這種算法解決了單目3D檢測中的兩大挑戰:(1)目標的深度估計問題;(2)目標在3D空間中的包圍框預測問題。具體而言,我們直接回歸目標物體的3D中心點,利用3D信息監督網絡學習,可以使網絡更好地學習目標的3D幾何位置和關鍵點信息,在很大程度上提高模型的檢測精確度。我們在KITTI數據集上進行了實驗,驗證了本文所提出方法的優越性,大量的實驗結果和評價指標表明,我們所提出方法的性能超過了大多數的檢測算法。