無人駕駛雖然入門門檻很高,但是還是可以通過一些簡化的模型迅速上手。例如比較有名的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)的,因為它不使用過去的值來幫助預測未來。我們可以通過將過去的轉向角度作為模型的輸入來進行試驗,添加一個遞歸層,或者只是改變卷積層的結構。
添加更多數據,隨著我們添加更多駕駛數據,此模型將會得到改進。預測油門,輸出目前自動駕駛儀只能轉向并保持恒定的速度。一個更復雜的模型將加速在直路上,并在路緣之前放緩。
-
人工智能
+關注
關注
1791文章
46896瀏覽量
237669 -
機器學習
+關注
關注
66文章
8382瀏覽量
132444 -
python
+關注
關注
56文章
4783瀏覽量
84473 -
自動駕駛
+關注
關注
783文章
13694瀏覽量
166166 -
樹莓派
+關注
關注
116文章
1699瀏覽量
105537 -
tensorflow
+關注
關注
13文章
329瀏覽量
60500 -
keras
+關注
關注
2文章
20瀏覽量
6080
發布評論請先 登錄
相關推薦
評論