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