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