道路場景語義分割算法
輸入輸出接口
Input:
(1)左右兩個攝像頭采集的實時圖像視頻分辨率(整型int)
(2)左右兩個攝像頭采集的實時圖像視頻格式 (RGB,YUV,MP4等)
(3)攝像頭標定參數(中心位置(x,y)和5個畸變
系數(2徑向,2切向,1棱向),浮點型float)
(4)攝像頭初始化參數(攝像頭初始位置和三個坐標方向
的旋轉角度,車輛寬度高度車速等等,浮點型float)
Output:
(1)各個區域邊界(浮點型float)
(2)各個label圖像類型(整型int)
(3)實例分割區域個數(整型int)
(4)以上三種圖像的融合圖 (RGB,YUV,MP4等)
(5)攝像頭與各個分割區域的距離(浮點型float)
1. 功能定義
(1)計算各個區域邊界
(2)各個label圖像類型
(3)計算實例分割區域個數
(4)以上三種圖像的融合圖 (RGB,YUV,MP4等)
(5)計算攝像頭與各個分割區域的距離
2. 技術路線方案
自動駕駛系統中的一項重要核心技術——圖像語義分割(Semantic image segmentation)。圖像語義分割作為計算機視覺(Computer vision)中圖像理解(Image understanding)的重要一環,不僅在工業界的需求日益凸顯,同時語義分割也是當下學術界的研究熱點之一。
深入到無人駕駛領域,對於場景的環境感知是一個棘手且十分重要的課題。語義分割作為無人車駕駛的核心算法技術,車載攝像頭,或者激光雷達探查到圖像后輸入到神經網絡中,后台計算機可以自動將圖像分割歸類,以避讓行人和車輛等障礙。與分類目的不同,語義分割相關模型要具有像素級的密集預測能力。
縱觀語義分割的發展歷史,主要經歷了“前DL時代的語義分割”和“DL時代的語義分割”。從最簡單的像素級別“閾值法”、基於像素聚類的分割方法到“圖,在深度學習 “一統江湖”之前,圖像語義分割方面的工作可謂“百花齊放”,其主要代表為“Normalized cut” 和“Grab cut” 這兩個基於圖划分的經典分割方法。隨着深度學習技術的高速發展,語義分割這個領域也逐漸陷入了深度學習的漩渦。
道路場景語義分割系統所期望的目標如圖1所示。針對道路場景的圖片,能夠對圖像中的物體進行基於像素級別的分割,從而實現為無人駕駛或智能輔助駕駛提供基礎數據的支持。
圖1. 語義分割實例
圖2. 行駛區域車道上的特定目標語義分割
在圖片語義分割的應用基礎之上,對視頻幀進行離散化的處理,從而達到處理視頻的效果。按照VOC的評價標准,使用公式:IOU=TP/(TP+FP+FN)來評估模型,其中IOU又分為基於類別和基於對象,本系統主要按照基於類別的IOU進行評估,最終實現IOU category 逼近80%(CityScapes數據集),鑒於公司數據夜晚場景的復雜性,其最終IOU難以評估,估計會低於預期。
在實現標准數據集80% IOU category的基礎上,進行夜晚場景的遷移學習從而進行微調,並最終應用於處理視頻幀,現初步預定幀率為25FPS,但使用環境的不同可能會影響最終的幀率。
參考傳統語義分割算法,綜合目前各種深度學習網絡模型在語義分割任務中的應用效果,本項目擬采用初步復現,穩步提升的總體路線,從經典的FCN到SegNet …… 一直到最新的DeepLab V3+,逐一驗證和改進並產品化。
在大多數論文中,分割網絡的這兩個部分被稱作編碼器和解碼器。簡而言之,第一部分將信息「編碼」為壓縮向量來代表輸入。第二部分(解碼器)的作用是將這個信號重建為期望的輸出。有很多基於編碼器—解碼器結構的神經網絡實現。FCNs、SegNet,以及 UNet 是最流行的幾個。
與大多數編碼器—解碼器架構設計不同的是,Deeplab提供了一種與眾不同的語義分割方法。Deeplab 提出了一種用於控制信號抽取和學習多尺度語境特征的架構。
Deeplab把在ImageNet上預訓練得到的ResNet作為它的主要特征提取網絡。但是,它為多尺度的特征學習添加了一個新的殘差塊。最后一個ResNet塊使用了空洞卷積,而不是常規的卷積。此外,這個殘差塊內的每個卷積都使用了不同的擴張率來捕捉多尺度的語境信息。
另外,這個殘差塊的頂部使用了空洞空間金字塔池化ASPP。ASPP使用了不同擴張率的卷積來對任意尺度的區域進行分類。
DeepLabv1-v2都是使用帶孔卷積提取密集特征來進行語義分割。但是為了解決分割對象的多尺度問題,DeepLabv3設計采用多比例的帶孔卷積級聯或並行來捕獲多尺度背景。DeepLabv3修改之前提出的帶孔空間金字塔池化模塊,該模塊用於探索多尺度卷積特征,將全局背景基於圖像層次進行編碼獲得特征,取得 state-of-art 性能,在PASCAL VOC-2012達到86.9mIOU。
DeepLabv3+繼續在模型的架構上更新,為了融合多尺度信息,引入語義分割常用的encoder-decoder。在encoder-decoder架構中,引入可任意控制編碼器提取特征的分辨率,通過空洞卷積平衡精度和耗時。
在語義分割任務中采用 Xception模型,在 ASPP 和解碼模塊使用 depthwise separable convolution,提高編碼器-解碼器網絡的運行速率和健壯性,在 PASCAL VOC 2012 數據集上取得新的 state-of-art 表現,89.0mIOU。
DeepLabv3+的模型框架如下圖所示:
圖3. Deeplab V3+模型架構
考慮到語義分割架構是不斷地在原有基礎上提升,項目的開發總體流程如圖178所示:
圖4. 系統總體流程圖
測試
1)公開數據集測試:在VOC和COCO等數據集上進行測試,得到mAP和Loss等數據。
2)在自主采集數據集上進行測試,分析測試結果。
集成
寫成封裝函數,能夠集成在FPGA開發板上正確運行。
開發環境說明
表1. 語義分割開發環境
3. 關鍵技術參數和性能指標
1)實時性:在GPU和FPGA上達到30fps
2)環境適應性:在公開數據集和自主采集數據集上均可較好的進行語義分割