當前位置:
首頁 > 新聞 > Google工程師:從零開始學習無人駕駛技術 ——端到端無人駕駛

Google工程師:從零開始學習無人駕駛技術 ——端到端無人駕駛

雷鋒網按:本文作者夏飛,清華大學計算機軟體學士,卡內基梅隆大學人工智慧碩士。現為谷歌軟體工程師。雷鋒網首發文章。

TLDR (or the take away)

視頻結果:無人車以 30m/h (~ 50km/h) 在Simulator中行駛。這應該是最有趣的部分:

技術要點:

  • Simulator安裝與使用

  • 數據收集和處理

  • 深度卷積網路 (CNN) 訓練端到端 (end-to-end) 模型

代碼:Github鏈接

概述

所謂 end-to-end 無人駕駛模型,指的是由感測器的輸入,直接決定車的行為,例如油門,剎車,方向等。簡單來講,可以利用機器學習的演算法直接學習人類司機的駕駛行為:首先,人類司機駕駛安裝有各種感測器 (例如攝像頭) 的汽車來收集數據;然後,用感測器收集的數據作為輸入,相應的人類行為數據作為輸出label,訓練一個機器學習模型,例如,如果攝像頭髮現前方有行人,司機行為應當是剎車;最後,將訓練好的模型應用於無人車上。這種方法又叫做行為複製,其原理直觀,避免了無人車系統中各種複雜的問題,是無人車中很有趣的一個topic。

在這篇文章中,我們來一起動手做一個在 Simulator 中的 end-to-end 模型!和在真實世界中類似,我們需要:

  • 在 Simulator 中駕駛無人車收集數據,像玩賽車遊戲一樣!

  • 處理數據並訓練模型

  • 將模型應用於 Simulator 中看效果

Setup

先把Simulator搭好 --- 這裡使用Udacity的Self-Driving Simulator Platform,下載鏈接:

Linux

Mac

Windows

建議直接從上面的鏈接下載,如果對源代碼感興趣,這裡是Github鏈接。

運行Simulator程序,選擇Screen Resolution和Graphics Quality,建議開始時先選擇最低解析度和對應最快的圖片質量。點擊OK進入主界面。

Google工程師:從零開始學習無人駕駛技術 ——端到端無人駕駛

Controls:在Simulator中的按鍵指南

Training Mode:人為控制車輛模式,用來收集數據

Autonomous Mode:全自動模式,使用訓練好的模型進行無人駕駛

數據收集

進入Training Mode開始玩遊戲,熟練一下按鍵和操作!在Simulator中,這輛車的感測器是三個前置攝像頭,分別放置在左、中、右三個方向,對周圍的環境進行拍攝錄製,結果之後會以圖片形式保存到電腦上。

開始收集數據:

  • 首先按下R鍵 (Record),選擇數據保存目錄,確認

  • 再次按下R鍵,進入錄製模式

  • 駕駛車輛在車道中行駛

  • 行駛完畢後第三次按下R鍵,數據會被保存到硬碟上

這時,在相應目錄下會生成兩個文件: driving_log.csv和IMG文件夾。顧名思義,driving_log.csv中保存了用戶開車時的log,IMG文件夾中保存了攝像頭的照片。driving_log.csv基本結構如下圖。

Google工程師:從零開始學習無人駕駛技術 ——端到端無人駕駛

  • 前三列分別表示在當時左中右攝像頭的照片路徑

  • D列表示車的方向盤角度

  • E列表示油門力度

  • F列表示剎車力度

  • G列表示當前速度

為了簡潔明了,在本文中我們只採用A,B,C,D列數據,即利用攝像頭照片預測方向盤角度。另外,收集數據時有幾個tips:

  • 首先大概收集兩圈比較完美的數據,盡量保持車在道路中間行駛;

  • 在轉彎或模型訓練之後比較容易出錯的地方多收集幾次數據。

數據處理

數據在機器學習中地位至關重要,保證數據質量是模型是否有效的關鍵因素。以下是我們遇到的幾個問題,在model.py中均有相應的代碼。

觀察一:D列Steering Angle大部分都是0,這很正常,因為大部分情況下在拐彎的地方我們才會轉動方向盤。然而這對模型卻是致命的,因為會造成嚴重的數據不平衡。

解決方案:隨機抽樣,盡量使數據平衡。在實際操作中,可以將整個Steering Angle範圍劃分成n個bucket,保證每個bucket中數據樣本不超過m個。

觀察二:在同一個位置,不同攝像頭的內容差距很大,但是車子的轉向角度只有一個。下圖給出了同一位置左中右攝像頭的照片。

Google工程師:從零開始學習無人駕駛技術 ——端到端無人駕駛

解決方案:以中間攝像頭照片為主訓練數據,對左右兩邊照片的轉向角度進行修正。最簡單的修正方法是對左邊圖片的轉向角度+0.2,對右邊圖片的轉向角度-0.2。

觀察三:數據量可能不夠大。

解決方案:將圖片進行左右反轉,同時將轉向角度取相反數,這樣就生成了新的數據。

觀察四:地面是影響車子轉向角度的決定性因素,照片的上半部分信息冗餘,不利於模型的generalization。

解決方案:將上半部分圖片裁掉。

觀察五:圖片RGB值均在0-255之間,範圍太大。

解決方案:進行normalization,使其值在[0, 1]之間或[-0.5, 0.5]之間。

模型

深度卷積神經網路 (Deep Covolutional Neural Networks, DCNN)!

DCNN及其衍生模型是目前對圖片處理最先進的方法,主要應用有圖片分類,物體檢測及定位,自動生成圖片標題等。DCNN的一個最大特點是能夠抓取local pattern --- 例如:人類識別一張圖片上的貓並不取決於這張圖片還有什麼其他動物,也不取決於這隻貓位於圖片的什麼位置,甚至只露出半隻貓的身子我們也可以將其識別,這就是基於local pattern。DCNN的這一特點還被用於AlphaGo中抓取圍棋的local pattern,我在這篇文章中有簡述AlphaGo的演算法。

關於DCNN的技術細節就不在這裡介紹了,有興趣的可以參考Stanford的同學們做的一個tutorial(我第一次接觸Deep Learning時的學習網站) 或這篇文章。

我們在這裡可以採用最常用的DCNN架構:三個Convolutional layer + 兩個Fully Connected layer:

  • 三個covolutional layer的filter size均為3x3,filter depth分別是8,16,32,使用ReLU activation function,dropout rate設為0.2

  • 兩個fully connected layer的size分別為512,256,同樣使用ReLU activation function,dropout rate 0.2。

  • 最後輸出層size為1,使用linear activation對steering angle做regression。

具體代碼也在model.py中,使用Keras實現,我採用的是Tensorflow的後端。現在就可以直接運行model.py文件進行模型訓練了!如果對配置Tensorflow和Keras環境有疑問,最後的附錄給出了一個簡單步驟。

測試

在我的Github中我已經給出了一個用GPU訓練好的模型model.h5,本文開始中的視頻就是使用這個模型生成的。

(1)運行模型


python drive.py model.h5

(2)進入Autonomous Mode

(3)Enjoy the self-driving

附錄

關於環境配置,推薦使用Anaconda!我的操作系統是Ubuntu,基本步驟是

(希望下面的鏈接國內的朋友都可以訪問)

(1)下載Anaconda最新版並安裝

(2)創建conda environment


conda create -n my_env python=PYTHON_VERSION

(3)啟用conda environment,在這個環境下安裝的python或conda package會與系統及其他環境相互隔離


source activate my_env

(4)安裝Tensorflow

(5)安裝Keras

(6)使用pip或conda安裝其他所需的package

【完】

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

Xbox負責人解釋為什麼新主機沒有支持VR,還說過度關注VR很危險
谷歌開源物體檢測系統 API (附代碼下載地址)
進駐法國巴黎,李想的車和家將在2018年啟動汽車分時租賃業務

TAG:雷鋒網 |

您可能感興趣

Google 無人車之父帶你入門無人駕駛
日本將HoloLens用於航運,遠程駕駛無人船
Google創始人贊助:無人駕駛飛行計程車上天
無人駕駛技術,跟方向盤Say Good-bye!
Model X 「自動駕駛」失效,華人工程師命喪高速@Tesla車主,為了家人和他人的安全,請謹慎使用
Uber關閉無人駕駛 專註於開發無人駕駛汽車
無人駕駛汽車,終於跟駕照SayGoodbye
奇點汽車黃浴博士談無人駕駛:Deep Learning在自動駕駛領域的應用
Google能否繼續引領無人駕駛數據——無人駕駛的最強驅動力?
試用日產ProPilot輔助駕駛系統 離無人駕駛又近了一步
進入無人駕駛時代?繼Uber後Lyft開始測試自家無人駕駛汽車
無人駕駛時代即將來臨?Waymo榮獲無人駕駛汽車新專利
Magic Leap光學顯示技術曝光;豐田牽頭成立新公司研究無人駕駛
榮耀Magic2玩轉無人駕駛,帶你領略AI智能駕駛魅力
Waymo無人駕駛計程車的一天
AutoML:無人駕駛機器學習模型設計自動化
Unity Technologies公司投身汽車行業 主攻無人駕駛
谷歌Waymo介紹無人駕駛汽車:不斷學習積累
Uber無人駕駛技術再次遭遇「紅燈」
為發展無人駕駛技術:三星跑到加州 跟Waymo做鄰居