豆毅庚,徐建華,潘 亮,吳 限,丁子豪,陳家斌
(1. 西安愛生技術集團有限公司,西安 710065;2. 北京理工大學 自動化學院,北京 100081;3. 陸軍裝備部駐西安地區(qū)軍事代表局駐南陽地區(qū)第二軍事代表室,南陽 473000;4. 航天時代飛鴻技術有限公司,北京 100094)
在自動駕駛車輛的環(huán)境感知研究領域,道路檢測和道路寬度測量是一項關鍵的研究內(nèi)容,也是車輛定位導航、路徑規(guī)劃以及車輛安全性評估等任務的基礎。
在基于視覺的道路檢測方面,許多研究者借助圖像特征進行檢測。文獻[1]使用了一種結合Canny邊緣算子與霍夫變換的道路邊緣檢測方法。文獻[2]采用了基于B樣條曲線擬合道路邊界的方法擬合出道路邊界。此外還有許多研究者通過圖像的顏色特征來檢測道路。文獻[3]使用基于HSV顏色空間的方法對道路區(qū)域邊緣進行擬合,文獻[4]為HSV顏色空間設計了一種新的量化技術,以生成用于K-Means聚類[5]的顏色直方圖和灰色直方圖,該方法自動估計了質(zhì)心的初始化和聚類的數(shù)量,進而能夠有效地劃分出圖像中的有效信息區(qū)域,增強了HSV顏色空間的使用廣泛性。近年來,越來越多的研究者使用基于神經(jīng)網(wǎng)絡的方法處理計算機視覺相關問題[6,7]。文獻[8]在FCN[9]的末端增加全連接條件隨機場(Fully Connected Condition Random Field, FCCRF),對粗糙分割圖進行優(yōu)化,并使用空洞卷積擴大特征圖的感受域(Receptive Field,RF),提出了Deeplab網(wǎng)絡。隨后文獻[10-12]等通過引入帶空洞和特征金字塔方法、將不同空洞率的空洞卷積并聯(lián)等機制,使得Deeplab算法對于多尺度輸入圖像的分割效果得到大幅度提升,該系列算法目前已經(jīng)發(fā)展到了Deeplabv3+。在視覺測量方面,文獻[13]提出了一種基于空間位置的匹配區(qū)域對齊算法與基于模板匹配的空間位移計算方法,進而測量出車輛的移動速度。文獻[14]利用機器學習與視覺測量原理,提出了一種高精度的機器人抓取方法。文獻[15]提出了一種小尺度視覺測量方法。文獻[16]提出了一種基于雙目視覺技術的無縫線路鋼軌縱向位移測量方法。
上述基于視覺的語義分割算法對于包含多類物體的數(shù)據(jù)集的分割效果好,但是在道路場景中的語義分割中,在道路盡頭以及道路接近消失的部位分割效果差,現(xiàn)有算法還有提升的空間。其次,目前大多數(shù)視覺測量算法都是用來測量物體的深度或外徑,在道路寬度測量系統(tǒng)方面鮮有成熟的研究成果。
基于空間域的注意機制受到人眼觀察圖像過程的啟發(fā)[17]。人眼在觀察圖像時,會自動將眼睛聚焦在圖像的特定部分,以獲取圖像中的重要信息,這部分信息也稱為感興趣區(qū)域?;诳臻g域的注意力機制是通過一些方法使神經(jīng)網(wǎng)絡更加關注圖像的關鍵區(qū)域,從而促進神經(jīng)網(wǎng)絡模型的快速收斂,提高網(wǎng)絡對特定數(shù)據(jù)的學習效果。空間注意機制示意圖如圖1所示。
圖1 空間域注意力機制Fig.1 Spatial domain attention mechanism
對道路場景數(shù)據(jù)進行分析得到,自動駕駛汽車相機傳感器第一視角采集的含有道路的圖像中,道路通常位于圖像的中部,并且越接近道路消失處的部分道路寬度越窄,細節(jié)信息也變得越少。因此對于道路場景圖像來說,道路檢測模型的注意力應該側重于圖像的中間和道路消失的部位,才能獲得道路更多的細節(jié)信息?;谶@一先驗知識,本文對Deeplabv3+的網(wǎng)絡編碼解碼部分進行了修改。
Xception網(wǎng)絡是一種常見的特征提取網(wǎng)絡,它使用深度可分離卷積替代了部分常規(guī)卷積,在減少計算量的同時還提高了網(wǎng)絡的特征提取能力。Deeplabv3+算法的特征提取部分就使用了Xception網(wǎng)絡,并且配合采樣率為6、12、18的3×3并行空洞卷積進行提取道路特征圖,不同特征圖合并后再進行1×1卷積進行維度調(diào)整,最后經(jīng)過4倍上采樣以增加特征圖的分辨率。如上所述,為了防止道路邊緣和道路盡頭部分重要信息丟失,本文使用帶有真值標注的圖像,通過二值化得到掩膜(mask)。將其在淺層網(wǎng)絡部分下采樣得到G,進而與淺層的特征圖中間結果R做均方誤差Lgr(Mean Square Error, MSE),并將此部分誤差添加到原Deeplabv3+算法損失函數(shù)中,使得算法對道路邊緣和道路盡頭的關注度提高,圖像細節(jié)特征能夠被放大。修改后的損失函數(shù)如下所示:
其中,N是特征圖中像素點總數(shù),α是可修改參數(shù),一般設置為0.01~0.1之間的數(shù)。改進Deeplabv3+算法的流程圖如圖2所示,其中紅色框內(nèi)的L'為損失函數(shù),由Lgr與LDeeplabv3+組成。在神經(jīng)網(wǎng)絡的訓練階段,數(shù)據(jù)會從損失函數(shù)開始沿前向傳播的反方向計算梯度并自適應修正各部分參數(shù),為了避免流程圖過于復雜,圖2中省略了此部分箭頭。
圖2 改進的Deeplabv3+算法Fig.2 Improved Deeplabv3+ algorithm
本文使用視覺方法測量道路寬度,借助雙目相機獲取左、右相機圖像,然后進行立體匹配,從而能夠提取到空間三維信息。在立體匹配的過程中,最常用的就是半全局立體匹配算法。
(1)初始匹配代價
在初始匹配代價的計算中,左圖像上的待匹配點為p(x,y),其像素灰度I L(x,y);右圖像上x方向的視差為d的像素點為q((x-d),y),其灰度為I R((x-d),y),則該兩點的匹配代價C(p,q)計算公式如式(1)所示:
(2)半全局立體匹配
半全局立體匹配算法是一種速度和精度雙贏的立體匹配算法,其在OpenCV庫中命名為SGBM(Semi-Global Block Matching),SGBM算法通過優(yōu)化能量函數(shù)E(D)使其得到最小值,進而得到視差圖。
式中,C(p,Dp)是在視差圖D下所有像素點的匹配代價,D p表示像素點p的視差量。第二項是對像素點p的鄰域Np中的所有像素點q進行平滑,Dq為像素點q的視差量。
T[]是截斷函數(shù),根據(jù)判斷條件是否成立,對其賦值1或0。P1表示p與q的像素值差等于1的概率,P2表示p與q像素差值大于1的概率。如果P1和P2的值越大,表示該點所在的區(qū)域越平滑。
為了進一步提高半全局立體匹配算法的精度,本文提出了一種改進的半全局立體匹配算法,其中,為了對圖像進行增強,引入了直方圖均衡化(Histogram Equalization)算法。直方圖均衡化算法的核心思想是對圖像灰度進行非線性映射,進而突出圖像中的有用信息。其基本原理如下:
首先將圖像轉化為單通道灰度圖,用r表示圖像中的像素灰度等級,0≤r≤n-1。Pr(r)表示像素灰度等級分布,即灰度分布的概率密度函數(shù)。離散情況下用Pr(rk)表示,則有:
其中nk為灰度rk的像素數(shù),n為總像素數(shù)。使用式(5)對像素灰度重映射,得到增強后的圖像。
其中Si為原像素灰度i的像素映射后的像素值。
本節(jié)改進的立體匹配算法主要思路是對于輸入三通道圖像I,首先將其轉化為單通道灰度圖G,進行圖像直方圖均衡化,得到增強后的圖像G'。隨后在使用OpenCV的SGBM算法,獲得立體匹配結果D'。最后,對D'使用加權最小二乘濾波平滑,得到平滑后的立體匹配結果。
本文利用上述道路檢測和立體視覺算法,結合下述第3節(jié)中的實驗平臺,提出了一種道路寬度測量方法,具體流程如下:
1)雙目相機拍攝帶有道路的圖像對。
2)左相機圖像使用改進的Deeplabv3+算法分割道路區(qū)域,并把道路邊界的二維相對坐標存入列表List1。
3)雙目相機使用改進的SGBM立體匹配算法獲得視差圖,結合相機參數(shù)使用三角測量原理計算出深度圖Ddepth。
4)在列表List1中隨機抽取三組坐標,結合深度圖Ddepth恢復出各個點在左相機坐標系下的坐標。
5)對每組坐標點計算空間歐式距離,取平均值作為道路寬度測量值Width,單位為毫米(mm)。
上述算法流程示意圖如圖3所示。
圖3 道路寬度測量流程Fig.3 Road width measurement process
本節(jié)對上述改進Deeplabv3+和改進SGBM算法以及本文提出的道路測量方法分別實施驗證實驗。使用Autolabor pro1實驗底盤搭載小覓智能MYNT120相機,相機為水平放置,完成拍攝道路雙目圖像等任務,再通過道路測量系統(tǒng)測量道路寬度。
圖4 實驗所用雙目相機Fig.4 Binocular camera used in the experiment
圖5 實驗移動平臺Fig.5 Mobile platform
本節(jié)使用改進的Deeplabv3+算法進行網(wǎng)絡訓練與測試。實驗細節(jié):使用Cityscapes數(shù)據(jù)集的預訓練權重初始化訓練,學習率為0.001到0.0001變化,訓練輪數(shù)為45000輪。訓練最終Loss值降到了0.3以下。使用自采集的非結構化道路和結構化道路的圖像、帶有直路和彎道的圖像進行測試,取得結果如圖6所示,可以看到對于各種道路都能夠很好地分割出其邊界,對于道路快要消失的遠處部分細節(jié)也分割得很好。
圖6 道路分割結果Fig.6 Road segmentation results
使用指標mIOU(Mean Intersection Over Union)評價算法,選取Cityscapes數(shù)據(jù)集和自標注數(shù)據(jù)的共計200張圖像進行測試,得到結果如表1所示。
表1 道路分割精度Tab.1 Accuracy of road segmentation
本節(jié)通過實驗對改進的SGBM算法進行驗證實驗,使用VS2015和OpenCV3.10作為實驗軟件平臺,對立體匹配標準測試數(shù)據(jù)集中的Middle2、Bowling1和laundry進行測試,實驗結果如圖7所示。
圖7 立體匹配結果Fig.7 Stereo matching result
表2 誤匹配率(單位:%)Tab.2 Mismatching rate (Unit: %)
可以看出,改進后的SGBM立體匹配算法對于圖像邊緣的匹配效果更好,與原始SGBM算法相比,圖中紅色方框中框處的部分在細節(jié)處得到了明顯的改善,同時也降低了誤檢率,效果更好。
本節(jié)對本文提出的道路寬度測量方法進行實驗驗證。實驗細節(jié):軟件環(huán)境為python3.6,OpenCV3.7,VScode。硬件為小覓MYNT120相機,并已提前標定。
圖8所示為本文提出的道路寬度測量方法的驗證實驗效果圖。其中,第一行所示為改進的立體匹配算法結果,可以看出改進算法的視差圖較平整,下方圖像內(nèi)黃色部分是使用改進的Deeplabv3+進行的道路分割結果,紅色文字表示的是道路寬度測量結果。
圖8 道路寬度測量結果Fig.8 Road width measurement results
為了更進一步驗證本文提出的道路寬度檢測方法的有效性,設置對照實驗,原始方法為Deeplabv3+算法結合SGBM算法進行道路檢測與寬度測量,本文方法為改進的Deeplabv3+算法結合改進的SGBM算法進行道路檢測與寬度測量。對照實驗結果如表3所示。
表3 道路寬度測量誤差Tab.3 road width measurement error
由以上測量結果圖和測量結果誤差表可以得到,本文提出的基于視覺的道路寬度測量方法比原始方法效果好,并且能夠在結構化道路和非結構化道路下都取得很好的測量結果,測量誤差不超過真實值的5.0%。
本文提出了一種基于計算機視覺的道路寬度測量系統(tǒng)。該系統(tǒng)在道路語義分割環(huán)節(jié)采用改進的Deeplabv3+算法,能夠準確分割出圖像中的道路區(qū)域。立體視覺測量部分提出了一種改進的SGBM立體匹配算法,使得圖像邊緣等細節(jié)處的匹配效果得到提升。道路寬度測量系統(tǒng)基于前兩個改進算法進行,實驗結果表明,本文提出的方法對非結構化道路和結構化道路具有很好的測量精度,該方法提高了自動駕駛車輛對道路的感知能力,并且在建圖領域可實現(xiàn)代替人工方法對道路進行測量。