作者 |?山丘 ? ? ?
在目前的L2-L4的自動泊車方案中,攝像頭和超聲波作為核心傳感器通常部署在車輛周圍一圈,常規的情況下,各個攝像頭都是“各司其職”,前視+周視相機往往專注于行車感知,而魚眼相機則專注于360環視和泊車感知。主流的做法都是行泊分開行動,且各個攝像頭的感知場景通常還是隨車輛的不同運行狀態有所不同的。典型的比如,中高速階段(如30kph以上),通常只激活行車攝像頭的感知結果進行模型訓練,盡管這時候泊車攝像頭和超聲波雷達也能在一定程度上起到一定的作用,但是對于行車控制而言,效果卻并不理想。反之,如果是低速情況下時,通常又只激活泊車攝像頭的感知結果,因為泊車的特性就是要求近距離,FOV對場景全覆蓋,這些特性就使得只有類似360環視才能對其產生最佳的識別效果。
那么問題來了:當前也有一些場景期待用類似前視+周視一樣的FOV范圍覆蓋替代掉環視,后續的11V可以直接切換到7V,這樣省成本的方案看起來還是非常誘人的,實際上之前的特斯拉已經有這段想法并付諸實踐研究了,國內的很多視覺感知廠商也在從研究泊車搜車位開始引入利用周視進行車位識別了。
本文將分別講述泊車感知的基礎原理,并分析為什么如上的方案對于泊車來說具有較大的局限性,且不易推廣。
行泊車感知是否能夠復用視覺感知攝像頭
首先,從硬件角度上講,周視攝像頭如果想要替代環視魚眼就需要解決如下幾個比較重要的問題。
1)周視攝像頭數量和對應的安裝位置;
2)周視攝像頭本身的視場角和分辨率需求;
3)泊車環境識別中對ISP的高要求能否實現;
從當前主流的周視布局上看,通常是布局在車身四周的4個攝像頭,這樣的側前側后周視攝像頭一般有兩種規格,一種是四個攝像頭均采用100°攝像頭;另一種是兩個側前視采用60°側后視采用100°攝像頭。實際上從整體俯視圖的覆蓋面上看,這樣的方式足以支撐整車周圍的目標環境探測。然而,我們容易忽略一點,那就是泊車環境對于近距離且高程信息的探測相對于行車環境仍然有更高的要求。比如泊車過程中,車輪與車位線的距離有時候是無法被周視攝像頭探測到的。在者,對于周邊兩側泊車環境的探測,360全景攝像頭采用的是單目識別,只是經過對同一輸入源的感知ISP處理來實現圖像預處理,隨后利用常規的神經網絡進行目標識別。而對于周視攝像頭來說則是利用側方的兩個攝像頭識別的圖像拼接來實現目標識別。由于圖像拼接可能由于算法誤差累積、色彩差異等原因,導致圖像出現拼接縫隙,以及整幅圖像的顏色亮度差異、明暗不一致、目標丟失或拼接圖斷裂的情況。這對于泊車感知能力都是比較大的犧牲。
另一方面,從分辨率角度上講,同樣分辨率的周視攝像頭和360環視攝像頭在關注點上也有所不同。對于攝像頭來說,焦距和視場角是相互制約的,換句話說,諸如環視這類超大FOV的魚眼攝像頭就不可能具備周視一樣相對較高的遠距離識別能力。因此,如果想做到兩者優勢兼得,那么就勢必需要增加對攝像頭的設計投入。比如有些攝像頭廠家也在研究是否可以通過從物理結構上將魚眼相機和周視相機進行總成嵌入,然后再從感知處理架構上進行圖像鏈路區分。采用多模型多任務的處理機制,有針對性的對環境目標進行處理。比如將周視相機的物體檢測功能輸入到周視目標識別神經網絡進行處理;同時,將環視拼接后的圖像輸入到環視車位線檢測的神經網絡模型中。
最后,考慮泊車ISP而言,我們就需要結合行泊車對于場景處理的不同要求來說明了。就ISP處理本身而言,無非也就那幾類比較重要和關鍵的要素場景。比如畸變校正、色彩還原和渲染、圖像去躁、高動態范圍融合的畫面瑕疵處理、多幀處理、低延遲處理等。那么從單純泊車場景上看到底有哪些需要區別于行車場景ISP呢?
不難看出,泊車攝像頭的感知輸入由于其范圍更大,且識別更廣,其輸入圖像通常是一些較為扭曲的圖像。因此,畸變校正便是整個泊車感知處理的核心了。
泊車BEV鳥瞰圖能解決哪些問題
眾所周知,泊車鳥瞰圖的輸入形式很好的保留了地面線條的幾何特征,有利于車位線的檢測,但是這種檢測方式卻存在兩個問題:
首先基于BEV的感泊車知范圍一般局限在車身周圍1.5米以內(如果是周邊5米內的車輛就已經變形嚴重,如果是識別更遠距離的立體目標將會變得更加嚴重)。這是因為鳥瞰圖本身是靠不同方位的攝像頭對于相同范圍的目標識別所形成的逆投影變換IPM所拼接形成的。因此,這就使得其識別距離相對于單攝像頭更短了。
其次,是有高度的物體投影到鳥瞰圖后形狀也會變得更加扭曲。其實這個問題無論是在行車BEV還是泊車BEV上都會存在,只是行車場景不會去過分關注這些目標具體有多高,ADAS系統只是將他們當成障礙物而已。而自動泊車情況下卻不太一樣,因為泊車對于地面凸起物是由比較嚴苛的要求的,也就是一般的凸起物并能成為抑制泊車系統釋放車位的前提條件。從這點上看,如果泊車鳥瞰圖過分扭曲,則會造成對凸起物較大可能的誤識別,很多情況下會導致漏釋放車位,或者誤制動。
解決這類問題就需要考慮原始泊車圖像感知結合超聲波雷達的方式了。對于泊車視覺而言,單目攝像頭識別的原始圖像可以在很大程度上保留原始圖像中較為真實地場景(當然前提是原始圖像需要經過畸變校正才行);但是單目視覺對于車道線的檢測(諸如行車攝像頭)則能力一般,無法做到很好的維持直線的幾何形態,這就給線車位的檢測帶來了極大的難度。當然也有一些主流算法考慮不通過單目泊車直接檢測道線,而是用車位相交線的方法直接定位到線車位四個角點。
那么這樣的方式真正可行嗎?
答案是否定的。實際上,我們在工程實踐中發現,通過各個單目攝像頭檢測角點來劃線擬合車位的作為并不可取,主要原因如下:
每個攝像頭處理車位線并輸入給域控處理形成的角點的時間可能并不完全一致。即便完全參照域控的時間戳進行數據截取也無法完全保證在同一時刻各個攝像頭的輸入線不會因為各種原因發生跳變,實際上這種擔心一點都不夸張,我們在工程實踐中也確實經常遇到車位角點跳變的情況。
因此,為了解決以上問題,我們可以充分結合鳥瞰圖和單目圖像的優勢分別輸入不同的處理網絡架構,進行任務處理。且兩種架構必須保持松耦合的關系,進行獨立運算,最后輸出結果進行融合,將確保泊車感知的效能提升一個臺階。仍舊以如上的車位檢測舉例,鳥瞰圖將同一個車位的車位線進行檢測并輸出后,由后端網絡在平面上進行車位線的相交處理,生成對應的相交點,這就是車位角點,這種形式輸出的角點將十分穩定。
下面,本文將詳細講解這類泊車融合網絡將如何實現。??
泊車系統環視相機深度信息估計
簡單來講,對于泊車車位檢測的手段可以分為如下幾個步驟:(1)角點檢測;(2)線段檢測;(3)后處理過濾、平滑、配對;(4)幀與幀直接的預測,即通過推算當前幀得出下一幀的車位位置;(5) 在AVM成像的鳥瞰圖上進行處理,降低難度;(6)車位類型的分類;(7)車位角點和線段的分類。
對于泊車而言,如果想實現深度估計通常還是傳統的單目視覺測距的方式,這種方式是參照行車感知的方式,利用攝像頭對前方目標采集的視頻信息,利用幀間圖像匹配來實現目標識別,然后通過目標在圖像中的大小來估計目標距離。單目測距需要從單幅圖中理解幾何配置,不僅需要考慮局部線索,還需要同步考慮全局上下文。因此,單獨視覺測距需要龐大的訓練真值數據,才能保證較高的識別率,整體測距精度較低。
實際上單目視覺感知包括如下兩種處理模塊:
1)魚眼相機去畸變
與智能行車這類視覺感知(針孔模型投影)相比,魚眼模型投影需要考慮魚眼畸變的影響。主要表現為魚眼相機具有強烈的徑向畸變,并表現出更復雜的投影幾何形狀,導致外觀畸變。基于CNN的監督方法由于其優越的性能,在單目深度估計任務中很受歡迎。因此,利用魚眼畸變模塊(FDM)在3D空間和2D 圖像平面之間正確建立魚眼投影,可以排除畸變的干擾。
相比針孔相機模型可以將三維點直接投影到歸一化平面,魚眼相機則多了一個中間過程:先將三維點投影到單位球面,再將單位球面上的點投影到歸一化平面上。
通過給定相機坐標系中的3D 點(x, y,z)和相機參數,可求出圖像坐標系中的位置2D坐標(u, v),參照常規的針孔模型投影坐標(a, b)表示a=x/z, b=y/z和,需要計算投影射線的場角;
然后對魚眼畸變投影,利用魚眼畸變參數計算修正角r=a2+b2.然后對魚眼畸變投影,利用魚眼畸變參數計算修正角0 d:
對于魚眼識別中的畸變點坐標(x',y')可以計算出結果如下:
2)通過投影3D真值來生成2D標簽
基于如上分析的魚眼畸變矯正模型,最終可以計算像素坐標矢量(u, v)表示如下:
其中,fu、fv、cu、cv是相機的固有參數,Cu、Cv表示畸變系數。X’,y’表示通過魚眼拍攝的畸變圖像點。根據如上公式,可以成功地基于扭曲的真值3D坐標P=(X,Y,Z)來構建投影在圖像上的2D真值坐標(u, v)。
3)從2D圖像點恢復3D位置:
對于三維世界中的一點P,其坐標向量為(X,Y,Z),P在相機坐標系中的坐標可以表示為Xc=RX+T. 其中R、T分別為世界坐標系到相機坐標系的旋轉與平移矩陣。如果要通過圖形坐標恢復世界坐標系下的三維坐標P=(X,Y,Z)。對于針孔投影到相平面上的坐標表示形式,主要需要根據求解針孔模型投影坐標(a, b):其中,
最后,a,b在與世界坐標系下對應關系為a=X/Z,b=Y/Z,通過在魚眼球面投影坐標的對應關系可以求得世界坐標系下的P=(X,Y,Z)值。
泊車系統的敏感不失真網絡架構
如前分析,泊車系統的感知探測過程和結果都是極其不穩定的。不管是對車道線相對車輛的實時距離精度還是車位角點可能出現的跳變。因此,構建穩定的融合感知網絡就顯得尤為必要。實際上,行泊車感知的終極處理方式都是采用混合網絡架構進行,顧名思義,混合網絡就是對局部+整體分別進行特征提取、CNN及融合結果輸出。
為了對泊車過程中可能出現的失真敏感網絡進行檢測和優化,這里我們將介紹一種環視魚眼單目失真不敏感多任務框架FPNet(如下圖所示)。
FPNet的整個網絡架構實現了三個維度的感知檢測融合:包括一個2D目標標檢測頭、一個3D 目標檢測頭和一個深度估計頭。
其中,2D目標檢測主要集中在尋找圖像中目標的邊界框,其檢測效率較高,速度較快能很快檢出特征目標物。而單目3D 目標檢測則嘗試定位目標的3D位置,并回歸目標的尺寸和方向,顯然這種方式對于還原場景中的目標物將更加精確。為了在性能和速度之間的權衡,可以設計一個共享特征提取器,該提取器是基于中心的框架來平衡滿足對2D和3D 目標檢測能力的,這樣的特征提取結果可以很好的應用到如上提到的三條預測網絡中。對于2D目標檢測,為了減少計算量,利用預測從2D中心到投影3D中心的偏移量,然后可以通過添加上述投影3D中心預測和這個偏移量來獲得2D中心預測。
由此,整個失真不敏感多任務框架是通過給定一個魚眼單目圖像,直接采用共享特征提取器來獲得特征,從而為以下2D目標檢測、3D單目目標檢測(BEV感知)和密集深度估計做準備。隨后通過多任務感知頭,完成三個任務的預測。在訓練過程中,將3D真值投影到單目影像平面上,產生預測監督。隨后,利用后處理模塊對網絡預測進行解碼,并結合魚眼畸變模塊進行畸變矯正。
編輯:黃飛
評論
查看更多