趙嘉豪,齊志權,齊智峰,王 皓,何 磊
(1. 北京理工大學機械與車輛學院,北京 100081; 2. 毫末智行科技有限公司,北京 100192)
近些年,自動駕駛技術已經成為汽車工業(yè)的重要研究領域。智能汽車環(huán)境感知技術是自動駕駛技術中不可缺少的一部分,為自動駕駛汽車的規(guī)劃和控制提供環(huán)境信息。
計算機視覺技術的快速發(fā)展和視覺傳感器具有的信息豐富、成本低廉的優(yōu)勢使得視覺環(huán)境感知廣泛應用于自動駕駛環(huán)境感知。
早期,視覺環(huán)境感知大多利用幾何先驗知識作為感知引導。Stein 等[1]提出基于圖像中2D 位置,使用透視關系進行自動駕駛中前方車輛測距,用于進行車輛自適應巡航控制。Chen等[2]基于地平面假設提出了用于自動駕駛的單目3D 目標檢測模型。后續(xù)使用幾何先驗的方法中,Chabot 等[3]建立目標CAD 模板庫用于車輛識別;Chen 等[4]引入PnP 投影進行目標定位;Chen 等[5]引入目標相對位置優(yōu)化檢測效果。
基于幾何先驗的模型通常存在模型結構復雜、部署困難的問題,因此,Zhou 等[6]參考2D 目標檢測模型提出基于key-point 且不引入幾何先驗的3D 目標檢測模型CenterNet。基于CenterNet 的思想,文獻[7]~文獻[9]中提出在2D 圖像中回歸3D 投影中心點,用于計算目標3D 位置;Wang等[10]提出使用二維高斯分布定義中心度,提高3D 投影中心點定位精度。
同時,激光雷達在自動駕駛中的應用促進了基于圖像深度估計的單目3D 目標檢測模型的發(fā)展。Wang 等[11]提出基于Pseudo-lidar(偽激光點云)單目3D 目標檢測方法;Reading 等[12]提出點云深度離散化及BEV空間3D目標檢測方法;Park等[13]提出基于Pseudo-lidar的one-stage單目3D目標檢測模型。
實際應用中,智能車輛通常在車身兩側安裝側視相機用于車身兩側環(huán)境感知。當目標車輛與自車橫向距離在5 m 以內,縱向距離在8 m 以內,且目標車輛車身長度不小于10 m 時(并行大型車輛),目標車輛在側視相機圖像中同時受到目標截斷和圖像邊緣畸變影響,導致朝向角檢測穩(wěn)定性差。
由于目標朝向角是預測目標速度和軌跡的重要因素,進一步影響到自車的規(guī)劃和控制,因此并行大型車輛朝向角檢測不穩(wěn)定對于智能車輛行駛安全性和舒適性造成極大影響。
國內外專門針對此問題開展的研究工作較少,因此針對以上問題,本文在3D 目標檢測朝向角處理中引入幾何先驗,做出如下工作:
(1) 提出一種使用相機逆投影方法計算大型車輛輪胎特征點位置,進而計算大型車輛朝向角的方法;
(2) 基于已有3D 目標檢測卷積神經網絡模型,在不影響原有模型基礎上增加輪胎特征點檢測分支;
(3) 建立并行大型車輛朝向角驗證數據集,對算法進行驗證。
由實車側視相機道路拍攝如圖1 所示,目標車輛由綠色方框包圍。目標車輛車身較長,與自車并行,橫向距離較小,導致相機視野中不能包括完整車身,即目標截斷。
圖1 實車采集圖像說明
圖像畸變指的是圖像中原本應該是直線的地方發(fā)生不自然的變形或扭曲,如圖中兩條紅色直線為目標車輛貨箱下邊緣在圖像中不同位置的切線,可以看到在圖像邊緣位置,畸變現象十分嚴重。
視覺感知實際應用中,目標截斷和圖像畸變的主要問題如下:
(1) 目標截斷導致圖像中目標信息缺失,相較于非截斷目標,特征提取難度增大;
(2) 圖像畸變在大規(guī)模數據自動標注中導致激光點云與圖像目標無法對齊,影響標注精度,進一步影響3D目標檢測效果。
由于同時受到以上兩個問題的影響,3D 目標檢測模型對于并行大型車輛朝向角的預測效果較差。同時僅從3D 目標檢測模型本身出發(fā)上述兩個問題很難得到有效解決,因此本文引入幾何先驗知識,提出基于輪胎特征點位置并行大型車輛朝向角計算方法。
本文通過Prescan 搭建模擬場景對朝向角進行描述。如圖2 所示,圖中轎車代表自車,廂式貨車代表目標車輛,θ即為所求目標車輛朝向角,將其定義為目標車輛車身與自車車輛坐標系X軸之間的夾角。
圖2 朝向角示意圖
對于一個大型車輛輪胎,本文定義了輪胎接地點、輪胎中心點、輪胎上頂點3 個特征點,如圖3 所示。
圖3 大型車輛輪胎特征點定義
1.3.1 相機逆投影模型
圖4為針孔相機成像模型。
圖4 針孔相機成像模型 [14]
基于此模型提出的相機逆投影模型如式(1)所示:
式中 :(Xc,Yc,Zc) 為P點在相機坐標系下位置;(u,v)為P點投影至圖像中像素坐標系的坐標;fx和fy為相機X和Y方向上的焦距; (cx,cy)為像素坐標系中光軸對應的坐標;K為相機內參矩陣,通常由相機標定得到。
由于針孔相機模型僅能代表理想視覺傳感器,在實際成像中圖像會發(fā)生畸變, 因此本文使用多項式畸變模型進行圖像坐標修正。
1.3.2 車輛坐標系與相機坐標系描述
車輛坐標系如圖5 白色坐標系所示,坐標系原點Ov建立在汽車后軸中心點,X軸指向車輛前進方向,Y軸水平指向車輛左側,Z軸垂直于水平面向上。自動駕駛車輛中通常使用左前、右前、左后、右后4個側視相機進行車身周圍環(huán)境感知,圖5 中藍色坐標系為典型自動駕駛左前相機的相機坐標系,Oc為相機坐標系原點,為相機鏡頭光心位置,相機光軸與Z軸重合指向車輛左前方,X軸指向相機右側,Y軸指向相機下方。
圖5 車輛坐標系與左前相機坐標系
1.4.1 特征點位置計算朝向角
如圖6 所示,目標車輛不同輪胎同一類別特征點在自車車輛坐標系下的坐標可以用于估計目標車輛朝向角。以圖中目標車輛最前方輪胎和最后方輪胎的輪胎接地點為例計算目標車輛朝向角。
圖6 特征點位置計算朝向角示例
式中:P1、P2代表選擇的兩個特征點在自車的車輛坐標系下的位置;θ代表根據目標車輛輪胎特征點計算得到的朝向角。
1.4.2 輪胎接地點逆投影朝向角計算
基于相機逆投影模型可以得到式(3),用于根據像素坐標系中特征點像素坐標計算車輛坐標系下特征點3D坐標。
式中:(u,v)為接地點特征點在像素坐標系下的坐標;Rvc、Tvc為由相機坐標系到車輛坐標系的旋轉矩陣和平移向量;K為相機內參矩陣;(Xv,Yv,Zv)為特征點在車輛坐標系下的3D 坐標;Zc為特征點在相機坐標系下的Z坐標。
由于式中Zc為非固定值,無法通過標定獲取,因此對于特征點中的接地點,本文中提出基于地平面假設[1]進行信息補全,進一步計算出接地點在自車車輛坐標系下的位置。
地平面假設將自車周圍一定范圍內的路面作為平面處理,則該范圍內所有車輛接地點在自車車輛坐標系下的Z坐標為定值,代入式(3)有:
式中Zground為自車后軸距地面高度的相反數。
式(4)為可解的線性方程,可以計算出輪胎接地點在自車車輛坐標系下準確的3D 位置,任取目標車輛兩個輪胎接地點代入式(2)可以求出目標車輛朝向角。
車輛轉向時,由于車輛軸距遠遠大于前輪特征點移動距離,并且在車輛并行行駛時,一般轉向角較小,因此前輪轉角對車輛朝向角估計計算結果的影響較小。
1.4.3 輪胎非接地點特征點逆投影計算朝向角
在車輛實際行駛過程中,存在由于車道較窄相鄰車輛間距過近導致相機視野中無鄰近車輛接地點的情況,如圖7 所示。
圖7 無接地點并行大型車輛案例
在上述案例中,由于接地點信息丟失,無法使用基于地平面假設的朝向角計算方法,且不同車型輪胎大小不一致,無法獲取確定的特征點距地面高度,地平面假設無法使用,因此本文中提出了基于相對位置的非接地特征點大型車輛朝向角的計算方法。
在相機光心處定義中間坐標系Om,其原點與相機坐標系重合,坐標系XYZ軸與車輛坐標系方向一致。
定義Tvc:
式中Tx、Ty、Tz分別為由相機坐標系到車輛坐標系的X、Y、Z軸坐標的平移量。
對于空間一點P在車輛坐標系下坐標為(Xv,Yv,Zv),其在中間坐標系的坐標(Xm,Ym,Zm)為
將式(6)代入式(2)得
式中: (Xm1,Ym1)、(Xm2,Ym2)表示用于計算朝向角的特征點在中間坐標系的位置;θ為目標車輛朝向角。
式(7)證明通過特征點在中間坐標系坐標同樣可以計算目標車輛朝向角,但是對于非接地特征點,其在中間坐標系的坐標依舊無法求取,因此本文利用大型車輛前后輪特征點高度一致的特征計算朝向角。
首先,本文對于前后輪特征點高度進行假設,設其在車輛坐標系下的真實高度為Zt,則在中間坐標系中其真實高度Zmt=Zt-Tz,得到特征點在中間坐標系的坐標計算式:
式中:(u,v)為特征點在圖像像素坐標系下的坐標;Rvc為相機坐標系到車輛坐標系轉換的旋轉矩陣;K為相機內參矩陣;(X'mt,Y'mt,1)為假設Zc為1 時計算得到的特征點在相機坐標系下的坐標;(Xm,Ym,Zm)為計算得到的像素點在中間坐標系的坐標。
然后,將式(9)代入式(7),得
式中:Zc1、Zc2分別是選中的兩個特征點在相機坐標系下的深度;(X'mt1,Y'mt1,1)、(X'mt2,Y'mt2,1)為選中的兩個特征點在假設Zc為1時的中間坐標系坐標。
根據式(9)和式(10),因為前后輪特征點在自車車輛坐標系下Zt相等,所以Zc1=Zc2,則式(11)可以進一步簡化為
其中:
式中:(u1,v1)、(u2,v2)代表選中的特征點在像素坐標系下的坐標;Rvc為相機坐標系到車輛坐標系的旋轉矩陣;K為相機內參矩陣;θ為根據目標車輛輪胎特征點計算得到的朝向角。
本文在原有3D 目標檢測模型基礎上增加輕量化分支用于輪胎特征點檢測。3D 目標檢測模型用于周圍環(huán)境3D 目標檢測,根據目標3D 位置和類別篩選出并行大型車輛,在此基礎上,應用本文提出的算法進行并行大型車輛的朝向角估計計算。
在分支結構設計上,本文中使用檢測精度和檢測速度均表現良好且在工業(yè)界有較多應用的yoloV3神經網絡算法的模型結構[15]。yoloV3為全卷積onestage 模型,其檢測速度優(yōu)于two-stage 方法。同時,yoloV3 的FPN 結構可以提取不同尺寸的特征圖,在多個特征圖中進行檢測,相較于在單個尺寸特征圖進行檢測能夠有更好的召回率。
模型網絡結構如圖8 所示,分為兩個分支:主分支用于單目3D 目標檢測,根據輸入圖像進行車輛兩側環(huán)境感知;子分支用于大型車輛輪胎特征點檢測。子分支模型結構與主分支完全一致,不同之處在于為了降低子分支的算力消耗,backbone 采用移除全連接層后的ResNet18,而不是與主分支相同的移除全連接層后的ResNet34[16]。
圖8 輪胎特征點檢測模型網絡結構圖
圖片經過前處理后輸入到主分支backbone 中,主分支backbone 對輸入圖片進行處理后輸出4 個不同大小的特征層,其中后3 個高級特征層用于主分支進行3D 目標檢測。第一個低級特征層為144×256,通道數為64,作為輪胎特征點檢測分支的輸入。特征點檢測分支backbone 輸出3 個不同尺度的特征層用于輪胎特征點檢測。
模型兩個分支均使用了FPN對不同尺度的特征進行融合,其具體結構如圖9 所示。backbone 輸出的特征層由低級到高級為特征層1 到特征層3。特征層輸入到FPN 中,進行逐級的特征融合后輸出。圖中DBL 表示由Conv、BN、Leaky relu 順序連接組成的模塊。
圖9 FPN結構
檢測頭結構采用yoloV3的檢測頭結構。每一個尺度的特征層由FPN 結構輸出后經過一個DBL 模塊處理,再經過一次卷積為最終輸出。輪胎特征點檢測模型的3 個尺度分別將圖片分割為9×16、18×32、36×64 的網格,其中每個網格內設置3 個anchor用于進行特征點檢測。
輪胎特征點檢測方案采用了基于yoloV3 的anchor based 檢測方法。圖10 所示為輪胎特征點標注示例,將特征點標注為以特征點為中心的2D邊界框,同時將輪胎整體進行標注。在訓練時將3 類特征點與輪胎整體作為4個不同的類別進行處理。
圖10 特征點標注示例
本文標注并行大型車輛數據共7998張圖片,其中隨機選取7593 張圖片作為網絡訓練數據,剩余405張數據作為驗證集用于模型訓練驗證。
由于主分支訓練數據集達到10 萬量級,子分支訓練數據集僅有7593 張,訓練數據量極度不平衡,且需要優(yōu)先保證主分支的模型性能,因此本文在訓練時,首先對主分支進行訓練。主分支訓練完畢后,將主分支所有參數凍結,在此基礎上進行子分支的訓練,保證子分支訓練不影響主分支模型性能。
訓練數據原始圖片為1920×1080,前處理中圖片尺寸調整為1024×576 作為模型輸入。在子分支訓練中,本文基于不同的數據增強方式進行了兩次實驗,驗證不同數據增強方式下模型訓練結果。兩次實驗中僅數據增強方式不同,訓練集和驗證集保持一致,訓練次數均設置為140,實時記錄每次訓練的損失值,在訓練結束后在驗證集中進行模型驗證。
圖11 為兩次實驗中的損失函數變化圖。實驗1為數據增強中配置了mossaic和mixup兩種數據增強方式,實驗2 中僅配置了mixup 一種數據增強方式。兩次實驗中l(wèi)oss函數在20次訓練時均基本達到收斂狀態(tài)。圖12 為實驗2 模型對白天和夜晚的輪胎特征點檢測結果。
圖11 模型訓練損失函數
圖12 模型檢測結果
本文基于python語言實現提出的朝向角計算方法。圖13 為算法實現主體邏輯。
圖13 朝向角處理邏輯
(1) 各相機拍攝的圖像首先經過網絡進行3D目標檢測和特征點檢測,輸出圖像內各個目標的3D位置及其2D 邊界框和圖像內特征點位置。若圖像中不存在特征點,則直接返回3D目標檢測結果。
(2) 如果圖像內檢測到特征點,則進行特征點匹配。在模型輸出的3D 目標中篩選出并行大型車輛及其2D 邊界框,通過2D 邊界框包含關系進行特征點和目標車輛的匹配。隨后對所有匹配到特征點的并行大型車輛進行朝向角計算。
(3) 根據本文算法進行朝向角計算。
(4) 對于3D 目標檢測結果中朝向角和特征點計算得到的朝向角進行篩選處理。
(5) 輸出并行大型車輛朝向角最終檢測結果。
具體匹配結果計算大型車輛朝向角流程如圖14 所示。輸入為并行大型車輛及該車輛匹配到的特征點。
圖14 朝向角計算流程
(1) 若目標車輛匹配到兩個及以上接地特征點,則優(yōu)先使用接地點進行朝向角計算?;诘仄矫婕僭O計算所有接地點位置,選擇距離最遠的兩個接地點進行朝向角計算。
(2) 若接地點特征點數量不足兩個,則使用中心點或上頂點根據相對位置計算朝向角。將同類別的特征點均假設Zc為1 后進行位置計算。選擇相對位置最遠的兩個特征點,根據相對位置計算目標車輛朝向角。
(3) 若3個類別特征點的數量均不足兩個,則無法進行朝向角計算,輸出3D 目標檢測結果中的朝向角。
本文主要針對并行大型車輛的朝向角檢測進行研究,用于驗證本文朝向角計算算法有效性的實驗數據均來自實驗車道路采集,包含大客車、貨車、板車等大型車輛。
圖15 為大型車輛朝向角計算可視化結果,左上、右上、左下、右下順序4 張圖片分別代表實驗車采集的左前方、右前方、左后方、右后方視角的同一時刻的相機數據。右側網格圖為根據檢測結果進行鳥瞰圖視角下可視化的結果,每個網格代表實際空間中5 m 范圍。目標大型車輛在鳥瞰圖可視化結果中用紅色方框表示。
圖15 大型車輛朝向角可視化
圖中綠色方框代表模型檢出的2D 邊界框,其中up、mid、down、wheel標注分別對應于輪胎上頂點、輪胎中心點、輪胎接地點、輪胎整體(圖中區(qū)域有限僅顯示單詞前3 個字母),為特征點檢測子分支檢測出的輪胎特征點以及輪胎。
本文從路測數據中并行大型車輛情景中篩選出不同時刻共計158 張圖片以及對應時刻各傳感器數據,作為最終并行大型車輛朝向角計算結果實驗評測集。根據激光雷達點云進行標定,作為評測集中目標朝向角真值。
表1 為單目3D 檢測模型和特征點檢測算法在評測集中統(tǒng)計數據對比。評測集中存在一部分目標,其在相機視野中的輪胎數量少于兩個,特征點朝向角計算方法無法處理,因此特征點朝向角計算方法統(tǒng)計數量少于模型3D目標檢測。
表1 朝向角檢測結果對比
特征點朝向角計算方法誤差均值相較于模型3D 目標檢測方法降低1.63°,誤差范圍在5°、10°、20°以內占比分別提高1.2、3.7、2.9 個百分點,朝向角計算穩(wěn)定性有明顯提高。
為保證模型實時性要求,本文對模型增加特征點檢測分支前后進行檢測速度和參數量對比,對比結果如表2 所示。模型基于mmdetection 代碼平臺實現,其中pytorch 版本為1.6.0,mmcv 版本為1.3.14,GPU 采用V100 顯卡,CUDA 版本為11.0。增加輪胎分支后,模型參數量增加64%,由25.77×106增加至42.30×106,fps 降低39%,由103.4 降至62.8,滿足大于30 fps的實際使用需求。
表2 模型檢測速度及參數量對比
本文采用實驗2 模型作為最終特征點檢測模型,其驗證結果如表3 所示,模型準確率約為98%。召回率最小值為輪胎中心點的召回率81.0%,最大值為接地點的召回率87.2%。
表3 特征點檢測準確率與召回率
表4 為特征點定位精度統(tǒng)計結果,分別統(tǒng)計了不同特征點的平均定位誤差。分析統(tǒng)計結果可以發(fā)現特征點X方向定位誤差略大于Y方向定位誤差,約為5 像素,Y方向平均定位誤差約為3 像素。兩個方向上定位精度均滿足車輛朝向角計算需求。
表4 特征點定位精度統(tǒng)計
針對單目3D 目標檢測在自動駕駛實際應用中并行大型車輛朝向角預測穩(wěn)定差的問題,本文引入幾何先驗知識,基于相機逆投影模型提出利用輪胎特征點計算并行車輛朝向角的方法,基于已有3D 目標檢測卷積神經網絡模型,在不影響原有模型基礎上增加輪胎特征點檢測分支,建立并行大型車輛朝向角驗證集驗證所設計算法,結果表明:
(1) 本文提出的利用輪胎特征點計算并行車輛朝向角的方法,能夠提高單目3D目標檢測模型針對并行大型車輛的朝向角檢測穩(wěn)定性;
(2) 增加輪胎特征點檢測分支后,3D 目標檢測模型計算速度仍能夠滿足實時性需求;
(3) 輪胎特征點檢測子分支具有較高的準確率和定位精度,能夠保證算法穩(wěn)定性。