閩南科技學院 蔣紫韻
上海電子信息職業(yè)技術學院 曹元元
車道線的檢測是自動或智能輔助駕駛的核心問題之一。目前,在復雜場景下對車道線檢測存在精度不高、準確性差等問題,本文提出一種基于全卷積網絡及K-means聚類的分割算法,旨在解決復雜環(huán)境下車道線檢測存在的問題。本文的方法通過進行大量數據的訓練來獲取的全卷積神經網絡模型,利用模型可以準確檢測到車道線,從而減少交通事故的發(fā)生。本文算法主要包括以下步驟:首先,使用圖像預處理,采用二值化、直方圖均衡化、中值濾波等預處理方法來獲取圖像的細節(jié)信息;然后,對預處理后獲取的圖像進行K-means聚類算法獲取圖像的感興趣區(qū)域;最后,利用全卷積神經網絡訓練模型,檢測出復雜場景下的車道線。實驗證明本文算法的魯棒性和準確性較高。
隨著智能汽車快速發(fā)展,自動駕駛已成為熱門話題,其中車道線識別是自動駕駛系統(tǒng)中的一個重要模塊,可以輔助駕駛員觀察車道環(huán)境,如:車道標記位置、行人和其他異常事件,減輕駕駛員的駕駛壓力,實現(xiàn)防撞預警,降低交通事故的發(fā)生風險。因此,研究車道線檢測技術有著很高的實用價值。
目前,基于機器視覺的車道線檢測算法主要有兩種類型,分別為基于特征的識別方法和基于模型的識別方法。在一些不良路段,如:路面存在陰影、有部分車道線存在殘缺以及道路模型不符合預先假設等問題時,傳統(tǒng)的檢測方法使得識別效果降低。基于特征的識別算法是對預處理后的圖像,采用各種特征提取算子來獲取道路邊界線和車道線標志線從而完成車道線的檢測。隨著人工神經網絡的發(fā)展,大量的訓練模型使得檢測方法更有效,基于模型對車道線檢測也取得了較好的效果。Gopalan R,Tsai Hong,Shenier M,etal在論文中提出對圖像進行haar-like特征和邊緣特征的窗口滑動計算,對每個像素建立邊緣特征,然后輸入到分類器進行分類,從而實現(xiàn)圖像的像素級分割。最近,基于深度學習的檢測算法,尤其是卷積神經網絡在機器視覺領域表現(xiàn)了其強大的能力。文獻中提出了一種基于圖像分割的道路檢測方法,這種分割是通過合并來自立體視覺系統(tǒng)的2D和3D圖像處理數據而得出的,最后道路模式識別是通過人工神經網絡進行的,經過訓練獲得最終結果,但這種算法準確率不高且運行速度也不快。文獻中提出的算法引入了似然理論以構建道路檢測的置信度圖,并使用KITTIROAD基準對二進制圖和置信度圖進行了評估和比較,這種策略與簡單的二進制映射相比可以更好地解決歧義環(huán)境,但是該算法的準確性和實時性只能達到一般的效果。為了克服上述問題,本文提出基于全卷積網絡的車道線檢測的算法。實驗證明本文算法具有較好的效果,能夠較好地將車道線從視頻中分割出來,且利用FCN-16S架構和聚類方法解決復雜環(huán)境下車道線的檢測的問題。
YannLecun于1988年提出了卷積神經網絡(CNN),該網絡建立了多層可以自動提取圖像上特征,一般在前邊較淺的卷積層采用的是較小的感知域,可以獲取圖像上的一些局部細節(jié)特征,而在后邊較深的卷積層則使用較大的感知域,來獲取圖像的大小、位置和方向等抽象的特征信息。這些抽象的特征信息對于圖像的分類、圖像中物體粗略定位很有效及可以檢測出圖像包含了哪種物體,但是因為采用感知域,在獲取像素級的分割,效果較差。
由Long J,Shelhamei E,Darrell T于2015年提出了全卷積網絡(FCN)是一種端到端的卷積網絡,該網絡用于解決圖像分割,解決CNN在圖像分割的局限性。全卷積神經網絡(FCN)與CNN最主要的區(qū)別就是FCN將CNN末尾的全連接層轉化成了卷積層,稱為卷積化。然后,再利用雙線性插值將圖像特征恢復到輸入圖像的大小,最后,計算圖像分類的損失,得到分割的結果。FCN模型示意圖如圖1所示。

圖1 FCN模型示意圖
以經典神經網絡實例(Alexnet)為例,當上圖CNN網絡中輸入原圖像是227×227×3大小時,1-5層是卷積層,當第5層輸出256個特征圖,每個特征圖的大小為6×6,即第5輸出層的大小為256×6×6,而后邊的輸出層6、7、8長度為4096、4096、1000的一維向量。上圖FCN網絡中的6、7、8層都是通過卷積得到的,卷積核的大小全部是1×1,第6層的輸出大小為4096×7×7,第7層的輸出大小是4096×7×7,第8層的輸出大小是1000×7×7,即1000個大小是7×7的特征圖(稱為heatmap)。原圖在FCN網絡中經過多次卷積,使得圖像的分辨率越來越低,為了將低分辨率的heatmap恢復到原圖的大小,使原圖上每一個像素點的分類預測更有效,需對heatmap進行反卷積。在論文中首先采用了一個上池化操作,再對其進行反卷積,使得圖像分辨率提高到原圖大小。

圖2 車道線檢測流程圖
K-means算法是一種基于簡單高效、易于理解和實現(xiàn)的迭代求解的聚類算法,通過學習的方式求解最優(yōu)的分類。它采用距離作為相似性評價指標,把得到緊湊獨立的簇作為最終的目標。假設給定的數據集有n個數據對象,將其劃分為k類,其基本思想:

圖3 晴天下的車道線檢測效果圖

圖4 樹陰遮擋下的道路檢測效果圖

圖5 強光照射下的車道線檢測效果圖
(1)先確定一個k值,即k個樣本,每個樣本代表一個簇的平均值或中心,即先選擇k個類別中心;
(2)對于每個樣本,將其標記為距離類別中心最近的類別,即:

其中,xi代表第i個數據對象,zj代表第j個類別中心。
(3)將每個類別中心更新為隸屬該類別的所有樣本的均值,即:

其中,cj是第j類所有數據對象的個數。
(4)重復(2)與(3)兩步,直到類別中心的變化小于某閾值,表示重新計算的類別中心的位置變化不大,趨于穩(wěn)定,則可認為聚類已達到期望的結果,算法終止。
本文對于圖像分割實現(xiàn),首先對原道路圖進行預處理,再利用多次迭代的K-means聚類算法對預處理后的道路圖進行操作,自動選擇聚類中心,以便更好的檢測出車道線的形狀,最后采用全卷積網絡模型進行檢測,車道線檢測流程圖如圖2所示。
本文的數據集采用的是國外開源的KITTI車道數據集,但該數據集的車道數據僅為289張,訓練樣本不足,為了建立的模型可以適用于多種車道環(huán)境,則一部分采用智能手機以視頻的形式采集數據,拍攝的視頻包括了晴天、陰天、雨天等不同天氣情況及不同路況(平直、彎曲)的車道環(huán)境。另外,也從百度AI Studio中下載的ColorImage_road01,ColorImage_road02數據集中節(jié)選了1012幅圖片。之后將收集到的每個圖像和相應的車道圖像標簽水平翻轉,使數據集增加了一倍,最后用于網絡訓練的圖片有4032張。
本文模型使用Python開發(fā),采用的后臺是TensorFlow GPU版本。硬件使用Intel Core i3-3220中央處理器,8GB內存,操作系統(tǒng)Linux Ubuntu 16.02 LTS。實驗證明在Linux操作系統(tǒng)的運行速度比windows系統(tǒng)要快,更加節(jié)約時間,有利于實現(xiàn)實時性。
在公路上,本文將全卷積神經網絡加K-means聚類算法進行車道線檢測,在車道線檢測中,對車道線附近的車輛進行檢測,該系統(tǒng)可以提高車輛安全性,減少交通事故的發(fā)生。以下是從視頻的檢測結果中取出6幀來顯示的,如圖3,4,5所示。
總結:本文對于車道線檢測,提出了結合傳統(tǒng)特征與深度學習的方法。利用全卷積神經網絡加K-means聚類算法通過大量的車道線樣本進行訓練,利用生成的模型檢測公路上的車道線,同時檢測到車道線附近車輛位置,為自動駕駛提供車輛的準確位置,從而避免交通事故的發(fā)生。實驗表明,本文實現(xiàn)的算法準確率較高,魯棒性較好,但是本文算法的實時性不高,今后將如何減少時間開銷作為重點研究,來實現(xiàn)系統(tǒng)的實時性。