劉肯 何姣姣 張永平 姚拓中 常志國
摘 ?要: YOLO目標檢測算法在進行目標檢測和識別時具有識別精度高、檢測速度快的特點。但也存在明顯的問題,由于網絡采用的結構是端對端模型,沒有經過預選框進行匹配預選,直接進行回歸產生最后的結果框,所以存在定位不準的問題。同時,YOLO網絡將圖片整體resize到固定的尺寸后,進行網格劃分,當單個網格存在不止單個目標時,容易出現漏檢的情況。DenseNet網絡使用一種全新的網絡結構,結合前面特征層的信息,在一定程度上提升了對物體的檢測精度。在此基礎上提出YOLO?D算法,結合前面特征層的信息,在不影響檢測速度的同時,提高車輛檢測精度,與此同時使得定位有所改善。
關鍵詞: YOLO; 端對端模型; DenseNet; 車輛檢測; YOLO?D; 檢測精度
中圖分類號: TN911.73?34 ? ? ? ? ? ? ? ? ? ? ? 文獻標識碼: A ? ? ? ? ? ? ? ? ? ? ? ? 文章編號: 1004?373X(2019)13?0047?04
Improved YOLO vehicle detection algorithm
LIU Ken1, HE Jiaojiao1, ZHANG Yongping2, YAO Tuozhong2, CHANG Zhiguo1
(1. School of Information Engineering, Changan University, Xian 710064, China;
2. College of Telecom, Ningbo University of Technology, Ningbo 315211, China)
Abstract: The YOLO target detection algorithm has the characteristics of high recognition accuracy and fast detection speed for target detection and recognition, but also has obvious problems. The network adopts an end?to?end model, and directly generates the final result framework after regression without matching and pre?selection of pre?selection framework, so the positioning is inaccurate. The YOLO network can resize the entire image to a fixed size, and divide the mesh. When there is more than one target in a single mesh, it is likely to result in the missed detection. A brand?new network structure is used in DenseNet network, and combined with the information of the front feature layer to improve the detection accuracy of the object to a certain extent. Thus, the proposed YOLO?D algorithm combined with the information of the front feature layer can improve the vehicle detection accuracy and positioning accuracy while maintaining the vehicle detection speed.
Keywords: YOLO; end?to?end model; DenseNet ; vehicle detection; YOLO?D; detection accuracy
0 ?引 ?言
隨著人們生活質量的提高,越來越多的汽車走進了大眾家庭,隨之產生的問題也很多,如車輛亂停亂放,闖紅燈等。依賴傳統(tǒng)的人力解決這些問題是遠遠不夠的,因此提出用計算機去解決這類問題。Seki等人提出將背景差分用于動態(tài)車輛檢測[1],在此基礎上STAUFFER等人提出了自適應背景更新[2],將其應用于車輛檢測。KOLLER等人提出用3D模型檢測和跟蹤車輛的方法[3]來提高識別率。傳統(tǒng)的目標檢測算法雖然在識別精度上基本滿足識別車輛的要求,但是其速度慢、過程復雜的問題也比較明顯。隨著近些年人工智能的火熱,越來越多的研究人員開始關注基于深度學習的車輛檢測算法,相比于傳統(tǒng)的方法,基于深度學習的方法能夠學習到更多的目標特征。如文獻[4]提出基于卷積神經網絡的車輛檢測方法,運用滑動窗口生成候選區(qū)域,采用卷積神經網絡的卷積層和池化層提取車輛特征,最后用全連接層進行候選驗證,由于是通過滑動窗口來產生候選區(qū)域,在滑動的過程中會有很多重復的區(qū)域,非常消耗時間,影響算法的效率。文獻[5]提出R?CNN算法,在速度上相比CNN提升很多。R?CNN提出選擇性搜索(Selective Search)方法,使用一種過分割手段將圖像分割成小區(qū)域,通過顏色、紋理、面積等合并方式產生候選區(qū)域。R?CNN算法流程主要分為3個步驟,首先使用Selective Search[6]提取約2 000個候選區(qū)域,接著用CNN提取每個候選框中的特征向量,最后用SVM算法判斷候選區(qū)是否是目標。在VOC 2007測試集上的MAP被提升至48%,2014年通過修改結構將MAP提升到66%,與此同時,在ILSVRC2013測試集上的MAP也被提升到31.4%。R?CNN在目標檢測領域取得了突破,隨后出現了SPP?NET[7],Fast R?CNN[8],Faster R?CNN[9],R?FCN[10],YOLO[11],SDD[12]等目標檢測算法。其中,Faster R?CNN將檢測和分類模塊都放在同一個深度學習框架之下,就檢測準確率相比其他目標檢測算法要高,但是隨之帶來的缺點是速度慢,YOLO算法的網絡設計策略延續(xù)了GooGleNet[13]的核心思想,實現端對端網絡的目標檢測,發(fā)揮了速度快的優(yōu)勢,但是其精度有所下降,本文提出一種YOLO?D算法,在不影響檢測速度的情況下提高了檢測準確率。
1 ?YOLO目標檢測模型介紹
YOLO算法模型包括18個卷積層,2個全連接層和6個池化層,如圖1所示。其中,卷積層用于提取圖像的特征;全連接層用于預測圖像位置與類別估計概率值;池化層負責縮減圖片像素。YOLO直接對輸入的圖片進行回歸分析,輸出多個滑動窗口位置以及該窗口檢測到的目標類別。
YOLO將輸入圖像分為[S×S]個單元格,每個單元格負責檢測“落入”該單元格的對象,若某個物體的中心位置落到某個格子,那么這個格子就負責檢測出這個物體。每個格子輸出[B]個bounding box(包含物體的矩形區(qū)域)信息,以及[C]個物體屬于某種類別的概率信息。Bounding box信息包含5個數據值,分別是[x,y,w,h]和Confidence(置信度),邊界框的大小用4個值來表示:[(x,y,w,h)],其中,[(x,y)]是邊界框的中心坐標,而[w]和[h]是邊界框的寬與高。經過刪選,最終每個單元格會預測兩個單元格但只預測一個類別概率(即就是兩個邊界框共享一個類別),最后的prediction是[7×7×30](即[S×S×(B×5+C))]的張量,整個流程大致如圖2所示。
2 ?YOLO?D
YOLO算法使用回歸思想,把目標檢測問題作為一個回歸問題處理,可以一次性實時預測多個目標邊框的位置和類別。由于YOLO沒有選擇滑動窗口或提取候選區(qū)域的方式訓練網絡,而是選擇直接選用整幅圖像來做訓練,提升了訓練速度,與此同時犧牲了一些精度。DenseNet網絡,其核心思想是skip connection,對于某些輸入直接進入之后的layer,從而實現信息流的整合,避免信息在層間傳遞的丟失和梯度消失,同時加強層與層之間的特征聯系。在此基礎上提出YOLO?D算法,在YOLO算法的基礎上添加DenseNet結構,使其學習很多的層與層之間的特征聯系,提高預測精度。
如圖3所示,每個塊代表當前特征圖的大小,在YOLO算法中,每一個相同大小的特征圖有多個,為了方便表示,用特征塊代替。在每一個特征塊中,當前特征向后面卷積層傳遞時,選擇特征塊中的最后一層。
由于DenseNet不是像素之間的相加,而是通道之間的連接,為了保證通道之間的連接不出現tensor過大,資源耗盡的情況,通過使用1×1的卷積核進行通道的壓縮,如在14×14的卷積塊中,一共有三個輸入,其中,由28×28卷積塊傳遞的是YOLO網絡原始的結構,將其作為主線,旁邊兩條為分支輸入,由YOLO結構可知,14×14卷積塊中的第一個卷積層通道數為1 024,為此通過使用1×1的卷積核分別將兩個分支的通道數變?yōu)?12,其他類似連接,從而保證主線的特征為主要特征輸入,同時也縮短計算量。
3 ?實驗及結果討論
3.1 ?數據集
數據集主要分為兩部分:一部分為自己手動標注的數據集;另一部分來自于UA?DETRAC[14]數據集。DETRAC數據集主要拍攝北京和天津的道路過街天橋,圖片大小為960×540,包含多個角度車輛照片,先把數據集所出的XML格式轉換成需要的VOC2007格式。另一部分是用攝像機手動采取的數據,大小為1 920×1 080,由于YOLO網絡使用的是全連接層,所以對輸入圖片的大小有要求,為了統(tǒng)一數據集,將訓練圖片的大小統(tǒng)一為960×540。所有的數據集都只有一類(car)。選取DETRAC數據集和自制數據集各1 000個訓練樣本,同時為了擴增訓練樣本,對所有的訓練樣本進行水平鏡像翻轉操作。YOLO?D的算法模型訓練過程如圖4所示,經過轉換增強后得到最終的模型。
3.2 ?實驗平臺
實驗主要是在PC端完成的,PC主要配置為:CPU(i5?8600),GPU(NVIDIA GTX?1080)和16 GB內存,實驗是在TensorFlow框架下進行,使用的是python語言。
3.3 ?評估方法和結果對比
在測試階段,把測試集分為兩部分:[15]的原圖片,[45]的原圖片。如圖5所示。
實驗中給出YOLO算法和本文的YOLO?D算法分別在晴天、雨天、夜晚時分的數據對比。由于YOLO?D網絡注重結合之前特征層的特征,因此對遠處的小目標(車輛)測試集1進行檢測。表1中的白天、夜晚、側面中的數據僅從測試集2中檢測。從表1中可以看出,YOLO?D對白天和夜晚的預測改進有效,尤其是對小目標的檢測有很大的提升,對側面的車輛檢測改進效果不明顯;從表2中可以看出,YOLO?D的查全率針對小目標有所提升,其他情況影響不大,甚至在側面情況稍微有所下降。
3.4 ?結果分析
本次實驗只要預測的目標和真實目標框的IOU大于0.5,就認為目標被正確檢測定位。分別在不同場景的測試集進行測試,效果優(yōu)于YOLO算法。由于YOLO算法本身沒有采用滑動窗口進行定位回歸,所以容易出現定位比較差的情況。YOLO?D在嘗試增加特征層的特征的同時,發(fā)現對目標框的定位有所改進。從圖7中可以看出,盡管增強了后面卷積層的特征輸入,但還是存在部分漏檢的情況,以及對遠處的車輛未能準確識別的情況。
4 ?結 ?語
本文對深度學習目標檢測算法YOLO進行改進,把目標檢測算法問題變成二分類問題,從而實現對目標車輛的檢測。通過對YOLO算法的改進,提高了對遠處小目標的檢測,雖然還存在漏檢車輛,但是在近處有較高的識別精度和差不多30 f/s的識別速度,基本上滿足交通道路車輛檢測的準確定位和實時性需求。
參考文獻
[1] SKEI M, FUJIWAEA H, SUMI K. A robust back?ground subtraction method subtraction method for changing background [C]// The 5th IEEE Workshop on Applications of Computer Vision. Palm Springs: IEEE, 2000: 1?7.
[2] STAUFFER C,CRIMSON W E L. Adaptive back?ground mixture models for real?time tracking [C]// 1999 IEEE Computer Society Conference on Computer Vision and Pattern Recognition. Fort Collins: IEEE, 1999: 1?7.
[3] KOLLER D, DANILIDIS K,NAGEL H H. Model?based object tracking in monocular image sequences of road traffic scenes [J]. International journal of computer vision, 2013, 10(3): 257?281.
[4] BAUTISTA C M, DY C A, MANALAC M I, et al. Convolutional neural network for vehicle detection in low resolution traffic videos [C]// 2016 IEEE Region 10 Symposium. Bali: IEEE, 2016: 277?281.
[5] GIRSHICK R, DONAHUE J, DARRELL T, et al. Rich feature hierarchies for accurate object detection and semantic segmentation [C]// 2014 IEEE Conference on Computer Vision and Pattern Recognition. USA: IEEE Computer Society, 2014: 580?587.
[6] UIJLINGS J R, VAN DE SANDE K E, GEVERS T, et al. Selective search for object recognition [J]. International journal of computer vision, 2013, 104(2): 154?171.
[7] HE K, ZHANG X, RENS, et al. Spatial pyramid pooling in deep convolutional networks for visual recognition [J]. IEEE transactions on pattern analysis & machine intelligence, 2014, 37( 9): 346?361.
[8] GIRSHICK R. Fast R?CNN [C]// Proceedings of 2015 IEEE International Conference on Computer Vision . Santiago: IEEE, 2015: 10?15.
[9] REN S, HE K, GIRSHICK R, et al. Faster R?CNN: towards real?time object detection with region proposal networks [C]// Proceedings of the 28th International Conference on Neural Information Processing Systems. Montreal: MIT Press, 2015: 1?15.
[10] DAI F, LI Y, HE K M, et al. R?FCN: Object detection via region?based fully convolutional networks [C]// Proceedings of the 30th International Conference on Neural Information Processing Systems. Barcelona: Curran Associates Inc., 2016: 379?387.
[11] REDMON J, DIVVALA S, GIRSHICK R, et al. You only look once: unified, real?time object detection [EB/OL]. [2015?07?11]. http://ai2?website.s3.amazonaws.com/publications/YOLO.pdf.
[12] LIU Wei, ANGUELOV D, ERHAN D, et al. SSD: single shot multibox detector [C]// Proceedings of 2016 European Conference on Computer Vision and Pattern Recognition. [S.l.]: Springer, 2016: 13?17.
[13] SZEGEDY C, LIU W, JIA Y, et al. Going deeper with convolutions [C]// 2015 IEEE Conference on Computer Vision and Pattern Recognition. Boston: IEEE, 2014: 1?12.
[14] WEN Longyin, DU Dawei, CAI Zhaowei, et al. DETRAC: new benchmark and protocol for multi?object detection and tracking [EB/OL]. [2015?11?03]. https://www.researchgate.net/publication/283986610_UA?DETRAC_A_New_Benchmark_ and_Protocol_for_Multi?Object_Detection_and_Tracking.
[15] HE K, ZHANG X, REN S, et al. Deep residual learning for image recognition [C]// 2016 IEEE Conference on Computer Vision and Pattern Recognition. Las Vegas: IEEE, 2015: 770?778.