陳 鵬,應(yīng) 駿
(上海師范大學(xué)信息與機(jī)電工程學(xué)院,上海201418)
道路檢測(cè)是汽車輔助駕駛、移動(dòng)機(jī)器人、智慧交通等領(lǐng)域最基礎(chǔ)、最重要的研究?jī)?nèi)容之一[1].對(duì)不同坑洼進(jìn)行分類,依據(jù)分類信息給車輛駕駛?cè)藛T發(fā)出警告信號(hào),使其可以提前采取應(yīng)急的措施,避免交通安全事故的發(fā)生.
YU等[2]提出利用激光圖像檢測(cè),評(píng)估坑洼的嚴(yán)重性,但該算法在現(xiàn)實(shí)環(huán)境下的適應(yīng)性較弱.ZHANG等[3]提出了基于卷積神經(jīng)網(wǎng)絡(luò)檢測(cè)道路裂縫的方法,但其數(shù)據(jù)集缺乏多樣性,有一定的局限性.SUONG等[4]對(duì)道路坑洼進(jìn)行檢測(cè),但其對(duì)所有坑洼進(jìn)行識(shí)別,沒有對(duì)場(chǎng)景進(jìn)行有效劃分.
本文作者采用卷積神經(jīng)網(wǎng)絡(luò)方法對(duì)坑洼圖像進(jìn)行多場(chǎng)景識(shí)別,建立多樣性的數(shù)據(jù)集,用卷積神經(jīng)網(wǎng)絡(luò)模型inception_v1[5]對(duì)坑洼圖像進(jìn)行多場(chǎng)景分類,分別構(gòu)建數(shù)據(jù)集進(jìn)行訓(xùn)練,檢測(cè)相應(yīng)的坑洼.實(shí)驗(yàn)結(jié)果表明:本算法比不劃分場(chǎng)景方式得到的檢測(cè)效果更好.
將卷積神經(jīng)網(wǎng)絡(luò)模型inception_v1 作為坑洼多場(chǎng)景分類的依據(jù),提高了網(wǎng)絡(luò)中的計(jì)算資源,克服了由于參數(shù)過多而出現(xiàn)的過擬合及梯度彌散問題,將坑洼分為了強(qiáng)光下的坑洼、弱光下的坑洼,以及無(wú)坑洼的場(chǎng)景.根據(jù)強(qiáng)光下的坑洼和弱光下的坑洼的場(chǎng)景,利用算法faster_rcnn[6]進(jìn)行相應(yīng)的檢測(cè),算法結(jié)構(gòu)如圖1所示.
由圖1可知:將多場(chǎng)景分類后的圖片輸入到卷積神經(jīng)網(wǎng)絡(luò)模型inception_v2中,提取坑洼的特征,得到坑洼的特征圖(conv feature map),前向傳播進(jìn)入?yún)^(qū)域建議網(wǎng)絡(luò)(RPN)分支與Fast R-CNN 分支.RPN分支得到的是坑洼的候選區(qū)域,得到判別物體的得分(scores),并利用計(jì)算得到候選框的位置(coordinates),通過非極大值抑制(NMS)方法得到N 個(gè)得分較高的坑洼特征子圖(ROIs),將ROIs送入到Rol pooling 層(Rol pooling layer),經(jīng)過全連接層,計(jì)算每個(gè)區(qū)域坑洼的得分以及第二次回歸后候選框的精確坐標(biāo).
深度神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程是分批次進(jìn)行的,要使訓(xùn)練結(jié)果達(dá)到最優(yōu)點(diǎn),既不能因?yàn)閷W(xué)習(xí)率過低造成其收斂太慢,同時(shí)也不能因?yàn)閷W(xué)習(xí)率過高造成其擺動(dòng)幅度過大,本算法采用動(dòng)量?jī)?yōu)化方法Momentum 對(duì)其進(jìn)行優(yōu)化:
其中'vw和vb分別代表前一輪迭代過程中累積的權(quán)重和偏置的梯度動(dòng)量;β 是梯度累積指數(shù);w 和b 分別是損失函數(shù)反向傳播得到的權(quán)重梯度和偏置梯度;α是學(xué)習(xí)率.
通過互聯(lián)網(wǎng)的圖片查找以及線下手機(jī)拍攝獲取相應(yīng)數(shù)據(jù),將坑洼分為3種不同的場(chǎng)景:無(wú)坑洼的道路、強(qiáng)光下的坑洼道路及弱光下的坑洼道路.無(wú)坑洼的數(shù)據(jù)包括雨天、雪天、強(qiáng)光、弱光及有陰影的情況;強(qiáng)光下的坑洼數(shù)據(jù)包括雨天、雪天、多坑洼、無(wú)陰影及有陰影的情況;弱光下的坑洼數(shù)據(jù)包括水漬、多坑洼及單坑洼的情況.
對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,統(tǒng)一將采集到的坑洼圖片調(diào)整為600×600 pixels,同時(shí)將一部分?jǐn)?shù)據(jù)進(jìn)行數(shù)據(jù)增廣,增廣操作采取圖像逆時(shí)針旋轉(zhuǎn)90°,180°,270°,以及裁剪的方式.
本實(shí)驗(yàn)的數(shù)據(jù)集分為兩部分:一部分?jǐn)?shù)據(jù)集用于多場(chǎng)景的分類;另一部分?jǐn)?shù)據(jù)集用于坑洼的檢測(cè),80%的數(shù)據(jù)集作為訓(xùn)練集,其余作為測(cè)試集.選取10 032張預(yù)處理后的圖像(數(shù)據(jù)集1),其中訓(xùn)練集有8 026張圖像,測(cè)試集有2 006張圖像,包括:無(wú)坑洼、強(qiáng)光下坑洼及弱光下坑洼各3 344張圖像.
另選取3 513張圖像(數(shù)據(jù)集2),其中訓(xùn)練集有2 811張圖像,測(cè)試集有702張圖像,包括:混合坑洼、強(qiáng)光下坑洼及弱光下坑洼各1 171張圖像.數(shù)據(jù)標(biāo)注采用LabelImg標(biāo)注工具,記錄數(shù)據(jù)的坐標(biāo)信息.
2.3.1 交叉熵?fù)p失采用損失函數(shù)衡量收斂穩(wěn)定性.交叉熵?fù)p失函數(shù)為:
其中,yi表示期望的輸出;yi'表示原始的實(shí)際輸出.交叉熵?fù)p失值變化的程度代表了訓(xùn)練模型的穩(wěn)定.
2.3.2 準(zhǔn)確率
準(zhǔn)確率公式如下:
其中,TP代表實(shí)際為正例且被分類器劃分為正例的樣本;TN代表的是實(shí)際為負(fù)例且被分類器劃分為負(fù)例的樣本;P代表所有的正樣本;N代表所有的負(fù)樣本.
2.3.3 平均精度
其中,PA為類別A 的精確率;NTRA為類別A 中正確預(yù)測(cè)的坑洼數(shù)量;NTOA為類別A 中坑洼總數(shù)為類別A的平均精度;NTIA為類別A中圖像總數(shù).
本實(shí)驗(yàn)硬件環(huán)境為:E5-2630 v4 處理器,64G 內(nèi)存,Quadro M4000 顯卡;軟件配置為:Ubuntu 17.10,Python 3.6和Tensorflow 1.5.0.
本實(shí)驗(yàn)的batch_size 設(shè)置為24,即每一次迭代輸入24 張圖像進(jìn)行訓(xùn)練,總共訓(xùn)練了12 000 步,學(xué)習(xí)率采用指數(shù)衰減的方式,初始的學(xué)習(xí)率設(shè)置為0.000 1.
坑洼的多場(chǎng)景的分類損失采用交叉損失的方式,其損失的變化曲線如圖2所示,損失隨著迭代次數(shù)的增加而減小,迭代過程從0~9 600步時(shí),損失從1.35減少為0.48,之后的損失穩(wěn)定在0.48.
數(shù)據(jù)集1的準(zhǔn)確率變化曲線如圖3所示,迭代過程從0~4 000步時(shí),準(zhǔn)確率增長(zhǎng)較快,從0.30增長(zhǎng)為0.90;迭代過程從4 000~7 000步時(shí),準(zhǔn)確率保持在0.90;之后的準(zhǔn)確率保持在0.91.
圖2 多場(chǎng)景分類損失隨訓(xùn)練步數(shù)的變化趨勢(shì)
圖3 準(zhǔn)確率隨訓(xùn)練步數(shù)的變化趨勢(shì)
batch_size 設(shè)置為8,即每一次迭代輸入8 張圖像進(jìn)行訓(xùn)練,總共訓(xùn)練了20 000 步,初始的學(xué)習(xí)率設(shè)置為0.000 1.對(duì)數(shù)據(jù)集2中的混合坑洼、強(qiáng)光下的坑洼、弱光下的坑洼分別進(jìn)行訓(xùn)練.
圖4~6 分別為混合坑洼數(shù)據(jù)集,以及經(jīng)本算法分類處理后的強(qiáng)光下坑洼數(shù)據(jù)集和弱光下坑洼數(shù)據(jù)集在訓(xùn)練過程中的損失值變化情況.混合坑洼、強(qiáng)光下的坑洼數(shù)據(jù)集的損失最后均穩(wěn)定在0.10,弱光下的坑洼數(shù)據(jù)集的損失穩(wěn)定在0.09.
圖4 混合坑洼損失隨訓(xùn)練步數(shù)的變化趨勢(shì)
圖5 強(qiáng)光下的坑洼損失隨訓(xùn)練步數(shù)的變化趨勢(shì)
圖6 弱光下的坑洼損失隨訓(xùn)練步數(shù)的變化趨勢(shì)
圖7 ~9 分別為混合坑洼數(shù)據(jù)集,以及經(jīng)本算法分類處理后的強(qiáng)光下坑洼數(shù)據(jù)集和弱光下坑洼數(shù)據(jù)集在訓(xùn)練過程中的平均精度變化情況.混合坑洼模型的平均精度最后穩(wěn)定在0.717,本算法在強(qiáng)光下測(cè)試集的平均精度最后穩(wěn)定在0.756,本算法在弱光測(cè)試集下的坑洼的平均精度最后穩(wěn)定在0.881.由此可見,本算法的訓(xùn)練結(jié)果平均精度均高于混合坑洼..
圖7 混合坑洼的平均精度隨訓(xùn)練步數(shù)的變化趨勢(shì)
圖8 強(qiáng)光下坑洼的平均精度隨訓(xùn)練步數(shù)的變化趨勢(shì)
圖9 弱光下坑洼的平均精度隨訓(xùn)練步數(shù)的變化趨勢(shì)
圖10 為混合坑洼模型預(yù)測(cè)強(qiáng)光下坑洼圖片的樣例,圖11 為本算法強(qiáng)光下坑洼預(yù)測(cè)的單張圖片樣例.與本算法相比,在混合坑洼訓(xùn)練結(jié)果中存在誤檢.圖12 為混合坑洼模型預(yù)測(cè)弱光下坑洼圖片的樣例,圖13 為本算法預(yù)測(cè)弱光下坑洼圖片的樣例.相比本算法,混合坑洼模型在此情景下無(wú)法檢測(cè)出坑洼,而本算法能夠檢測(cè)出坑洼的具體位置.
圖10 混合坑洼模型預(yù)測(cè)強(qiáng)光坑洼
圖11 本算法模型預(yù)測(cè)強(qiáng)光坑洼
圖12 混合坑洼模型預(yù)測(cè)弱光坑洼
圖13 本算法模型預(yù)測(cè)弱光坑洼
本文作者建立了坑洼的多場(chǎng)景分類數(shù)據(jù)集,同時(shí)建立了坑洼檢測(cè)的數(shù)據(jù)集.利用inception_v1 算法架構(gòu)對(duì)數(shù)據(jù)進(jìn)行訓(xùn)練,得到了多場(chǎng)景的分類模型,并經(jīng)過坑洼檢測(cè)模型,檢測(cè)出坑洼的具體位置.從實(shí)驗(yàn)結(jié)果可以看出,本算法對(duì)坑洼檢測(cè)的效果好于直接混合坑洼模型的檢測(cè)結(jié)果.