Apollo进阶课程⑲丨Apollo感知之旅——感知算法
目錄
點云感知
啟發式方法:NCut
深度學習方法:CNNSeg
視覺感知
CNN檢測
CNN分割
后處理
紅綠燈感知
基于深度學習的紅綠燈感知模塊
Radar感知
超聲波感知
原文鏈接:進階課程?丨Apollo感知之旅——感知算法
感知是自動駕駛的第一環,是車輛和環境交互的紐帶。一個自動駕駛系統的整體上表現好壞,很大程度上都取決于感知系統的做的好壞。
講到感知,首先不得不講到傳感器。傳感器是自動駕駛感知環節中最主要的工具,我們必需對傳感器能夠提供的數據類型、適用的工況以及局限性都非常了解和熟悉,才能讓算法工程師更好的適配傳感器所采集和提供的數據寫出更好的算法。
雷達感知是一種無線感知技術,通過分析接收到的目標回波特性,提取并發現目標的位置、形狀、運動特性和運動軌跡,并且可以進一步推斷目標和環境的特征。其作用類似于人類的眼睛和耳朵。
雷達感知可以支持非常豐富的應用場景,比如,毫米波雷達就已經被廣泛應用在汽車輔助駕駛領域,用以檢測行人和前車,實現防撞預警。此外,雷達在居家、智能大廈、自動駕駛以及可穿戴設備等領域也有很多潛在的應用。當前隨著新型低功耗、小型雷達傳感器的不斷發展,雷達技術在很多智能設備以及電子產品當中都進行了很多應用。
上周阿波君為大家詳細介紹了「進階課程?Apollo感知之旅——傳感器標定」。
通過介紹了標定的目的、標定算法以及3D標定間制作,其中詳細的介紹了8種參數標定:Camera-to-Camera外參標定、Lidar-to-Camera外參標定、Lidar-to-Lidar外參標定、Lidar內參標定、Lidar-to-GPS外參標定、自然場景中的Lidar-to-Camera外參標定、自然場景中的Bifocal Camera外參標定、Camera-to-Radar外參標定。
本周阿波君將與大家分享Apollo感知之旅——感知算法。下面,我們一起進入進階課程第19期。
感知算法根據使用的傳感器不同而不同。對于激光雷達Lidar點云感知,本節主要介紹兩個檢測算法,分別是啟發式的Ncut和深度學習算法CNNSeg。對于視覺感知,將全面介紹深度學習檢測和分割技術、跟蹤技術,2D-to-3D技術以及多相機融合技術,此外還會介紹紅綠燈檢測算法。最后簡要介紹Radar檢測和超聲波檢測算法。
點云感知
點云障礙物感知的主要任務是感知障礙物的位置、大小、類別、朝向、軌跡、速度等。核心是點云檢測分割技術,可以用啟發式算法NCut和深度學習算法CNNSeg完成。
啟發式方法:NCut
Ncut算法的基本思想是基于空間平滑性假設,即空間上接近的點來自同一個障礙物。首先,利用地圖信息對點云進行預處理,例如去掉感興趣區域之外的點云,降低點云圖的復雜度。然后根據預處理后的點云構建加權圖G=(V, E, W),將點云分割轉換為圖分割的問題,可以利用圖聚類的算法求解,最終求解的每一個cluster就代表一個障礙物。該算法的優點是解釋性好,缺點是分割規則過于簡單,難以應對實際情況(草叢、綠化帶),主要原因在于缺乏語義信息。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????基于Ncut算法的點云檢測分割技術
深度學習方法:CNNSeg
主要思想是利用卷積神經網絡來處理激光雷達捕獲的點云數據,并對點云中的目標進行識別。深度學習是數據驅動的,它把人工構造特征這一任務交給機器和算法去完成(即特征學習)。在百度的深度學習感知實現過程中,團隊嘗試了很多方法,下面就簡單介紹算法研發的歷程。
1、將所有點云都投到前視圖(front-view)(投影面是一個圓柱面)來構造特征,將點云問題轉化為矩陣問題,進而使用深度學習進行處理。通過構建全卷積神經網絡對前向視圖進行處理。
2、借助自采集車隊,采集更多的實際數據,并且擴展數據視角,制作俯視圖,通過將俯視圖+前視圖相結合的方式進行訓練。同時,修改Loss函數,包括使用3D回歸和Segmentation的損失函數。經過多次實驗,發現基于俯視圖的Segmentation方法效果最好。該方法目前已經在Apollo中開源,如下所示。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????基于俯視圖的Segmentation方法
3、因為俯視圖沒有高度信息,因此我們把前視圖和Camara圖像加進來進行輔助檢查,利用Lidar的測距準和Camera識別準優勢完成了Middle-Level Fusion方法(Multi-View 3D Object Detection Network for Autonomous Driving),發表在CVPR 2017。該方法使用俯視圖提取Proposal,利用前視圖和光學圖像輔助進行更加精準的位置回歸。其流程如下圖所示。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????俯視圖提取Proposal的操作流程
視覺感知
視覺感知最早從ADAS發展而來。ADAS算法相對輕量,采用人工構造的特征和淺層分類器的方式實現輔助駕駛,該方法目前已經難滿足自動駕駛的需求。隨著深度學習技術的發展,尤其是在視覺領域的巨大成功,視覺感知的主流技術路線已經變為“深度學習+后處理計算”的方法。該方法帶來了以下幾個變化,第一是要求計算硬件升級,第二是數據的需求量大增,第三是如何評估保證安全性。面向自動駕駛的深度學習算法具有以下幾個特點:
- 2D感知向3D感知滲透,模型輸出更豐富(后處理需要的3D信息、跟蹤信息、屬性信息等都會放在CNN中進行學習)
- 環視能力構建(傳統方法靠一個Camera完成前向檢測、碰撞檢測、車道線檢測。無人駕駛需要環視)
- 感知+定位+地圖緊密結合
CNN檢測
CNN檢測是深度學習里一個十分火熱的應用,從最開始的AlexNet,VggNet到ResNet等,持續提高了ImageNet圖像檢測的精度,更多的細節和最新進展可以參考Kaiming He(何凱明)的系列工作。需要注意的是,目前發表的大部分關于檢測的成果都是面向計算機視覺應用的,與自動駕駛領域的檢測還有很大的區別。
首先,自動駕駛中,攝像頭是安裝在車上的,汽車行駛在結構化、規則化道路上,面向的場景更具體,有很多的幾何約束可以用來輔助檢測。
其次,自動駕駛中的檢測模型需要輸出的信息更多,包括障礙物的尺寸、朝向。同時自動駕駛還需要考慮時序性。我們稱之為局部的End-to-End,檢測、2D到3D轉換、跟蹤三步是自動駕駛視覺感知的組成,后面兩步都由CNN來學習,減少人工干預。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????????????CNN檢測流程
第三是多任務學習,網絡結構適配。自動駕駛需要針對不同的障礙物特征(車道線,道路邊界,定位元素)進行識別,如果分別由專用模型處理,整個處理流程太長,無法滿足要求,因此需要做多任務的識別和網絡結構的適配。
最后是屬性識別,即除了障礙物級別的輸出以外,還需了解速度類別朝向等問題,例如車尾燈狀態,車門開閉狀態。可以通過標注數據,由數據驅動的深度學習來自動學習這些更細的屬性。
CNN分割
分割(Segmentation)與detection在本質上是一樣的,是對一個目標的不同力度的刻畫。分割是一種更細粒度刻畫物體邊界信息的檢測方法,不再是畫框,而是進行邊緣分割。在感知中,對于不規則物體,往往需要進行分割處理。例如場景分割和可行駛區域感知。場景分割可以用于多傳感器融合,例如對綠植進行分割,結合LiDAR點云,就可以測出綠植的類別和距離。可行駛區域則可以對一些非結構化道路的路徑規劃提供支持。在車道線感知中,應視具體情況使用分割或者檢測方法。
后處理
一個完整的系統除了深度學習模型,還需要做一些后處理,后處理是直接針對下游模塊,對后續的影響比較直接。在視覺感知中,后處理主要分為三個部分。
第一是2D-to-3D的幾何計算。2D到3D的轉換需要考慮的因素包括:
??相機pose的影響
??接地點
??穩定性
第二是時序信息計算,主要是針對跟蹤處理,需要注意以下幾點:
? 對相機幀率和延時有要求,要求跟蹤必須是一個輕量級的模塊,因為檢測已經占據大部分時間
? 充分利用檢測模型的輸出信息(特征、類別等)進行跟蹤。
? 可以考慮輕量級Metric Learning
第三是多相機的環視融合
?相機布局決定融合策略,要做好視野重疊?
紅綠燈感知
紅綠燈感知是百度無人車第一個使用深度學習、使用Camera的模塊。在當時使用深度學習、GPU和Camera做紅綠燈感知是存在很多爭議的,但是我們一直堅持走這種探索性的道路,并且成功了。現在車上用深度學習、GPU、Camera進行感知已經是一種共識。
紅綠燈感知的任務是在距離停止線50~-2米的范圍內精準識別紅綠燈亮燈狀態。它的難點在于檢測精度要求非常高,必須達到三個九(99.9%),否則會出現闖紅燈,違法交規的情況。另外召回也不能太低,假設一直是綠燈,但是一秒只召回一幀綠燈,其他都認為是識別錯的紅燈,則通不過路口,影響通過率和體驗。第二是紅綠燈感知需要應對各種環境,包括天氣和光照。最后是紅綠燈的制式非常多,包括距離、高度、橫縱、信號狀態等,紅綠燈感知都需要識別。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????紅綠燈感知的任務和特點
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????紅綠燈感知的技術途徑
基于深度學習的紅綠燈感知模塊
自動駕駛中使用深度學習進行紅綠燈感知模塊的構建,主要分為以下幾步。
第一是相機選擇和安裝。相機選擇需要注意幾個重要的參數,一是相機的高動態比HDR要高于100db。第二是拍攝圖像的分辨率要達到1080P,滿足15pixel大小的燈能夠看得到。在實際應用中,我們使用了兩個Camera,叫雙Camera,長短焦切換,六毫米適用于近距離。
第二是高精地圖的交互。我們并不是把所有紅綠燈識別算法都交給在線算法完成,這樣做無法滿足魯棒性要求也加重算法負擔,需要把一些固定信息交給高精地圖去完成,算法只實現在線變化的一些因素。地圖提供燈組3D坐標和交通含義,算法只看RoI區域,避免形狀識別出錯。
最后使用深度學習識別燈顏色的變化。主要分為檢測和顏色分類兩步。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????實際使用過程紅綠燈感知
實際使用過程中可能會更復雜。如上圖所示,一條道路上有很多紅綠燈,檢測算法會把所有的燈都檢測出來,地圖會告知需要看幾個燈,但是并不知道看哪幾個燈。因此需要把對應關系匹配起來,需要做3D到2D的投影,投影又受到標定、定位、同步、地圖等因素的影響,需要綜合考慮才能解決好這個問題。
Radar感知
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????????????Radar感知
上圖右邊是Radar的點云信號投影的成像。圖中有很多的點,但是并不是所有的點都是障礙物,存在很大的噪音,需要進行鑒別。圖中明顯成一條線的點是對路邊界金屬柵欄的感知結果。因為金屬的反射信號比較好,所以雷達點會成直線分布。基于該特征,可以用Radar反射信號來做高速路道路邊緣柵欄的檢測。
超聲波感知
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????????????Ultrosonic感知
超聲波只能進行近距離感知,并且無法感知具體的位置。對無人駕駛來說,行駛過程中幫助并不大,更多的是用于倒車和特別近距離的感知。上圖給出了超聲波感知的一個例子,我們在車上布了12個超聲波傳感器,每個超聲波探頭覆蓋一個角度,大概檢測到三米范圍內的障礙物。當某個地方有障礙物,傳感器發送超聲波,收到回波信號以后可以得到障礙物的距離信息,但是并不能確定在覆蓋范圍內哪個地方有障礙物,如圖中的綠線。如果兩個探頭感知范圍存在over lap,這兩個傳感器的兩根綠線會交接,就可以確定障礙物的準確位置。
總結
以上是生活随笔為你收集整理的Apollo进阶课程⑲丨Apollo感知之旅——感知算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Apollo进阶课程 ⑦ | 高精地图的
- 下一篇: 警惕网络直播骗局!女主播称PK获胜能奔现