王立春,劉寧鐘,李強懿
(南京航空航天大學 計算機科學與技術學院,江蘇 南京 211100)
隨著公路建設的迅速發展,對公路養護的任務量與日俱增,傳統的人工查看方式已不再適用。隨著無人機航拍技術的發展,利用無人機航拍對公路標線進行自動檢測分析具有很好的應用前景[1]。
對于公路標線的自動化分析,首要的任務便是路面標線的檢測分割。由于航拍圖像拍攝范圍較大,包含比較多公路以外區域,所以公路分割是公路標線提取的第一步。目前對于公路分割的方法比較多。例如,徐玲凌等提出改進C-V水平集模型的圖形分割算法對公路進行分割[2];岳建坡等提出了最大類間方差路面分割算法[3]。在完成公路分割后,檢測濾除路面上的車輛等非標線目標成為提取標線的關鍵。對于車輛檢測算法,在傳統的檢測模型中,基于手工設計特征的檢測模型被廣泛使用[4],如SIFT、Harris等。傳統方法特征設計較復雜,效果具有局限性,近年來,深度學習被廣泛應用于物體檢測與識別領域[5-6],并取得了較好的效果。
文獻[7-8]分別將角點特征以及HOG特征作為特征提取方法,然后結合SVM分類器實現了航拍圖像中的車輛檢測。文獻[9]采用滑動窗口與深度神經網絡結合的方法進行車輛檢測。針對標線提取方法,文獻[10-11]提出一種改進的Hough變換車道標線識別算法,文獻[12]將改進的概率Hough變換和特征匹配算法用于車道線的檢測。文獻[13]采用多種過濾算法,提高了標線檢測的準確度。文獻[14]提出了一種深度學習網絡,分割出每條車道線區域的像素信息,實現高速公路的車道線檢測。文獻[15]提出了一種廣義曲線的車道線檢測方法,能同時實現直線與彎道線的檢測。
受上述方法的啟發,文中提出使用深度學習技術與傳統圖像處理技術相結合的方式實現公路航拍圖像的標線提取。首先在航拍圖像中,提取顏色以及梯度特征分割出路面區域作為檢測區域,然后采用輪廓提取方式提取路面標線目標,并針對標線目標中的車輛噪聲等干擾,結合Faster R-CNN算法與車輛的顏色、面積等信息進行非標線目標的濾除,最后根據過濾結果,分割出路面標線。
公路航拍圖像中,公路分割是進行標線檢測的第一步。由于航拍圖像中,公路圖像較為規則,邊界較為明顯,公路的顏色與公路外區域的顏色差別較大,并且公路區域的紋理特征較少而公路外區域紋理特征較多,因此可以結合顏色與紋理特征進行公路區域檢測。在圖像中,梯度可以很好地表示紋理特征,因此,文中采用顏色特征與梯度特征相結合的方式進行公路分割[16]。
采用滑動窗口的方式分別對每一子塊進行路面梯度檢驗。對于輸入的M*N的圖像,利用w*w的滑動窗口提取局部圖像區域,并針對提取區域,統計該窗口內圖像像素的梯度信息,并依據梯度信息判斷該區域是否為路面區域。在梯度信息檢驗之后,針對梯度分割結果,對路面區域進行路面顏色檢驗,對于不符合路面顏色條件的區域進行濾除。通過梯度與顏色相結合的方式可以較好地提取航拍圖像中的公路位置。公路區域定位算法描述如下:
算法1:公路區域定位算法。
步驟1:利用差分定義一階偏微分圖像,每個像素點的梯度計算如式1。式2定義每個像素點的梯度值為該像素點8個方向的梯度最大值。
步驟2:設定梯度閾值σ,并統計窗口區域內梯度大于σ的像素個數比例PT以及窗口區域的平均梯度AT,見式3與式4。式4中Iσ為指示函數,見式5。將PT與AT較大的區域標記為非公路區域,否則標記為公路區域(根據以往的經驗,實驗中設定PT為0.3,AT為30)。
(1)
T=max(T+X,T-X,T+Y,T-Y,T+45,T-45,T+135,T-135x)
(2)

(3)

(4)

(5)
步驟3:在進行梯度檢測后,對滿足梯度信息的像素點,通過式6和式7計算每個像素點R、G、B三分量灰度的最大差值Mgray以及平均灰度Agray,利用式8判斷像素點是否符合路面顏色,將不滿足路面灰度條件的像素點標記為非路面區域。
Mgray=max(R,G,B)-min(R,G,B)
(6)
Agray=0.3R+0.59G+0.11B
(7)
(8)
步驟4:對處理后的公路區域進行形態學閉操作處理,以得到較完整的公路區域。
在進行標線連通區域提取之前,首先需要對路面圖像進行二值化處理。文中在路面區域提取結果的基礎上,首先統計路面圖像的平均灰度GrayLevel,然后利用Ostu算法計算分割閾值OstuLevel,通過公式level=max(OstuLevel,GrayLevel*1.5)計算路面二值化的閾值level。二值化后,提取連通區域[17]作為標線的預提取區域。
由于二值化后提取的連通區域內含有較多的非標線區域的干擾,所以在提取連通區域之后,需要對其進行過濾,文中采用面積和顏色特征相結合的方式。首先針對每一個連通區域,統計其連通區域的面積以及最小外接矩形長寬比h/w,對于面積較小或者較大的區域,可直接標記為非標線區域。對于面積符合標線面積的區域,判斷其最小外接矩形長寬比,由于標線長寬比一般較大,且寬度較小,故對于寬度較大,且長寬比h/w小于1的區域可判定為非標線區域。對于其他區域,統計求出連通區域內R、G、B三通道的灰度中值,利用式6和式9判斷是否屬于標線區域,對于不滿足條件的區域,可判定為非標線區域。在去除干擾后,可初步得到標線區域。
(9)
通過對連通區域提取面積特征與顏色特征,可以過濾掉大部分非標線區域,但仍存在部分未能過濾掉的非標線區域。經分析,大部分未過濾掉的非標線區域為車輛,且由于車輛形狀以及顏色各異,傳統的方法較難以將車輛全部濾除。近年來,隨著深度學習技術的發展,使得目標檢測領域取得了較大進展,故文中采用Faster R-CNN算法[18]進行航拍車輛檢測。
Faster R-CNN是目前主流的目標檢測框架之一。不同于R-CNN[19]和Fast R-CNN[20]方法,Faster R-CNN使用RPN網絡替換了R-CNN以及Fast R-CNN中的Selective Search[21]方法來提取候選區域,使得檢測精度與算法效率得到進一步提升。Faster R-CNN主要由三部分構成:CNN網絡、RPN網絡以及判別網絡。CNN網絡的作用是提取圖像特征,RPN網絡用于提取目標候選區域,判別網絡對最終的檢測結果進行分類回歸,得到最終的分類定位結果。
RPN網絡是一個全卷積網絡,在輸入特征圖上利用滑動窗口的方式來獲取候選區域。使用的滑動窗口與傳統意義的滑動窗口不同,這里是以每個像素點為中心,提取多個不同比例、不同尺度的窗口。Faster R-CNN預設9個窗口,分別對應三種窗口面積,即128,256,512,三種窗口比例,分別為1∶1,1∶2,2∶1。
根據不同窗口采集到的特征,RPN利用分類層計算窗口內包含目標的得分,根據得分判斷窗口內是否含有目標。針對每一個目標,需要對目標的位置進行進一步的回歸矯正,如果圖像內目標區域與目標的真實區域重疊率大于閾值(默認為0.7),則該區域標簽為1,如果重疊率小于另一閾值(默認為0.3),則該區域標簽為0。對標簽為1的區域,計算其與真實目標之間的差值,完成定位過程。
Faster R-CNN含有兩個輸出層,分別用于計算分類結果以及計算檢測框的坐標結果。第一個輸出層通過softmax計算相應ROI在各個類別中的概率。第二個輸出層計算相應ROI的檢測框的坐標值。算法采用多任務的損失函數對每個標定的ROI的類型和檢測框坐標進行回歸計算,損失函數見式10~13。
L(p,u,tu,v)=Lcls(p,u)+λ[λ≥1]Lloc(tu,v)
(10)
Lcls(p,u)=-logpu
(11)
(12)
(13)

由于檢測場景是無人機航拍圖像,故實驗采用無人機以相同的方式采集圖像樣本作為訓練數據,并且分別采集了多條公路。
對于訓練樣本的處理,由于無人機拍攝圖像有尺寸較大、分辨率較高、包含目標較小等特點,為了提高檢測精度,以公路寬度作為邊長的正方形窗口截取航拍圖像中以車輛為主體的區域并統一縮放到600*600作為訓練數據。對于數據的標定,采用Pascal VOC2007數據集的標定方式進行標定。實驗中共截取10 000張車輛圖片用做訓練樣本,另外又采集了3條公路共約3 000張圖像用作測試樣本。
文中使用Caffe框架,預訓練模型選擇VGG16模型,預訓練參數采用VGG16在ImageNet上的訓練結果,使用RPN網絡與分類網絡同時訓練的方法,在Nvidia GTX1080 GPU加速下,訓練得到目標檢測模型。測試時,同樣采用滑動窗口截取的方式,對公路分割后的公路圖像,以公路寬度為邊長的正方形滑動窗口將路面區域截取為多塊區域并縮放至600*600,并將各塊區域分別送入Faster R-CNN中進行車輛檢測,最后將多個窗口檢測結果合并到原圖中作為整張圖的檢測結果。檢測算法流程如圖1所示。比較檢測的外圍框與標記的外圍框的重合比例進行檢測準確度的計算,重合比例約達到70%以上時,認為檢測正確。

圖1 檢測算法流程
首先,選定一些測試樣本圖像進行單張圖像檢測。實驗發現存在錯檢的情況。經分析,對于貨車,由于其裝貨物后外觀差異變化較大,對檢測準確度產生一些影響,對于正常轎車檢測效果較好。文中分別對采集的多條公路的測試集進行整體測試,結果見表1。

表1 批量測試結果
檢測正確率的計算公式為:
(14)
其中,Acc為檢測正確率;Rs為正確識別車輛數量;Ts為樣本中車輛總數量。
通過測試結果可以看出,該模型對于寧高公路效果最好,東麒路效果最差。寧高公路車道數較少,飛行高度較低,車輛模型相對較大,并且公路車輛數量相對較少,而東麒路車道數較多,飛行高度較高,車輛相對較小,存在部分漏檢與錯檢的情況。分析發現,識別錯誤大部分檢測的結果還是車輛,只是識別目標結果與標定目標重合度未達到70%,這樣對于車輛的濾除依然產生一定效果。綜上分析,該模型平均檢測準確率可達到80%,可以滿足在新樣本下進行車輛檢測。
本次實驗,測試數據采用無人機分路段采集圖像,圖像大小為4 000*3 000像素。實驗條件為Intel Core i7 CPU,8 G內存,算法采用C++編程實現。
為評估算法的適用性和有效性,分別對不同路段及與其他算法進行了精度對比。選取準確率與召回率作為評估算法檢測精度的指標。
準確率和召回率定義為:
(15)
(16)
其中,P表示準確率;R表示召回率;TP表示真實情況為正例并且預測結果也為正例;FN表示真實情況為正例但預測結果為反例;FP表示真實情況為反例但預測結果為正例;TN表示真實情況為反例且預測結果為反例。
選取不同地區的不同路段測試算法的檢測準確度,圖2是部分公路航拍圖像的標線檢測結果圖。標線檢測統計結果見表2。

圖2 標線檢測結果

公路名稱標線總數準確率/%召回率/%平均每張時間/s東麒路-路段16 48098.595.11.2東麒路-路段27 39498.496.61G328-路段14 39298.795.81.1G328-路段24 30899951.1寧高-路段14 02099.497.91寧高-路段24 10499.397.71.1總計30 69898.8961.1
由表2可知,文中算法檢測標線召回率平均可達到96%,準確率平均可以達到98%以上,檢測準確度較高。由于航拍圖像較大,每張圖像平均處理時間約為1 s。對錯檢圖像進行分析,公路中存在隔離護欄等裝置,與標線極為相似,沒有全部過濾掉。對漏檢圖像進行分析,首先由于車輛、樹等陰影的干擾,使得在二值化后被陰影遮擋的標線區域被當作背景,未能提取出標線區域,另外由于部分車輛與標線距離較近,過濾車輛時將標線一同過濾掉。
為評估Faster R-CNN方法對檢測準確度的影響,對比了使用Faster R-CNN前后的檢測精度,對比結果見表3。
在不使用Faster R-CNN時,標線檢測的召回率較高,但是準確率較低,說明標線檢測錯誤的情況較多。而使用Faster R-CNN進行車輛濾除后,召回率略有下降,但是準確率顯著提升,說明使用Faster R-CNN方法對路面車輛的濾除效果較好。
表3 不同方法平均精度對比

%
文中還與其他標線檢測方法進行了對比。文獻[11-13]采用圖像處理的方法進行標線檢測,文獻[14]采用深度學習進行標線檢測。其中文獻[11]和文獻[12]分別利用Hough變換以及特征檢測的方式實現標線檢測,文獻[13]結合多種過濾算法提取標線,文獻[14]直接利用深度網絡進行標線檢測。通過對比可知,相較于其他方法,文中通過將圖像處理以及深度學習相結合的標線檢測方法,均優于單獨使用圖像處理或深度學習的方法。文中方法在保證高準確率的情況下,具有較高的召回率,檢測效果較好,具有良好的有效性和適用性。
文中提出了一種新的公路標線檢測算法。首先根據航拍圖像特點,采用圖像顏色特征與梯度特征相結合的方式進行公路分割,該分割算法實現簡單,運行效率較高,分割效果較好,特別適合于航拍圖像中的公路定位分割。然后利用深度學習Faster R-CNN與傳統圖像處理算法相結合的方式進行非標線目標的過濾,采用Faster R-CNN的方式對車輛檢測準確率較高,可以有效過濾路面區域車輛的干擾,有效提高檢測算法的準確率。實驗結果表明,文中算法在不同公路、不同飛行高度,均有較高的檢測精度,滿足了實際使用要求。下一步的工作是構建更加全面的訓練數據庫,同時,針對檢測過程中發生的錯檢情況進行深入研究與解決。