未來十年,自動駕駛將徹底改變人們的出行方式。
目前,自動駕駛應用程序目前正在測試各種案例,包括客車、機器人出租車自、動商業運輸卡車、智能叉車以及用于農業的自動拖拉機。自動駕駛需要計算機視覺感知模塊來識別和導航環境。此感知模塊的作用是:
車道檢測
檢測環境中的其他物體:車輛,行人,動物
跟蹤檢測到的對象
預測他們可能的運動
一個好的感知系統應該能夠在各種駕駛條件下(白天/晚上、夏天/冬天、下雨/下雪等)實時完成這項工作。
在本文中,我們將探究一個實時模型,用于檢測車道、其他車輛等以及生成警報。
訓練實時車道檢測
車道檢測問題通常被構造為語義或實例分割問題,目的是識別屬于車道類別的像素。
TUSimple 是用于車道檢測任務的常用數據集,這個數據集有 3626 個道路場景的注釋視頻剪輯,每個剪輯有 20 幀,數據都是從安裝在汽車上的攝像機所捕獲的。
下面分享一個示例圖像及其注釋。
在此數據集中,我們可以訓練語義分割模型用于分割出屬于車道類別的像素。U-Net 模型是一個理想的模型,因為它是具有實時推理速度的輕量級模型。U-Net 是一種編碼器-解碼器模型,具有跳過連接編碼器和解碼器塊。模型架構如下所示:
但是,損失函數應修改為骰子損失系數。
車道線分割問題是一個極不平衡的數據問題,圖像中的大多數像素都屬于背景類。Dice Loss 基于 Sorenson-Dice 系數,它對假陽性和假陰性具有相似的重要性,這使它在數據不平衡問題的處理上表現更好。
你可以在他們的論文中閱讀有關 Dice Loss 的更多信息。Dice Loss 嘗試匹配地面真實情況和預測模型中的車道像素,并能夠獲得清晰的邊界預測。個人非常喜歡這個關于使用骰子進行邊界預測的博客。
LaneNet 模型
對于本文,我使用 LaneNet 模型生成車道線。
LaneNet 模型是兩階段車道線預測器。第一階段是編碼器-解碼器模型,以創建車道線分割掩碼。第二階段是車道定位網絡,該車道網絡將從掩碼中提取的車道點作為輸入,并使用 LSTM 學習預測車道點的二次函數。
下圖顯示了操作的兩個階段。左圖是原始圖像,中間圖像是第 1 階段車道注釋的輸出,右圖是第 2 階段的最終輸出。
我使用了這個 repo 中的 LaneNet 模型實現。代碼維護良好,運行無錯誤。
生成智能警報器
我將車道的預測與對象檢測相結合,以生成智能警報。這些智能警報可以:
檢測車輛的自我車道中是否存在其他車輛并測量與它們的距離
檢測相鄰車道中的車輛
識別彎曲道路的轉彎半徑
在這里,我使用 YOLO v5 來檢測道路上的汽車和人。
YOLO v5 在檢測道路上的其他車輛方面表現出色,而且推斷時間也非常快。接下來,我們使用 YOLO v5 來測量我方車輛與前面最近的車輛之間的距離。模型返回以像素為單位的距離,可以根據相機參數將其轉換為米。
由于 TUSimple 數據集的相機參數未知,因此我根據車道的標準寬度估算了像素到米的轉換。
我們同樣可以計算車道的曲率半徑,并將其用于汽車的轉向模塊。
結論
在本文中,我們探討了針對自動駕駛中如何準確而快速地檢測車道線的問題。然后,我們使用 YOLO v5 建立對道路上其他對象的識別,用于生成智能警報。
在深度學習分析中,我們非常熱衷于使用機器學習解決現實世界中的問題。我們已經幫助許多企業部署了基于 AI 的創新解決方案。