王立春,劉寧鐘,李強(qiáng)懿
(南京航空航天大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇 南京 211100)
隨著公路建設(shè)的迅速發(fā)展,對公路養(yǎng)護(hù)的任務(wù)量與日俱增,傳統(tǒng)的人工查看方式已不再適用。隨著無人機(jī)航拍技術(shù)的發(fā)展,利用無人機(jī)航拍對公路標(biāo)線進(jìn)行自動檢測分析具有很好的應(yīng)用前景[1]。
對于公路標(biāo)線的自動化分析,首要的任務(wù)便是路面標(biāo)線的檢測分割。由于航拍圖像拍攝范圍較大,包含比較多公路以外區(qū)域,所以公路分割是公路標(biāo)線提取的第一步。目前對于公路分割的方法比較多。例如,徐玲凌等提出改進(jìn)C-V水平集模型的圖形分割算法對公路進(jìn)行分割[2];岳建坡等提出了最大類間方差路面分割算法[3]。在完成公路分割后,檢測濾除路面上的車輛等非標(biāo)線目標(biāo)成為提取標(biāo)線的關(guān)鍵。對于車輛檢測算法,在傳統(tǒng)的檢測模型中,基于手工設(shè)計(jì)特征的檢測模型被廣泛使用[4],如SIFT、Harris等。傳統(tǒng)方法特征設(shè)計(jì)較復(fù)雜,效果具有局限性,近年來,深度學(xué)習(xí)被廣泛應(yīng)用于物體檢測與識別領(lǐng)域[5-6],并取得了較好的效果。
文獻(xiàn)[7-8]分別將角點(diǎn)特征以及HOG特征作為特征提取方法,然后結(jié)合SVM分類器實(shí)現(xiàn)了航拍圖像中的車輛檢測。文獻(xiàn)[9]采用滑動窗口與深度神經(jīng)網(wǎng)絡(luò)結(jié)合的方法進(jìn)行車輛檢測。針對標(biāo)線提取方法,文獻(xiàn)[10-11]提出一種改進(jìn)的Hough變換車道標(biāo)線識別算法,文獻(xiàn)[12]將改進(jìn)的概率Hough變換和特征匹配算法用于車道線的檢測。文獻(xiàn)[13]采用多種過濾算法,提高了標(biāo)線檢測的準(zhǔn)確度。文獻(xiàn)[14]提出了一種深度學(xué)習(xí)網(wǎng)絡(luò),分割出每條車道線區(qū)域的像素信息,實(shí)現(xiàn)高速公路的車道線檢測。文獻(xiàn)[15]提出了一種廣義曲線的車道線檢測方法,能同時實(shí)現(xiàn)直線與彎道線的檢測。
受上述方法的啟發(fā),文中提出使用深度學(xué)習(xí)技術(shù)與傳統(tǒng)圖像處理技術(shù)相結(jié)合的方式實(shí)現(xiàn)公路航拍圖像的標(biāo)線提取。首先在航拍圖像中,提取顏色以及梯度特征分割出路面區(qū)域作為檢測區(qū)域,然后采用輪廓提取方式提取路面標(biāo)線目標(biāo),并針對標(biāo)線目標(biāo)中的車輛噪聲等干擾,結(jié)合Faster R-CNN算法與車輛的顏色、面積等信息進(jìn)行非標(biāo)線目標(biāo)的濾除,最后根據(jù)過濾結(jié)果,分割出路面標(biāo)線。
公路航拍圖像中,公路分割是進(jìn)行標(biāo)線檢測的第一步。由于航拍圖像中,公路圖像較為規(guī)則,邊界較為明顯,公路的顏色與公路外區(qū)域的顏色差別較大,并且公路區(qū)域的紋理特征較少而公路外區(qū)域紋理特征較多,因此可以結(jié)合顏色與紋理特征進(jìn)行公路區(qū)域檢測。在圖像中,梯度可以很好地表示紋理特征,因此,文中采用顏色特征與梯度特征相結(jié)合的方式進(jìn)行公路分割[16]。
采用滑動窗口的方式分別對每一子塊進(jìn)行路面梯度檢驗(yàn)。對于輸入的M*N的圖像,利用w*w的滑動窗口提取局部圖像區(qū)域,并針對提取區(qū)域,統(tǒng)計(jì)該窗口內(nèi)圖像像素的梯度信息,并依據(jù)梯度信息判斷該區(qū)域是否為路面區(qū)域。在梯度信息檢驗(yàn)之后,針對梯度分割結(jié)果,對路面區(qū)域進(jìn)行路面顏色檢驗(yàn),對于不符合路面顏色條件的區(qū)域進(jìn)行濾除。通過梯度與顏色相結(jié)合的方式可以較好地提取航拍圖像中的公路位置。公路區(qū)域定位算法描述如下:
算法1:公路區(qū)域定位算法。
步驟1:利用差分定義一階偏微分圖像,每個像素點(diǎn)的梯度計(jì)算如式1。式2定義每個像素點(diǎn)的梯度值為該像素點(diǎn)8個方向的梯度最大值。
步驟2:設(shè)定梯度閾值σ,并統(tǒng)計(jì)窗口區(qū)域內(nèi)梯度大于σ的像素個數(shù)比例PT以及窗口區(qū)域的平均梯度AT,見式3與式4。式4中Iσ為指示函數(shù),見式5。將PT與AT較大的區(qū)域標(biāo)記為非公路區(qū)域,否則標(biāo)記為公路區(qū)域(根據(jù)以往的經(jīng)驗(yàn),實(shí)驗(yàn)中設(shè)定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:在進(jìn)行梯度檢測后,對滿足梯度信息的像素點(diǎn),通過式6和式7計(jì)算每個像素點(diǎn)R、G、B三分量灰度的最大差值Mgray以及平均灰度Agray,利用式8判斷像素點(diǎn)是否符合路面顏色,將不滿足路面灰度條件的像素點(diǎn)標(biāo)記為非路面區(qū)域。
Mgray=max(R,G,B)-min(R,G,B)
(6)
Agray=0.3R+0.59G+0.11B
(7)
(8)
步驟4:對處理后的公路區(qū)域進(jìn)行形態(tài)學(xué)閉操作處理,以得到較完整的公路區(qū)域。
在進(jìn)行標(biāo)線連通區(qū)域提取之前,首先需要對路面圖像進(jìn)行二值化處理。文中在路面區(qū)域提取結(jié)果的基礎(chǔ)上,首先統(tǒng)計(jì)路面圖像的平均灰度GrayLevel,然后利用Ostu算法計(jì)算分割閾值OstuLevel,通過公式level=max(OstuLevel,GrayLevel*1.5)計(jì)算路面二值化的閾值level。二值化后,提取連通區(qū)域[17]作為標(biāo)線的預(yù)提取區(qū)域。
由于二值化后提取的連通區(qū)域內(nèi)含有較多的非標(biāo)線區(qū)域的干擾,所以在提取連通區(qū)域之后,需要對其進(jìn)行過濾,文中采用面積和顏色特征相結(jié)合的方式。首先針對每一個連通區(qū)域,統(tǒng)計(jì)其連通區(qū)域的面積以及最小外接矩形長寬比h/w,對于面積較小或者較大的區(qū)域,可直接標(biāo)記為非標(biāo)線區(qū)域。對于面積符合標(biāo)線面積的區(qū)域,判斷其最小外接矩形長寬比,由于標(biāo)線長寬比一般較大,且寬度較小,故對于寬度較大,且長寬比h/w小于1的區(qū)域可判定為非標(biāo)線區(qū)域。對于其他區(qū)域,統(tǒng)計(jì)求出連通區(qū)域內(nèi)R、G、B三通道的灰度中值,利用式6和式9判斷是否屬于標(biāo)線區(qū)域,對于不滿足條件的區(qū)域,可判定為非標(biāo)線區(qū)域。在去除干擾后,可初步得到標(biāo)線區(qū)域。
(9)
通過對連通區(qū)域提取面積特征與顏色特征,可以過濾掉大部分非標(biāo)線區(qū)域,但仍存在部分未能過濾掉的非標(biāo)線區(qū)域。經(jīng)分析,大部分未過濾掉的非標(biāo)線區(qū)域?yàn)檐囕v,且由于車輛形狀以及顏色各異,傳統(tǒng)的方法較難以將車輛全部濾除。近年來,隨著深度學(xué)習(xí)技術(shù)的發(fā)展,使得目標(biāo)檢測領(lǐng)域取得了較大進(jìn)展,故文中采用Faster R-CNN算法[18]進(jìn)行航拍車輛檢測。
Faster R-CNN是目前主流的目標(biāo)檢測框架之一。不同于R-CNN[19]和Fast R-CNN[20]方法,F(xiàn)aster R-CNN使用RPN網(wǎng)絡(luò)替換了R-CNN以及Fast R-CNN中的Selective Search[21]方法來提取候選區(qū)域,使得檢測精度與算法效率得到進(jìn)一步提升。Faster R-CNN主要由三部分構(gòu)成:CNN網(wǎng)絡(luò)、RPN網(wǎng)絡(luò)以及判別網(wǎng)絡(luò)。CNN網(wǎng)絡(luò)的作用是提取圖像特征,RPN網(wǎng)絡(luò)用于提取目標(biāo)候選區(qū)域,判別網(wǎng)絡(luò)對最終的檢測結(jié)果進(jìn)行分類回歸,得到最終的分類定位結(jié)果。
RPN網(wǎng)絡(luò)是一個全卷積網(wǎng)絡(luò),在輸入特征圖上利用滑動窗口的方式來獲取候選區(qū)域。使用的滑動窗口與傳統(tǒng)意義的滑動窗口不同,這里是以每個像素點(diǎn)為中心,提取多個不同比例、不同尺度的窗口。Faster R-CNN預(yù)設(shè)9個窗口,分別對應(yīng)三種窗口面積,即128,256,512,三種窗口比例,分別為1∶1,1∶2,2∶1。
根據(jù)不同窗口采集到的特征,RPN利用分類層計(jì)算窗口內(nèi)包含目標(biāo)的得分,根據(jù)得分判斷窗口內(nèi)是否含有目標(biāo)。針對每一個目標(biāo),需要對目標(biāo)的位置進(jìn)行進(jìn)一步的回歸矯正,如果圖像內(nèi)目標(biāo)區(qū)域與目標(biāo)的真實(shí)區(qū)域重疊率大于閾值(默認(rèn)為0.7),則該區(qū)域標(biāo)簽為1,如果重疊率小于另一閾值(默認(rèn)為0.3),則該區(qū)域標(biāo)簽為0。對標(biāo)簽為1的區(qū)域,計(jì)算其與真實(shí)目標(biāo)之間的差值,完成定位過程。
Faster R-CNN含有兩個輸出層,分別用于計(jì)算分類結(jié)果以及計(jì)算檢測框的坐標(biāo)結(jié)果。第一個輸出層通過softmax計(jì)算相應(yīng)ROI在各個類別中的概率。第二個輸出層計(jì)算相應(yīng)ROI的檢測框的坐標(biāo)值。算法采用多任務(wù)的損失函數(shù)對每個標(biāo)定的ROI的類型和檢測框坐標(biāo)進(jìn)行回歸計(jì)算,損失函數(shù)見式10~13。
L(p,u,tu,v)=Lcls(p,u)+λ[λ≥1]Lloc(tu,v)
(10)
Lcls(p,u)=-logpu
(11)
(12)
(13)
由于檢測場景是無人機(jī)航拍圖像,故實(shí)驗(yàn)采用無人機(jī)以相同的方式采集圖像樣本作為訓(xùn)練數(shù)據(jù),并且分別采集了多條公路。
對于訓(xùn)練樣本的處理,由于無人機(jī)拍攝圖像有尺寸較大、分辨率較高、包含目標(biāo)較小等特點(diǎn),為了提高檢測精度,以公路寬度作為邊長的正方形窗口截取航拍圖像中以車輛為主體的區(qū)域并統(tǒng)一縮放到600*600作為訓(xùn)練數(shù)據(jù)。對于數(shù)據(jù)的標(biāo)定,采用Pascal VOC2007數(shù)據(jù)集的標(biāo)定方式進(jìn)行標(biāo)定。實(shí)驗(yàn)中共截取10 000張車輛圖片用做訓(xùn)練樣本,另外又采集了3條公路共約3 000張圖像用作測試樣本。
文中使用Caffe框架,預(yù)訓(xùn)練模型選擇VGG16模型,預(yù)訓(xùn)練參數(shù)采用VGG16在ImageNet上的訓(xùn)練結(jié)果,使用RPN網(wǎng)絡(luò)與分類網(wǎng)絡(luò)同時訓(xùn)練的方法,在Nvidia GTX1080 GPU加速下,訓(xùn)練得到目標(biāo)檢測模型。測試時,同樣采用滑動窗口截取的方式,對公路分割后的公路圖像,以公路寬度為邊長的正方形滑動窗口將路面區(qū)域截取為多塊區(qū)域并縮放至600*600,并將各塊區(qū)域分別送入Faster R-CNN中進(jìn)行車輛檢測,最后將多個窗口檢測結(jié)果合并到原圖中作為整張圖的檢測結(jié)果。檢測算法流程如圖1所示。比較檢測的外圍框與標(biāo)記的外圍框的重合比例進(jìn)行檢測準(zhǔn)確度的計(jì)算,重合比例約達(dá)到70%以上時,認(rèn)為檢測正確。
圖1 檢測算法流程
首先,選定一些測試樣本圖像進(jìn)行單張圖像檢測。實(shí)驗(yàn)發(fā)現(xiàn)存在錯檢的情況。經(jīng)分析,對于貨車,由于其裝貨物后外觀差異變化較大,對檢測準(zhǔn)確度產(chǎn)生一些影響,對于正常轎車檢測效果較好。文中分別對采集的多條公路的測試集進(jìn)行整體測試,結(jié)果見表1。
表1 批量測試結(jié)果
檢測正確率的計(jì)算公式為:
(14)
其中,Acc為檢測正確率;Rs為正確識別車輛數(shù)量;Ts為樣本中車輛總數(shù)量。
通過測試結(jié)果可以看出,該模型對于寧高公路效果最好,東麒路效果最差。寧高公路車道數(shù)較少,飛行高度較低,車輛模型相對較大,并且公路車輛數(shù)量相對較少,而東麒路車道數(shù)較多,飛行高度較高,車輛相對較小,存在部分漏檢與錯檢的情況。分析發(fā)現(xiàn),識別錯誤大部分檢測的結(jié)果還是車輛,只是識別目標(biāo)結(jié)果與標(biāo)定目標(biāo)重合度未達(dá)到70%,這樣對于車輛的濾除依然產(chǎn)生一定效果。綜上分析,該模型平均檢測準(zhǔn)確率可達(dá)到80%,可以滿足在新樣本下進(jìn)行車輛檢測。
本次實(shí)驗(yàn),測試數(shù)據(jù)采用無人機(jī)分路段采集圖像,圖像大小為4 000*3 000像素。實(shí)驗(yàn)條件為Intel Core i7 CPU,8 G內(nèi)存,算法采用C++編程實(shí)現(xiàn)。
為評估算法的適用性和有效性,分別對不同路段及與其他算法進(jìn)行了精度對比。選取準(zhǔn)確率與召回率作為評估算法檢測精度的指標(biāo)。
準(zhǔn)確率和召回率定義為:
(15)
(16)
其中,P表示準(zhǔn)確率;R表示召回率;TP表示真實(shí)情況為正例并且預(yù)測結(jié)果也為正例;FN表示真實(shí)情況為正例但預(yù)測結(jié)果為反例;FP表示真實(shí)情況為反例但預(yù)測結(jié)果為正例;TN表示真實(shí)情況為反例且預(yù)測結(jié)果為反例。
選取不同地區(qū)的不同路段測試算法的檢測準(zhǔn)確度,圖2是部分公路航拍圖像的標(biāo)線檢測結(jié)果圖。標(biāo)線檢測統(tǒng)計(jì)結(jié)果見表2。
圖2 標(biāo)線檢測結(jié)果
公路名稱標(biāo)線總數(shù)準(zhǔn)確率/%召回率/%平均每張時間/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總計(jì)30 69898.8961.1
由表2可知,文中算法檢測標(biāo)線召回率平均可達(dá)到96%,準(zhǔn)確率平均可以達(dá)到98%以上,檢測準(zhǔn)確度較高。由于航拍圖像較大,每張圖像平均處理時間約為1 s。對錯檢圖像進(jìn)行分析,公路中存在隔離護(hù)欄等裝置,與標(biāo)線極為相似,沒有全部過濾掉。對漏檢圖像進(jìn)行分析,首先由于車輛、樹等陰影的干擾,使得在二值化后被陰影遮擋的標(biāo)線區(qū)域被當(dāng)作背景,未能提取出標(biāo)線區(qū)域,另外由于部分車輛與標(biāo)線距離較近,過濾車輛時將標(biāo)線一同過濾掉。
為評估Faster R-CNN方法對檢測準(zhǔn)確度的影響,對比了使用Faster R-CNN前后的檢測精度,對比結(jié)果見表3。
在不使用Faster R-CNN時,標(biāo)線檢測的召回率較高,但是準(zhǔn)確率較低,說明標(biāo)線檢測錯誤的情況較多。而使用Faster R-CNN進(jìn)行車輛濾除后,召回率略有下降,但是準(zhǔn)確率顯著提升,說明使用Faster R-CNN方法對路面車輛的濾除效果較好。
表3 不同方法平均精度對比
%
文中還與其他標(biāo)線檢測方法進(jìn)行了對比。文獻(xiàn)[11-13]采用圖像處理的方法進(jìn)行標(biāo)線檢測,文獻(xiàn)[14]采用深度學(xué)習(xí)進(jìn)行標(biāo)線檢測。其中文獻(xiàn)[11]和文獻(xiàn)[12]分別利用Hough變換以及特征檢測的方式實(shí)現(xiàn)標(biāo)線檢測,文獻(xiàn)[13]結(jié)合多種過濾算法提取標(biāo)線,文獻(xiàn)[14]直接利用深度網(wǎng)絡(luò)進(jìn)行標(biāo)線檢測。通過對比可知,相較于其他方法,文中通過將圖像處理以及深度學(xué)習(xí)相結(jié)合的標(biāo)線檢測方法,均優(yōu)于單獨(dú)使用圖像處理或深度學(xué)習(xí)的方法。文中方法在保證高準(zhǔn)確率的情況下,具有較高的召回率,檢測效果較好,具有良好的有效性和適用性。
文中提出了一種新的公路標(biāo)線檢測算法。首先根據(jù)航拍圖像特點(diǎn),采用圖像顏色特征與梯度特征相結(jié)合的方式進(jìn)行公路分割,該分割算法實(shí)現(xiàn)簡單,運(yùn)行效率較高,分割效果較好,特別適合于航拍圖像中的公路定位分割。然后利用深度學(xué)習(xí)Faster R-CNN與傳統(tǒng)圖像處理算法相結(jié)合的方式進(jìn)行非標(biāo)線目標(biāo)的過濾,采用Faster R-CNN的方式對車輛檢測準(zhǔn)確率較高,可以有效過濾路面區(qū)域車輛的干擾,有效提高檢測算法的準(zhǔn)確率。實(shí)驗(yàn)結(jié)果表明,文中算法在不同公路、不同飛行高度,均有較高的檢測精度,滿足了實(shí)際使用要求。下一步的工作是構(gòu)建更加全面的訓(xùn)練數(shù)據(jù)庫,同時,針對檢測過程中發(fā)生的錯檢情況進(jìn)行深入研究與解決。