谷玉海,曹夢(mèng)婷,修嘉蕓,任 斌,劉 朔
(1.北京信息科技大學(xué) 現(xiàn)代測(cè)控教育部重點(diǎn)實(shí)驗(yàn)室, 北京 100192;2.北京航天長(zhǎng)征飛行器研究所, 北京 100076)
近年來,隨著經(jīng)濟(jì)的飛速發(fā)展,我國(guó)的車輛保有量和駕駛?cè)藬?shù)量快速增長(zhǎng),由駕駛?cè)诉`章導(dǎo)致的交通事故也越來越多。隨著交通環(huán)境的變化,傳統(tǒng)的違章檢測(cè)算法的準(zhǔn)確率降低,適應(yīng)環(huán)境的能力變差,而基于深度學(xué)習(xí)的違章檢測(cè)算法相對(duì)于傳統(tǒng)的違章檢測(cè)方法,具有更高的檢測(cè)效率、準(zhǔn)確率及更強(qiáng)的環(huán)境適應(yīng)能力,能夠更好地檢測(cè)違章行為,并通過處罰、警示等手段促使駕駛?cè)俗袷亟煌ǚㄒ?guī),減少交通事故的發(fā)生[1]。
大量數(shù)據(jù)表明,30%以上的交通事故是由駕駛?cè)藛T在行駛的過程中撥打手持電話所造成的,開車時(shí)使用手持電話發(fā)生交通事故的風(fēng)險(xiǎn)比平常高出4倍[2],因此,使用違章檢測(cè)算法對(duì)駕駛?cè)藛T在行駛過程中撥打手持電話這種違章行為進(jìn)行檢測(cè)是十分有必要的。
目前在違章檢測(cè)算法中所使用的傳統(tǒng)目標(biāo)檢測(cè)算法有Haar特征+Adaboost算法[3]、Hog特征+SVM算法[4]、DPM算法[5]等,這些算法主要是用濾波、二值化、邊緣檢測(cè)等傳統(tǒng)的圖像處理技術(shù)對(duì)圖片中的車牌進(jìn)行定位和識(shí)別,對(duì)于背景信息簡(jiǎn)單,單一目標(biāo)的檢測(cè),具有較好的檢測(cè)效果。但是隨著車輛及駕駛員數(shù)量的增多、交通環(huán)境的復(fù)雜化,傳統(tǒng)的目標(biāo)檢測(cè)算法在交通場(chǎng)景下漏檢率變高、識(shí)別準(zhǔn)確率下降、泛化能力變差。2015年,Ren等[6]提出Faster R-CNN網(wǎng)絡(luò),該網(wǎng)絡(luò)使用RPN(region proposal network)網(wǎng)絡(luò)替代R-CNN系列網(wǎng)絡(luò)中的選擇性搜索,從而達(dá)到共享卷積網(wǎng)絡(luò)的特征提取,提高識(shí)別的準(zhǔn)確率及速度。2016年,華盛頓大學(xué)的Joseph Redmon等[7]在CVPR上提出YOLO算法,該算法采用與之前的目標(biāo)識(shí)別算法相同的回歸思路,該方法的出現(xiàn)極大地提高了目標(biāo)識(shí)別的效率。Liu等[8]提出SSD算法,該算法將YOLO算法的回歸方法和Faster R-CNN算法的錨框思想相結(jié)合,SSD算法在整圖上的每個(gè)位置進(jìn)行多尺度局部邊框回歸,因此既有YOLO網(wǎng)絡(luò)的快速性又有較高的定位準(zhǔn)確率,但是對(duì)小目標(biāo)檢測(cè)的效果不好。2018年,Joseph Redmon等[9]經(jīng)過2年的研究提出YOLOv3網(wǎng)絡(luò),該網(wǎng)絡(luò)在小目標(biāo)識(shí)別上的mAP有較大提高并保持一個(gè)較高的識(shí)別效率,但此網(wǎng)絡(luò)不能對(duì)視頻圖像實(shí)現(xiàn)逐幀實(shí)時(shí)檢測(cè)的效果。2020年4月,Bochkovskiy等[10]提出了最新的YOLOv4網(wǎng)絡(luò),YOLOv4無(wú)論是檢測(cè)的準(zhǔn)確率還是檢測(cè)速度,相較于YOLOv3都有了較大提升。
因此,以YOLOv4網(wǎng)絡(luò)為基礎(chǔ),設(shè)計(jì)了一種利用目標(biāo)檢測(cè)算法進(jìn)行實(shí)時(shí)違章檢測(cè)的方法,通過檢測(cè)駕駛?cè)藛T行車過程中的人臉特征、手部特征、手持電話特征和車前窗特征,并根據(jù)違章判斷依據(jù),判斷駕駛?cè)藛T在行車過程當(dāng)中是否存在撥打手持電話的違章行為。通過實(shí)驗(yàn)驗(yàn)證了該方法的可行性。
2020年4月,Bochkovskiy等提出了最新的YOLOv4網(wǎng)絡(luò),他們將Weighted-Residual-Connections(WRC)、Cross-Stage-Partial-connections(CSP)、Cross mini-Batch Normalization(CmBN)、Self-adversarial-training(SAT)、Mish-activation、Mosaic data augmentation等技術(shù)進(jìn)行組合,得到了性能大幅度提高的YOLOv4網(wǎng)絡(luò),不同網(wǎng)絡(luò)性能如圖1所示。
圖1 網(wǎng)絡(luò)性能曲線
在MS-COCO數(shù)據(jù)集上,YOLOv4網(wǎng)絡(luò)的AP達(dá)到了43.5%,幀頻達(dá)到了65 FPS,在YOLOv3的基礎(chǔ)上將AP和FPS分別提高了10%和12%,而且YOLOv4網(wǎng)絡(luò)的運(yùn)行速度是谷歌所開發(fā)的EfficientNet網(wǎng)絡(luò)的2倍,YOLOv4網(wǎng)絡(luò)的檢測(cè)準(zhǔn)確率以及運(yùn)行速度都遠(yuǎn)遠(yuǎn)高于YOLOv3網(wǎng)絡(luò)[10]。
相較于YOLOv3網(wǎng)絡(luò),YOLOv4網(wǎng)絡(luò)主要有以下改進(jìn):
1) 使用CSPDarknet53作為骨干網(wǎng)絡(luò)BackBone
在選擇網(wǎng)絡(luò)結(jié)構(gòu)時(shí),需要在輸入網(wǎng)絡(luò)分辨率、卷積層數(shù)、參數(shù)量之間找到最佳平衡,在確定網(wǎng)絡(luò)結(jié)構(gòu)之后,需要選擇額外的模塊以提升感受野,選擇更好的特征匯聚模塊,更大感受野、更大參數(shù)量的模型能使網(wǎng)絡(luò)性能更優(yōu),通過對(duì)比不同backbone的上述特征信息,CSPResNeXt50僅僅包含16個(gè)卷積層,其感受野為425×425,包含20.6 M參數(shù);而CSPDarkNet53包含29個(gè)卷積層,725×725的感受野,共有27.6 M參數(shù),更適合作為檢測(cè)模型的Backbone。因此YOLOv4網(wǎng)絡(luò)選擇CSPDarknet53作為網(wǎng)絡(luò)的BackBone。
Darknet53網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示[11],共有5個(gè)大殘差塊,每個(gè)大殘差塊所包含的小殘差單元個(gè)數(shù)為1、2、8、8、4,CSPDarknet53是在Darknet53網(wǎng)絡(luò)的每個(gè)大殘差塊上增加了CSP模塊,如圖3所示。
圖2 Darknet53網(wǎng)絡(luò)結(jié)構(gòu)示意圖
圖3 CSPDarknet53模塊示意圖
每個(gè)CSP模塊前面的卷積核的大小都是3*3,stride值為2,因此可以起到下采樣的作用。因?yàn)锽ackbone有5個(gè)CSP模塊,輸入圖像是608*608,所以特征圖尺寸的變化的規(guī)律是:608->304->152->76->38->19,經(jīng)過5次CSP模塊后,能夠得到19*19大小的特征圖。在Backbone網(wǎng)絡(luò)中采用Mish激活函數(shù),Backbone網(wǎng)絡(luò)之后的網(wǎng)絡(luò)中仍然采用Leaky_relu激活函數(shù)。在Yolov4的主干網(wǎng)絡(luò)Backbone采用CSPDarknet53網(wǎng)絡(luò)結(jié)構(gòu),主要有3個(gè)方面的優(yōu)點(diǎn),第一是增強(qiáng)CNN的學(xué)習(xí)能力,使得在輕量化的同時(shí)保持準(zhǔn)確性;第二是降低計(jì)算瓶頸;第三是降低內(nèi)存成本。
2) 使用SPP網(wǎng)絡(luò)作為Neck的附加模塊
SPP(spatial pyramid pooling)網(wǎng)絡(luò)在YOLOv4網(wǎng)絡(luò)中的目的是增加網(wǎng)絡(luò)的感受野,采用1×1,5×5,9×9,13×13的最大池化的方式,進(jìn)行多尺度融合,然后將最大池化的結(jié)果在Concat層實(shí)現(xiàn)數(shù)據(jù)拼接,得到特征圖層,最后通過1x1池化將特征圖降維到512個(gè)通道,如圖4所示。相較于使用單純的k*k最大池化方式,使用SPP模塊能夠更有效地增加主干特征的接收范圍,顯著的分離重要的上下文特征。在使用YOLOv4網(wǎng)絡(luò)對(duì)608*608大小的圖像進(jìn)行測(cè)試時(shí)發(fā)現(xiàn),在COCO目標(biāo)檢測(cè)任務(wù)中,能夠以0.5%的額外計(jì)算代價(jià)將AP50增加2.7%,因此在YOLOv4網(wǎng)絡(luò)中采用了SPP模塊。
圖4 YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)示意圖
3) 使用PANet作為Neck的特征融合模塊
與YOLOv3網(wǎng)絡(luò)所使用的FPN層不同,YOLOv4網(wǎng)絡(luò)在FPN層的后面添加了一個(gè)自底向上的特征金字塔,其中包含2個(gè)PAN結(jié)構(gòu),如圖4所示,F(xiàn)PN層自頂向下傳達(dá)強(qiáng)語(yǔ)義特征,而特征金字塔則自底向上傳達(dá)強(qiáng)定位特征,從不同的主干層對(duì)不同的檢測(cè)層進(jìn)行參數(shù)聚合,能夠進(jìn)一步提高網(wǎng)絡(luò)的特征提取能力。
為了使YOLOv4網(wǎng)絡(luò)在進(jìn)行訓(xùn)練時(shí),更適用于單GPU設(shè)備,YOLOv4網(wǎng)絡(luò)在YOLOv3網(wǎng)絡(luò)的基礎(chǔ)之上還進(jìn)行了如下的額外設(shè)計(jì)與改進(jìn):
1) Mosaic數(shù)據(jù)增強(qiáng)
Yolov4中使用的Mosaic數(shù)據(jù)增強(qiáng)方式是參考2019年底提出的CutMix數(shù)據(jù)增強(qiáng)的方式,但CutMix只使用了2張圖片進(jìn)行拼接[12],而Mosaic數(shù)據(jù)增強(qiáng)則采用了4張圖片,以隨機(jī)縮放、隨機(jī)裁剪、隨機(jī)排布的方式進(jìn)行拼接,如圖5所示。Mosaic數(shù)據(jù)增強(qiáng)方式主要有以下幾個(gè)優(yōu)點(diǎn):第一是豐富數(shù)據(jù)集,隨機(jī)使用4張圖片,隨機(jī)縮放,再隨機(jī)分布進(jìn)行拼接,大大豐富了檢測(cè)數(shù)據(jù)集,特別是隨機(jī)縮放增加了很多小目標(biāo),讓網(wǎng)絡(luò)的魯棒性更好;第二是降低對(duì)GPU的數(shù)量要求,使用Mosaic數(shù)據(jù)增強(qiáng)之后的圖片資源進(jìn)行訓(xùn)練時(shí),可以直接計(jì)算4張圖片的數(shù)據(jù),使得Mini-batch的大小并不需要很大,使用一個(gè)GPU就可以達(dá)到比較好的訓(xùn)練效果。
圖5 Mosaic數(shù)據(jù)增強(qiáng)示意圖
2) Self-Adversarial Training
Self-Adversarial Training(自對(duì)抗訓(xùn)練)也是一種新的數(shù)據(jù)增強(qiáng)方法,可以一定程度上抵抗對(duì)抗攻擊。其包括2個(gè)階段,每個(gè)階段進(jìn)行一次前向傳播和一次反向傳播。第1階段,CNN通過反向傳播改變圖片信息,而不是改變網(wǎng)絡(luò)權(quán)值,通過這種方式,CNN可以進(jìn)行對(duì)抗性攻擊,改變?cè)紙D像,造成圖像上沒有目標(biāo)的假象。第2階段,訓(xùn)練神經(jīng)網(wǎng)絡(luò),以正常的方式在修改后的圖像上檢測(cè)目標(biāo)。
3) CmBN
YOLOv4所使用的規(guī)范化方法為交叉小批量規(guī)范化CmBN (cross mini-batch normalization),BN(batch normalization)是對(duì)當(dāng)前的mini-batch進(jìn)行歸一化,CBN(cross-iteration BN)是對(duì)當(dāng)前及當(dāng)前往前數(shù)3個(gè)mini-batch的結(jié)果進(jìn)行歸一化。而YOLOv4中所使用的CmBN則是僅僅在這個(gè)Batch中進(jìn)行累積,僅在單個(gè)批次內(nèi)的小批次之間收集統(tǒng)計(jì)信息,進(jìn)行歸一化,這樣能夠使得檢測(cè)器更適合在單個(gè)GPU上進(jìn)行訓(xùn)練。
判斷駕駛員是否拔打手持電話需要綜合人臉特征、手部特征、手持電話特征以及車前窗特征進(jìn)行判斷。若人臉特征、手部特征以及手持電話特征三者存在交叉區(qū)域,且此交叉區(qū)域出現(xiàn)在車前窗的右半邊部分(主駕駛位置),則說明駕駛員存在撥打手持電話的違章行為。其判斷流程如圖6所示。在判斷交通圖像中存在違章行為之后,需要將車牌特征也進(jìn)行提取。
圖6 違章行為判斷流程框圖
對(duì)于交通圖像中的目標(biāo)進(jìn)行檢測(cè)屬于監(jiān)督學(xué)習(xí),因此在制作訓(xùn)練集時(shí)需要對(duì)圖像中待檢測(cè)的目標(biāo)的位置和類別進(jìn)行標(biāo)注。本數(shù)據(jù)集來源于實(shí)際交通場(chǎng)景。根據(jù)駕駛?cè)藛T在行駛過程中拔打手持電話這種違章行為的判據(jù)設(shè)計(jì),需要對(duì)交通圖像中的人臉特征、手部特征、手持電話特征、車前窗特征以及車牌特征進(jìn)行標(biāo)注,根據(jù)不同特征在圖像中的出現(xiàn)情況,判斷圖像中是否存在駕駛過程中撥打手持電話的違章行為。用不同的標(biāo)簽代號(hào)代表每一種類別的特征,如表1所示。
表1 特征類別
標(biāo)簽制作采用labelimg開源工具,環(huán)境為Windows 10(64位)操作系統(tǒng)、python3.5。標(biāo)記位置并輸入標(biāo)簽類型,如圖7所示,最后點(diǎn)擊保存生成一個(gè)和圖片同名的xml類型的文件,如下所示:
圖7 labelimg開源工具
xml文件記錄著圖像資源的信息以及標(biāo)簽的類型及位置。圖像資源共有24 000張,圖像資源分辨率有2 048*1 380、1 616*10 462種。訓(xùn)練集包含20 000張真實(shí)交通卡口圖像,驗(yàn)證集包含2 000 張真實(shí)交通卡口圖像,測(cè)試集包含2 000張真實(shí)交通卡口圖像。
實(shí)驗(yàn)環(huán)境配置如下:CPU為英特爾的i5-8500,主頻為3.00 GHz,內(nèi)存為16 GB,顯卡為英偉達(dá)的GeForce GTX 1080 Ti,顯存為11GB,CUDA版本為8.0,CuDNN版本為6.0,操作系統(tǒng)為ubuntu16.04.05(64位)。
分別使用YOLOv3網(wǎng)絡(luò)和YOLOv4網(wǎng)絡(luò)進(jìn)行目標(biāo)檢測(cè)實(shí)驗(yàn):
YOLOV3網(wǎng)絡(luò)與YOLOv4網(wǎng)絡(luò)的訓(xùn)練參數(shù)配置相同,如下:將輸入圖片的batch、subdivisions分別設(shè)置為64、16。迭代次數(shù)設(shè)置為20 000次。學(xué)習(xí)率使用分步策略,初始值設(shè)置為0.001,變化的次數(shù)為16 000和18 000,比率為0.1和0.1。
YOLOv3網(wǎng)絡(luò)在訓(xùn)練過程中的IOU變化曲線以及損失函數(shù)變化曲線分別如圖8、9所示,YOLOv4網(wǎng)絡(luò)在訓(xùn)練過程中的IOU變化曲線以及損失函數(shù)變化曲線分別如圖10、11所示。
圖8 YOLOv3網(wǎng)絡(luò)訓(xùn)練過程中的IOU變化曲線
圖9 YOLOv3網(wǎng)絡(luò)訓(xùn)練過程中的損失函數(shù)變化曲線
圖10 YOLOv4網(wǎng)絡(luò)訓(xùn)練過程中的IOU變化曲線
圖11 YOLOv4網(wǎng)絡(luò)訓(xùn)練過程中的損失函數(shù)變化曲線
通過圖8、10可以得出,2種網(wǎng)絡(luò)的平均IOU值均可滿足實(shí)際應(yīng)用,但對(duì)比圖9、11可以得出,YOLOv4網(wǎng)絡(luò)具有更快收斂速度。
如表2所示,YOLOv4網(wǎng)絡(luò)對(duì)交通圖像中的臉、手、手機(jī)、前窗、車牌的定位準(zhǔn)確率均高于YOLOv3網(wǎng)絡(luò),YOLOv4網(wǎng)絡(luò)對(duì)所有待檢測(cè)目標(biāo)進(jìn)行定位的mAP為91.59%,YOLOv3網(wǎng)絡(luò)對(duì)所有待檢測(cè)目標(biāo)進(jìn)行定位的mAP為77.29%,YOLOv4網(wǎng)絡(luò)的定位準(zhǔn)確率遠(yuǎn)遠(yuǎn)高于YOOLOv3網(wǎng)絡(luò),這是由于YOLOv4在對(duì)數(shù)據(jù)集進(jìn)行訓(xùn)練之前,首先對(duì)數(shù)據(jù)集進(jìn)行了如本文所述的Mosaic數(shù)據(jù)增強(qiáng)、自對(duì)抗訓(xùn)練等數(shù)據(jù)集增強(qiáng)方法,增強(qiáng)了數(shù)據(jù)集的完整性與網(wǎng)絡(luò)的容錯(cuò)性。
表2 檢測(cè)準(zhǔn)確率 %
YOLOv4網(wǎng)絡(luò)的檢測(cè)幀頻為38.41 FPS,YOLOv3網(wǎng)絡(luò)的檢測(cè)幀頻為28.89 FPS,YOLOv4網(wǎng)絡(luò)的檢測(cè)速度遠(yuǎn)快于YOLOv3網(wǎng)絡(luò),這是由于在YOLOv4網(wǎng)絡(luò)中增加了dropblock模塊,在增強(qiáng)網(wǎng)絡(luò)魯棒性的同時(shí),能夠減少網(wǎng)絡(luò)參數(shù),并且交叉小批量規(guī)范化方法更有助于單個(gè)GPU對(duì)數(shù)據(jù)集進(jìn)行訓(xùn)練。
圖12、13為實(shí)際檢測(cè)效果,圖12中,檢測(cè)到了圖片中的車前窗范圍內(nèi)存在人臉手部和手機(jī),且手部手機(jī)人臉存在交叉區(qū)域,因此可以判定圖片中存在駕駛過程中撥打手持電話的違章行為,車牌也同時(shí)被定位出來,能夠用于后續(xù)的車牌識(shí)別。圖13中雖然在車前窗檢測(cè)到手部和人臉,但未檢測(cè)到手機(jī),因此,不存在駕駛過程中撥打手持電話的違章行為。
圖12 存在違章行為檢測(cè)效果圖
圖13 不存在違章行為檢測(cè)效果圖
分別使用YOLOv3網(wǎng)絡(luò)與YOLOv4網(wǎng)絡(luò)在相同的數(shù)據(jù)集下進(jìn)行目標(biāo)檢測(cè)實(shí)驗(yàn),對(duì)交通圖像中的人臉、手部、手持電話、車前窗及車牌進(jìn)行檢測(cè),根據(jù)檢測(cè)結(jié)果判斷圖像中是否存在撥打手持電話的違章行為。使用YOLOv4網(wǎng)絡(luò)進(jìn)行目標(biāo)檢測(cè)的mAP為91.59%,使用YOLOv3網(wǎng)絡(luò)進(jìn)行目標(biāo)檢測(cè)的mAP為77.29%,YOLOv4網(wǎng)絡(luò)的檢測(cè)準(zhǔn)確率遠(yuǎn)遠(yuǎn)高于YOLOv3網(wǎng)絡(luò),且YOLOv4進(jìn)行目標(biāo)檢測(cè)時(shí)的幀頻為38.41 FPS,也比YOLOv3的幀頻28.89 FPS快得多,因此,使用YOLOv4網(wǎng)絡(luò)進(jìn)行違章行為檢測(cè)是一種有效可行的方法。