無(wú)人駕駛雖然入門門檻很高,但是還是可以通過一些簡(jiǎn)化的模型迅速上手。例如比較有名的DonkeyCar,其實(shí)就是一個(gè)簡(jiǎn)單低成本的玩具車,基于樹莓派和Python,利用Keras深度學(xué)習(xí)框架實(shí)現(xiàn)自動(dòng)駕駛。即使沒有實(shí)車,也可以在Donkey Car官網(wǎng)下載模擬器,用程序控制模擬器中的小車。感興趣的同學(xué)可以看看社區(qū)和文檔
目前還有一些比賽也在使用donkey car幫助大家低門檻地進(jìn)入自動(dòng)駕駛領(lǐng)域。例如中國(guó)人工智能學(xué)會(huì)主辦的2018模擬駕駛比賽,比賽提供了一些獎(jiǎng)金,還為進(jìn)入決賽的選手免費(fèi)提供donkeycar實(shí)車線下比拼。此外,中國(guó)人工智能學(xué)會(huì)還會(huì)頒發(fā)證書,所以可以向想要入門自動(dòng)駕駛,想保研、申請(qǐng)獎(jiǎng)學(xué)金的同學(xué)推薦一下。此外,網(wǎng)上還有不少簡(jiǎn)單的攻略,例如下面是一篇來(lái)自github的自動(dòng)駕駛相關(guān)研究,我對(duì)這篇文章進(jìn)行了編譯并在此發(fā)布,希望能幫助更多感興趣的朋友上手自動(dòng)駕駛。
歡迎大家相互交流,項(xiàng)目地址:https://biendata.com/kernel/detail/427
導(dǎo)入相關(guān)庫(kù)
步驟1:獲取駕駛數(shù)據(jù)
數(shù)據(jù)集由 ~7900 個(gè)圖像和手動(dòng)開車時(shí)收集的轉(zhuǎn)向角組成。大約三分之二的圖像與線之間的汽車。另外三分之一的車開始偏離航線,并且駛回線路之間。
路徑是
數(shù)據(jù)集由 2 個(gè) pickled 數(shù)組組成。X 是圖像陣列,Y 是相應(yīng)轉(zhuǎn)向角度的陣列。
結(jié)果:
步驟2:拆分?jǐn)?shù)據(jù)
在這里,我們將洗牌(shuffle)我們的數(shù)據(jù),并將數(shù)據(jù)分成三部分。訓(xùn)練數(shù)據(jù)將用于訓(xùn)練我們的駕駛模型,使用驗(yàn)證數(shù)據(jù)避免過度擬合模型,測(cè)試數(shù)據(jù)用于測(cè)試我們的模型是否學(xué)到了什么。
輸出:7892
輸出:7892
步驟3:增強(qiáng)訓(xùn)練數(shù)據(jù)
為了加倍我們的訓(xùn)練數(shù)據(jù)并防止轉(zhuǎn)向偏差,我們翻轉(zhuǎn)每個(gè)圖像和轉(zhuǎn)向角并將其添加到數(shù)據(jù)集中。還有其他的方法來(lái)增加使用翻譯和假陰影駕駛數(shù)據(jù),但我沒有使用這些自動(dòng)駕駛儀。
結(jié)果:12626
步驟4:建立駕駛模式
這種駕駛模式將是一個(gè)端到端的神經(jīng)網(wǎng)絡(luò),接受圖像陣列作為輸入,并輸出-90(左)和90(右)之間的轉(zhuǎn)向角。 要做到這一點(diǎn),我們將使用一個(gè)完全連接圖層的3層卷積網(wǎng)絡(luò)。該模型基于 Otavio 的 Carputer,但不產(chǎn)生油門值輸出,不使用過去的轉(zhuǎn)向值作為模型的輸入,并且使用較少的卷積層。
使用 TensorFlow 后端
輸出:
步驟5:訓(xùn)練模型
我已經(jīng)學(xué)會(huì)了很難的方法,即使這一切都是完美的,如果你沒有正確地訓(xùn)練,你的自動(dòng)駕駛儀將無(wú)法工作。我遇到的最大的問題是過度適應(yīng)模型,以至于在很少的情況下都不能正常工作。 這里是 2 個(gè) Keras回調(diào),將節(jié)省您的時(shí)間。
警告 -如果僅使用CPU,則需要很長(zhǎng)時(shí)間(3小時(shí))
我在沒有 CUDA 兼容 GPU 的 Dell XPS 筆記本電腦上運(yùn)行,因此速度非常慢,并且凍結(jié)。為了加速訓(xùn)練,您可以使用帶有 GPU 的 EC2 實(shí)例。Keras 和 Tensorflow 已經(jīng)加載了幾個(gè)實(shí)例圖像。
對(duì)于這個(gè)筆記本,我只會(huì)訓(xùn)練模型 4 個(gè)時(shí)代(epochs)。
輸出:
步驟6:評(píng)估性能
我們可以通過繪制預(yù)測(cè)值和實(shí)際值來(lái)檢查我們的模型預(yù)測(cè)是否合理。第一個(gè)圖表顯示我們的測(cè)試數(shù)據(jù)中存在一個(gè)學(xué)習(xí)的關(guān)系(在訓(xùn)練期間模型沒有看到)。
第二張圖,使用包含訓(xùn)練數(shù)據(jù)的非混洗(unshuffled)數(shù)據(jù),來(lái)顯示預(yù)測(cè)角度緊跟實(shí)際轉(zhuǎn)向角度。
輸出:
下一步
改善模型,這個(gè)模型是純粹(navie)的,因?yàn)樗皇褂眠^去的值來(lái)幫助預(yù)測(cè)未來(lái)。我們可以通過將過去的轉(zhuǎn)向角度作為模型的輸入來(lái)進(jìn)行試驗(yàn),添加一個(gè)遞歸層,或者只是改變卷積層的結(jié)構(gòu)。
添加更多數(shù)據(jù),隨著我們添加更多駕駛數(shù)據(jù),此模型將會(huì)得到改進(jìn)。預(yù)測(cè)油門,輸出目前自動(dòng)駕駛儀只能轉(zhuǎn)向并保持恒定的速度。一個(gè)更復(fù)雜的模型將加速在直路上,并在路緣之前放緩。
-
人工智能
+關(guān)注
關(guān)注
1791文章
46689瀏覽量
237179 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8356瀏覽量
132324 -
python
+關(guān)注
關(guān)注
55文章
4774瀏覽量
84385 -
自動(dòng)駕駛
+關(guān)注
關(guān)注
782文章
13631瀏覽量
165988 -
樹莓派
+關(guān)注
關(guān)注
116文章
1696瀏覽量
105457 -
tensorflow
+關(guān)注
關(guān)注
13文章
328瀏覽量
60475 -
keras
+關(guān)注
關(guān)注
2文章
20瀏覽量
6077
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論