車道檢測旨在識別道路上可見車道邊界線的位置和曲度。這一功能可以幫助車輛行駛于車道中間,并在車道改變時進行安全導航。
上一篇文章提到,必須用算法預測車輛的類別(分類)和位置(邊界框)。本例則有所不同,我需要算出一組數字,用來表示左右車道邊界線的拋物線系數。
為解決這一問題,我將構建一個執行回歸的 CNN 輸出系數。
與上一篇博文中提到的步驟類似,第一步是通過表示出左右車道邊界線的真值標注一組訓練數據。和之前一樣,我建議使用MATLAB Automated Driving System Toolbox中的 Ground Truth Labeler app。除了使用矩形邊界框標注其他目標外,請注意觀察我如何在下圖中用多條線標注車道邊界線。

標注的目標和車道邊界線
為便于了解車道邊界線的真值,下表顯示了用于存儲系數的表。注意:每一欄代表其中一個拋物線系數。

表示車道邊界線的拋物線系數
您會發現,本次任務只有 1225 個訓練樣本,而這通常不足以訓練一個深度網絡。實際原因是我使用了遷移學習,也就是利用一個已經存在且經過大量圖像訓練的網絡進行尋找車道邊界線的特定任務。
我將以 AlexNet 為起點,訓練它識別 1000 種不同類別的圖像。您可以使用一行代碼,將預先訓練好的 AlexNet 模型加載到 MATLAB 中。當然,MATLAB 允許您加載其他模型,比如 GoogLeNet、VGG-16 和 VGG-19,或者從 Caffe ModelZoo導入模型。

當網絡加載到 MATLAB 中之后,我需要稍微修改一下它的結構,把它從一個分類網絡變成一個回歸網絡。注意:在下面的代碼中,我有 6 個輸出結果,對應每個車道邊界線(左和右)的三個拋物線系數。

訓練該網絡時,我使用了一個 NVIDIA Titan X (Pascal) GPU。如下圖中所示,訓練該網絡耗時 245 秒。
這次花費的時間比我預期的要少,主要原因是由于只需訓練得到新層有限數量的權值。另一個原因是,當有 GPU 可用時,MATLAB 會自動使用 CUDA 和 cuDNN 加速訓練過程。

在 NVIDIA Titan X GPU 上訓練車道邊界線檢測回歸網絡的訓練進度
盡管訓練樣本數量有限,但網絡表現非常出色,準確地檢測出了車道邊界線,如下圖所示。
車道邊界線檢測網絡的輸出
在本系列博文中,我介紹了如何使用深度學習和 MATLAB 完成一些常見的自動駕駛感知任務。我希望這些文章能幫助您了解真值標注將如何影響解決這些問題所需的時間,以及在MATLAB 中使用 GPU 加速定義和訓練神經網絡的易用性和性能。
-
神經網絡
+關注
關注
42文章
4838瀏覽量
107803 -
自動駕駛
+關注
關注
793文章
14884瀏覽量
179911 -
深度學習
+關注
關注
73文章
5599瀏覽量
124400
發布評論請先 登錄
自動駕駛中常提的占用網絡檢測存在哪些問題?
自動駕駛端到端為什么會出現黑盒現象?
如何構建適合自動駕駛的世界模型?
自動駕駛汽車如何實現自動駕駛
自動駕駛中常提的模仿學習是什么?
自動駕駛汽車如何檢測石頭這樣的小障礙物?
自動駕駛中提到的“深度相機”是個啥?
自動駕駛汽車如何確定自己的位置和所在車道?
在山區實現自動駕駛的難點在哪里?
自動駕駛中Transformer大模型會取代深度學習嗎?
關于如何通過深度學習實現自動駕駛之車道檢測的方法討論分析
評論