環(huán)境感知 是自動駕駛的第一環(huán),是車輛和環(huán)境交互的紐帶。一個自動駕駛系統(tǒng)整體表現(xiàn)的好壞,很大程度上都取決于感知系統(tǒng)的好壞。目前,環(huán)境感知技術(shù)有兩大主流技術(shù)路線:
①以視覺為主導(dǎo)的多傳感器融合方案,典型代表是特斯拉;
②以激光雷達(dá)為主導(dǎo),其他傳感器為輔助的技術(shù)方案,典型代表如谷歌、百度等。
我們將圍繞著環(huán)境感知中關(guān)鍵的視覺感知算法進(jìn)行介紹,其任務(wù)涵蓋范圍及其所屬技術(shù)領(lǐng)域如下圖所示。
我們先從廣泛應(yīng)用于自動駕駛的幾個任務(wù)出發(fā)介紹2D視覺感知算法,包括基于圖像或視頻的2D目標(biāo)檢測和跟蹤,以及2D場景的語義分割。近些年,深度學(xué)習(xí)滲透到視覺感知的各個領(lǐng)域,取得不錯的成績,因此,我們梳理了一些經(jīng)典的深度學(xué)習(xí)算法。
目標(biāo)檢測
1.1 兩階段檢測
兩階段指的是實現(xiàn)檢測的方式有先后兩個過程,一是提取物體區(qū)域;二是對區(qū)域進(jìn)行CNN分類識別;因此,“兩階段”又稱基于候選區(qū)域(Region proposal)的目標(biāo)檢測。代表性算法有R-CNN系列(R-CNN、Fast R-CNN、Faster R-CNN)等。
Faster R-CNN是第一個端到端的檢測網(wǎng)絡(luò)。第一階段利用一個區(qū)域候選網(wǎng)絡(luò)(RPN)在特征圖的基礎(chǔ)上生成候選框,使用ROIPooling對齊候選特征的大?。坏诙A段用全連接層做細(xì)化分類和回歸。
這里提出了Anchor的思想,減少運(yùn)算難度,提高速度。特征圖的每個位置會生成不同大小、長寬比的Anchor,用來作為物體框回歸的參考。Anchor的引入使得回歸任務(wù)只用處理相對較小的變化,因此網(wǎng)絡(luò)的學(xué)習(xí)會更加容易。下圖是Faster R-CNN的網(wǎng)絡(luò)結(jié)構(gòu)圖。
CascadeRCNN第一階段和Faster R-CNN完全一樣,第二階段使用多個RoiHead層進(jìn)行級聯(lián)。后續(xù)的一些工作多是圍繞著上述網(wǎng)絡(luò)的一些改進(jìn)或者前人工作的雜燴,罕有突破性提升。
1.2 單階段檢測
相較于兩階段算法,單階段算法只需一次提取特征即可實現(xiàn)目標(biāo)檢測,其速度算法更快,一般精度稍微低一些。這類算法的開山之作是YOLO,隨后SSD、Retinanet依次對其進(jìn)行了改進(jìn),提出YOLO的團(tuán)隊將這些有助于提升性能的trick融入到Y(jié)OLO算法中,后續(xù)又提出了4個改進(jìn)版本YOLOv2~YOLOv5。
盡管預(yù)測準(zhǔn)確率不如雙階段目標(biāo)檢測算法,由于較快的運(yùn)行速度,YOLO成為了工業(yè)界的主流。下圖是YOLOv3的網(wǎng)絡(luò)結(jié)構(gòu)圖。
1.3 Anchor-free檢測(無Anchor檢測)
這類方法一般是將物體表示為一些關(guān)鍵點(diǎn),CNN被用來回歸這些關(guān)鍵點(diǎn)的位置。關(guān)鍵點(diǎn)可以是物體框的中心點(diǎn)(CenterNet)、角點(diǎn)(CornerNet)或者代表點(diǎn)(RepPoints)。CenterNet將目標(biāo)檢測問題轉(zhuǎn)換成中心點(diǎn)預(yù)測問題,即用目標(biāo)的中心點(diǎn)來表示該目標(biāo),并通過預(yù)測目標(biāo)中心點(diǎn)的偏移量與寬高來獲取目標(biāo)的矩形框。
Heatmap表示分類信息,每一個類別將會產(chǎn)生一個單獨(dú)的Heatmap圖。對于每張Heatmap圖而言,當(dāng)某個坐標(biāo)處包含目標(biāo)的中心點(diǎn)時,則會在該目標(biāo)處產(chǎn)生一個關(guān)鍵點(diǎn),我們利用高斯圓來表示整個關(guān)鍵點(diǎn),下圖展示了具體的細(xì)節(jié)。
RepPoints提出將物體表示為一個代表性點(diǎn)集,并且通過可變形卷積來適應(yīng)物體的形狀變化。點(diǎn)集最后被轉(zhuǎn)換為物體框,用于計算與手工標(biāo)注的差異。
1.4 Transformer檢測
無論是單階段還是兩階段目標(biāo)檢測,無論采用Anchor與否,都沒有很好地利用到注意力機(jī)制。針對這種情況,Relation Net和DETR利用Transformer將注意力機(jī)制引入到目標(biāo)檢測領(lǐng)域。Relation Net利用Transformer對不同目標(biāo)之間的關(guān)系建模,在特征之中融入了關(guān)系信息,實現(xiàn)了特征增強(qiáng)。
DETR則是基于Transformer提出了全新的目標(biāo)檢測架構(gòu),開啟了目標(biāo)檢測的新時代,下圖是DETR的算法流程,先采用CNN提取圖像特征,然后用Transformer對全局的空間關(guān)系進(jìn)行建模,最后得到的輸出通過二分圖匹配算法與手工標(biāo)注進(jìn)行匹配。
下表中的準(zhǔn)確度采用MSCOCO數(shù)據(jù)庫上的mAP作為指標(biāo),而速度則采用FPS來衡量,對比了上述部分算法,由于網(wǎng)絡(luò)的結(jié)構(gòu)設(shè)計中存在很多不同的選擇(比如不同的輸入大小,不同的Backbone網(wǎng)絡(luò)等),各個算法的實現(xiàn)硬件平臺也不同,因此準(zhǔn)確率和速度并不完全可比,這里只列出來一個粗略的結(jié)果供大家參考。
目標(biāo)跟蹤
在自動駕駛應(yīng)用中,輸入的是視頻數(shù)據(jù),需要關(guān)注的目標(biāo)有很多,比如車輛,行人,自行車等等。因此,這是一個典型的多物體跟蹤任務(wù)(MOT)。對于MOT任務(wù)來說,目前最流行的框架是Tracking-by-Detection,其流程如下:
①由目標(biāo)檢測器在單幀圖像上得到目標(biāo)框輸出;
②提取每個檢測目標(biāo)的特征,通常包括視覺特征和運(yùn)動特征;
③根據(jù)特征計算來自相鄰幀的目標(biāo)檢測之間的相似度,以判斷其來自同一個目標(biāo)的概率;
④將相鄰幀的目標(biāo)檢測進(jìn)行匹配,給來自同一個目標(biāo)的物體分配相同的ID。
深度學(xué)習(xí)在以上這四個步驟中都有應(yīng)用,但是以前兩個步驟為主。在步驟1中,深度學(xué)習(xí)的應(yīng)用主要在于提供高質(zhì)量的目標(biāo)檢測器,因此一般都選擇準(zhǔn)確率較高的方法。SORT是基于Faster R-CNN的目標(biāo)檢測方法,并利用卡爾曼濾波算法+匈牙利算法,極大提高了多目標(biāo)跟蹤的速度,同時達(dá)到了SOTA的準(zhǔn)確率,也是在實際應(yīng)用中使用較為廣泛的一個算法。
在步驟2中,深度學(xué)習(xí)的應(yīng)用主要在于利用CNN提取物體的視覺特征。DeepSORT最大的特點(diǎn)是加入外觀信息,借用了ReID模塊來提取深度學(xué)習(xí)特征,減少了ID switch的次數(shù)。整體流程圖如下:
此外,還有一種框架Simultaneous Detection and Tracking。如代表性的CenterTrack,它起源于之前介紹過的單階段無Anchor的檢測算法CenterNet。與CenterNet相比,CenterTrack增加了前一幀的RGB圖像和物體中心Heatmap作為額外輸入,增加了一個Offset分支用來進(jìn)行前后幀的Association。與多個階段的Tracking-by-Detection相比,CenterTrack將檢測和匹配階段用一個網(wǎng)絡(luò)來實現(xiàn),提高了MOT的速度。
語義分割
在自動駕駛的車道線檢測和可行駛區(qū)域檢測任務(wù)中均用到了語義分割。代表性的算法有FCN、U-Net、DeepLab系列等。DeepLab使用擴(kuò)張卷積和ASPP(Atrous Spatial Pyramid Pooling)結(jié)構(gòu),對輸入圖像進(jìn)行多尺度處理。最后采用傳統(tǒng)語義分割方法中常用的條件隨機(jī)場(CRF)來優(yōu)化分割結(jié)果。下圖是DeepLab v3+的網(wǎng)絡(luò)結(jié)構(gòu)。
近些年的STDC算法采用了類似FCN算法的結(jié)構(gòu),去掉了U-Net算法復(fù)雜的decoder結(jié)構(gòu)。但同時在網(wǎng)絡(luò)下采樣的過程中,利用ARM模塊不斷地去融合來自不同層特征圖的信息,因此也避免了FCN算法只考慮單個像素關(guān)系的缺點(diǎn)。
可以說,STDC算法很好的做到了速度與精度的平衡,其可以滿足自動駕駛系統(tǒng)實時性的要求。算法流程如下圖所示。
單目3D感知
接來下我們將介紹自動駕駛中必不可少的3D場景感知。因為深度信息、目標(biāo)三維尺寸等在2D感知中是無法獲得的,而這些信息才是自動駕駛系統(tǒng)對周圍環(huán)境作出正確判斷的關(guān)鍵。想得到3D信息,最直接的方法就是采用激光雷達(dá)(LiDAR)。
但是,LiDAR也有其缺點(diǎn),比如成本較高,車規(guī)級產(chǎn)品量產(chǎn)困難,受天氣影響較大等等。因此,單純基于攝像頭的3D感知仍然是一個非常有意義和價值的研究方向,接下來我們梳理了一些基于單目和雙目的3D感知算法。
基于單攝像頭圖像來感知3D環(huán)境是一個不適定問題,但是可以通過幾何假設(shè)(比如像素位于地面)、先驗知識或者一些額外信息(比如深度估計)來輔助解決。本次將從實現(xiàn)自動駕駛的兩個基本任務(wù)(3D目標(biāo)檢測和深度估計)出發(fā)進(jìn)行相關(guān)算法介紹。
4.1 3D目標(biāo)檢測
表示轉(zhuǎn)換(偽激光雷達(dá)):視覺傳感器對周圍其他車輛等的檢測通常會遇到遮擋、無法度量距離等問題,可以將透視圖轉(zhuǎn)換成鳥瞰圖表示。這里介紹兩種變換方法。一是逆透視圖映射(IPM),它假定所有像素都在地面上,并且相機(jī)外參準(zhǔn)確,此時可以采用Homography變換將圖像轉(zhuǎn)換到BEV,后續(xù)再采用基于YOLO網(wǎng)絡(luò)的方法檢測目標(biāo)的接地框。
二是正交特征變換(OFT),利用ResNet-18提取透視圖圖像特征。然后,通過在投影的體素區(qū)域上累積基于圖像的特征來生成基于體素的特征。然后將體素特征沿垂直方向折疊以產(chǎn)生正交的地平面特征。
最后,用另一個類似于ResNet的自上而下的網(wǎng)絡(luò)進(jìn)行3D目標(biāo)檢測。這些方法只適應(yīng)于車輛、行人這類貼地的目標(biāo)。對于交通標(biāo)志牌、紅綠燈這類非貼地目標(biāo)來說,可以通過深度估計來生成偽點(diǎn)云,進(jìn)而進(jìn)行3D檢測。Pseudo-LiDAR先利用深度估計的結(jié)果生成點(diǎn)云,再直接應(yīng)用基于激光雷達(dá)的3D目標(biāo)檢測器生成3D目標(biāo)框,其算法流程如下圖所示。
關(guān)鍵點(diǎn)和3D模型:待檢測目標(biāo)如車輛、行人等其大小和形狀相對固定且已知,這些可以被用作估計目標(biāo)3D信息的先驗知識。DeepMANTA是這個方向的開創(chuàng)性工作之一。
首先,采用一些目標(biāo)檢測算法比如Faster RNN來得到2D目標(biāo)框,同時也檢測目標(biāo)的關(guān)鍵點(diǎn)。然后,將這些2D目標(biāo)框和關(guān)鍵點(diǎn)與數(shù)據(jù)庫中的多種3D車輛CAD模型分別進(jìn)行匹配,選擇相似度最高的模型作為3D目標(biāo)檢測的輸出。MonoGRNet則提出將單目3D目標(biāo)檢測分成四個步驟:2D目標(biāo)檢測、實例級深度估計、投影3D中心估計、局部角點(diǎn)回歸,算法流程如下圖所示。這類方法都假設(shè)目標(biāo)有相對固定的形狀模型,對于車輛來說一般是滿足的,對于行人來說就相對困難一些。
2D/3D幾何約束:對3D中心和粗略實例深度的投影進(jìn)行回歸,并使用這二者估算粗略的3D位置。開創(chuàng)性的工作是Deep3DBox,首先用2D目標(biāo)框內(nèi)的圖像特征來估計目標(biāo)大小和朝向。
然后,通過一個2D/3D的幾何約束來求解中心點(diǎn)3D位置。這個約束就是3D目標(biāo)框在圖像上的投影是被2D目標(biāo)框緊密包圍的,即2D目標(biāo)框的每條邊上都至少能找到一個3D目標(biāo)框的角點(diǎn)。通過之前已經(jīng)預(yù)測的大小和朝向,再配合上相機(jī)的標(biāo)定參數(shù),可以求解出中心點(diǎn)的3D位置。
2D和3D目標(biāo)框之間的幾何約束如下圖所示。Shift R-CNN在Deep3DBox的基礎(chǔ)上將之前得到的2D目標(biāo)框、3D目標(biāo)框以及相機(jī)參數(shù)合并起來作為輸入,采用全連接網(wǎng)絡(luò)預(yù)測更為精確的3D位置。
直接生成3DBox:這類方法從稠密的3D目標(biāo)候選框出發(fā),通過2D圖像上的特征對所有的候選框進(jìn)行評分,評分高的候選框即是最終的輸出。有些類似目標(biāo)檢測中傳統(tǒng)的滑動窗口方法。代表性的Mono3D算法首先基于目標(biāo)先驗位置(z坐標(biāo)位于地面)和大小來生成稠密的3D候選框。
這些3D候選框投影到圖像坐標(biāo)后,通過綜合2D圖像上的特征對其進(jìn)行評分,再通過CNN再進(jìn)行二輪評分得到最終的3D目標(biāo)框。M3D-RPN是一種基于Anchor的方法,定義了2D和3D的Anchor。2D Anchor通過圖像上稠密采樣得到,3D Anchor是通過訓(xùn)練集數(shù)據(jù)的先驗知識(如目標(biāo)實際大小的均值)確定的。
M3D-RPN還同時采用了標(biāo)準(zhǔn)卷積和Depth-Aware卷積。前者具有空間不變性,后者將圖像的行(Y坐標(biāo))分成多個組,每個組對應(yīng)不同的場景深度,采用不同的卷積核來處理。
上述這些稠密采樣方法計算量非常大。SS3D則采用更為高效的單階段檢測,包括用于輸出圖像中每個相關(guān)目標(biāo)的冗余表示以及相應(yīng)的不確定性估計的CNN,以及3D邊框優(yōu)化器。FCOS3D也是一個單階段的檢測方法,回歸目標(biāo)額外增加了一個由3D目標(biāo)框中心投影到2D圖像得到的2.5D中心(X,Y,Depth)。
4.2 深度估計
不管是上述的3D目標(biāo)檢測還是自動駕駛感知的另一項重要任務(wù)——語義分割,從2D擴(kuò)展到3D,都或多或少得應(yīng)用到了稀疏或稠密的深度信息。
單目深度估計的重要性不言而喻,其輸入是一張圖像,輸出是相同大小的一張由每個像素對應(yīng)的場景深度值組成的圖像。輸入也可以是視頻序列,利用相機(jī)或者物體運(yùn)動帶來的額外信息來提高深度估計的準(zhǔn)確度。
相比于監(jiān)督學(xué)習(xí),單目深度估計的無監(jiān)督方法無需構(gòu)建極具挑戰(zhàn)性的真值數(shù)據(jù)集,實現(xiàn)難度更小。單目深度估計的無監(jiān)督方法可分為基于單目視頻序列和基于同步立體圖像對兩種。
前者是建立在運(yùn)動相機(jī)和靜止場景的假設(shè)之上的。在后者的方法中,Garg等人首次嘗試使用同一時刻立體校正后的雙目圖像對進(jìn)行圖像重建,左右視圖的位姿關(guān)系通過雙目標(biāo)定得到,獲得了較為理想的效果。
在此基礎(chǔ)上,Godard等人用左右一致性約束進(jìn)一步地提升了精度,但是,在逐層下采樣提取高級特征來增大感受野的同時,特征分辨率也在不斷下降,粒度不斷丟失,影響了深度的細(xì)節(jié)處理效果和邊界清晰度。
為緩解這一問題,Godard等人引入了全分辨率多尺度的損失,有效減少了低紋理區(qū)域的黑洞和紋理復(fù)制帶來的偽影。但是,這對精度的提升效果仍是有限的。
最近,一些基于Transformer的模型層出不窮,旨于獲得全階段的全局感受野,這也非常適用于密集的深度估計任務(wù)。有監(jiān)督的DPT中就提出采用Transformer和多尺度結(jié)構(gòu)來同時保證預(yù)測的局部精確性和全局一致性,下圖是網(wǎng)絡(luò)結(jié)構(gòu)圖。
雙目3D感知
雙目視覺可以解決透視變換帶來的歧義性,因此從理論上來說可以提高3D感知的準(zhǔn)確度。但是雙目系統(tǒng)在硬件和軟件上要求都比較高。硬件上來說需要兩個精確配準(zhǔn)的攝像頭,而且需要保證在車輛運(yùn)行過程中始終保持配準(zhǔn)的正確性。
軟件上來說算法需要同時處理來自兩個攝像頭的數(shù)據(jù),計算復(fù)雜度較高,算法的實時性難以保證。與單目相比,雙目的工作相對較少。接下來也同樣從3D目標(biāo)檢測和深度估計兩方面進(jìn)行簡單介紹。
5.1 3D目標(biāo)檢測
3DOP是一個兩階段的檢測方法,是Fast R-CNN方法在3D領(lǐng)域的拓展。首先利用雙目圖像生成深度圖,將深度圖轉(zhuǎn)化為點(diǎn)云后再將其量化為網(wǎng)格數(shù)據(jù)結(jié)構(gòu),再以此為輸入來生成3D目標(biāo)的候選框。
與之前介紹的Pseudo-LiDAR類似,都是將稠密的深度圖(來自單目、雙目甚至低線數(shù)LiDAR)轉(zhuǎn)換為點(diǎn)云,然后再應(yīng)用點(diǎn)云目標(biāo)檢測領(lǐng)域的算法。DSGN利用立體匹配構(gòu)建平面掃描體,并將其轉(zhuǎn)換成3D幾何體,以便編碼3D幾何形狀和語義信息,是一個端到端的框架,可提取用于立體匹配的像素級特征和用于目標(biāo)識別的高級特征,并且能同時估計場景深度和檢測3D目標(biāo)。
Stereo R-CNN擴(kuò)展了 Faster R-CNN 用于立體輸入,以同時檢測和關(guān)聯(lián)左右視圖中的目標(biāo)。在RPN之后增加額外的分支來預(yù)測稀疏的關(guān)鍵點(diǎn)、視點(diǎn)和目標(biāo)尺寸,并結(jié)合左右視圖中的2D邊界框來計算粗略的3D目標(biāo)邊界框。
然后,通過使用左右感興趣區(qū)域的基于區(qū)域的光度對齊來恢復(fù)準(zhǔn)確的3D邊界框,下圖是它的網(wǎng)絡(luò)結(jié)構(gòu)。
5.2 深度估計
雙目深度估計的原理很簡單,就是根據(jù)左右視圖上同一個3D點(diǎn)之間的像素距離d(假設(shè)兩個相機(jī)保持同一高度,因此只考慮水平方向的距離)即視差,相機(jī)的焦距f,以及兩個相機(jī)之間的距離B(基線長度),來估計3D點(diǎn)的深度,公式如下,估計出視差就可以計算出深度。那么,需要做的就是為每個像素點(diǎn)在另一張圖像上找出與之匹配的點(diǎn)。
對于每一個可能的d,都可以計算每個像素點(diǎn)處的匹配誤差,因此就得到了一個三維的誤差數(shù)據(jù)Cost Volume。通過Cost Volume,我們可以很容易得到每個像素處的視差(對應(yīng)最小匹配誤差的d),從而得到深度值。
MC-CNN用一個卷積神經(jīng)網(wǎng)絡(luò)來預(yù)測兩個圖像塊的匹配程度,并用它來計算立體匹配成本。通過基于交叉的成本匯總和半全局匹配來細(xì)化成本,然后進(jìn)行左右一致性檢查以消除被遮擋區(qū)域中的錯誤。
PSMNet提出了一個不需要任何后處理的立體匹配的端到端學(xué)習(xí)框架,引入金字塔池模塊,將全局上下文信息納入圖像特征,并提供了一個堆疊沙漏3D CNN進(jìn)一步強(qiáng)化全局信息。下圖是其網(wǎng)絡(luò)結(jié)構(gòu)。
-
傳感器
+關(guān)注
關(guān)注
2545文章
50445瀏覽量
751052 -
自動駕駛
+關(guān)注
關(guān)注
782文章
13621瀏覽量
165947
原文標(biāo)題:一文讀懂自動駕駛視覺感知技術(shù)
文章出處:【微信號:智能汽車電子與軟件,微信公眾號:智能汽車電子與軟件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論