Apollo自动驾驶入门课程第⑤讲 — 感知(下)
目錄
1. 卷積神經(jīng)網(wǎng)絡(luò)
2. 檢測與分類
3. 跟蹤
4. 分割
5. Apollo感知
6. 傳感器數(shù)據(jù)比較
7. 感知融合策略
本文轉(zhuǎn)自微信公眾號:Apollo開發(fā)者社區(qū)?原創(chuàng):?阿波君?Apollo開發(fā)者社區(qū)?8月29日
上一篇文章中,我們發(fā)布了無人駕駛技術(shù)的?感知篇 (上)。從感知的概述介紹到反向傳播算法。也有很多開發(fā)者對于往期內(nèi)容做了筆記,希望更多的同學(xué)能多多學(xué)習(xí),勤做筆記。
本期將會繼續(xù)介紹感知的相關(guān)知識,深度學(xué)習(xí)無人駕駛感知的剩余內(nèi)容。希望各位開發(fā)者在學(xué)習(xí)的同時能夠做好筆記,在Apollo交流社群中與大家交流探討,共同進步。
視頻鏈接為:Apollo自動駕駛?cè)腴T課程Sebastran感知_騰訊視頻
1. 卷積神經(jīng)網(wǎng)絡(luò)
卷積神經(jīng)網(wǎng)絡(luò)CNN?是一種人工神經(jīng)網(wǎng)絡(luò),它對感知問題特別有效,CNN接受多維輸入包括定義大多數(shù)傳感器數(shù)據(jù)的二維和三維形狀。如果使用標(biāo)準(zhǔn)神經(jīng)網(wǎng)絡(luò)對圖像進行分類,則需要通過一種方法將圖像連接到網(wǎng)絡(luò)的第一層,這屬于一維。標(biāo)準(zhǔn)做法是通過將圖像矩陣重塑為一個矢量,并在一個大行中連接所有列,將圖像“展開”為一維像素陣列。
然而這種方法打破了圖像中所嵌入的空間信息,如果圖像中有車輪,則車輪中的所有像素將散布在整個像素陣列中。如果將其散布在一個維度上,神經(jīng)網(wǎng)絡(luò)很難從圖像中提取車輪。CNN通過維持輸入像素之間的空間關(guān)系來解決這個問題,CNN通過將過濾器連續(xù)滑過圖像來收集信息,每次收集信息時,只對整個圖像的一小部分區(qū)域進行分析,稱為卷積。
當(dāng)在整個輸入圖像上對一個過濾器進行卷積時,將該信息與下一個卷積層相關(guān)聯(lián)。例如CNN識別第一個卷積層中的基本邊緣和顏色信息,然后通過在第一層上卷積新過濾器,CNN使用邊緣和顏色信息來歸納更復(fù)雜的結(jié)構(gòu)如車輪、車門、擋風(fēng)玻璃;而另一個卷積可使用車輪、車門、擋風(fēng)玻璃識別整個車輛;最后神經(jīng)網(wǎng)絡(luò)可使用這一高階信息對車輛進行分類。
CNN根據(jù)其任務(wù)查找真正需要的特征,任務(wù)可能是圖像檢測、分類、分割、其他類型的目標(biāo)。
2. 檢測與分類
感知任務(wù)中,首先是障礙物檢測和分類,在駕駛過程中會遇到許多障礙物,靜態(tài)障礙物包括墻壁、樹木、桿子、建筑物;動態(tài)障礙物包括行人、自行車、汽車。計算機首先需要知道障礙物的位置,然后進行分類。在路中行駛的無人駕駛車可能會探測到許多不同的物體,汽車根據(jù)所感知的物體類型來確定路徑和速度。如果感知到前方有一輛自行車,汽車可能會決定減速和變道,以便安全駛過自行車。但是如果感知到前方有另一輛車,并預(yù)測到前方車輛也將以接近限速的速度行駛,可能會保持其速度和車道。
將另一個示例為交通信號燈檢測分類,首先將使用計算機視覺對圖像中的交通信號燈進行定位,然后根據(jù)燈光顯示顏色對交通信號燈進行分類。
無人駕駛中,使用什么算法來對障礙物進行檢測和分類?可以先使用檢測CNN來查找圖像中的對象的位置,在對圖像中的對象進行定位后,可以將圖像發(fā)送給另一個CNN進行分類。也可以使用單一CNN體系結(jié)構(gòu)對對象進行檢測和分類,一種通常的做法為在單個網(wǎng)絡(luò)體系結(jié)構(gòu)的末端附加幾個不同的“頭”,一個頭可能執(zhí)行檢測,另一個則可能執(zhí)行分類。經(jīng)典體系結(jié)構(gòu)為 R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD等。
3. 跟蹤
檢測完對象后,需要追蹤它們追蹤的意義是什么?如果我們對每個幀中的每個對象進行檢測并用邊界框?qū)γ總€對象進行標(biāo)識,那么跨幀追蹤對象會帶來哪些好處?
首先追蹤在檢測失敗時是至關(guān)重要的,如果你在運行檢測算法時,對象被其他對象遮擋一部分,則檢測算法可能會失敗,但追蹤可以解決遮擋問題。另一個原因在于追蹤可以保留身份,障礙物檢測的輸出為包含對象的邊界框,但是對象沒有與任何身份關(guān)聯(lián),單獨使用對象檢測時,計算機不知道一個幀中的哪些對象與下一幀中的哪些對象相對應(yīng),該任務(wù)對人類來說很簡單,但對汽車來說很困難。
追蹤的第一步為確認(rèn)身份,通過查找特征相似度最高的對象,將在之前的幀中檢測到的所有對象與在當(dāng)前的幀中檢測到的對象進行匹配。對象具有各種特征,可能基于顏色、基于形狀,計算機視覺算法可以計算出復(fù)雜的圖像特征,如局部二值模式和方向梯度直方圖。當(dāng)然也需要考慮連續(xù)視頻幀中,兩個障礙物之間的位置和速度,由于兩幀之間的對象位置和速度沒有太大變化,該信息也可以幫助快速找到匹配的對象。
在確定身份后,可以使用對象的位置并結(jié)合預(yù)測算法以估計在下一個時間步的速度和位置,該預(yù)測可幫助識別下一幀中的相應(yīng)對象。
4. 分割
語義分割涉及對圖像的每個像素進行分類,用于盡可能詳細地了解環(huán)境并確定車輛可駕駛區(qū)域。
語義分割依賴于一種特殊類型的CNN,被稱為全卷積網(wǎng)絡(luò)FCN。FCN用卷積層來替代傳統(tǒng)CNN體系結(jié)構(gòu)末端的平坦層,現(xiàn)在網(wǎng)絡(luò)中的每一層都是卷積層,因此名稱為“全卷積網(wǎng)絡(luò)”。
FCN提供了可在原始輸入圖像之上疊加的逐像素輸出,必須考慮的一個復(fù)雜因素是大小。在典型的CNN中經(jīng)過多次卷積之后所產(chǎn)生的輸出比原始輸入圖像小得多。然而為了分割像素,輸出尺寸必須與原始圖像的尺寸相匹配。為了完成,可以對中間輸出進行上采樣處理,直到最終輸出的大小與原始輸出圖像的大小相匹配。網(wǎng)絡(luò)的前半部分通常被稱為編碼器,因為這部分網(wǎng)絡(luò)對輸入圖像的特征進行了提取和編碼。網(wǎng)絡(luò)的后半部分通常被稱為解碼器,因為它對這些特征進行了解碼并將其應(yīng)用于輸出。
激光雷達數(shù)據(jù)提供了用于構(gòu)建世界視覺表征的足夠空間信息,計算機視覺技術(shù)不僅可以使用攝像頭圖像進行對象分類,還可以使用點云和其他類型的空間相關(guān)數(shù)據(jù)進行對象分類。
5. Apollo感知
Apollo?開放式軟件棧可感知障礙物、交通信號燈、車道。對于三維對象檢測,Apollo 在高精度地圖上使用感興趣區(qū)域ROI來重點關(guān)注相關(guān)對象。Apollo將ROI過濾器應(yīng)用于點云和圖像數(shù)據(jù),以縮小搜索范圍并加快感知。
然后通過檢測網(wǎng)絡(luò)饋送已過濾的點云,輸出用于構(gòu)建圍繞對象的三維邊界框。
最后使用被稱為檢測跟蹤關(guān)聯(lián)的算法來跨時間步識別單個對象,該算法先保留在每個時間步要跟蹤的對象列表,然后在下一個時間步中找到每個對象的最佳匹配。
對于交通信號燈的分類,Apollo先使用高精度地圖來確定前方是否存在交通信號燈。如果前方有交通信號燈,則高精度地圖會返回?zé)舻奈恢谩:罄m(xù)根據(jù)位置,攝像頭搜索范圍,在攝像頭捕獲到交通信號燈圖像后。Apollo使用檢測網(wǎng)絡(luò)對圖像中的燈進行定位,然后從較大的圖像中提取交通信號燈。將裁剪的交通燈圖像提供給分類網(wǎng)絡(luò)以確定燈顏色,如果有許多燈則系統(tǒng)需要選擇哪些燈與其車道相關(guān)。
Apollo使用?YOLO 網(wǎng)絡(luò)來檢測車道線、動態(tài)物體其中包括車輛、卡車、騎自行車的人、行人。在經(jīng)過YOLO網(wǎng)絡(luò)檢測后,在線檢測模塊會并入來自其他傳感器的數(shù)據(jù)對車道線預(yù)測進行調(diào)整,車道線最終被并入名為“虛擬車道”的單一數(shù)據(jù)結(jié)構(gòu)中。同樣也通過其他傳感器的數(shù)據(jù)對YOLO網(wǎng)絡(luò)所檢測到的動態(tài)對象進行調(diào)整,以獲得每個對象的類型、位置、速度、前進方向。虛擬通道和動態(tài)對象均被傳遞到規(guī)劃與控制模塊。
6. 傳感器數(shù)據(jù)比較
感知通常依賴于攝像頭、激光雷達、雷達,如圖顯示了這三種傳感器的優(yōu)缺點。攝像頭非常適用于分類,在Apollo中攝像頭主要用于交通信號燈分類、車道檢測。激光雷達的優(yōu)勢在于障礙物檢測,即使在夜間仍能準(zhǔn)確地檢測障礙物。雷達在探測范圍和應(yīng)對惡劣天氣方面占優(yōu)勢,通過融合這三種傳感器的數(shù)據(jù)可實現(xiàn)最佳聚合性能,被稱為“傳感器融合”。
雷達已經(jīng)在汽車上使用很多年,在各種系統(tǒng)中都需要雷達,如自適應(yīng)巡航控制、盲點警告、碰撞警告和碰撞預(yù)防系統(tǒng)等。盡管雷達技術(shù)已經(jīng)成熟,它仍在不斷進步,作用不斷提升。其他傳感器測量速度的方法是計算兩次讀數(shù)之間的差距,而雷達則通過多普勒效應(yīng)來直接測量速度。多普勒效應(yīng)根據(jù)對象在遠離還是接近你,測量出雷達的頻率變化。就像消防車警報器一樣,當(dāng)車輛正在遠離你和駛向你時,聽起來聲是不一樣的。多普勒效應(yīng)對傳感器融合至關(guān)重要。因為它可以把速度作為獨立的測量參數(shù),從而提升了融合算法的收斂速度。雷達還可以生成環(huán)境的雷達地圖,進而實現(xiàn)定位。因為雷達波在堅硬表面會回彈。因此,它可以直接測量對象距離,無需在視線范圍內(nèi)也可以。雷達可以看到其他車輛底部。并發(fā)現(xiàn)可能會被阻擋的建筑物和對象。在車上的所有傳感器中,雷達是不容易受雨霧影響的。而且視野寬闊,可達 150 度,距離可達 200 多米。與激光雷達和攝像頭相比,雷達分辨率較低,尤其是在垂直方向,分辨率非常有限。分辨率低意味著來自靜態(tài)物體的反射可能產(chǎn)生問題。例如,街道上檢修孔蓋或汽水罐,可能產(chǎn)生很高的雷達反射率,但他們并不大。我們將其稱為雷達雜波。因此,當(dāng)前的車載雷達通常會忽視靜態(tài)物體。
激光雷達是激光探測與測量的簡稱,而雷達則是無線電探測與測量的簡稱。雷達使用無線電波,而激光雷達則使用紅激光束來確定傳感器和附近對象的距離。目前的激光雷達大多使用 900 納米光波長度的光源。但部分激光雷達使用的光波長度更長,在雨霧中性能更好。當(dāng)前的激光雷達使用旋轉(zhuǎn)座架發(fā)射激光,掃描周邊環(huán)境。激光室脈沖式的,脈沖被對象反射,然后返回一個點云,來代表這些物體。激光雷達的空間分辨率遠遠高于雷達。因為激光束越聚焦,垂直方向的掃描層數(shù)量就越多,因此每層的激光雷達的密度也越高。目前,激光雷達還不能直接測量對象的速度,必須使用兩次或多次掃描之間的位置差來確定。激光雷達受天氣和傳感器清潔程度影響也很大,因此需要保持清潔。它們塊頭也比其他傳感器更大,因此也很難安裝,除非你只想在車頂安裝一個大的激光掃描器。
7. 感知融合策略
Apollo使用激光雷達和雷達來檢測障礙物,用于融合輸出的主要算法為卡爾曼濾波。卡爾曼濾波有兩個步驟:第一步為預(yù)測狀態(tài),第二步是更新測量結(jié)果。設(shè)想正在跟蹤一名行人,這里的狀態(tài)表示行人的位置和速度,從已經(jīng)掌握的行人狀態(tài)開始,使用這些信息來執(zhí)行卡爾曼濾波的第一步,即預(yù)測行人在將來的狀態(tài);下一步為誤差結(jié)果更新,使用新的傳感器來更新所認(rèn)為的行人狀態(tài),卡爾曼濾波算法是預(yù)測和更新步驟的無限循環(huán)。
實際上有兩種測量結(jié)果更新步驟:同步和異步。同步融合同時更新來自不同傳感器的測量結(jié)果,而異步融合則逐個更新所收到的傳感器測量結(jié)果。傳感器融合可提高感知性能,因為各傳感器相輔相成,融合也可以減少跟蹤誤差。
更多詳細課程內(nèi)容,大家可以登陸官網(wǎng)繼續(xù)學(xué)習(xí)!
也可以添加社區(qū)小助手(Apollodev)為好友,回復(fù)“課程學(xué)習(xí)”進群與其他開發(fā)者共同交流學(xué)習(xí)。 ?
自課程上線以來,瀏覽量已超10萬,已幫助全球97個國家約 7000 名學(xué)員入門自動駕駛與 Apollo 開源平臺,其中37%為海外學(xué)員,本門課程已成為優(yōu)達學(xué)城 (Udacity) 近期獲得關(guān)注度最高的免費課程之一。
總結(jié)
以上是生活随笔為你收集整理的Apollo自动驾驶入门课程第⑤讲 — 感知(下)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用PDF.js实现前端和手机端网页预览
- 下一篇: 重读经典:《Momentum Contr