無人車到底是怎樣一步一步學會開車的?
與人類用雙眼去觀察路面、用手去操控方向盤類似,無人車用一排攝像機去感知環(huán)境,用深度學習模型指導駕駛。大體來說,這個過程分為五步:
記錄環(huán)境數(shù)據(jù)
分析并處理數(shù)據(jù)
構建理解環(huán)境的模型
訓練模型
精煉出可以隨時間改進的模型
如果你想了解無人車的原理,那這篇文章不容錯過。
記錄環(huán)境數(shù)據(jù)
一輛無人車首先需要具備記錄環(huán)境數(shù)據(jù)的能力。
具體來說,我們的目標是得到左右轉向角度的均勻分布。這倒也不難操作,可以以順時針和逆時針方向在測試場地內繞圈的方式實現(xiàn)。這種訓練有助于減少轉向偏差,避免長時間駕駛后汽車從道路一邊慢慢漂移到道路另一邊的尷尬情境。
此外,以慢速(例如每小時10英里)行駛也有助于在轉彎時記錄平滑的轉向角,在這里駕駛行為被分類為:
直線行駛:0<=X<0.2
小轉彎:0.2<=X<0.4
急轉:X>=0.4
恢復到中心
其中,X為轉向角,r為旋轉半徑(單位為米),計算轉向角的公式為X=1/r。上面提到的“恢復到中心”在數(shù)據(jù)記錄過程中很重要,它幫助車輛學會在即將撞上,馬路崖子時回到車道中心。這些記錄數(shù)據(jù)保存在driving_log.csv中,其中每一行都包含:
文件路徑到鏡頭前中央相機圖像
文件路徑到前左相機圖像
文件路徑到前右相機圖像
轉向角
在記錄環(huán)境數(shù)據(jù)的過程中,我們需要記錄約100000個轉向角的圖像,以便提供足夠的數(shù)據(jù)訓練模型,避免因樣本數(shù)據(jù)不足導致的過擬合。通過在數(shù)據(jù)記錄過程中定期繪制轉向角直方圖,可以檢查轉向角是否為對稱分布。
分析處理數(shù)據(jù)
第二步是為構建模型分析和準備剛剛記錄的數(shù)據(jù),此時的目標是為模型生成更多的訓練樣本。
下面這張圖片由前中央相機拍攝,分辨率為320*160像素,包含紅色、綠色和藍色的channel。在Python中,可以將其表示為一個三維數(shù)組,其中每個像素值的范圍在0到255之間。
司機視線以下的區(qū)域和兩邊的車道標志一直是自動駕駛技術中研究的重點。這兩部分可以使用Keras中的Cropping2D裁剪圖像,減少輸入到模型中的噪聲。
我們可以用開源的計算機視覺庫OpenCV從文件中讀取圖像,然后沿垂直軸翻轉,生成一個新的樣本。OpenCV非常適合自動駕駛汽車用例,因為它是用C++語言編寫的。像傾斜和旋轉這樣的其他圖像增強技術,也有助于產生更多的訓練樣本。
此外,還需要通過乘以-1.0翻轉其轉向角。
之后,可以用Numpy開源庫將圖像重新塑造成一個三維數(shù)組,方便下一步的建模。
構建理解環(huán)境的模型
圖像數(shù)據(jù)搞定后,我們需要為無人車構建理解環(huán)境信息的深度學習模型,從記錄的圖像中提取特征。
具體來說,我們的目標是將包含153600像素的輸入圖像映射到包含單個浮點值的輸出。英偉達之前提出的模型的每一層都提供了特定的功能,作為基礎架構效果應該不錯。
英偉達模型相關論文地址:
https://arxiv.org/pdf/1604.07316v1.pdf
之后,我們需要將三維數(shù)組規(guī)范化為單位長度,防止模型中較大的值偏差。注意我們將其除以255.0,因為這是一個像素的最大可能值。
還要適當減少人類視野以下的車前場景和車前上方圖像的像素,以減少噪音。
之后,我們需要將車道標記等三維數(shù)組進行卷積,提取關鍵特征,這些信息對于預測轉向角至關重要。
我們想讓開發(fā)的模型能夠駕馭任何道路類型,因此需要用dropout減少過擬合。
最后,我們需要將轉向角輸出為float。
訓練模型
構建了模型后,我們需要訓練模型自己學習開車了。
從技術角度上講,現(xiàn)階段的目標是盡量準確地預測轉向角。在此,我們將損失定義為預測和實際轉向角之間的均方誤差。
從driving_log.csv中隨機抽取樣例減少順序偏差。
可以將樣本的80%設為訓練集,20%設為驗證集,這樣我們就能看到模型在預測轉向角時的精確程度。
之后,需要用Adam(自適應矩估計)將平均平方誤差最小化。與梯度下降相比,Adam的一大優(yōu)勢是借用了物理中的動量概念收斂到全局最優(yōu)值。
最后,我們用生成器來適應模型。由于圖像數(shù)量龐大,我們無法一次性將整個訓練集輸入到內訓中。因此,需要用生成器批量生產圖像以進行訓練。
隨時間精煉模型
完善模型是我們的最后一步,需要讓模型的準確性和穩(wěn)健性隨著時間的推移而提高。我們的實驗采用不同的體系結構和超參數(shù),觀察其對減少均方誤差的影響。什么樣的模型最好?不好意思,這個問題沒有一個統(tǒng)一的答案,因為大部分改進都需要犧牲其他的一些東西,比如:
用更好的圖形處理單元(GPU)減少訓練時間,需要注意這樣會增加成本
通過降低訓練時間來降低學習速度,增加最佳值收斂的概率
通過使用灰度圖像減少訓練時間,需要注意這樣會損失紅色、綠色和藍色通道提供的顏色信息
通過較大的batch size提高梯度估計的準確性,這會以犧牲使用的內存為代價
每個階段都選用大量樣例來減少損失的波動
概覽全文,其實可以發(fā)現(xiàn),自動駕駛汽車開發(fā)的過程,也是我們了解計算機視覺和深度學習的優(yōu)勢和局限性的過程。
我堅信,未來是屬于自動駕駛的。
-
攝像機
+關注
關注
3文章
1575瀏覽量
59895 -
自動駕駛
+關注
關注
782文章
13622瀏覽量
165952 -
無人車
+關注
關注
1文章
299瀏覽量
36445 -
深度學習
+關注
關注
73文章
5466瀏覽量
120891
原文標題:無人車是怎樣一步步學會開車的?|自動駕駛科普
文章出處:【微信號:cas-ciomp,微信公眾號:中科院長春光機所】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論