呂 卓 姚治成 賈玉祥 包云崗
1(中國科學(xué)院計(jì)算技術(shù)研究所 北京 100190) 2(計(jì)算機(jī)體系結(jié)構(gòu)國家重點(diǎn)實(shí)驗(yàn)室(中國科學(xué)院計(jì)算技術(shù)研究所) 北京 100190) 3(數(shù)學(xué)工程與先進(jìn)計(jì)算國家重點(diǎn)實(shí)驗(yàn)室 鄭州 450001) 4(鄭州大學(xué)信息工程學(xué)院 鄭州 450001) 5(中國科學(xué)院大學(xué) 北京 100049)
3D物體檢測是計(jì)算機(jī)視覺的一個(gè)重要研究方向,其主要任務(wù)是預(yù)測物體的尺寸、世界坐標(biāo)系下的坐標(biāo)以及朝向等信息,從而提供物體所處的3D空間.3D視覺識別對于機(jī)器人感知外界環(huán)境、理解周圍場景和完成特定任務(wù)十分重要[1].3D物體檢測在自動(dòng)駕駛、機(jī)器人和目標(biāo)追蹤等場景中都有所應(yīng)用.在自動(dòng)駕駛領(lǐng)域,3D物體檢測獲取到的相關(guān)信息可以幫助汽車完成路徑規(guī)劃、避免碰撞等任務(wù),自動(dòng)駕駛需要3D物體檢測來保證駕駛安全性,因此,如何更有效地得到精確的3D物體檢測結(jié)果成為近些年來研究的熱點(diǎn).
當(dāng)前的3D物體檢測方法基本都難以同時(shí)滿足高精度、快速度和低成本這3個(gè)要求[2].如圖1所示,當(dāng)前方法在速度-精度圖中的分布基本都在曲線附近,精度較高的方法速度較慢,速度較快的方法精度較低,而理想的3D物體檢測需要同時(shí)兼顧速度和精度.當(dāng)前的3D物體檢測方法大多以RGB圖像、RGB-D數(shù)據(jù)、雷達(dá)點(diǎn)云等作為網(wǎng)絡(luò)的輸入,采用端到端的深度神經(jīng)網(wǎng)絡(luò)進(jìn)行相關(guān)計(jì)算,最終輸出預(yù)測的物體3D邊框.然而直接使用端到端深度神經(jīng)網(wǎng)絡(luò)來解決3D物體檢測這種復(fù)雜的任務(wù),存在著網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜、計(jì)算量大、實(shí)時(shí)性差等問題.
Fig.1 3D object detection method status diagram
本文提出了一種基于異構(gòu)的3D物體檢測方法,該方法以深度學(xué)習(xí)與傳統(tǒng)算法相結(jié)合的形式,來進(jìn)行3D物體檢測.該方法的主要思路是將整個(gè)3D物體檢測過程劃分為多階段:在預(yù)處理階段,使用實(shí)例分割等深度學(xué)習(xí)的手段從RGB圖片等原始數(shù)據(jù)中獲取所需信息后,在后續(xù)的階段中,使用聚類算法、圖形處理算法等傳統(tǒng)的方法來進(jìn)行物體表面雷達(dá)點(diǎn)的獲取、物體坐標(biāo)及朝向的計(jì)算等.本文所提的方法適合用于檢測汽車等可以在現(xiàn)實(shí)世界中獲取到具體型號及對應(yīng)尺寸的物體.
本文的主要貢獻(xiàn)有4個(gè)方面:
1)從全新的角度來考慮3D物體檢測問題,將傳統(tǒng)算法應(yīng)用到檢測過程中,與深度學(xué)習(xí)方法相結(jié)合,實(shí)現(xiàn)了一種采用異構(gòu)形式進(jìn)行3D物體檢測的方法;
2)提出的雷達(dá)點(diǎn)云篩選方法能夠從巨大的雷達(dá)點(diǎn)云空間中,有效地篩選出目標(biāo)物體的表面雷達(dá)點(diǎn),并且去除其中存在的干擾點(diǎn),在減少了雷達(dá)點(diǎn)計(jì)算量的同時(shí),提升了計(jì)算精度;
3)提出的“最小點(diǎn)邊距外接矩形算法”,以及“物體所在高度計(jì)算方法”,在汽車坐標(biāo)的計(jì)算中顯著提升了計(jì)算速度和精度;
4)經(jīng)實(shí)驗(yàn)表明,本文方法與代表性的基于深度學(xué)習(xí)的3D物體檢測方法相比,具有明顯的優(yōu)勢.
基于雷達(dá)點(diǎn)云的3D物體檢測方法以激光雷達(dá)獲取的點(diǎn)云數(shù)據(jù)作為輸入,此外還有部分方法將RGB圖像等數(shù)據(jù)作為額外的輸入來幫助更好地進(jìn)行檢測,最終得到物體的3D邊框,如圖2所示:
Fig.2 3D bounding box of objects in radar point cloud
在最初的階段,由于卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network, CNN)需要規(guī)則的輸入,因此基于雷達(dá)點(diǎn)云的3D物體檢測通常先將不規(guī)則的雷達(dá)點(diǎn)云轉(zhuǎn)化為規(guī)則數(shù)據(jù)格式,再輸入網(wǎng)絡(luò)進(jìn)行相關(guān)檢測.例如Zhou等人[3]提出了一個(gè)端到端的將不規(guī)則點(diǎn)云轉(zhuǎn)化為規(guī)則3D體素(voxel),進(jìn)而檢測3D物體的網(wǎng)絡(luò),該網(wǎng)絡(luò)由特征提取層、3D中間卷積層和區(qū)域生成網(wǎng)絡(luò)[4](region proposal network, RPN)組成,其中的特征提取層先將點(diǎn)云轉(zhuǎn)化為規(guī)則的3D體素,并對其中點(diǎn)數(shù)量較多的體素進(jìn)行隨機(jī)采樣以減少計(jì)算量和體素間差異,然后再由3D中間卷積層進(jìn)行特征提取,最后由RPN進(jìn)行分類檢測和位置回歸,得到檢測結(jié)果.
除了將不規(guī)則點(diǎn)云轉(zhuǎn)化為體素這種形式外,還有一些方法將點(diǎn)云轉(zhuǎn)化為多視角圖像幾何,例如Chen等人[5]提出了一種基于多視角的3D物體檢測方法,該方法分別將雷達(dá)點(diǎn)云投射到鳥瞰圖上,通過鳥瞰圖獲取候選框并將其分別投影到鳥瞰圖、前視圖和RGB圖像這3個(gè)視角上,之后對各個(gè)視角的特征進(jìn)行聯(lián)合,進(jìn)而預(yù)測目標(biāo)類別并回歸出3D邊框;Ku等人[6]則以RGB圖像和雷達(dá)點(diǎn)云數(shù)據(jù)投射生成的鳥瞰圖作為輸入,通過特征提取得到2個(gè)相應(yīng)的特征圖,經(jīng)融合后使用RPN生成無方向區(qū)域建議,并使用子網(wǎng)絡(luò)生成有方向的3D邊框,完成3D檢測.將雷達(dá)點(diǎn)投射到鳥瞰圖的3D物體檢測方法可以避免物體遮擋所帶來的問題,并且投射到鳥瞰圖的物體能夠保留原始尺寸,但是投射的過程中不可避免地會(huì)損失一部分點(diǎn)云信息,且不適應(yīng)垂直方向有多個(gè)物體的場景.
隨著能夠直接處理點(diǎn)云數(shù)據(jù)的深度網(wǎng)絡(luò)[7-8]的出現(xiàn),一些3D物體檢測方法基于原始雷達(dá)點(diǎn)云數(shù)據(jù)進(jìn)行檢測.例如Charles等人[9]提出了一種基于2D對象檢測器和3D深度技術(shù)的3D物體檢測方法,該方法首先使用2D檢測器構(gòu)建對象建議并據(jù)此定義3D視錐區(qū)域,然后基于這些視錐區(qū)域中的3D點(diǎn)云,使用PointNet[7]/PointNet++[8]實(shí)現(xiàn)3D實(shí)例分割和非模態(tài)3D邊界框估計(jì);Shi等人[10]提出了第1個(gè)僅使用原始點(diǎn)云作為輸入的多階段3D對象檢測器,該檢測器也利用了PointNet++,直接從原始點(diǎn)云中生成3D方案,再根據(jù)語義信息和局部特征等進(jìn)行優(yōu)化.
在基于規(guī)則數(shù)據(jù)的3D物體檢測方法中,將不規(guī)則點(diǎn)云轉(zhuǎn)化成規(guī)則格式需要額外的計(jì)算工作,并且存在不可避免的信息損失;而直接基于原始雷達(dá)點(diǎn)云進(jìn)行3D物體檢測,則需要處理巨大的點(diǎn)云空間,對目標(biāo)的分類也較為復(fù)雜;而且無論是基于規(guī)則數(shù)據(jù)轉(zhuǎn)換還是基于原始雷達(dá)點(diǎn)云的方法,基本上都使用了結(jié)構(gòu)較為復(fù)雜的深度神經(jīng)網(wǎng)絡(luò),從而可能導(dǎo)致計(jì)算時(shí)間較長,時(shí)間成本較高.
現(xiàn)有的3D物體檢測大多采用端到端的深度神經(jīng)網(wǎng)絡(luò),使用這種方式來解決3D物體檢測這樣復(fù)雜的問題,無疑會(huì)增加深度神經(jīng)網(wǎng)絡(luò)的復(fù)雜度,進(jìn)而導(dǎo)致計(jì)算量增大、實(shí)時(shí)性不夠等問題,而且不是3D物體檢測中的所有步驟都適合使用深度學(xué)習(xí)的方法,為此本文提出了一種基于異構(gòu)的3D物體檢測方法,該方法的核心思想是將深度學(xué)習(xí)與傳統(tǒng)算法相結(jié)合來進(jìn)行檢測,將整個(gè)檢測流程劃分為不同的子模塊,分別承擔(dān)不同的任務(wù):在使用實(shí)例分割等深度學(xué)習(xí)手段從RGB圖片等數(shù)據(jù)中獲取信息后,根據(jù)深度學(xué)習(xí)獲取的信息,采用傳統(tǒng)算法,來進(jìn)行點(diǎn)云篩選、坐標(biāo)計(jì)算等任務(wù).本文對該方法進(jìn)行了實(shí)現(xiàn),將其稱為HA3D(a heterogeneous approach for 3D object detection).
HA3D由5個(gè)模塊組成:數(shù)據(jù)預(yù)處理、雷達(dá)點(diǎn)云篩選、尺寸預(yù)測、坐標(biāo)及朝向計(jì)算和結(jié)果展示,系統(tǒng)構(gòu)成如圖3所示.其中部分任務(wù)采用了非深度學(xué)習(xí)的方法來進(jìn)行計(jì)算,例如雷達(dá)點(diǎn)云篩選使用了聚類的方法;坐標(biāo)及朝向計(jì)算則使用了傳統(tǒng)的計(jì)算機(jī)圖形算法.以汽車的檢測過程為例,HA3D的整個(gè)方法流程如圖4所示,主要?jiǎng)澐譃?個(gè)步驟:
1)數(shù)據(jù)預(yù)處理.首先對原始數(shù)據(jù)進(jìn)行處理,使用實(shí)例分割模型對RGB圖像進(jìn)行預(yù)測;讀取雷達(dá)點(diǎn)云等原始數(shù)據(jù)并進(jìn)行格式轉(zhuǎn)換.
2)尺寸預(yù)測.對汽車這類物體構(gòu)建尺寸數(shù)據(jù)庫,通過簡單分類神經(jīng)網(wǎng)絡(luò)獲取物體種類,根據(jù)種類查詢數(shù)據(jù)庫獲取物體準(zhǔn)確尺寸.
3)雷達(dá)點(diǎn)云篩選.利用預(yù)處理得到的實(shí)例分割結(jié)果,結(jié)合聚類算法,從整個(gè)雷達(dá)點(diǎn)云空間中篩選出目標(biāo)物體的表面雷達(dá)點(diǎn),并去除其中干擾點(diǎn),以用于下一步計(jì)算.
4)坐標(biāo)及朝向計(jì)算.根據(jù)前面基礎(chǔ)模塊獲得到的雷達(dá)點(diǎn)云、物體尺寸等數(shù)據(jù),采用圖形以及點(diǎn)云處理算法,計(jì)算物體的坐標(biāo)以及朝向,得到最終的檢測結(jié)果.
Fig.3 System composition diagram of HA3D
Fig.4 Flow chart of heterogeneous 3D object detection
數(shù)據(jù)預(yù)處理部分主要進(jìn)行2部分工作:1)處理原始數(shù)據(jù)集,原始3D物體檢測數(shù)據(jù)集中提供了RGB圖像、相機(jī)參數(shù)、雷達(dá)數(shù)據(jù)和3D標(biāo)注,在這里讀取原始雷達(dá)數(shù)據(jù),根據(jù)相機(jī)參數(shù)等對原始雷達(dá)數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換、坐標(biāo)系轉(zhuǎn)換,并生成深度圖和坐標(biāo)轉(zhuǎn)換矩陣,為進(jìn)一步的計(jì)算提供數(shù)據(jù);2)獲取圖像分割結(jié)果,在這里使用實(shí)例分割模型對RGB圖片進(jìn)行預(yù)測,獲取圖片中物體的種類、2D檢測邊框、mask等數(shù)據(jù),用于下一步的尺寸預(yù)測和雷達(dá)點(diǎn)云篩選,過程如圖5所示.本文中使用的實(shí)例分割方法有Mask R-CNN[11]和YOLACT[12],據(jù)文獻(xiàn)[12]中所述,前者檢測結(jié)果的精確率較高,在COCO test-dev上的mask AP比后者高出5.9%,但是后者的檢測速度比前者提高了3.9倍,可以幫助我們更快地獲取相關(guān)信息,從而提升計(jì)算速度.
尺寸預(yù)測首先需要構(gòu)建尺寸數(shù)據(jù)庫,在現(xiàn)實(shí)世界中,汽車的型號及對應(yīng)尺寸是可以獲取的,例如,新浪汽車、edmunds等國內(nèi)外各大汽車網(wǎng)站中都提供汽車的詳細(xì)信息.基于此現(xiàn)實(shí),我們可以搜集數(shù)據(jù)并構(gòu)建汽車的數(shù)據(jù)庫,其中存儲汽車的具體車型類別和對應(yīng)長寬高尺寸,并根據(jù)汽車尺寸劃分小型車、中型車和大型車等尺寸類別.接下來將數(shù)據(jù)集中的汽車圖片及對應(yīng)具體車型類別作為訓(xùn)練數(shù)據(jù),用于訓(xùn)練分類神經(jīng)網(wǎng)絡(luò),可以基于ResNet[13],DenseNet[14]等結(jié)構(gòu)較為簡單的模型來構(gòu)建分類網(wǎng)絡(luò),這樣就能以較小的計(jì)算量預(yù)測汽車的具體車型類別.
構(gòu)建完尺寸數(shù)據(jù)庫并訓(xùn)練好分類神經(jīng)網(wǎng)絡(luò)后,就可以進(jìn)行尺寸預(yù)測的工作,具體流程如圖6所示,首先根據(jù)實(shí)例分割預(yù)測所得的2D檢測邊框,從RGB圖像中裁剪出汽車的圖片;然后對圖片進(jìn)行縮放等預(yù)處理操作后,輸入分類神經(jīng)網(wǎng)絡(luò)進(jìn)行種類預(yù)測;最后根據(jù)預(yù)測的具體類別查詢尺寸數(shù)據(jù)庫,獲取汽車尺寸;當(dāng)預(yù)測所得具體車型類別的置信度不高時(shí),還可以根據(jù)該汽車具體車型所屬的尺寸類別,查詢出該尺寸類別汽車的平均尺寸,作為該汽車的尺寸.這種尺寸預(yù)測方法適合用于預(yù)測汽車等物體,在現(xiàn)實(shí)世界中,能夠查詢到這類物體的準(zhǔn)確型號、對應(yīng)尺寸和圖片.
整個(gè)雷達(dá)點(diǎn)云空間的數(shù)據(jù)規(guī)模非常大,如果直接對其進(jìn)行搜索和處理,需要花費(fèi)大量的時(shí)間,從而降低了檢測速度.因此,本文實(shí)現(xiàn)了基于mask的區(qū)域篩選和密度聚類篩選這2個(gè)雷達(dá)點(diǎn)云篩選方法,用于從雷達(dá)點(diǎn)云空間中快速找到較為純凈的目標(biāo)物體表面雷達(dá)點(diǎn),以獲取汽車表面雷達(dá)點(diǎn)為例,流程如圖7所示.
基于mask的區(qū)域篩選被用于從較大的點(diǎn)云空間中快速確定物體表面雷達(dá)點(diǎn)分布的空間范圍.該方法首先要獲得目標(biāo)物體mask內(nèi)雷達(dá)點(diǎn)的像素坐標(biāo),由于整張圖片的尺寸較大,搜索整張圖片會(huì)花費(fèi)大量的時(shí)間,因此這里只遍歷目標(biāo)種類物體2D檢測邊框內(nèi)的像素點(diǎn),將位于物體mask范圍內(nèi)的雷達(dá)點(diǎn)保留下來;然后利用數(shù)據(jù)預(yù)處理得到的坐標(biāo)轉(zhuǎn)換矩陣,得到這些雷達(dá)點(diǎn)的相機(jī)坐標(biāo)系坐標(biāo),即真實(shí)坐標(biāo),這樣就初步獲得了mask內(nèi)的雷達(dá)點(diǎn)集。通過對圖7中該篩選方法的結(jié)果進(jìn)行觀察,可以看到該方法能夠快速鎖定物體表面雷達(dá)點(diǎn)的大致分布范圍,大大縮小了后續(xù)所需處理的雷達(dá)點(diǎn)數(shù)量.
Fig.7 Flow chart of radar point cloud screening
密度聚類篩選被用于進(jìn)一步去除物體表面雷達(dá)點(diǎn)中的干擾點(diǎn).由于物體遮擋、mask存在誤差等原因,經(jīng)過初步篩選得到的雷達(dá)點(diǎn)中除了汽車表面雷達(dá)點(diǎn)外,還存在一部分干擾點(diǎn).同一物體的表面雷達(dá)點(diǎn)分布較為集中,密度較高,因此使用Scikit-learn[15]所實(shí)現(xiàn)的密度聚類算法DBSCAN[16]來去除其中的干擾點(diǎn).具體的聚類篩選操作為:首先,對獲得的雷達(dá)點(diǎn)集進(jìn)行DBSCAN聚類計(jì)算,得到m個(gè)聚類簇和1個(gè)離群異常簇Poutlier,將聚類簇的集合記為P={P1,P2,…,Pm},并記錄下每個(gè)聚類簇中包含的點(diǎn)的數(shù)目Npts={n1=|P1|,n2=|P2|,…,nm=|Pm|};然后,從m個(gè)聚類簇中選出一個(gè)簇作為汽車表面雷達(dá)點(diǎn)集Pres,選取方法如式(1)所示:
(1)
其中pcenter是位于汽車mask中心位置的雷達(dá)點(diǎn).這樣選取的原因是:位于汽車mask中心的點(diǎn)pcenter大概率為汽車表面雷達(dá)點(diǎn),因此包含pcenter的聚類簇Pi大概率就是汽車表面雷達(dá)點(diǎn)集;如果表面雷達(dá)點(diǎn)過于稀疏導(dǎo)致pcenter不存在,由于汽車mask范圍內(nèi)的主要物體就是汽車,汽車表面雷達(dá)點(diǎn)在整個(gè)點(diǎn)集中所占比例較高,所以此時(shí)選取P中點(diǎn)數(shù)量最多的簇Pj,來作為最后篩選出的汽車表面雷達(dá)點(diǎn)集.
這里將部分篩選結(jié)果投射到xOz平面來進(jìn)行觀察,如圖8所示,可以清晰地觀察到:在xOz平面上,圓點(diǎn)分布明顯符合汽車頂部的矩形形狀,而叉點(diǎn)分布過于離散,明顯不是汽車表面的雷達(dá)點(diǎn).由此可見,基于mask的聚類篩選和密度聚類篩選2種篩選方法能較為有效地保留物體表面雷達(dá)點(diǎn),去除其他干擾點(diǎn),可以為進(jìn)一步計(jì)算輸入較為純凈的物體表面雷達(dá)點(diǎn),從而達(dá)到減少計(jì)算量、提升計(jì)算精度的效果.
Fig.8 Display of radar point cloud filtering results
需要利用2.3節(jié)獲取到的物體表面雷達(dá)點(diǎn)等數(shù)據(jù),通過傳統(tǒng)算法來替代深度神經(jīng)網(wǎng)絡(luò),計(jì)算出物體的坐標(biāo)以及朝向,其中包括xOz平面坐標(biāo)的計(jì)算以及物體所在高度的計(jì)算.
2.4.1xOz平面坐標(biāo)計(jì)算
以計(jì)算汽車的xOz坐標(biāo)為例,整體流程如圖9所示,接下來對該計(jì)算方法進(jìn)行詳細(xì)的描述:
1)將雷達(dá)點(diǎn)投射到xOz平面并求得外接矩形
由于汽車從xOz平面觀察呈現(xiàn)矩形形狀,因此將所獲汽車表面雷達(dá)點(diǎn)投影到xOz平面后,可以求出這些雷達(dá)點(diǎn)的外接矩形,來代表汽車在xOz平面的分布情況,外接矩形需要盡量貼近雷達(dá)點(diǎn)的邊緣點(diǎn),以便更準(zhǔn)確地描述汽車的朝向以及所在位置.
本文最初采用的是OpenCV實(shí)現(xiàn)的最小面積外接矩形,該方法最終得到的是各個(gè)角度的外接矩形中具有最小面積的外接矩形,因此在部分情況下,該方法所求得的外接矩形并不能貼合物體表面雷達(dá)點(diǎn)在xOz平面的邊緣點(diǎn),計(jì)算效果不理想.為了進(jìn)一步提升該方法的效果,本文對原始雷達(dá)點(diǎn)云進(jìn)行線性填充,使用稠密雷達(dá)點(diǎn)進(jìn)行最小面積外接矩形計(jì)算,雖然提高了檢測效果,但填充雷達(dá)點(diǎn)云和去除干擾點(diǎn)的過程帶來了巨大的時(shí)間成本.因此本文希望通過原始雷達(dá)點(diǎn)云就可求得效果較好的外接矩形,于是對外接矩形算法進(jìn)行改進(jìn).首先嘗試了分段折線擬合法來求外接矩形,但該方法難以確定分段的轉(zhuǎn)折點(diǎn),不適用于本文方法.最終本文提出了最小點(diǎn)邊距外接矩形,該算法求得的外接矩形能夠較好地貼合邊緣點(diǎn),更能代表汽車在xOz平面的分布情況,效果最好.
“最小點(diǎn)邊距外接矩形”中的“點(diǎn)”是指物體表面雷達(dá)點(diǎn)的凸外包點(diǎn),“邊”是指外接矩形的邊.該方法的思路是:先求出物體表面雷達(dá)點(diǎn)的凸外包點(diǎn)集Pconvex={p1,p2,…,pn},緊接著將初始外接矩形rect旋轉(zhuǎn)不同角度θ(0°≤θ≤180°)得到rectθ,將點(diǎn)pi(1≤i≤n)到矩形rectθ邊框的歐氏距離記為dis(pi,rectθ),找到其中的最佳旋轉(zhuǎn)角度θbest,該角度滿足的條件為
pi∈Pconvex, 0°≤θ≤180°,
(2)
旋轉(zhuǎn)角度為θbest的外接矩形就是我們所需要的最小點(diǎn)邊距外接矩形,由于該方法的原理可以計(jì)算得到較為貼近凸外包點(diǎn)的外接矩形,并且只對凸外包點(diǎn)進(jìn)行相關(guān)計(jì)算,時(shí)間開銷較低,滿足本文方法對外接矩形的要求,綜合效果最佳.
2)補(bǔ)全外接矩形
以汽車為例,由于受到雷達(dá)探測器所處位置和物體遮擋等因素的影響,雷達(dá)一般只能檢測到汽車部分表面,導(dǎo)致獲取到的物體表面雷達(dá)點(diǎn)不完整,進(jìn)而導(dǎo)致求得的外接矩形也不“完整”.也就是說,所求得的外接矩形的長和寬可能與汽車真實(shí)的長和寬存在一定的差距,所以還需要使外接矩形的長和寬分別等于汽車的真實(shí)長和寬,即補(bǔ)全外接矩形,如圖9所示:
Fig.9 Flow chart of calculation method of xOz plane coordinates
按照圖9中方法補(bǔ)全的外接矩形,可以更好地描述汽車在xOz平面的分布情況.補(bǔ)全的外接矩形的中心坐標(biāo)就是汽車在xOz平面的坐標(biāo),補(bǔ)全的外接矩形的長邊與相機(jī)坐標(biāo)系x軸的夾角即汽車的朝向.
2.4.2 物體所在高度計(jì)算
需要計(jì)算物體底面所在高度,即物體在相機(jī)坐標(biāo)系下的y軸坐標(biāo).為了提升計(jì)算速度,本文提出了一種新的物體所在高度的計(jì)算方法,該方法的思路就是將計(jì)算物體底面的y軸坐標(biāo),轉(zhuǎn)化為計(jì)算物體2D邊框底邊的y軸坐標(biāo).以汽車底部所在高度的計(jì)算為例,計(jì)算示意圖如圖10所示.在數(shù)據(jù)預(yù)處理中已經(jīng)獲得了汽車的mask,2D檢測邊框及其像素坐標(biāo)(xmin,ymin,xmax,ymax),在尺寸預(yù)測中獲取到了汽車尺寸(l,w,h),并且已經(jīng)通過前面的雷達(dá)點(diǎn)云篩選方法獲得了汽車表面雷達(dá)點(diǎn);從mask中心區(qū)域隨機(jī)選取1個(gè)汽車表面雷達(dá)點(diǎn)p,其相機(jī)坐標(biāo)系坐標(biāo)(真實(shí)坐標(biāo))是已知的,記為(xc,yc,zc)(此處下標(biāo)c代表camera),該點(diǎn)在單目RGB圖像中對應(yīng)的像素坐標(biāo)(xp,yp)(此處下標(biāo)p代表pixel)也是已知的.
點(diǎn)p到2D邊界框底邊的像素距離占邊界框像素高度的比例,等于點(diǎn)p到2D邊界框底邊的真實(shí)距離占汽車高度h的比例,據(jù)此可以計(jì)算出邊界框底邊的相機(jī)坐標(biāo)系y軸坐標(biāo),即汽車的所在高度ycar:
(3)
Fig.10 Schematic diagram of calculating the height of the car
該方法能夠較快地求得物體所在高度,但是較為依賴實(shí)例分割模型預(yù)測所得物體2D檢測邊框的準(zhǔn)確性,實(shí)例分割模型預(yù)測的2D邊框越準(zhǔn)確,該方法所求的物體所在高度也越準(zhǔn)確.
本文實(shí)驗(yàn)全部都在服務(wù)器上進(jìn)行,服務(wù)器系統(tǒng)版本為CentOS Linux release 8.1.1911(Core),使用的CPU為Intel?Xeon?CPU E5-2650 v4@2.20 GHz.實(shí)驗(yàn)所使用的主要依賴庫及版本信息如表1所示:
Table 1 Dependency Library and Version Information Used in the Experiment
實(shí)驗(yàn)以KITTI[17]作為3D物體檢測數(shù)據(jù)集.由于KITTI數(shù)據(jù)集中未標(biāo)出汽車種類,所以汽車分類神經(jīng)網(wǎng)絡(luò)缺少訓(xùn)練數(shù)據(jù),暫時(shí)無法獲得效果較好的汽車分類神經(jīng)網(wǎng)絡(luò),因此無法通過網(wǎng)絡(luò)預(yù)測車型,進(jìn)而查詢獲得尺寸.所以在這里,我們假設(shè)能夠通過本文所提出的尺寸預(yù)測方法獲取汽車的尺寸,在實(shí)驗(yàn)中暫時(shí)使用KITTI中人工標(biāo)注的汽車尺寸作為替代.
為了證明本文提出的尺寸預(yù)測方法的可行性,我們查詢了相關(guān)資料,發(fā)現(xiàn)當(dāng)前車型識別的相關(guān)研究工作已經(jīng)較為成熟,根據(jù)車型識別精度的排行榜[18],其中提及的29個(gè)車型識別方法在Car Dataset[19]上的車型識別的精度均在90%以上,并且最高精度已經(jīng)達(dá)到了96.2%,所以如果下一步能夠獲得較為充足的訓(xùn)練數(shù)據(jù),我們應(yīng)該可以訓(xùn)練得到較為準(zhǔn)確的車型識別的分類神經(jīng)網(wǎng)絡(luò),實(shí)現(xiàn)本文所提出的尺寸預(yù)測思路.
HA3D采用的是異構(gòu)的方法,最終的檢測結(jié)果沒有置信度輸出,而傳統(tǒng)的3D物體檢測評估方法會(huì)將置信度也作為評估因素,不適合用于評估本文提出的方法,所以本文對傳統(tǒng)3D物體檢測評估方法進(jìn)行改造,形成新的評估方法.
本文使用交并比(intersection over union, IoU)來描述檢測結(jié)果和標(biāo)注數(shù)據(jù)中邊框的重疊率,使用IoU閾值來描述當(dāng)檢測結(jié)果中的3D邊框與標(biāo)注中邊框的重疊率大于何值時(shí),方為合格的檢測結(jié)果.此外還根據(jù)標(biāo)注中物體的遮擋程度、截?cái)嘀笖?shù)、2D邊界框高度、物體到相機(jī)的距離等設(shè)置評估范圍,在評估范圍內(nèi)的標(biāo)注數(shù)據(jù)和檢測結(jié)果視為有效的數(shù)據(jù),進(jìn)行下一步的評估,不滿足該條件的標(biāo)注數(shù)據(jù)和檢測結(jié)果不予評估.
參考KITTI[17]的3D物體檢測評估程序,本文使用2個(gè)概念來描述檢測結(jié)果:真正例(true positive,TP),以及假正例(false positive,FP).TP表示與有效標(biāo)注數(shù)據(jù)的IoU大于檢測閾值的有效檢測結(jié)果數(shù)量;FP表示與任意有效標(biāo)注數(shù)據(jù)的IoU都不大于檢測閾值的有效檢測結(jié)果數(shù)量.由于KITTI標(biāo)注中存在‘DontCare’標(biāo)注,這類標(biāo)注數(shù)據(jù)未對物體的3D空間進(jìn)行標(biāo)注,因此不應(yīng)該將該類區(qū)域的檢測結(jié)果納入評估范圍,在這里使用STUFF來表示與‘DontCare’標(biāo)注的2D檢測邊框的重疊率大于檢測閾值的有效檢測結(jié)果數(shù)量.
明確定義之后,使用精確率(Precision)對檢測結(jié)果進(jìn)行評估,精確率也叫查準(zhǔn)率,它用來描述檢測出的TP占檢測出的所有正例(TP和FP)的比例,計(jì)算為
(4)
但是為了避免將對應(yīng)‘DontCare’標(biāo)注的檢測結(jié)果的數(shù)量計(jì)入FP,需要將STUFF從檢測出的FP中去除,重新定義評估方法中所使用的精確率:
(5)
為了評估方法的檢測速度,本文使用平均每張圖片所需的計(jì)算總時(shí)間以及每秒處理圖片數(shù)目(frames per second, fps)作為檢測速度的評價(jià)指標(biāo),同時(shí)為了更準(zhǔn)確地評估3D檢測的效率,將總時(shí)間細(xì)分為平均每張圖片所需的數(shù)據(jù)預(yù)處理時(shí)間以及3D檢測時(shí)間.為了同時(shí)評估方法的精度和速度,將平均每張圖片所需的計(jì)算時(shí)間記為t,使用精確率與計(jì)算時(shí)間的比值(ratios of precision and time,RPT),作為評價(jià)方法綜合表現(xiàn)的指標(biāo),比值越大,說明檢測效果越好,其計(jì)算方法為
(6)
3.3.1 不同外接矩形算法
在相同的CPU實(shí)驗(yàn)環(huán)境下,從KITTI[17]訓(xùn)練集中隨機(jī)選取1 000張圖片,分別使用OpenCV的最小面積外接矩形、稠密點(diǎn)云下的最小面積外接矩形、分段折線擬合法和最小點(diǎn)邊距外接矩形這4種算法對其中的汽車進(jìn)行檢測,并使用相同的評估范圍,檢測閾值設(shè)置為0.7,評估不同方法的精確率和速度的綜合表現(xiàn),評估結(jié)果如圖11所示.
從圖11中可以發(fā)現(xiàn):雖然稠密雷達(dá)點(diǎn)云下的最小面積外接矩形算法,相對于稀疏雷達(dá)點(diǎn)云下的最小面積外接矩形算法,精確率高出5.81%,但檢測速度極慢;而分段折線擬合法顯然不適用于本文方法,檢測結(jié)果的精確率僅僅只有4.88%;最小點(diǎn)邊距外接矩形算法的檢測結(jié)果的精確率遠(yuǎn)高于其他方法,并且其檢測速度也非???因此,本文所提出的最小點(diǎn)邊距外接矩形算法所求矩形更為貼合邊緣點(diǎn),計(jì)算的速度較快、精度最高,在HA3D中應(yīng)用效果最佳.
Fig.11 FPS-Precision scatterplot of different bounding rectangle algorithms
3.3.2 與其他3D物體檢測方法對比
本節(jié)將對比HA3D和部分具有代表性的3D物體檢測方法.在相同的CPU環(huán)境下,我們對所有方法的檢測結(jié)果使用相同的評估范圍,測試每張圖片所需的預(yù)處理時(shí)間、3D檢測時(shí)間以及總的計(jì)算時(shí)間,同時(shí)對比檢測閾值分別為0.7和0.5時(shí)的精確率,以及檢測閾值為0.5時(shí)的RPT綜合指標(biāo),評估結(jié)果如表2所示:
Table 2 Comparison with Other 3D Object Detection Methods
VoxelNet的代碼與預(yù)處理模型來源為github項(xiàng)目[21];AVOD代碼來源為官方實(shí)現(xiàn),預(yù)訓(xùn)練模型來自Pseudo-LiDAR[22];F-PointNet和F-ConvNet的代碼及預(yù)訓(xùn)練模型為官方實(shí)現(xiàn).在這里還繪制了散點(diǎn)圖來對各個(gè)方法的綜合表現(xiàn)進(jìn)行直觀的對比(其中處理圖片速度是根據(jù)各個(gè)方法3D檢測部分的平均時(shí)間進(jìn)行計(jì)算,Precision是IoU為0.5時(shí)的精確率),如圖12所示:
Fig.12 FPS-Precision scatterplot of different 3D object detection methods
表2中的F-PointNet和F-ConvNet均未給出完整的3D檢測代碼,兩者均直接使用了提前生成的2D檢測邊框和3D視錐體點(diǎn)云,導(dǎo)致本文無法對其進(jìn)行完全復(fù)現(xiàn),進(jìn)而無法測試其完整的計(jì)算時(shí)間.此外,F(xiàn)-PointNet檢測流程中的視錐體提案生成部分采用了基于FPN[23]的神經(jīng)網(wǎng)絡(luò),傳統(tǒng)的FPN網(wǎng)絡(luò)模型通常比較復(fù)雜,GPU推理時(shí)間在100 ms以上,而本文中用到的YOLACT[12]網(wǎng)絡(luò)GPU推理時(shí)間約30 ms,比傳統(tǒng)FPN網(wǎng)絡(luò)快3倍以上,類比到CPU設(shè)備,結(jié)合表2中的數(shù)據(jù),可推斷出F-PointNet的數(shù)據(jù)預(yù)處理時(shí)間大于8.7 s,由此可以推測其檢測總用時(shí)約9.19 s,是本文工作HA3D檢測總時(shí)長的2.5倍,因此F-PointNet的檢測時(shí)間并不占優(yōu)勢.而且F-PointNet在3D物體檢測部分使用的是輕量級的PointNet[7],雖然減少了少量的3D檢測時(shí)間,但造成了其精確率的下降,相對于HA3D,其精確率下降了11.39%,因此HA3D的綜合表現(xiàn)更優(yōu).因此,本方法相對其他基于深度學(xué)習(xí)的方法(例如F-PointNet)無論是在總體檢測速度,還是檢測精度上都有明顯優(yōu)勢.
本文通過對比各個(gè)方法的檢測時(shí)間來衡量各個(gè)方法的復(fù)雜度,從表2中可以觀察到HA3D的3D物體檢測時(shí)間遠(yuǎn)遠(yuǎn)少于VoxelNet和AVOD,相對于AVOD的檢測時(shí)效提升了600%,且通過分析,可以得知F-PointNet的檢測時(shí)間并不占優(yōu)勢.因此,本文利用傳統(tǒng)圖形算法來進(jìn)行3D邊框的計(jì)算,相對于部分利用深度神經(jīng)網(wǎng)絡(luò)進(jìn)行3D邊框回歸的檢測方法,所需要的檢測時(shí)間更少.這說明了HA3D方法進(jìn)行3D物體檢測的算法復(fù)雜度更低、計(jì)算規(guī)模更小,因此進(jìn)行檢測的速度更快.
從表2和圖12中綜合比較各個(gè)方法的檢測速度和精確率,其中AVOD方法的精確率比HA3D方法高1.7%,但它采用了較為復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu),導(dǎo)致計(jì)算量較大,總體運(yùn)行時(shí)間約為HA3D方法的1.5倍;F-PointNet處理圖片的速度雖高于HA3D方法,但從之前的討論中可以得知這是因?yàn)樗捎昧溯p量級的網(wǎng)絡(luò),也因此導(dǎo)致了精確率的大幅度下降.從圖12中也可以看到本文提出的YOLACT+HA3D方法位于右上角,這說明HA3D方法的綜合表現(xiàn)最好.經(jīng)結(jié)果對比分析可得出:本文提出的HA3D方法在檢測精度下降可接受范圍內(nèi),大幅度地提高了總體檢測速度,相比于傳統(tǒng)的基于端到端的深度學(xué)習(xí)方法,更適合于自動(dòng)駕駛等實(shí)時(shí)性要求高的工作場景.
因此,在汽車的3D檢測中,相對于部分具有代表性的端到端的3D物體檢測方法,HA3D在精確率和速度的綜合方面上表現(xiàn)突出,這說明了傳統(tǒng)方法確實(shí)適合用來完成3D物體檢測過程中的部分任務(wù),使用聚類算法等來進(jìn)行雷達(dá)點(diǎn)云篩選和坐標(biāo)計(jì)算,取得了很好的檢測精度,并且減少了計(jì)算量,提升了檢測速度.
本論文提出的HA3D方法從全新的異構(gòu)角度來考慮3D物體檢測問題,將傳統(tǒng)算法應(yīng)用到3D物體檢測中,實(shí)現(xiàn)了“深度學(xué)習(xí)+傳統(tǒng)算法”的異構(gòu)3D物體檢測方法.從實(shí)驗(yàn)結(jié)果中來看,本文方法相對于部分基于端到端深度學(xué)習(xí)的3D物體檢測方法,在速度和精確率的綜合表現(xiàn)上具有優(yōu)勢(速度提升52.2%,RPT指標(biāo)提升49%),該結(jié)果說明傳統(tǒng)算法確實(shí)適合用于解決3D物體檢測中的坐標(biāo)計(jì)算等問題.這樣將深度學(xué)習(xí)和傳統(tǒng)算法相結(jié)合進(jìn)行3D物體檢測的方法,相對于直接使用端到端的深度神經(jīng)網(wǎng)絡(luò),不僅保證了較高的準(zhǔn)確率,還具有更快的檢測速度,并且該方法通過多模塊的形式來實(shí)現(xiàn),具有更加靈活的結(jié)構(gòu)和更好的可拓展性.
本文提出的方法還有進(jìn)一步的優(yōu)化空間,例如:1)本文方法還可以通過算法優(yōu)化和GPU加速,進(jìn)一步提升計(jì)算速度;2)可以嘗試通過路面檢測來獲取物體所在高度,從而避免2D檢測邊框準(zhǔn)確性對結(jié)果的影響,可能會(huì)進(jìn)一步提高3D檢測結(jié)果的精確率;3)如果能夠獲得充足的汽車分類神經(jīng)網(wǎng)絡(luò)的訓(xùn)練數(shù)據(jù),就可以訓(xùn)練出汽車分類神經(jīng)網(wǎng)絡(luò),進(jìn)而預(yù)測獲得汽車尺寸數(shù)據(jù),實(shí)現(xiàn)本文所提出的汽車尺寸預(yù)測思路.