唐 悅, 吳 戈, 樸 燕
(長春理工大學(xué) 電子信息工程學(xué)院,吉林 長春 130022)
隨著國家經(jīng)濟飛躍式的增長,人民的生活水平也在不斷地提高,在城市道路上,可以看見機動車幾乎人人都在使用,而隨著互聯(lián)網(wǎng)科技的發(fā)展,大多數(shù)人都用餓了么、美團外賣進行訂餐,這種足不出戶叫外賣的生活方式導(dǎo)致了騎電動摩托車的人也多了起來。機動車和非機動車(電動車、摩托車)的出現(xiàn)改變了人們的生活方式,它取代了原始的人力車和步行的出行方式。在給人們的出行帶來極大的方便之時,也給交警部門的工作人員對道路上車流的監(jiān)管帶來了較大的挑戰(zhàn)。機動車和非機動車數(shù)量的增加,導(dǎo)致了交通事故的頻頻出現(xiàn),間接地造成了人員的傷亡以及財產(chǎn)損失。
深度學(xué)習(xí)在目標檢測中被廣泛應(yīng)用,特別是對遠小近大和運動速度不同的目標,在背景復(fù)雜的交通場景中,進行準確并實時的檢測是最具挑戰(zhàn)性的任務(wù)[1-7]。深度學(xué)習(xí)也取得了質(zhì)的發(fā)展,第一類是兩階段基于區(qū)域的檢測算法,以Fast RCNN(Fast Region Convolutional Neural Networks)、Faster RCNN(Faster Region Convolutional Neural Networks)、Mask RCNN(Mask Region Convolutional Neural Networks)為主要代表的算法,這類算法對目標的檢測準確度很高,但是檢測速度稍慢。第二類是單階段基于回歸方法的檢測算法,將檢測事件當作回歸事件進行解決,可以直接將檢測目標的位置和類別預(yù)測出來。該類算法可以達到實時性檢測,但檢測的準確度顯然不如第一類算法。主要以YOLO(You Only Look Once)、SSD512(Single ShotMultiBox Detector512)、YOLOV2(You Only Look Oncev2)、YOLOV3(You Only Look Oncev3)為代表性的網(wǎng)絡(luò)為主。
使用卷積神經(jīng)網(wǎng)絡(luò)所提取到的前景目標的特征,確實要比傳統(tǒng)方法提取到的特征要好得多,可以避免許多缺點?;贑NN(Convolutional Neural Networks)的目標檢測算法被應(yīng)用于道路車輛監(jiān)管、農(nóng)業(yè)果實采摘、輔助駕駛等方面。文獻[8]將VGG(Visual Geometry Group)網(wǎng)絡(luò)提取特征,經(jīng)過初步二分類和回歸后得到一系列預(yù)選框,將此預(yù)選框輸入到特征金字塔結(jié)構(gòu)中,并構(gòu)建注意力掩模模塊自適應(yīng)地學(xué)習(xí)有效特征,同時融合特征金字塔結(jié)構(gòu)與注意力掩模模塊得到更具表征性的特征;文獻[9]提出了一種多尺度聚類卷積神經(jīng)網(wǎng)絡(luò)算法,來實現(xiàn)對行人的識別與檢測,該算法是對YOLOV3進行改進,為了得到相應(yīng)的特征圖,首先通過簡單聚類對圖像特征進行提取,然后通過抽樣K-means聚類算法結(jié)合核函數(shù)確定錨點位置,以達到更好的聚類;文獻[10]將利用VGG16網(wǎng)絡(luò)作為微調(diào)網(wǎng)絡(luò),并添加部分深層網(wǎng)絡(luò),通過提取目標淺層特征與深層特征進行聯(lián)合訓(xùn)練,克服檢測過程中定位與識別相互矛盾的問題。
本文以基于回歸的目標檢測方法中的深度卷積網(wǎng)絡(luò)YOLOV3為基礎(chǔ),首先為了解決場景中運動目標尺寸大小不一的問題,將視頻圖像中的運動物體作為待檢測目標。本文基于YOLOV3算法,針對視頻圖像中的運動目標對YOLOV3算法做了優(yōu)化及改進,并設(shè)計搭建了一個用道路監(jiān)控場景中目標檢測的CNN網(wǎng)絡(luò)。使用3種不同的數(shù)據(jù)集混合[11]訓(xùn)練,可以解決單個類別檢測效果差的問題。實驗結(jié)果表明,改進后的GDT-YOLOV3(GIOU Densenet Transition Module)網(wǎng)絡(luò)與SSD512、YOLOV2與YOLOV3比較,檢測效果有了明顯提升。
本文首先提出了將GIOU(Generalized Intersection over Union) Loss引入到Y(jié)OLOV3檢測算法中,解決了原IOU(Intersection over Union)無法直接優(yōu)化非重疊部分的問題。搭建一個緊密連接的GDT-YOLOV3網(wǎng)絡(luò),使尺度1、尺度2、尺度3在進行預(yù)測之前,能夠收到Denseblock輸出的多層卷積特征,最大化地實現(xiàn)特征的復(fù)用及融合。使用密集連接塊提高了CNN層間的連接,可用Max Pooling前一個密集模塊間的輸出,可更好地增強DenseNet區(qū)塊間的連接,可解決CNN網(wǎng)絡(luò)的退化問題。針對道路監(jiān)控中的運動目標,例如騎電動車的行人數(shù)據(jù)集比較少的現(xiàn)象,制作了相關(guān)數(shù)據(jù)集。
YOLO(You Only Look Once)算法最初是Redmon[12]等在2016年提出的一種基于回歸的目標識別方法,到2018年發(fā)展到了第3代,所以被命名YOLOV3,它的思想是端到端的回歸方法,對比先選取候選區(qū)域,再特征提取做分類的雙階段算法,它是一種輕快高效的檢測方法。
YOLOV3網(wǎng)絡(luò)仍然保持著YOLOV2[13]網(wǎng)絡(luò)的優(yōu)點,不僅在檢測速度上有了提升,而且在對目標的檢出率也有了提升,尤其在距離視頻監(jiān)控遠的小目標的檢測方面,檢出率有顯著的提升。
YOLOV3網(wǎng)絡(luò)使用anchor boxes[14]的思想,使用了3個尺度在COCO數(shù)據(jù)集上進行了預(yù)測,每一個尺度有3個anchor boxes,小的先驗框被尺度大的特征圖使用,可以根據(jù)要檢測的目標挑選合適的先驗框anchor boxes,最后根據(jù)準備預(yù)測的尺度對網(wǎng)絡(luò)結(jié)構(gòu)進行修改。
目前COCO數(shù)據(jù)集的應(yīng)用較為廣泛,尤其在目標檢測、語義分割及目標識別等方面,更是被廣泛應(yīng)用,這個數(shù)據(jù)集包含了自然景象圖片,以及生活中隨處可見的一些背景復(fù)雜和簡單的圖片,而且COCO數(shù)據(jù)集的數(shù)量比較多。
在深度學(xué)習(xí)中,數(shù)據(jù)集質(zhì)量選取的好壞,以及樣本數(shù)量是否處于一個平衡狀態(tài)直接影響最終檢測效果的高低,大量的樣本讓網(wǎng)絡(luò)能夠充分學(xué)習(xí)到需要檢測的目標特征。但是本實驗中所使用的數(shù)據(jù)集中騎電動車、摩托車或行人的樣本相對于機動車較少,也就會產(chǎn)生樣本失衡的問題。因此會有過擬合問題的出現(xiàn),且最終得到的檢測模型在訓(xùn)練后泛化能力比較差。
為了避免這一問題的出現(xiàn),本文在實驗中采用訓(xùn)練整合數(shù)據(jù)集的方法,首先通過視頻圖像提取出含有騎車人的圖像,然后進行人工標注樣本個數(shù);為了保證樣本數(shù)量的最佳平衡,同時下載KITTI數(shù)據(jù)集,并將這個數(shù)據(jù)集的格式轉(zhuǎn)換為COCO數(shù)據(jù)集的格式,選擇使用這個數(shù)據(jù)集的原因是,它包含了各種場景下由車載攝像頭采集的道路車輛實際情況,KITTI數(shù)據(jù)集中分為8個類別:汽車、行人、廂式貨車、坐著的行人、騎車的人、雜項、電車。本文對KITTI數(shù)據(jù)集原有的8類標簽信息進行處理,保留實驗需要的3個類別標簽,即Car、Pedestrian和Cyclist。
本文最終將從3個數(shù)據(jù)集選取共9 698張圖片,同時用于訓(xùn)練視頻監(jiān)控場景下的運動目標檢測模型。測試集采用人工標注的圖片約2 000張。
如果初始候選框選取不好,網(wǎng)絡(luò)的學(xué)習(xí)速度也會變得較差。對于本文使用的數(shù)據(jù)集來說,它包含的種類非常多,每個目標在圖片中的姿勢、所處位置、大小都略有不同;而對于行人以及騎車的行人數(shù)據(jù)集來說,它的基本特點都是長寬比明顯不同。在Faster R-CNN和SSD中需要人為事先設(shè)置好先驗框,主觀性比較強。對于人為設(shè)置的先驗框,在設(shè)置先驗框時,選擇一個維度適合的先驗框是非常重要的,如果選擇的先驗框很好,網(wǎng)絡(luò)就可以進行相對容易的學(xué)習(xí)過程,從而得到更好的預(yù)測。
本文在YOLOV3網(wǎng)絡(luò)中使用K-means算法,將視頻監(jiān)控場景下捕獲的運動目標做成數(shù)據(jù)集,并將數(shù)據(jù)集中的真實邊框進行聚類,可以獲得初始候選邊框的參數(shù)信息。原始的K-means算法分別使用了以下幾個距離度量方法:曼哈頓距離、歐氏距離以及切比雪夫距離,用其計算兩點之間的距離。設(shè)置先驗框是為了使predict boxes與ground truth 的GIOU更好。
圖1 YOLOV3網(wǎng)絡(luò)多尺度預(yù)測方式Fig.1 YOLOV3 network multi-scale prediction method
本文選取了K=1,2,3,........,9,分別對訓(xùn)練集使用K-means聚類分析,最終選取的候選邊框數(shù)量為9,具體參數(shù)為:(10,13),(16,30),(33,23),(30,61),(62,45),(59,119),(116,90),(156,198),(373,326)。YOLOV3網(wǎng)絡(luò)在數(shù)據(jù)集上采用3個尺度分別進行預(yù)測,具體方式如圖1所示。
本文針對道路監(jiān)控的運動目標進行檢測,對圖像中的車和人進行目標檢測,對YOLOV3提出了3點改進。
目標檢測的中心思想是,如何準確輸出圖片里物體的類別及所在位置,對于以上兩個問題,需要進行位置回歸和分類的訓(xùn)練。在位置回歸中,使用頻率最高的是Bounding box和Ground Truth框的交并比,通過計算兩個框的交集與并集之比,可以預(yù)測當前的predict box位置與ground truth之間的誤差,并在訓(xùn)練過程中逐漸回歸出一個更好的框。
在位置回歸中,通過對L2損失函數(shù)的分析發(fā)現(xiàn),即使有好的局部最優(yōu)值,但這個值也未必會是IOU的局部最優(yōu)值,也進一步說明了回歸損失與交并比值之間仍有差距。用IOU做loss的弊端是,當兩個目標框無重疊時,交并比(IOU)值為0,如果直接把IOU=0作為loss,梯度不會回傳,則對訓(xùn)練來講是毫無意義的,在實際情況中,這個0是非常重要的,它證明了兩個框的距離比較遠。為了解決IOU的缺點,本文提出了GIOU,該算法的具體過程如下:對于A、B兩個框,首先要找到最小邊界框來涵蓋A、B區(qū)域;其次計算最小框C去除了A、B外的面積在C中所占總面積的比值,最后得到GIOU的值就是IOU減這個比值,GIOU為兩個框度量準則的算法,如表1所示。
表1 預(yù)測框和真實框的度量準則算法Tab.1 Metric algorithm for prediction box and real box
表1中A為預(yù)測框,B為真實框,S是全部框的集合,C是包含A與B的最小框,C也屬于S集合。
在對目標進行檢測中,本文提出了使用廣義的交并比GIOU取代原始損失,解決了原IOU無法直接優(yōu)化非重疊部分的問題。
在YOLOV3中,Redmon[7]等人通過參考殘差網(wǎng)絡(luò),設(shè)計了Darknet53網(wǎng)絡(luò)。為了實現(xiàn)對道路監(jiān)控中運動目標的準確檢測,本文使用了Darknet53,它通過ResNet結(jié)構(gòu)使得訓(xùn)練的復(fù)雜度降低,采用了1×1卷積核及3×3/2,stride為2的卷積核取代了Max Pooling,降低了參數(shù)的數(shù)量。
2017年,Huang等人提出了新的網(wǎng)絡(luò)Densenet[15],這個網(wǎng)絡(luò)借鑒了Resnet[16]思想,通過對圖像特征的最大化利用,可達到更好的效果和參數(shù)。在保證了網(wǎng)絡(luò)中層與層之間最大化的信息傳輸后,將每個Denseblock中的每一個層連接起來。Densenet網(wǎng)絡(luò)結(jié)構(gòu)中有3個密集卷積塊,3個密集卷積塊中包含12個卷積層,在每個密集卷積塊中,每一個卷積層可以得到所有之前的卷積層的輸出作為輸入,卷積層+池化層連接了毗鄰的卷積層,密集卷積塊的結(jié)構(gòu)如圖2所示。
圖2 密集卷積塊結(jié)構(gòu)圖Fig.2 Structure of dense convolution block
通過引入這種密集卷積塊,可以緩解梯度消失的問題,緊密的連接結(jié)構(gòu)可以提高圖片特征的信息傳遞,在某種程度上降低了參數(shù)信息的數(shù)目。
本文在基于Darknet53網(wǎng)絡(luò)的基礎(chǔ)上使用密集相連增強,Darknet53的密集連接版本稱為Darknet53-Dense。Darknet53-Dense由3個密集相連模塊和4個Transition module構(gòu)成,每個密集相連模塊間都有一個Transition module,可將特征圖的尺寸降低。如圖3所示,Transition module中分別對上一個Dense module的輸出做步長為2的Max Pooling后與使用Stride為2的卷積核的輸出進行串行連接,作為下一個Dense module的輸入,以這種方式使Densenet的模塊間連接得到增強,可增強特征的重復(fù)使用,減少跨模塊間的特征傳遞損失,使網(wǎng)絡(luò)可更好地檢測到視頻圖像中的運動目標。圖3為過渡模塊的圖解。
圖3 過渡模塊的圖解Fig.3 Diagram of the transition module
在拍攝視頻圖像過程中會有許多因素的影響,比如相機的內(nèi)部配件、光照條件及天氣因素的影響,尤其在對小目標的檢測中,有時人眼都難以準確地看到運動的目標。為了使網(wǎng)絡(luò)在這些單幀圖像上仍然可以有較好的檢出率,本文借鑒了Densenet網(wǎng)絡(luò)的思想,將YOLOV3網(wǎng)絡(luò)中尺度1、尺度2及尺度3進行預(yù)測輸入的3組Resnet模塊替換成自定義的Densenet模塊,搭建一個緊密連接的GDT-YOLOV3網(wǎng)絡(luò),使尺度1、尺度2、尺度3在進行預(yù)測之前,能夠收到Denseblock輸出的多層卷積特征,最大化地實現(xiàn)特征的復(fù)用及融合。改進的GDT-YOLOV3網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。
圖4 改進的GDT-YOLOV3網(wǎng)絡(luò)結(jié)構(gòu)Fig.4 Improved GDT-YOLOV3 network structure
(a)尺度1(a) Scale1
(b)尺度2(b) Scale2
(c)尺度3(c) Scale3圖5 密集網(wǎng)絡(luò)塊結(jié)構(gòu)圖Fig.5 Dense network block structure
這3個Denseblock的具體結(jié)構(gòu)如圖5所示,首先設(shè)定x0為模塊輸入的特征圖,xn為第n個模塊的輸出特征圖,[x0,x1,x2...,xn-1]表示對x0,x1,x2...,xn-1的連接。H( )代表BN-RELU-CONV(3,3)與BN-RELU-CONV(1,1)的連接,Denseblock的計算公式為:
xn=Hn([x0,x1,....,xn-1]),n=1,2.....,8 .
(3)
通過推導(dǎo)得出,更改后的Dense-YOLOV3網(wǎng)絡(luò)結(jié)構(gòu)將會在尺度2的預(yù)測網(wǎng)絡(luò)中輸入2 304個特征圖,在尺度3的預(yù)測網(wǎng)絡(luò)中輸入4 608個特征圖,在尺度1的預(yù)測網(wǎng)絡(luò)中輸入2 560個特征圖。
本實驗分別選用另外4種網(wǎng)絡(luò)進行了實驗仿真。實驗的軟硬件平臺配置如下:深度學(xué)習(xí)框架是darknet53和caffe;操作系統(tǒng)是ubuntu16.04.2,cuda版本是8.0.44;電腦配置是I7-800CPU,16 G RAM;顯卡是NVIDIA GeForce GTX 1070Ti。
本文采用了動量項是0.9的異步隨機梯度下降,設(shè)置subdivisions為16,權(quán)重的衰減系數(shù)為5×10-5,權(quán)值的初始學(xué)習(xí)率為10-3,由于顯卡的限制,在訓(xùn)練階段設(shè)置batch=32,每次訓(xùn)練的batch是32/16=2,輸入的圖像大小為416×416。在SSD512網(wǎng)絡(luò)、YOLOV2、YOLOV3網(wǎng)絡(luò)和改進的GDT-YOLOV3分別訓(xùn)練350 000次,分別在簡單和復(fù)雜交通場景下進行試驗。測試結(jié)果表明,當對網(wǎng)絡(luò)訓(xùn)練的迭代次數(shù)超過一定值時,則會出現(xiàn)過擬合的現(xiàn)象,為了以后測試最佳權(quán)重文件更方便,在訓(xùn)練時本文選擇每40 000次迭代保存一次網(wǎng)絡(luò)的權(quán)重文件。選擇的測試集為前2 000張圖片,使用4種網(wǎng)絡(luò)分別對其所有的權(quán)重進行測試,計算召回率的公式為:
R=Tp/(Tp+FN),
(4)
式中:Tp表示正確檢測出來的目標個數(shù);FN代表沒有被檢測出來的目標個數(shù)。測試的部分結(jié)果如表2所示。
表2 部分網(wǎng)絡(luò)召回率與迭代次數(shù)關(guān)系的對比
從表2可以看出,YOLOV3網(wǎng)絡(luò)迭代最好的次數(shù)為300 000次左右,改進的GDT-YOLOV3網(wǎng)絡(luò)迭代最好也是在260 000左右,可以發(fā)現(xiàn)改進的GDT-YOLOV3網(wǎng)絡(luò)在檢測目標時要比YOLOV2、YOLOV3網(wǎng)絡(luò)和SSD512網(wǎng)絡(luò)的效果好。
本文選取了4種網(wǎng)絡(luò)的最佳迭代次數(shù)對4種網(wǎng)絡(luò)進行對比與測試。表3為本文的網(wǎng)絡(luò)檢測模型與其他優(yōu)秀的目標檢測模型的檢測精度對比,所有的模型都是采用混合訓(xùn)練集訓(xùn)練的。其中本文的模型檢測精度要遠高于SSD512網(wǎng)絡(luò)、YOLOV2和YOLOV3網(wǎng)絡(luò),雖然檢測速度不如YOLOV3和YOLOV2,但也完全滿足既實時又準確的要求。
本文對2 000張圖像進行測試,用這4種網(wǎng)絡(luò)對圖像中的目標進行檢測。實驗結(jié)果表明,4種網(wǎng)絡(luò)均能準確地檢測出道路上的車輛、電動車和行人,雖然原始的SSD512,YOLOV2、YOLOV3網(wǎng)絡(luò)都有較高的檢測速度,但是與本文改進的GDT-YOLOV3網(wǎng)絡(luò)的檢測精度和速度相比,可發(fā)現(xiàn)其他4種網(wǎng)絡(luò)明顯不如本文改進的網(wǎng)絡(luò)模型,而且GDT-YOLOV3網(wǎng)絡(luò)幾乎不會發(fā)生誤檢和漏檢現(xiàn)象,實驗效果如圖6和圖7所示。
表3 不同檢測模型精度的對比Tab.3 Comparison of the accuracy of different detection models
(a)原圖像(a) original image
(b)SSD512網(wǎng)絡(luò)(b) SSD512 network
(c)YOLOV2網(wǎng)絡(luò)(c) YOLOV2 network
(d) YOLOV3網(wǎng)絡(luò)(d) YOLOV3 network
(e) 改進的GDT-YOLOV3網(wǎng)絡(luò)(e) Improved GDT-YOLOV3 network圖6 簡單交通情境下實驗檢測的對比結(jié)果圖Fig.6 Comparison results of experimental tests in a simple traffic situation
這2 000張圖片包含51 700個目標,用這4種網(wǎng)絡(luò)在數(shù)據(jù)集上進行測試,然后計算檢測5種目標類別的準確率,準確率的計算公式:
P=Tp/(Tp+Fp)
.
(5)
(a)原圖像(a) Original image
(b)SSD512網(wǎng)絡(luò)(b) SSD512 network
(c)YOLOV2網(wǎng)絡(luò)(c) YOLOV2 network
(d)YOLOV3網(wǎng)絡(luò)(d) YOLOV3 network
(e)改進的GDT-YOLOV3網(wǎng)絡(luò)(e) Improved GDT-YOLOV3 network圖7 復(fù)雜交通情境下實驗檢測的對比結(jié)果圖Fig.7 Comparison results of experimental tests in complex traffic situations
經(jīng)過計算得出SSD512網(wǎng)絡(luò)誤檢車輛個數(shù)為6 260個,行人誤檢個數(shù)為7 468個,電動車誤檢個數(shù)12 811個,公共汽車誤檢個數(shù)為9 864個,卡車誤檢個數(shù)為11 270個;YOLOV2網(wǎng)絡(luò)車輛誤檢車輛個數(shù)為3 282個,行人誤檢個數(shù)為3 955個,電動車誤檢個數(shù)10 567個,公共汽車誤檢個數(shù)為8 358個,卡車誤檢個數(shù)為9 471個;YOLOV3網(wǎng)絡(luò)誤檢車輛的個數(shù)為2 476,行人的誤檢個數(shù)為3 541,電動車誤檢個數(shù)為7 160個,公共汽車誤檢個數(shù)為6 969個,卡車誤檢個數(shù)為6 653個;GDT-YOLOv3網(wǎng)絡(luò)誤檢車輛的個數(shù)為1 897,行人的誤檢個數(shù)為2 078,電動車誤檢個數(shù)為4 027個,公共汽車誤檢個數(shù)為5 378個,卡車誤檢個數(shù)為5 315個。從實驗結(jié)果可知,本文改進的GDT-YOLOV3檢測效果更好,與SSD512相比分別在車輛、行人、電動車、公共汽車和卡車的檢測準確率分別提升了8.44%、10.46%、16.99%、8.66%、11.52%;與YOLOV2相比在車輛、行人、電動車、公共汽車和卡車的檢測準確率分別提升了2.68%、3.63%、6.06%、5.8%、8.06%;與YOLOV3相比在車輛、行人、電動車、公共汽車和卡車的檢測準確率提升了1.12%、2.83%、6.06%、3.06%、2.4%,檢測速度滿足需求。
本文采用K-means算法聚類初始目標邊框,以YOLOV3算法為基礎(chǔ),根據(jù)混合數(shù)據(jù)集的特點,對網(wǎng)絡(luò)進行了改進。本文設(shè)計了一種改進的GDT-YOLOV3網(wǎng)絡(luò),并分別對SSD512、YOLOV2及YOLOV3和改進的GDT-YOLOV3網(wǎng)絡(luò)進行訓(xùn)練與測試。實驗結(jié)果表明,本文方法的平均檢出率與SSD512、YOLOV2、YOLOV3相比分別提高了11.22%、6.57%、2.11%,可以對交通場景下不同尺寸的目標有較高的檢出率。但是本模型對更復(fù)雜的交通場景或重疊的運動目標檢測效果不是特別好,在未來會將上述問題作為重點的研究方向。