
基於深度學習的計算機視覺,應用於無人駕駛的視覺感知系統中,主要分為四大塊:
動態物體檢測(Dynamic Object Detection)
通行空間(Free Space)
車道線檢測(Lane Detection)
靜態物體檢測(Static Object Detection)
主要從需求、難點、實現三個方面對每項感知部分做剖析。上述檢測的難度從難到易排序:DOD>FS=LD>SOD。
檢測需求:對車輛(轎車、卡車、電動車、自行車)、行人等動態物體的識別;檢測難點:(三座大山:檢測類別多、多目標追蹤難度大、測距精度足夠准)
(1)遮擋情況情況較多,heading朝向的問題,測距精準度(2)行人、車輛類型種類較多,難以覆蓋,容易誤檢(集裝箱vs卡車、樹幹vs行人)
實現方案:攝像頭的內外參標定;對動態物體的檢測,尤其是車輛的檢測,是需要給出車輛的3D bounding box的(給出一個偽3D也是可以的),所以在神經網絡的訓練打標籤時與普通的2D檢測有區別,3D的好處在於能給出車的一個heading信息,以及車的高度信息。車輛及行人都要給出對應的id號,要加入多目標跟蹤算法,遮擋情況下的id難以維持,這是一個難點。另外神經網絡提取特徵能力再強大,也不能cover掉所有的動態物體檢測,可以依據現實場景增加一些幾何約束條件(如汽車的長寬比例固定,卡車的長寬比例固定,車輛的距離不可能突變,行人的高度有限等),增加幾何約束的好處是提高檢測率,降低誤檢率,如轎車不可能誤檢為卡車;方案是訓練一個3D檢測模型(2.5D也行)加後端多目標追蹤優化加基於單目視覺幾何的測距方法。對於動態物體的檢測,最後需要結合激光雷達的結果進行融合,在夜間、雨雪天氣,視覺無法處理;同時,有激光雷達信息,對於車輛的朝向信息判斷更準確,僅憑一個攝像頭去做檢測、去做heading、去做精準的距離判斷,難度太大。
結合激光雷達,夜晚能準確給出車輛的heading信息
檢測需求:對車輛行駛的安全邊界(可行駛區域)進行劃分,主要對車輛、普通路邊沿、側石邊沿、沒有障礙物可見的邊界、未知邊界進行劃分。
(1)複雜環境場景時,邊界形狀複雜多樣,導致泛化難度較大。不同於其它的檢測有明確的檢測類型(如車輛、行人、交通燈),通行空間需要把本車的行駛安全區域劃分出來,需要對凡是影響本車前行的障礙物邊界全部劃分出來,如平常不常見的水馬、錐桶、坑窪路面、非水泥路面、綠化帶、花磚型路面邊界、十字路口、T字路口等進行劃分。
(2)標定參數校正;在車輛加減速、路面顛簸、上下坡道時,會導致相機俯仰角發生變化,原有的相機標定參數不再準確,投影到世界坐標系後會出現較大的測距誤差,通行空間邊界會出現收縮或開放的問題。
(3)邊界點的取點策略和後處理;通行空間考慮更多的是邊緣處,所以邊緣處的毛刺,抖動需要進行濾波處理,使邊緣處更平滑。障礙物側面邊界點易被錯誤投影到世界坐標系,導致前車隔壁可通行的車道被認定為不可通行區域,如下圖所示。
實現方案:攝像頭標定(若能在線標定最好,精度可能會打折扣),若不能實現實時在線標定功能,增加讀取車輛的IMU信息,利用車輛IMU信息獲得的俯仰角自適應地調整標定參數;選取輕量級合適的語義分割網絡,對需要分割的類別打標籤,場景覆蓋儘可能的廣;描點操作(極坐標的取點方式),邊緣點平滑後處理操作(濾波算法)。
檢測需求:對各類車道線(單側/雙側車道線、實線、虛線、雙線)進行檢測,還包括線型的顏色(白色/黃色/藍色)以及特殊的車道線(匯流線、減速線等)的檢測。
標準單一情況下的車道線識別難度不大,路況大都是平行筆直的實線或虛線(如特斯拉支持高速公路的輔助駕駛,它們的車道線檢測擬合的效果極好)。車道線的檢測難點在於:(1)線型種類多,不規則路面檢測車道線難度大;如遇地面積水、無效標識、修補路面、陰影情況下的車道線容易誤檢、漏檢。(2)上下坡、顛簸路面,車輛啟停時,容易擬合出梯形、倒梯形的車道線。(3)彎曲的車道線、遠端的車道線、環島的車道線,車道線的擬合難度較大,檢測結果易閃爍;實現方案:傳統的圖像處理算法需經過攝像頭的畸變校正,對每幀圖片做透視變換,將相機拍攝的照片轉到鳥瞰圖視角,再通過特徵算子或顏色空間來提取車道線的特徵點,使用直方圖、滑動窗口來做車道線曲線的擬合,傳統算法最大的弊端在於場景的適應性不好。採用神經網絡的方法進行車道線的檢測跟通行空間檢測類似,選取合適的輕量級網絡,打好標籤;車道線的難點在於車道線的擬合(三次方程、四次方程),所以在後處理上可以結合車輛信息(速度、加速度、轉向)和傳感器信息做航位推算,儘可能的使車道線擬合結果更佳。
Tesla Model3 Autopilot渲染在HMI界面的車道線結果(極其穩定,極其魯棒)靜態物體檢測:
檢測需求:對交通紅綠燈、交通標誌等靜態物體的檢測識別;檢測難點:(1)紅綠燈、交通標識屬於小物體檢測,在圖像中所占的像素比極少,尤其遠距離的路口,識別難度更大。如下圖紅綠燈在1920*1208的像素層面上占據的像素大小僅為18*45pixel左右,在強光照的情況下,人眼都難以辨別,而停在路口的斑馬線前的汽車,需要對紅綠燈進行正確的識別才能做下一步的判斷。
(2)交通標識種類眾多;採集到的數據易出現數量不均勻的情況。
(3)交通燈易受光照的影響,在不同光照條件下顏色難以區分(紅燈與黃燈),且到夜晚時,紅燈與路燈、商店的燈顏色相近,易造成誤檢;實現方案:通過感知去識別紅綠燈,有一種捨身取義的感覺,效果一般,適應性差,條件允許的話(如固定園區限定場景),該裝V2X就裝V2X,多個備份冗餘,V2X > 高精度地圖 > 感知識別。若碰上GPS信號弱的時候,感知識別可以出場了,大部分情況,V2X足以Cover掉大部分的場景。感知方案的具體實現參照文章,主要為紅綠燈數據集採集,標籤處理,檢測模型訓練,算法部署,追蹤後端優化,接口開發;(1)真值的來源。定義,校準,分析比對,絕不是看檢測結果的map或幀率,需要以激光的數據或者RTK的數據作為真值來驗證測距結果在不同工況(白天、雨天、遮擋等情況下)的準確性;(2)硬件幀率、資源消耗。多個網絡共存,多個相機共用都是要消耗cpu、gpu資源的,如何處理好這些網絡的分配,多個網絡的前向推理可能共用一些卷積層,能否復用;引入線程、進程的思想來處理各個模塊,更高效的處理協調各個功能塊;在多相機讀取這一塊,做到多目輸入的同時不損失幀率,在相機碼流的編解碼上做些工作。(3)多目融合的問題。一般在汽車上會配備4個(前、後、左、右)四個相機,對於同一物體從汽車的後方移動到前方,即後視攝像頭可以看到,再移至側視相機能看到,最後移至前視相機能看到,在這個過程中,物體的id應保持不變(同一個物體,不因相機觀測的變化而改變)、距離信息跳變不宜過大(切換到不同相機,給出的距離偏差不宜太大,)(4)多場景的定義。針對不同的感知模塊,需要對數據集即場景定義做明確的劃分,這樣在做算法驗證的時候針對性更強;如對於動態物體檢測,可以劃分車輛靜止時的檢測場景和車輛運動時的場景。對於交通燈的檢測,可以進一步細分為左轉紅綠燈場景、直行紅綠燈、掉頭紅綠燈等特定場景。公用數據集與專有數據集的驗證。(5)回放工具驗證,感知輸出的離線數據分析。肉眼觀察視覺感知的效果是不可靠的,需要將視覺檢測的結果,激光的結果,RTK的結果都統一在回放工具上,對視覺檢測的結果進行離線分析,包括距離誤差的分析、檢測效果與距離的分析、曲線擬合的分析等等,完成這些工作需要統一時間戳,同時輸出視覺檢測結果的類別信息,距離信息和作為真值傳感器的輸出信息,進行分析對比,以此驗證視覺感知結果的好壞。上述為視覺感知中的具體實現模塊功能。目前圍繞無人駕駛汽車做基於深度學習開發的獨角獸企業:momenta(提供基於深度學習的計算視覺解決方案,自主泊車)地平線(基於深度學習的芯片硬件設計,提供整套軟硬件方案)