如何在有限算力下實現智慧駕駛多工高精度識別?
近幾年,隨著自動駕駛、車路協同等概念的日益火熱,地圖廠商、傳統汽車廠商以及有網際網路背景的“造車新勢力”紛紛加入了智慧升級的探索之路。為了使智慧駕駛更安全更可靠,實現高精度、實時感知周圍環境的技術至關重要,該技術不僅可以精準快速地識別車道線、行駛區域、行人、車輛等,而且將車輛行駛路線“畫”在地面,為駕駛人員提供車距監測、行人預警、車道偏離提醒和紅綠燈提醒等一系列安全輔助功能,助力駕駛系統進行高效的決策。
圖1 百度地圖AR導航功能展示
但在真實產業中,要實現高精度的駕駛環境感知不是一件容易的事,在實際的路況中存在著各種各樣的問題:
- 攝像頭採集到的影象會受到樹木、建築遮擋以及車輛移動的影響;
- 天氣多種多樣,要適應白天、黑夜、霧天和雨天等;
- 車道線磨損程度不一,且不同區域的車道線新舊對識別也有很大的影響。
針對上述場景,本次飛槳產業實踐範例庫基於真實場景中的車載影像資料,推出了目標檢測和車道線分割多工處理的智慧駕駛感知實踐示例,提供從資料準備、技術方案、模型訓練優化,到模型部署的全流程可複用方案,有效解決了不同光照、不同天氣等室外複雜環境下的目標識別問題,適用於AR地圖導航、機器人教育、廠區自動巡檢、自動駕駛等多個產業應用。
⭐專案連結⭐
https://github.com/PaddlePaddle/awesome-DeepLearning
所有原始碼及教程均已開源,歡迎大家star鼓勵~
基於深度學習
實現駕駛環境感知
基於深度學習實現駕駛環境感知要對機動車、非機動車、行人以及交通訊號燈(紅燈, 黃燈, 綠燈,滅燈) 這7類物件進行目標檢測, 同時對實車道線、虛車道線和斑馬線3類目標進行分割, 並且要求檢測速度不低於20 fps才能進一步端側移植,因此,如何在有限算力下實現多工的高精度識別將會是駕駛環境感知應用最核心的問題。
圖2 場景識別目標說明
專案難點
資料難:同一個目標(標籤)在不同的環境下呈現的形態差異大,如實車道線和虛車道線在城鄉結合區域難以區分;資料存在小樣本和樣本不均衡的問題,車輛行人標籤多,紅綠燈資料相對較少。
任務多:需要同時解決檢測和分割兩個任務,選模型和優化時要權衡精度與速度兩方面。
效率高:模型要儘量小,訓練與預測速度要儘量快,在V100的平臺至少實現20fps才能端側移植。
專案方案
針對上述難點,經過對模型效能精度和速度的考慮,最終選用了飛槳目標檢測套件
PaddleDetection中的PP-YOLOv2和飛槳影象分割套件。PaddleSeg中的HardNet模型作為Baseline模型進行相應的優化,使用多程序非同步處理,進一步提升了部署效能。
圖3 baseline模型選擇策略
方案優化
本次演算法設計同時圍繞計算效率、不均衡問題、小目標分佈、模型穩定性四個方面展開,並針對真實道路場景進行處理。
圖4 場景說明
檢測模型優化歷程
資料處理:
1、資料為車載記錄儀拍攝的道路畫面,其目標均為交通目標,尺寸和比例相對穩定,但經常會受到光照、感測器噪聲等因素影響,偶爾還會出現運動模糊,為此在資料增強過程中,調整RandomDistort(隨機畫素替換) 中引數hue、saturation、contrast、brightness範圍由到[0.8, 1.2],從而使得模型收斂效率顯著提升。
2、為了提高模型的泛化能力,針對車載攝像頭的場景,在訓練全過程中隨機加入albumentations庫中的JpegCompression(降畫質) 、MotionaBlur(運動模糊)、RandomBrightnessContrast(亮度對比度)等資料增強的方法。
圖5 資料增強策略說明
模型結構優化:
1、模型檢測頭復現,使用飛槳復現YOLOX Decoupled Head,相比之前的YOLOX Head檢測精度提升了2%。
圖6 不同檢測頭的精度對比
2、在PP-YOLOv2的Matrix nms的處理結果之後增加merge nms,增加保留框位置平滑策略(重疊框位置資訊求解平均值),使框的位置更加精確。
圖7 更換nms後位置精度示意
分割模型優化
1、由於專案中資料為車載記錄儀拍攝的道路畫面,分割的語義都是地面標識,所以在大小、尺寸、色彩方面都相對穩定,因此資料增強不需要太多,只需要能體現一定的變化規律即可,同時為了避免隨機裁剪過程中導致實車道線和虛車道線產生混淆,因此在資料中去掉了隨機裁剪的資料增強方式。
2、調整模型解析度:HardNet 1024 (w) * 1024(h) ->1056(w) * 608(h),訓練採用多尺度 。
專案效果
經過一系列的優化,模型實現了對駕駛過程中的機動車、行人、紅綠燈、車道線等目標的識別,最終整體識別精度達到85%。
圖8 效果展示說明
部署優化
一開始使用模型串聯的形式,先進行分割的後處理,但時間不滿足要求。通過進一步優化部署,最終採用多執行緒的方式載入模型並行預測,實現了高效部署,最終在v100伺服器達到了22fps,滿足端側移植的條件。
圖9 推理流程說明
部署方面使用飛槳原生推理庫PaddleLite進行部署,滿足使用者批量預測、資料安全性高、延遲低的需求,快速在本地完成部署方案,當前部署方案已經發布,歡迎小夥伴們使用嘗試。
圖10 安卓app示範
產業實踐範例教程
助力企業跨越AI落地鴻溝
飛槳產業實踐範例,致力於加速AI在產業落地的前進路徑,減少理論技術與產業應用的差距。範例來源於產業真實業務場景,通過完整的程式碼實現,提供從資料準備到模型部署的方案過程解析,堪稱產業落地的“自動導航”。
- 真實產業場景:與實際具有AI應用的企業合作共建,選取企業高頻需求的AI應用場景如智慧城市-安全帽檢測、智慧製造-表計讀數等;
- 完整程式碼實現:提供可一鍵執行的程式碼,在“AIStudio一站式開發平臺”上使用免費算力一鍵Notebook執行;
- 詳細過程解析:深度解析從資料準備和處理、模型選擇、模型優化和部署的AI落地全流程,共享可複用的模型調參和優化經驗;
- 直達專案落地:百度高工手把手教使用者進行全流程程式碼實踐,輕鬆直達專案POC階段。
精彩課程預告
為了讓小夥伴們更便捷地實踐和應用駕駛環境感知,百度飛槳產品經理將於3月17日20:30-21:00為大家深度解析從資料準備、方案設計到模型優化部署的開發全流程,手把手教大家進行程式碼實踐。
歡迎小夥伴們掃碼進群,免費獲取直播課和回放視訊連結,更有機會獲得覆蓋智慧城市、工業製造、金融、網際網路等行業的飛槳產業實踐範例手冊!也歡迎感興趣的企業和開發者與我們聯絡,交流技術探討合作。
點選立即報名