周蘇 鄭淼 鄭守建 金杰
(同濟大學,上海 201804)
主題詞:卷積神經(jīng)網(wǎng)絡 位姿估計 單目視覺 自動駕駛
目標的位姿估計方法大致可分為基于激光雷達和基于視覺的2 類方法,其中,基于視覺的方法又分為單目視覺方法和雙目視覺方法。以激光雷達作為傳感器的位姿估計方法[1]利用三維點云數(shù)據(jù)結合深度學習對車輛目標的位姿信息進行估計,檢測精度高,魯棒性好,但往往面臨成本、體積和滿足車規(guī)級要求等問題。基于雙目視覺的方法[2-4]利用左、右圖像的視差對不同距離的目標提取相應的特征,且基線越長,測量距離越遠,精度雖高,卻很難滿足實時性要求。相比之下,單目視覺以其成本低、速度快等優(yōu)點在自動駕駛場景中有著廣泛的應用。
在目標的位姿估計中,目標的距離、語義信息和姿態(tài)信息是不可或缺的。在距離檢測方面,單目視覺方法一般采取標定的方式進行距離估計[5-6],即利用先驗信息,以目標的檢測框底邊來估計目標的距離。對于目標姿態(tài)和尺度信息,單目視覺更多采用估計的方式,其中,對目標的語義特征進行建模用于估計目標姿態(tài),目標的參考基準可用于估計尺度信息[7]。例如,Roddick[8]基于ResNet50網(wǎng)絡,對輸入圖片進行特征提取,并對特征進行正交變換處理,解決了透視效果影響的視角問題。但一方面該深度學習方法訓練消耗較大,另一方面,其所搭建的神經(jīng)網(wǎng)絡提取特征困難,導致目標尺度估計的準確率低;而在傳統(tǒng)的基于單目攝像頭的解決方案,如單目同時定位與地圖構建(Simutaneous Location and Mapping,SLAM)[9]算法中,除了單目相機的圖像信號,還會利用慣性傳感器,通過積分預算提供尺度信號和速度信號。傳統(tǒng)方案往往需要利用更多的傳感器來解決單目視覺從二維信號恢復到三維信號的尺度問題,計算量倍增。
針對現(xiàn)有單目視覺方案存在的問題,本文提出一種純單目視覺算法,通過設計卷積神經(jīng)網(wǎng)絡對車輛目標的尺寸、姿態(tài)角以及3D 中心點進行估計?;谝浑A段檢測算法對車輛目標進行定位,訓練一個二級位姿估計網(wǎng)絡用于車輛目標的位姿估計,將檢測算法和位姿算法相結合以解決交通場景中車輛目標位姿估計的問題。
采用如圖1 所示的針孔相機模型。其中,Ow-Xw-Yw-Zw為世界坐標系。分別以相機光心Oc、圖像平面中心O1和圖像平面右上點O2為坐標原點構成相機坐標系Oc-Xc-Yc-Zc、圖像坐標系O1-x-y和像素平面坐標系O2-u-v,f為相機焦距,(Xcp,Ycp,Zcp)為點P在相機坐標系下的坐標,(xp,yp)為點P在圖像坐標系下的坐標。小孔成像原理描述了物相間的關系。
圖1 針孔相機模型
如圖1所示,u軸向右與x軸平行,v軸向下與y軸平行。因此,像素坐標(up,vp)和圖像坐標(xp,yp)滿足:
式中,α、β為縮放因子;cx、cy為平移因子。
令αf=fx、βf=fy,齊次坐標的矩陣形式為:
式中,Pc=(Xcp,Ycp,Zcp)為點P的相機坐標向量;K為相機內參矩陣,可利用張正友標定法[10]標定。
由于相機在運動,所以P的相機坐標應該由它的世界坐標向量Pw,根據(jù)相機當前的位姿變換得到:
式中,R為旋轉向量;T為平移向量。
在進行車輛位姿估計前,需要通過檢測網(wǎng)絡得到目標的類別和檢測框大小。不同類別目標的3D尺度相差較大,對于不同類別分別取均值。針對每個類別目標的尺度差值,以檢測網(wǎng)絡為估計模型,以類別作為先驗信息,降低網(wǎng)絡的學習難度。在KITTI數(shù)據(jù)集上對不同類別目標的3D尺度進行統(tǒng)計,結果如表1所示。
表1 不同車輛類別尺寸均值 m
尺度的損失值取平方差,則損失函數(shù)為:
式中,Dj_gt、Dj_avg分別為對應目標類別的3個尺度的真值、均值;δj為網(wǎng)絡對應的3個尺度的輸出;j=1,2,3分別表示長、寬、高3個尺度。
網(wǎng)絡訓練完成后,目標相應類別的預測值Dj_pre(j=1,2,3)為:
目標的姿態(tài)角模型如圖2所示,目標的姿態(tài)由觀察角θray、當?shù)匚恢媒铅纫约跋鄼C與目標中心連線方向與目標行駛方向之間的夾角θl描述。其中θray由目標在圖像中的位置直接計算得到。θ相同但距離不同的目標經(jīng)過裁剪后的輸入是不同的。因此,對位姿角建模時不能對θ直接建模,應以如圖2 所示的θl進行輸出建模。θl、θray和θ應滿足:
圖2 目標姿態(tài)角模型
θl的取值范圍為[0,2π),對其直接估計相對困難。因此,先對目標的θl進行分類,再對目標采用小角度回歸方式估計姿態(tài)角。設θl的類別數(shù)量為n,則每個類別的角度范圍的大小為2π∕n,第i個類別的角度范圍為[i·2π∕n,(i+1)·2π∕n),i∈{0,1,…,n-1}。θl的類別置信度的損失函數(shù)為:
θl的實際角度偏移為:
設偏移損失函數(shù)為:
化簡并去除比例系數(shù)后的損失函數(shù)為:
采用上述形式的損失函數(shù),其導函數(shù)較為平滑,有利于網(wǎng)絡優(yōu)化。當θl偏移的絕對值較大時,梯度較大,能有效抑制離群點。
車輛三維邊框(3D Bounding Box)可用{a,b,c,w,h,d,Y}表述,其中,(a,b,c)為3D Box的中心坐標,{w,h,d}和Y分別為車輛的長、高、寬和航向角,其值由網(wǎng)絡模型輸出。航向角Y和姿態(tài)角θ滿足Y=π∕2-θ。車輛3D Box建模采用如下假設:車輛的翻滾角和俯仰角均為0;車輛中心與3D Box中心完全重合。
采用檢測網(wǎng)絡能夠獲得精確的車輛2D檢測框(2D Box)。因此,構建2D Box和3D Box之間的投影關系,是車輛3D Box建模的關鍵。如圖3所示,A、B、C、D4個點為目標在圖像中的2D Box角點,編號為0~7的8個點為目標在圖像上的3D Box 角點,交叉線所在面表示目標的朝向。假設候選3D Box的尺度為{w,h,d},其在同原點的世界坐標系中的坐標分別為:
3D Box 的每個角至少能投射到2D Box 的1 條邊上。如圖3 的中點0,其投影到2D Box 的左邊之上,由式(3)可知,兩點坐標滿足:
圖3 3D Box與2D Box之間投影關系
對于其他點也能得到類似方程,即4 個2D Box 與3D Box 之間的約束關系。4 個方程均為類似Ax=0 的線性方程,可以通過奇異值分解(Singular Value Decomposition,SVD)[11]求得相應的平移向量T。一組4 個點到4條邊的約束關系得到一組平移向量,再將平移向量T與物體的3D 尺度代入式(3),就可以得到預測的2D Box和檢測網(wǎng)絡計算的2D Box的誤差。
3D Box 的點和2D Box 的邊之間的關系無法直接獲取,因此,實際計算過程中,取多組點對的計算結果中誤差值對應最小的平移向量作為最后的計算結果,圖4 所示為平移向量T的計算流程。其中,2D Box 用{xmin,ymin,xmax,ymax}表示,目標尺度用{w,h,d}表示,S表示以目標車輛3D Box 中心點為坐標系所對應頂點的坐標,初始投影誤差E設置為一個浮點數(shù)范圍內的極大值。
圖4 平移向量T的計算流程
位姿網(wǎng)絡的輸入為一張包含較大信息量且無關噪聲較少的三通道彩色圖片,設計一種層數(shù)及通道數(shù)較少的卷積神經(jīng)網(wǎng)絡結構,提取特征的同時使位姿網(wǎng)絡的前傳消耗不至于過大。網(wǎng)絡總體結構如圖5 所示。
圖5 位姿網(wǎng)絡結構示意
將檢測到的目標區(qū)域縮放到固定大小(224,224,3)并作為位姿網(wǎng)絡的輸入。設卷積塊內的通道數(shù)量k=8個。卷積塊由多個卷積集組成,每經(jīng)過一個卷積塊會利用步長為2 的卷積操作降低特征圖的尺度,同時增加通道數(shù)量提升特征圖的感受野,作為對特征圖尺度降低的彌補。最后的壓平層模塊將多維輸入轉化為一維,作為卷積層到全連接層的過渡。位姿網(wǎng)絡中的尺度模塊預測目標3D 尺度,分區(qū)模塊推測姿態(tài)角所在的角度分塊區(qū)域,方向模塊推測實際角度與區(qū)塊中的實際角度之間的偏差,3 個模塊共享骨干網(wǎng)絡的輸出特征。
構建網(wǎng)絡結構后,通過上述目標函數(shù)構建網(wǎng)絡總體的損失函數(shù),對神經(jīng)網(wǎng)絡進行訓練。網(wǎng)絡訓練過程的總損失如圖6所示,包括尺度、分區(qū)和方向3個模塊,屬于多任務訓練。任務之間根據(jù)重要程度設置不同的權重比,本文設置損失函數(shù)為:
圖6 位姿估計網(wǎng)絡訓練損失
在網(wǎng)絡訓練過程中,損失逐漸下降且速度變慢,直至網(wǎng)絡收斂。訓練過程中設置批大小為32 張,學習率為0.001,在迭代周期至80 次左右時,網(wǎng)絡趨于收斂。
位姿網(wǎng)絡的可視化特征圖如圖7、圖8 所示。由圖7、圖8可以看出,淺層特征圖保留了車輛形狀和紋理信息,深層特征圖則具有更加抽象的、富含語義的關鍵點信息,如車燈、后視鏡及A 柱等有效特征。從網(wǎng)絡損失角度而言,網(wǎng)絡總體趨勢是收斂的,神經(jīng)網(wǎng)絡能夠有效提取用于降低損失的特征;從可視化的結果也可以看出,對于車輛輸入目標,神經(jīng)網(wǎng)絡能夠有效提取相應的特征。
傳統(tǒng)的紋理貼圖技術確有助益,但是當近距離觀察采用紋理貼圖技術進行繪制的物體時,其效果就大打折扣了。利用傳統(tǒng)的紋理貼圖技術可以呈現(xiàn)出物體表面的一些凹痕和細小的裂紋,但是這些細節(jié)僅僅通過顏色變化而被表現(xiàn)出來,它們更像是被直接涂染到物體表面上而并非客觀存在的,整體的真實感太低。而現(xiàn)實中的物體表面大多并非光滑平坦,而是表現(xiàn)出無數(shù)凹凸不平的細節(jié)。
圖7 可視化特征圖
圖8 深層特征圖與輸入對比
3.3.1 位姿估計網(wǎng)絡算法集成
以檢測網(wǎng)絡的輸出作為位姿估計網(wǎng)絡的輸入,算法主要分為以下幾個步驟:
a.通過目標在圖像中的位置{xmin,ymin,xmax,ymax}和相機的內參計算得到目標的2D框中心c和觀察角θray:
b.將目標圖像裁剪縮放后進行網(wǎng)絡前傳,獲得分類類別置信度最高的區(qū)域m、總類別數(shù)n和偏移角o,姿態(tài)角為:
c.根據(jù)3D Box建模方式計算目標的平移向量T;
d.由T和目標的3D 尺寸得到3D Box 中8 個點在相機坐標系中的坐標,根據(jù)式(3)計算每個點的像素坐標,由此繪制3D Box,流程如圖9所示。
圖9 位姿估計流程示意
3.3.2 位姿估計網(wǎng)絡檢測結果可視化
試驗所使用硬件平臺包括一臺單顯卡的臺式機和一臺帶4 塊TITAN X(PASCAL)顯卡的深度學習工作站。2 個硬件平臺的參數(shù)配置如表2 所示,硬件平臺1 主要用于模型訓練后的系統(tǒng)結構搭建和測試,硬件平臺2 主要用于需要大量并行運算的卷積神經(jīng)網(wǎng)絡的模型訓練。本文關于模型運算速度的測試均在硬件平臺1 上完成,視頻采集設備如圖10所示。
表2 試驗硬件平臺
圖10 視頻采集設備
對KITTI 數(shù)據(jù)集中的車輛目標進行可視化,結果如圖11 所示??梢暬L制過程中,目標朝向的面添加2 條交叉的對角線。對于目標部分被遮擋和被圖像邊緣截斷的情況,通過目標2D Box 和圖像邊界的距離設置閾值進行過濾。普通目標送入位姿估計網(wǎng)絡,被過濾目標只進行2D Box 檢測。實際的視頻采集過程中,被過濾目標大多在本車的相鄰車道或攝像頭視野臨界位置。
圖11 3D Box可視化結果
3.3.3 位姿估計網(wǎng)絡精度對比
精度測試的內容包括目標的尺度(長、寬、高)誤差,基于KITTI測試集對每個目標根據(jù)所屬類別在不同距離下進行計算,每個值計算預測值與真實值之間差值的絕對值,最后在每個距離內進行平均,尺度和角度誤差如圖12所示。
圖12 不同距離下的尺度和角度誤差
在尺度誤差中,寬度和高度的誤差基本不超過0.09 m,長度誤差稍高,但最大值不超過0.24 m。這部分誤差相對較低,原因在于車輛的長、寬、高的取值范圍本身并不大,同時在估計的過程中,最終預測值是網(wǎng)絡輸出的估計偏差與先驗的長、寬、高的統(tǒng)計平均值之和,這樣也保證了最終的結果不會有很大的偏差。在角度誤差中,隨著距離的上升,誤差增大,最大值約為0.18 rad。
同時將本文算法和當前精度最高的單目位姿估計算法子類別感知卷積神經(jīng)網(wǎng)絡(Subcategory-aware Convolutional Neural Networks,Sub-CNN)[12]進行精度對比。采用相機坐標系中心到3D目標中心點的距離作為距離評價指標,誤差如圖13 所示。本文算法相對于Sub-CNN而言,在不同距離下均有更高的精度,平均誤差比Sub-CNN小0.371 2 m。
圖13 本文算法和Sub-CNN距離誤差
2 種方法采用平均方向相似性(Average Orientation Similarity,AOS)作為角度評價指標[13]。以Sub-CNN 和本文算法估計的姿態(tài)角作為評價對象,Sub-CNN 算法平均方向相似性為85.99%,本文算法為86.14%,比Sub-CNN高約0.15百分點。
3.3.4 位姿估計網(wǎng)絡速度測試
位姿估計網(wǎng)絡前傳時間的統(tǒng)計結果如圖14 所示,總體分布趨近于正態(tài)分布,均值為0.019 71 s,方差為5×10-7s2,前傳時間穩(wěn)定。
圖14 前傳時間
針對目標位姿估計問題,本文基于單目視覺原理,提出了一種基于卷積神經(jīng)網(wǎng)絡的位姿估計算法。首先利用KITTI數(shù)據(jù)集的車輛長、寬、高均值進行計算,對長、寬、高和均值的偏差進行尺度估計;對角度采用分類代替回歸的方式,先對角度進行分塊的方式進行分類,再對分類的偏差值進行小角度的回歸以估計目標的姿態(tài)角;最后根據(jù)估計出的目標長、寬、高和姿態(tài)角,利用3D Box 和2D Box 投影關系對目標中心點距離進行建模估計。對整個位姿估計網(wǎng)絡訓練并測試,結果表明,本文所提出的車輛位姿估計網(wǎng)絡實時性較好,且在不同目標距離下與當前最優(yōu)的算法Sub-CNN相比,均有更高的估計精度。