無人駕駛雖然入門門檻很高,但是還是可以通過一些簡化的模型迅速上手。例如比較有名的DonkeyCar,其實就是一個簡單低成本的玩具車,基于樹莓派和Python,利用Keras深度學習框架實現自動駕駛。即使沒有實車,也可以在Donkey Car官網下載模擬器,用程序控制模擬器中的小車。感興趣的同學可以看看社區和文檔
目前還有一些比賽也在使用donkey car幫助大家低門檻地進入自動駕駛領域。例如中國人工智能學會主辦的2018模擬駕駛比賽,比賽提供了一些獎金,還為進入決賽的選手免費提供donkeycar實車線下比拼。此外,中國人工智能學會還會頒發證書,所以可以向想要入門自動駕駛,想保研、申請獎學金的同學推薦一下。此外,網上還有不少簡單的攻略,例如下面是一篇來自github的自動駕駛相關研究,我對這篇文章進行了編譯并在此發布,希望能幫助更多感興趣的朋友上手自動駕駛。
歡迎大家相互交流,項目地址:https://biendata.com/kernel/detail/427
導入相關庫

步驟1:獲取駕駛數據
數據集由 ~7900 個圖像和手動開車時收集的轉向角組成。大約三分之二的圖像與線之間的汽車。另外三分之一的車開始偏離航線,并且駛回線路之間。

路徑是

數據集由 2 個 pickled 數組組成。X 是圖像陣列,Y 是相應轉向角度的陣列。

結果:

步驟2:拆分數據
在這里,我們將洗牌(shuffle)我們的數據,并將數據分成三部分。訓練數據將用于訓練我們的駕駛模型,使用驗證數據避免過度擬合模型,測試數據用于測試我們的模型是否學到了什么。


輸出:7892

輸出:7892
步驟3:增強訓練數據
為了加倍我們的訓練數據并防止轉向偏差,我們翻轉每個圖像和轉向角并將其添加到數據集中。還有其他的方法來增加使用翻譯和假陰影駕駛數據,但我沒有使用這些自動駕駛儀。

結果:12626
步驟4:建立駕駛模式
這種駕駛模式將是一個端到端的神經網絡,接受圖像陣列作為輸入,并輸出-90(左)和90(右)之間的轉向角。 要做到這一點,我們將使用一個完全連接圖層的3層卷積網絡。該模型基于 Otavio 的 Carputer,但不產生油門值輸出,不使用過去的轉向值作為模型的輸入,并且使用較少的卷積層。

使用 TensorFlow 后端

輸出:

步驟5:訓練模型
我已經學會了很難的方法,即使這一切都是完美的,如果你沒有正確地訓練,你的自動駕駛儀將無法工作。我遇到的最大的問題是過度適應模型,以至于在很少的情況下都不能正常工作。 這里是 2 個 Keras回調,將節省您的時間。
警告 -如果僅使用CPU,則需要很長時間(3小時)
我在沒有 CUDA 兼容 GPU 的 Dell XPS 筆記本電腦上運行,因此速度非常慢,并且凍結。為了加速訓練,您可以使用帶有 GPU 的 EC2 實例。Keras 和 Tensorflow 已經加載了幾個實例圖像。

對于這個筆記本,我只會訓練模型 4 個時代(epochs)。

輸出:

步驟6:評估性能
我們可以通過繪制預測值和實際值來檢查我們的模型預測是否合理。第一個圖表顯示我們的測試數據中存在一個學習的關系(在訓練期間模型沒有看到)。


第二張圖,使用包含訓練數據的非混洗(unshuffled)數據,來顯示預測角度緊跟實際轉向角度。
輸出:
下一步
改善模型,這個模型是純粹(navie)的,因為它不使用過去的值來幫助預測未來。我們可以通過將過去的轉向角度作為模型的輸入來進行試驗,添加一個遞歸層,或者只是改變卷積層的結構。
添加更多數據,隨著我們添加更多駕駛數據,此模型將會得到改進。預測油門,輸出目前自動駕駛儀只能轉向并保持恒定的速度。一個更復雜的模型將加速在直路上,并在路緣之前放緩。
-
人工智能
+關注
關注
1817文章
50094瀏覽量
265256 -
機器學習
+關注
關注
66文章
8553瀏覽量
136928 -
python
+關注
關注
57文章
4876瀏覽量
90022 -
自動駕駛
+關注
關注
793文章
14879瀏覽量
179773 -
樹莓派
+關注
關注
122文章
2078瀏覽量
110453 -
tensorflow
+關注
關注
13文章
334瀏覽量
62169 -
keras
+關注
關注
2文章
20瀏覽量
6322
發布評論請先 登錄
如何構建適合自動駕駛的世界模型?
自動駕駛汽車如何完成超車?
2026年自動駕駛汽車發展趨勢前瞻
自動駕駛汽車如何確定自己的位置和所在車道?
看看那些用樹莓派打造的自動駕駛汽車!
自動駕駛汽車如何正確進行道路識別?
如何為樹莓派 FPV 戰斗無人機構建自動駕駛儀的“眼睛”!
樹莓派也能實現海上自動化駕駛?
樹莓派自動駕駛:使用 Keras 與 Tensorflow 構建車道跟蹤自動汽車
評論