張文風(fēng), 于艷玲
(中遠海運科技股份有限公司,上海 200135)
近年來,高速公路的快速發(fā)展給人們的生活帶來了極大的便利,同時也引發(fā)了很多交通事故,其中有很多事故是高速公路上的拋落物造成的,因此對高速公路拋落物進行檢測具有重要意義。傳統(tǒng)的拋落物檢測算法有基于圖像處理的檢測方法和基于視頻序列的檢測方法等,其中:基于圖像處理的檢測方法需人工提取圖像的特征[1],不僅耗時耗力,而且檢測效果并不理想;基于視頻序列的檢測方法采用傳統(tǒng)的高斯模型和三幀差法等區(qū)分前景,進一步識別遺留物[2-4],識別的準確率均不高,無法識別小的拋落物。
當前深度學(xué)習(xí)技術(shù)已在目標檢測領(lǐng)域得到廣泛應(yīng)用,yolov2算法也在已拋落物檢測方面得到應(yīng)用[5]。對于被檢測的圖片,yolov2算法能給出拋落物的位置和置信度,但存在檢測準確率較低、漏檢率較高和檢測不出小的拋落物等問題??臻g金字塔池化網(wǎng)絡(luò)(SPP-Net)[6]采用的是共享卷積特征的方法,該網(wǎng)絡(luò)的出現(xiàn)加快了Faster R-CNN[7]目標檢測算法的提出。Faster R-CNN算法采用共享卷積神經(jīng)網(wǎng)絡(luò)實現(xiàn)目標的端到端檢測,無論是準確率還是檢出率,都有大幅度的提升,但傳統(tǒng)的Faster R-CNN算法采用VGG-16網(wǎng)絡(luò)[8]和ZFNet網(wǎng)絡(luò)[9]作為共享卷積層,其檢測的準確率和實時性均有欠缺。
基于此,提出一種改進的Faster R-CNN目標檢測方法,采用Resnet101深度殘差網(wǎng)絡(luò)[10]替代VGG-16網(wǎng)絡(luò)和ZFNet網(wǎng)絡(luò)作為特征提取網(wǎng)絡(luò),并調(diào)整錨框的尺寸,提高檢測的準確率。此外,在自制的拋落物數(shù)據(jù)集上進行測試,驗證該方法的有效性。
Faster R-CNN算法主要由生成候選檢測區(qū)域的區(qū)域建議網(wǎng)絡(luò)(Region Proposal Networks, RPN)和Faster R-CNN檢測網(wǎng)絡(luò)[11]2個模塊組成,其結(jié)構(gòu)見圖1。RPN采用注意力機制產(chǎn)生候選區(qū)域;Faster R-CNN檢測網(wǎng)絡(luò)在候選區(qū)域上進行目標檢測。
圖1 Faster R-CNN算法結(jié)構(gòu)
RPN是一種全卷積網(wǎng)絡(luò),是整個Faster R-CNN的核心模塊,其輸入可以是任意尺寸的圖片,其輸出是一批矩形候選區(qū)域和預(yù)測候選區(qū)域是否有目標的分數(shù)。RPN網(wǎng)絡(luò)結(jié)構(gòu)見圖2,采用滑動窗口產(chǎn)生候選區(qū)域,采用3×3的卷積核在特征圖上滑動,對于每個滑動窗口,通過2個1×1的卷積輸出連接全連接層,即分類層和邊框回歸層。
圖2 RPN網(wǎng)絡(luò)結(jié)構(gòu)
1)分類層輸出的是前景和背景的概率,回歸層輸出的是預(yù)測區(qū)域的中心坐標(x,y)、長w和寬h。由于目標長寬比例不一,1個滑動窗口同時預(yù)測多個候選區(qū)域,其數(shù)量記為k,故分類層輸出2k個評分,預(yù)測候選區(qū)域是前景或背景的概率。
2)回歸層輸出4k個數(shù)值,表示k個框的4個參數(shù)坐標。k個候選框參數(shù)化稱為k個錨點。
原始的Faster R-CNN選用的錨點為以尺寸為8像素、16像素和32像素的3個邊為參照,與其鄰邊尺寸比分別為0.5、1.0和2.0的9種錨點。由于高速公路上不同拋落物的尺寸差異較大,長寬比較為復(fù)雜,經(jīng)過多次試驗,選用尺寸為4像素、8像素和16像素的錨點,提高高速公路上拋落物檢測的準確率。選用的錨框尺寸方案見表1。
表1 選用的錨框尺寸方案 像素
特征提取網(wǎng)絡(luò)即用于提取圖像特征的卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNN),由卷積層、池化層、全連接層和softmax分類層組成。Faster R-CNN的特征提取網(wǎng)絡(luò)一般除去CNN的全連接層和softmax分類層,只保留其特征提取能力部分。不同CNN的特征提取能力不同。
原始的Faster R-CNN采用的特征提取網(wǎng)絡(luò)為VGG-16和ZFNet,其提取圖像特征的能力較弱。高速公路上的拋落物種類多,大小不一,且占據(jù)整個圖片的比例較小,特征信息易被VGG-16和ZFNet的多個池化層丟棄。因此,需對特征網(wǎng)絡(luò)進行修改,以獲取更多檢測目標的細節(jié)特征信息。
深度殘差網(wǎng)絡(luò)(Resnet)的出現(xiàn)很好地解決了該問題。Resnet加入了大量跳躍連接和殘差模塊,可訓(xùn)練很深的網(wǎng)絡(luò),并保留更多細小物體的圖像特征。同時,Resnet采用2個1×1的卷積核代替?zhèn)鹘y(tǒng)的3×3的卷積核,減少了網(wǎng)絡(luò)的參數(shù)量。因此,雖然Resnet的網(wǎng)絡(luò)層數(shù)相比VGG-16和ZFNet顯著增多,但其計算的復(fù)雜度較低。
對此,采用Resnet101網(wǎng)絡(luò)代替原始的VGG-16和ZFNet作為Faster R-CNN的特征提取網(wǎng)絡(luò),不僅能提取到小物體的特征細節(jié),提高目標檢測的準確率,而且能進一步減少計算參數(shù),提升檢測速度。
RPN產(chǎn)生的一批矩形候選框區(qū)域的形狀和尺寸各異,無法直接輸入到Faster R-CNN檢測網(wǎng)絡(luò)上進行目標檢測和目標框回歸。雖然能強制性地將各候選區(qū)域的尺寸調(diào)整一致,但會因此而失去圖像的特征信息,使RPN失去作用。ROI Pooling層借鑒了空間金字塔網(wǎng)絡(luò)的多尺度池化思想,采用單尺度的池化操作,通過分塊池化將不同大小的候選框區(qū)域輸出為統(tǒng)一大小的候選框區(qū)域,具體做法如下:
1)將候選框區(qū)域劃分為相同尺寸的分塊,對每個分塊進行最大池化操作,輸出尺寸相同的特征圖;
2)將相同尺寸的特征圖輸入Faster R-CNN檢測網(wǎng)絡(luò)中,進行目標檢測和目標框精準回歸。
整個Faster R-CNN網(wǎng)絡(luò)的訓(xùn)練包括RPN訓(xùn)練和整個網(wǎng)絡(luò)訓(xùn)練。
1.4.1 RPN訓(xùn)練
RPN訓(xùn)練包括ground truth和loss function。
1)ground truth用于指示RPN產(chǎn)生的候選區(qū)域是否有檢測目標,用0和1表示,0表示無檢測目標,1表示有檢測目標。采用IoU值判定是否有檢測目標(IoU值即候選區(qū)域與目標區(qū)域重疊面的面積與總面積的比值),判定規(guī)則如下:
(1)若候選區(qū)域與目標區(qū)域的IoU值大于0.7,則判定候選區(qū)域有目標;
(2)若候選區(qū)域與目標區(qū)域的IoU值小于0.3,則判定候選區(qū)域沒有目標,為背景;
(3)若候選區(qū)域與目標區(qū)域的IoU值大于等于0.3,且小于等于0.7,則忽略。
2)loss function為有檢測目標區(qū)域的目標框位置回歸損失值。
RPN的損失函數(shù)為
(1)
1.4.2 整個網(wǎng)絡(luò)訓(xùn)練
整個Faster R-CNN的訓(xùn)練過程如下:
1)在coco數(shù)據(jù)集的預(yù)訓(xùn)練模型的基礎(chǔ)上單獨訓(xùn)練RPN;
2)將第一步中RPN的輸出作為Faster R-CNN的輸入,單獨訓(xùn)練Faster R-CNN網(wǎng)絡(luò);
3)在第二次訓(xùn)練模型的參數(shù)基礎(chǔ)上,再次訓(xùn)練RPN,更新RPN獨有的參數(shù);
4)在第三次訓(xùn)練模型的參數(shù)基礎(chǔ)上,再次訓(xùn)練Faster R-CNN,更新Faster R-CNN獨有的參數(shù)。
至此,整個網(wǎng)絡(luò)訓(xùn)練完畢。
高速公路拋落物檢測方法以Faster R-CNN算法為基礎(chǔ),檢測算法流程見圖3,具體步驟如下:
圖3 高速公路拋落物檢測算法流程
1)對數(shù)據(jù)集中的高速公路拋落物圖像進行預(yù)處理,將預(yù)處理之后的數(shù)據(jù)集作為整個網(wǎng)絡(luò)的輸入;
2)將處理好的數(shù)據(jù)集圖像輸入特征提取網(wǎng)絡(luò)Resnet101中,進行圖像特征提取,生成數(shù)據(jù)集圖像的特征圖;
3)將特征圖輸入RPN中,生成一系列候選檢測區(qū)域;
4)將RPN候選檢測區(qū)域和特征提取網(wǎng)絡(luò)Resnet101生成的特征圖傳入ROI Pooling層,輸出尺寸一致的特征圖,并輸入全連接層中,進行目標種類分類和目標邊框精準回歸。
由于目前還沒有公開的拋落物數(shù)據(jù)集,且高速公路拋落物圖片很難收集,與紹興高速公路部門合作解決拋落物數(shù)據(jù)集制作的問題。試驗中收集5 000張分辨率為1 920×1 080的高速公路拋落物圖片,采用labelimg打標軟件,按coco數(shù)據(jù)集的格式對其進行打標,制作高速公路拋落物數(shù)據(jù)集。由于Faster R-CNN算法的訓(xùn)練需要大量數(shù)據(jù),而收集的5 000張高速公路拋落物圖片無法滿足訓(xùn)練需求,因此需在原有數(shù)據(jù)集的基礎(chǔ)上進行數(shù)據(jù)集擴充,擴充方法有圖片鏡像、旋轉(zhuǎn)、裁剪、縮放、平移和加高斯噪聲等。隨機對高速公路拋落物圖片進行上述1種或多種變換,生成新的圖片,按原有數(shù)據(jù)集數(shù)量1∶1生成5 000張新的圖片,這樣共得到10 000張高速公路拋落物圖片。將高速公路拋落物數(shù)據(jù)集按8∶1∶1的比例分成訓(xùn)練集、驗證集和測試集。
試驗環(huán)境為ubuntu18.04操作系統(tǒng),中央處理器(Central Processing Unit,CPU)為i7 9700k,圖形處理器(Graphics Processing Unit,GPU)為gtx2080ti,采用pytorch深度學(xué)習(xí)框架搭建Faster R-CNN算法模型。訓(xùn)練網(wǎng)絡(luò)的初始學(xué)習(xí)率取0.002 5,動量衰減因子為0.8,訓(xùn)練批量為4,訓(xùn)練次數(shù)為50 000次。
在模型訓(xùn)練過程中,整個模型的損失隨著訓(xùn)練次數(shù)的增多而不斷減小,直到模型的損失值趨于穩(wěn)定,整個模型開始收斂。模型的迭代次數(shù)為50 000次,模型的訓(xùn)練損失值變化曲線見圖4。由圖4可知:訓(xùn)練開始時損失值約為11.7,隨著迭代次數(shù)的增加,損失值逐漸減小,并逐漸趨于平穩(wěn);當?shù)螖?shù)達到45 000次時,損失值在0.3左右浮動,模型收斂,達到理想的效果。
圖4 模型的訓(xùn)練損失值變化曲線
采用訓(xùn)練好的模型檢測高速公路拋落物的效果,結(jié)果見圖5~圖8。由圖5~圖8可知,高速公路上明顯的拋落物都被檢測出來了,且給出了相應(yīng)的標簽和置信度。
圖5 拋落物檢測效果一
圖6 拋落物檢測效果二
圖7 拋落物檢測效果三
圖8 拋落物檢測效果四
作為對比,采用另外幾種模型在相同的測試集上進行測試,結(jié)果見表2。由表2可知:傳統(tǒng)的Faster R-CNN(VGG)算法模型的平均檢測準確率為84.73%,每張圖的平均檢測時間為0.213 2 s;采用Resnet101殘差網(wǎng)絡(luò)作為特征提取網(wǎng)絡(luò)的Faster R-CNN算法模型的平均檢測準確率為87.34%,每張圖片的平均檢測時間為0.181 5 s,不僅平均準確率有所提升,而且平均檢測時間有所縮短;采用優(yōu)化后的Faster R-CNN算法模型,平均檢測準確率為91.75%,每張圖片的平均檢測時間為0.152 3 s,不僅檢測準確率提升很多,而且檢測時間大大縮短。
表2 不同模型檢測結(jié)果
對比yolov3[13]算法模型可知,yolov3算法模型的平均檢測準確率為80.62%,每張圖片的平均檢測時間僅為0.034 2 s。yolov3算法雖然在平均檢測速度上有很大優(yōu)勢,但在平均檢測準確率上的表現(xiàn)較差,不能達到實際使用要求。
高速公路拋落物具有種類多、大小不一和形狀各異等特點,采用傳統(tǒng)的圖像處理算法很難準確將其識別出來。為快速、準確地對高速公路上的拋落物進行檢測定位,提出一種改進的Faster R-CNN算法模型,采用Resnet101殘差網(wǎng)絡(luò)替代原始的VGG-16網(wǎng)絡(luò)和ZFNet網(wǎng)絡(luò)作為特征提取網(wǎng)絡(luò),并改變原始的錨框設(shè)計,采用尺寸為4、8和16的錨框替代原始的錨框,得到高速公路拋落物檢測算法模型。該模型在自制的高速公路拋落物數(shù)據(jù)集上表現(xiàn)良好,檢測準確率達到了91.75%,檢測速度達到了每張圖片0.152 3 s,在紹興的高速公路上得到了實際應(yīng)用,取得了較好的效果。