陳俊豪 蘇山杰
(重慶交通大學(xué)機(jī)電與車輛工程學(xué)院,重慶 400074)
主題詞:深度學(xué)習(xí) 目標(biāo)檢測(cè) 行人檢測(cè) 頭盔檢測(cè) 摩托車檢測(cè)
縮略語
SIFT Scale-Invariant Feature Transform
HOG Histogramof oriented gradient
NMS Non-Maximum Suppression
FPN Feature Pyramid Network
YOLO You Only Look Once
IOU Intersection Over Union
GIOU Generalized Intersection Over Union
CIOU Complete Intersection Over Union
SSD Single Shot Multibox Detector
ROI Region Of Interest
CA Coordinate Attention
mAP mean Average Precision
SE Squeeze-and-Excitation
SK Selective Kernel
SS Selective Search
CBAM Convolutional Block Attention Module
MLP Multilayer Perceptron
SVM Support Vector Machine
RCNN Region-CNN
RPN Region Proposal Network
CNN Convolutional Neural Network
NLP Natural Language Processing
FC Fully Connected
CV Computer Vision
QKV Query-Key-Value
TPU Tensor Processing Unit
LBP Local Binary Patterns
DIOU Distance Intersection Over Union
FPGA Field Programmable Gate Array
HLS HTTPLive Streaming
RGB Red-Green-Blue
BCNN Binary Complex Neural Network
FLOPs Floating Point Operations Per second
AP Average Precision
KL Kullback-Leibler Divergence
LBP Local Binary Pattern
2018年,世界衛(wèi)生組織發(fā)布了《2018年全球道路安全狀況》報(bào)告[1],報(bào)告顯示每年全球約有135萬人死于道路交通事故,其中28%的交通事故由摩托車引發(fā)。特別是在一些不發(fā)達(dá)地區(qū),由于城市基礎(chǔ)設(shè)施結(jié)構(gòu)和經(jīng)濟(jì)條件的限制,摩托車已經(jīng)成為主要的交通工具,這些地區(qū)的道路交通死亡率大約是發(fā)達(dá)地區(qū)的3倍。比如印度、越南、印度尼西亞等國(guó)家,摩托車交通事故死亡人數(shù)分別占所有交通事故死亡人數(shù)的43%和36%。世界衛(wèi)生組織指出,事故發(fā)生的主要原因是駕駛員以及行人違反交通規(guī)則。摩托車手的頭部受傷是死亡的主要原因[2],行人闖紅燈也會(huì)增加事故發(fā)生率。因此,非常有必要對(duì)駕駛員及行人的違規(guī)行為進(jìn)行管控,但要人為督促駕駛員與行人遵守交規(guī),需要投入極大的警力和財(cái)力。通過監(jiān)控抓拍違規(guī)車輛與行人,可以對(duì)事故多發(fā)地段進(jìn)行精準(zhǔn)管控,從而有效地降低成本和風(fēng)險(xiǎn)。
行人與摩托車是重要的交通參與者,國(guó)內(nèi)外少有文獻(xiàn)對(duì)摩托車、行人檢測(cè)進(jìn)行概述。本文通過綜述國(guó)內(nèi)外文獻(xiàn),總結(jié)常用的摩托車、行人檢測(cè)方法與難點(diǎn),前沿的改進(jìn)措施,以及可行的改進(jìn)方向。
由于摩托車頭盔與行人檢測(cè)不同于交通路況中的車輛檢測(cè),需要從摩托車頭盔與行人的檢測(cè)特點(diǎn)與任務(wù)出發(fā)才能更好的應(yīng)對(duì)復(fù)雜環(huán)境。
監(jiān)控視頻中的頭盔類目標(biāo)與行人目標(biāo)尺度變化大,容易出現(xiàn)小目標(biāo)。在小目標(biāo)檢測(cè)過程中,隨著檢測(cè)網(wǎng)絡(luò)層數(shù)的增加與圖片進(jìn)行池化操作容易造成信息丟失。摩托車頭盔與行人這類目標(biāo)容易發(fā)生聚集現(xiàn)象,導(dǎo)致目標(biāo)之間互相遮蔽,增大檢測(cè)難度。復(fù)雜的背景,如光線、天氣、噪音等不確定因素,可能將自行車、電瓶車檢測(cè)為摩托車,從而出現(xiàn)誤檢。駕駛員頭盔的顏色與行人的姿態(tài)多種多樣,使得檢測(cè)樣本不均衡。
精準(zhǔn)捕捉到監(jiān)控視頻或圖片信息中的駕駛員與行人的信息,并判斷駕駛員和乘員是否佩戴頭盔,檢測(cè)任務(wù)主要分目標(biāo)定位與分類:
(1)目標(biāo)定位:邊界框(Bounding box)在目標(biāo)檢測(cè)中用來找到檢測(cè)物體并分類。用邊界框框選出駕駛員頭部與行人范圍,并標(biāo)記其中心位置。
(2)目標(biāo)分類:定位到頭部位置與行人后,需要判斷出頭部是否佩戴頭盔,以及行人是否出現(xiàn)違反交通規(guī)則的行為。
傳統(tǒng)的機(jī)器學(xué)習(xí)算法需要手工提取特征,對(duì)操作人員的實(shí)際操作經(jīng)驗(yàn)和理論知識(shí)都有較高要求,而且有泛化能力差的劣勢(shì)。隨著近年來軟件、硬件和大數(shù)據(jù)的發(fā)展,深度學(xué)習(xí)算法得到了飛躍發(fā)展,深度學(xué)習(xí)算法精度、速度、泛化能力都明顯優(yōu)于傳統(tǒng)的機(jī)器學(xué)習(xí)算法。因此,利用深度學(xué)習(xí)網(wǎng)絡(luò)檢測(cè)成為了目標(biāo)檢測(cè)發(fā)展新方向[3]。
過去十幾年中,目標(biāo)識(shí)別算法主要是以尺度不變特征變換方法(Scale-Invariant Feature Transform,SIFT)[4]和方向梯度直方圖方法(Histogram of Oriented Gradient,HOG)[5]為主流的傳統(tǒng)機(jī)器學(xué)習(xí)算法。2012年Krizhevsky等提出的AlexNet[6]在ILSVRC目標(biāo)識(shí)別大賽中獲得第1名,Top5錯(cuò)誤率達(dá)到15%。之后涌現(xiàn)出VGG[7]、GoogleNet[8]、ResNet[9]等網(wǎng)絡(luò),隨后R-CNN將AlexNet在ImageNet目標(biāo)識(shí)別的能力泛化到PASCAL VOC目標(biāo)檢測(cè)上來。表1為R-CNN[10]、Fast RCNN[11]、Faster R-CNN[12]的網(wǎng)絡(luò)組成。
表1 R-CNN、Fast R-CNN、Faster R-CNN網(wǎng)絡(luò)組成
3.1.1 R-CNN[10]
R-CNN的流程圖如圖1所示,具體流程如下:
圖1 R-CNN流程[10]
(1)圖片使用選擇性搜索(Selective Search,SS)生成1 000~2 000個(gè)候選區(qū)域;
(2)依次將候選區(qū)域送入深度網(wǎng)絡(luò)提取特征;
(3)將特征送入支持向量機(jī)(Support Vector Machine,SVM)分類器,判斷類別;
(4)使用回歸器精修候選區(qū)域位置。
3.1.2 Fast R-CNN[11]
Fast R-CNN的流程圖如圖2所示,具體流程如下:
圖2 Fast-RCNN流程[11]
(1)圖片通過SS生成1 000~2 000個(gè)候選區(qū)域;
(2)將圖片輸入深度網(wǎng)絡(luò)獲取相應(yīng)的特征圖,將第一步生成的候選框投影到特征圖上獲得特征矩陣;
(3)將每個(gè)特征矩陣通過興趣池(ROIPooling)縮放到統(tǒng)一大小的特征圖(如7×7);
(4)展平特征矩陣,通過一系列全連接層得到預(yù)測(cè)結(jié)果。
3.1.3 Faster R-CNN[12]
Faster R-CNN的流程圖如圖3所示,具體流程如下:
圖3 Faster R-CNN流程圖[12]
(1)圖片通過深度網(wǎng)絡(luò)生成特征圖;
(2)特征圖使用區(qū)域生成網(wǎng)絡(luò)(Region Proposal Network,RPN)生成候選框,再將候選框投影到特征圖上獲得特征矩陣;
(3)特征矩陣通過ROIPooling縮放到統(tǒng)一大小的特征圖(如7×7);
(4)展平特征圖并通過一系列全連接層獲得預(yù)測(cè)結(jié)果。
R-CNN先將SS網(wǎng)絡(luò)中生成候選區(qū)域依次輸入網(wǎng)絡(luò)中,所以消耗的時(shí)間較長(zhǎng)。R-CNN雖然將檢測(cè)率從35.1%提升到53.7%,但訓(xùn)練速度慢。在Fast R-CNN中,圖片分別通過RPN網(wǎng)絡(luò)與特征提取網(wǎng)絡(luò),隨后將RPN網(wǎng)絡(luò)生成的候選區(qū)域一起映射到特征圖中,速度得到了改善,但是候選區(qū)域的生成還是依靠SS,所以耗時(shí)仍然較長(zhǎng),每張圖片耗時(shí)3 s。Faster R-CNN將原本的SS算法替代為RPN網(wǎng)絡(luò),速度得到了較大的提升,速度達(dá)到了10 ms但仍然達(dá)不到實(shí)時(shí)檢測(cè)的要求。
二階段算法需要先通過CNN網(wǎng)絡(luò)得到候選框,再進(jìn)行分類與回歸,所以檢測(cè)速度較慢,F(xiàn)aster RCNN檢測(cè)速度最快,但只能達(dá)到17幀/s,達(dá)不到實(shí)時(shí)檢測(cè)的要求。一階段算法直接對(duì)物體進(jìn)行分類與預(yù)測(cè),主要是單次多邊框檢測(cè)(Single Shot Multibox Detector,SSD)算法與YOLO系列算法,速度上能夠達(dá)到實(shí)時(shí)檢測(cè)的要求。
3.2.1 SSD算法[13]
SSD算法與YOLO算法都屬于一階段算法,SSD算法在算法推出時(shí),其速度和精度都優(yōu)于YOLO算法,相對(duì)于Faster R-CNN而言,SSD算法不需要先獲取候選框再進(jìn)行分類與回歸,這是SSD算法在速度上優(yōu)于二階段算法的原因。SSD算法與YOLO算法主要分為3個(gè)方面:
(1)采用卷積直接做檢測(cè);
(2)SSD算法提取了不同尺度的特征圖來做檢測(cè),大尺度特征圖(較靠前的特征圖)可以用來檢測(cè)小物體,而小尺度特征圖(較靠后的特征圖)用來檢測(cè)大物體;
(3)SSD算法采用了先驗(yàn)框,特征圖的每個(gè)像素處都會(huì)生成不同尺寸、不同長(zhǎng)寬比例的先驗(yàn)框,SSD 300中一共有5個(gè)不同尺寸的特征圖,每個(gè)像素有4個(gè)先驗(yàn)框,經(jīng)過計(jì)算一共有8 732個(gè)先驗(yàn)框。SSD算法算采用了密集采樣方法,避免了正負(fù)樣本不平衡的問題。
YOLO算法缺點(diǎn)是難以檢測(cè)小目標(biāo),而且定位不準(zhǔn),SSD算法使用先驗(yàn)框、多尺度檢測(cè)的方法在一定程度上克服這些缺點(diǎn)。
3.2.2 YOLOV1算法[14]
2016年,Joseph Redmon等提出了YOLO算法,YOLO算法的核心思想就是利用整張圖作為網(wǎng)絡(luò)的輸入,直接在輸出層回歸邊界框的位置及其所屬的類別,將目標(biāo)檢測(cè)問題轉(zhuǎn)換為回歸問題。損失函數(shù)由坐標(biāo)損失、置信度損失和類別預(yù)測(cè)損失構(gòu)成。
YOLOV1算法將圖片分為7×7的網(wǎng)格,每個(gè)網(wǎng)格負(fù)責(zé)預(yù)測(cè)中心點(diǎn)落到該網(wǎng)格內(nèi)部的目標(biāo),這無需通過RPN網(wǎng)絡(luò)來獲得感興趣區(qū)域,所以YOLO算法可以獲得快速的預(yù)測(cè)速度。
主要步驟如下:
(1)劃分圖片為S×S個(gè)網(wǎng)格;
(2)每個(gè)網(wǎng)格負(fù)責(zé)B個(gè)邊界框的預(yù)測(cè),邊界框由(x,y,w,h,Confidence)張量組成(圖4);
圖4 YOLO V1預(yù)測(cè)張量[14]
(3)每個(gè)網(wǎng)格預(yù)測(cè)一個(gè)類別信息(一共有C類);
(4)網(wǎng)絡(luò)輸出S×S×(5×B+C)的張量。
YOLOV1算法的優(yōu)點(diǎn):
(1)速度快,標(biāo)準(zhǔn)版可達(dá)到45幀/s,極速版達(dá)到150幀/s,能以小于25 ms的延遲進(jìn)行實(shí)時(shí)檢測(cè);
(2)在實(shí)時(shí)檢測(cè)系統(tǒng)中,YOLO算法的實(shí)時(shí)檢測(cè)精度是其它系統(tǒng)的2倍;
(3)遷移能力強(qiáng),能夠應(yīng)用到其它領(lǐng)域。
YOLOV1算法的缺點(diǎn):
(1)小目標(biāo)和擁擠的目標(biāo)檢測(cè)(由于一個(gè)網(wǎng)格只能預(yù)測(cè)2個(gè)框,并且只能是同一類),當(dāng)一個(gè)網(wǎng)格同時(shí)出現(xiàn)多個(gè)類時(shí),無法檢測(cè)所有類;
(2)定位誤差大(損失函數(shù)影響);
(3)對(duì)不常見的角度目標(biāo)泛化性較差。
3.2.3 YOLOV2算法[15]
YOLOV2算法在速度與精度上都超過了YOLO V1算法,同時(shí)速度上也超過了SSD算法,在YOLOV1算法的基礎(chǔ)之上進(jìn)行了8項(xiàng)改進(jìn)。
(1)批標(biāo)準(zhǔn)化(Batch Normalization)使得性能提高了2%;
(2)高分辨率分類器,圖片從224×224分辨率增加到448×448的分辨率,使得mAP提高了4%;
(3)引入錨框(Anchor box);
(4)使用聚類方法選擇合適的錨框;
(5)特征融合;
(6)去掉了全連接(Fully Connected,F(xiàn)C)層;
(7)多尺度訓(xùn)練;
(8)使用了Darknet-19。
YOLOV2算法主要是提高了召回率和定位能力,借鑒Faster R-CNN的思想預(yù)測(cè)邊界框的偏移,移除了全連接層,刪掉了一個(gè)池化層(Pooling)使特征的分辨率更大。調(diào)整了網(wǎng)絡(luò)的輸入,使得位置坐標(biāo)為奇數(shù),這樣就只有一個(gè)中心點(diǎn)。加上錨框能預(yù)測(cè)超過1 000個(gè)檢測(cè)目標(biāo),將mAP提高了15.2%。通過表1可以看出YOLOV2算法在精度上已經(jīng)超過了SSD算法,速度上已經(jīng)達(dá)到了實(shí)時(shí)檢測(cè)的要求。YOLOV2算法雖然在YOLOV1算法的基礎(chǔ)上精度得到了改良,但仍存在正負(fù)樣本不平衡的問題。
3.2.4 YOLOV3算法[16]
YOLOV3的主要?jiǎng)?chuàng)新點(diǎn)如下:
(1)骨干網(wǎng)絡(luò)(Backbone)使用更深的網(wǎng)絡(luò),采用Darknet-53替換掉原來YOLOV2的Darknet-19;
(2)利用特征金字塔進(jìn)行多尺度融合。選擇3種不同形狀的Anchor,每種Anchor有3種不同的尺度,一共使用9種不同的Anchor預(yù)測(cè)目標(biāo);
(3)分類方法上使用邏輯回歸代替Softmax;使用多標(biāo)簽分類替換YOLOV2中的單標(biāo)簽分類。
3.2.5 其它YOLO算法
2020年Redom退出計(jì)算機(jī)視覺(Computer Vision,CV)領(lǐng)域,關(guān)于YOLO算法的研究大多數(shù)是在YOLO系列算法的基礎(chǔ)上利用數(shù)據(jù)增強(qiáng)、Backbone、損失函數(shù)方法進(jìn)行改進(jìn),精度和速度上都取得了進(jìn)步。
Alexery Bochkovskiy在2020年推出了YOLO V4算法[17],同年ULtralytics發(fā)布了YOLOV5算法,首次在YOLO算法中引入Focus結(jié)構(gòu)。
2021年,曠視科技[18]推出了YOLOX,YOLOX-L版本,以68.9幀/s的速度在COCO數(shù)據(jù)集上實(shí)現(xiàn)了50.0%的mAP,比同版本的YOLO V5-L算法高出1.8%,YOLOX算法最大的改進(jìn)如下:
(1)拋棄了YOLO算法以往的檢測(cè)頭,使用雙檢測(cè)頭(Decoupled head),實(shí)現(xiàn)分離、分類與定位操作;
(2)增加無錨框(Anchor-free)機(jī)制,預(yù)測(cè)框的數(shù)量從3個(gè)降為1個(gè),直接預(yù)測(cè)網(wǎng)格左上角的偏移量、預(yù)測(cè)框的寬與高。減緩了YOLO正負(fù)樣本不匹配帶來的影響,同時(shí)降低了參數(shù)量與GFLOPS,加快預(yù)測(cè)速度;
(3)搭配SimOTA標(biāo)簽分配策略。
Transformer模型[19]開始用于NLP領(lǐng)域,隨著多模態(tài)的發(fā)展趨勢(shì),Transformer模型被用于分類、檢測(cè)、分割等圖像領(lǐng)域。Transformer模型的工作原理是利用QKV矩陣計(jì)算檢測(cè)圖片各像素的相關(guān)性,采用Encoder-Decoder結(jié)構(gòu),不斷的實(shí)現(xiàn)解碼與編碼,結(jié)構(gòu)如圖5。
圖5 Encoder-decoder結(jié)構(gòu)[19]
在CV領(lǐng)域中采用Transformer模型的結(jié)構(gòu)主要有2種結(jié)構(gòu)框架。一種是純Transformer模型,另一種是CNN與Transformer結(jié)合的混合模型。
純Transformer模型中主要以Vit[20]模型為代表,2020年Vit推進(jìn)Transformer模型在視覺領(lǐng)域的發(fā)展。金字塔視覺轉(zhuǎn)換器(Pyramid Vision Transformer,PVT)和Swin Transformer都是建立在Vit的基礎(chǔ)之上的。主要流程是將圖片切塊,通過FC將圖像轉(zhuǎn)換為向量,然后加上位置編碼,最后輸入Enconder中,通過MLP head完成分類任務(wù)。通過JFT300M的預(yù)訓(xùn)練,訓(xùn)練結(jié)果可以超過ResNet152和EfficienNet[21],需要的TPU消耗更少,得到結(jié)果數(shù)據(jù)量越大,訓(xùn)練的結(jié)果越好,因?yàn)闆]有限制網(wǎng)絡(luò)自身的表達(dá)能力,在數(shù)據(jù)量增大的情況下,卷積網(wǎng)絡(luò)效果會(huì)出現(xiàn)瓶頸(圖6)。
圖6 Vit結(jié)構(gòu)[20]
原始的Transformer模型需要計(jì)算每個(gè)像素間的相關(guān)性,計(jì)算規(guī)模與圖片的大小成平方關(guān)系,此時(shí)在目標(biāo)檢測(cè)領(lǐng)域仍然是卷積神經(jīng)網(wǎng)絡(luò)處于主導(dǎo)地位。2021年3月,微軟推出了Swin Transformer[22],設(shè)計(jì)思想吸收了殘差神經(jīng)網(wǎng)絡(luò)(ResNet),從全局到局部,極大減小了運(yùn)算規(guī)模,并應(yīng)用到目標(biāo)檢測(cè)領(lǐng)域,檢測(cè)效果超過了Faster R-CNN、YOLO、SSD檢測(cè)算法。
對(duì)Transformer模型的改進(jìn)方面,主要是注意力窗口(Window attention)與滑動(dòng)注意力窗口(Shift window attention)(圖7)。Window attention是按照一定的尺寸將圖像劃分為不同的Windows,每次Transformer的Attention只在Window內(nèi)部進(jìn)行計(jì)算,只是使用Window attention會(huì)使得像素點(diǎn)的感受野(Receptive Field)受到限制;Shift window attention則是劃分Window的方式,起到提高像素感受野的作用。
圖7 Shift window attention結(jié)構(gòu)[22]
從表2中可以看出,YOLO系列算法的精度趕上了一階段算法,速度上也是遠(yuǎn)超一階段算法,達(dá)到了77幀/s,所以在智能駕駛行業(yè),常用YOLO系列算法對(duì)道路安全進(jìn)行實(shí)時(shí)監(jiān)控。
表2 目標(biāo)檢測(cè)算法在VOC數(shù)據(jù)集的mAP與FPS
Doungmala等[23]使用Haar特征提取器對(duì)全頭盔進(jìn)行檢測(cè),使用圓形霍夫變換(Hough transform)對(duì)半頭盔進(jìn)行檢測(cè)。Dhwani等[24]采用閾值法對(duì)移動(dòng)車輛進(jìn)行檢測(cè)。根據(jù)寬高比和面積判斷是否為摩托車手,然后確定感興趣區(qū)域用級(jí)聯(lián)分類器檢測(cè)相應(yīng)區(qū)域。Li等[25]使用ViBe背景減法來檢測(cè)移動(dòng)的物體,使用梯度直方圖和SVM分類器對(duì)頭盔進(jìn)行檢測(cè)。Adam等[26]在安全帽的位置獲得圓弧,利用質(zhì)心位置計(jì)算圓弧參數(shù),使用幾何特征來驗(yàn)證該集合中是否存在安全帽。Silva等[27]根據(jù)幾何形狀和紋理特征的模型檢測(cè)無頭盔的車輛,然后使用Hough transform和SVM來檢測(cè)摩托車手頭部。
Shine等[28]得出CNN網(wǎng)絡(luò)在檢測(cè)速度與精度上更優(yōu)于手工提取特征。Vishnu等[29]使用自適應(yīng)背景減法來獲得運(yùn)動(dòng)目標(biāo),利用CNN網(wǎng)絡(luò)在運(yùn)動(dòng)對(duì)象中選擇摩托車手,最后在圖片局部應(yīng)用CNN來進(jìn)一步識(shí)別不戴頭盔駕駛的摩托車手。Yogamccna等[30]利用高斯混合模型對(duì)前景目標(biāo)進(jìn)行分割并標(biāo)記,然后采用Faster R-CNN檢測(cè)已標(biāo)記的前景對(duì)象中的摩托車,利用字符序列編碼的CNN模型和空間轉(zhuǎn)換器識(shí)別無頭盔摩托車手的編號(hào)。這類算法先使用傳統(tǒng)機(jī)器學(xué)習(xí)算法從前景分割出摩托車,然后使用深度學(xué)習(xí)網(wǎng)絡(luò)對(duì)頭盔進(jìn)行分類,與傳統(tǒng)機(jī)器學(xué)習(xí)算法比,這類算法速度與精度更好。雖然頭盔檢測(cè)采用了深度學(xué)習(xí)的方法,但在摩托車檢測(cè)階段使用傳統(tǒng)方法來獲取前景目標(biāo),在擁擠的場(chǎng)景中效果會(huì)很差。
Kietikul等[31]使用目標(biāo)濾波技術(shù)和2個(gè)CNN從監(jiān)控?cái)z像機(jī)中檢測(cè)出無頭盔的摩托車手。Khan[32]使用YOLO V3-tiny,在COCO數(shù)據(jù)集上預(yù)訓(xùn)練,然后在摩托車檢測(cè)數(shù)據(jù)集進(jìn)行微調(diào),實(shí)現(xiàn)對(duì)摩托車駕駛員頭盔佩戴情況的檢測(cè)。Saumya等[33]使用YOLOV3模型來識(shí)別自行車駕駛者,二值圖像的垂直投影用于計(jì)算超超載人數(shù)。Han等[34]在SSD低層特征中加入空間注意力機(jī)制,在高層特征采用通道注意力機(jī)制,最終設(shè)計(jì)了一種錨框的自適應(yīng)方法。
Dailey M等[35]使用YOLO摩托車檢測(cè)和頭盔違章分類。Santhosh等[36]與Dasgupta等[37]分別使用SSD算法與YOLOV3算法來檢測(cè)摩托車區(qū)域,最后提取圖像的上部,使用分類算法來識(shí)別是否佩戴頭盔。當(dāng)摩托車上有多人時(shí),分類算法容易失效。Jiawei等[38]使用改進(jìn)的YOLOV5算法從視頻監(jiān)控中檢測(cè)出摩托車,再次通過改進(jìn)YOLOV5以判斷是否佩戴頭盔。其中YOLOV5算法設(shè)計(jì)了三通道(Tiplet)注意力機(jī)制,加強(qiáng)特征融合,使用緩和極大值(Soft—NMS)取代NMS,解決遮蔽問題。Boonsirisumpun等[39]使用SSD算法檢測(cè)頭盔。用一個(gè)CNN網(wǎng)絡(luò)來檢測(cè)摩托車和騎手的包圍盒區(qū)域,同時(shí)對(duì)配戴頭盔進(jìn)行分類。Lin等[40-41]在泰國(guó)的7個(gè)城市收集了91 000幀摩托車安全帽佩戴視頻數(shù)據(jù)集,使用RetinaNet設(shè)計(jì)新的位置編碼,克服了正負(fù)樣本不平衡的問題。蔣良衛(wèi)等[42]使用YOLO V3算法,骨干網(wǎng)絡(luò)(Backbone)使用ResNeXt50[43]作為新的特征提取網(wǎng)絡(luò)并融合SPPNet,使用CIOU優(yōu)化損失函數(shù),結(jié)合DeepSort完成對(duì)安全頭盔佩戴情況的實(shí)時(shí)跟蹤。
Mu等[44]基于行人特點(diǎn)對(duì)局部二值模式(Local Binary Pattern,LBP)的2種變化進(jìn)行運(yùn)用;Wang等[45]利用SVM同時(shí)融合HOG與LPB特點(diǎn),解決圖片遮蔽問題的缺陷;鄧健鋒等[46]使用FPGA采集圖像信息,利用HLS對(duì)圖像進(jìn)行加速,然后使用CENTRIST+SVM完成定位。
Ren等[47]融合R-CNN與SSD來檢測(cè)RGB圖像中的人物,在光線不足的復(fù)雜背景下,mAP達(dá)到91.5%。
Wu等[48]提出了一種增強(qiáng)卷積神經(jīng)網(wǎng)絡(luò)(Binary Complex Neural Network,BCNN)系統(tǒng),該算法提出了一種加權(quán)損失函數(shù),該函數(shù)在訓(xùn)練CNN時(shí)突出了對(duì)可能目標(biāo)的選定加權(quán),增加了檢測(cè)的真陽率,同時(shí)算法復(fù)雜度較低,檢測(cè)時(shí)間對(duì)比同等級(jí)算法并不處于劣勢(shì)。在Caltech數(shù)據(jù)集上對(duì)數(shù)平均缺失率為11.40%。
Mao等[49]針對(duì)行人檢測(cè)中行人與背景區(qū)分度低的情況,改進(jìn)Faster R-CNN算法,提出超參數(shù)學(xué)習(xí)(Hyper-Learner)算法。
陳一瀟等[50]針對(duì)擁擠行人檢測(cè)難點(diǎn),使用Res2Block作為主干網(wǎng)絡(luò),提高網(wǎng)絡(luò)的特征融合能力,使用坐標(biāo)注意力機(jī)制(Coordinate Attention,CA)增加目標(biāo)定位能力,最后在行人檢測(cè)任務(wù)中,速度達(dá)到了51幀/s,精度提高了3.75%。
對(duì)摩托車的頭盔與行人檢測(cè)需要實(shí)時(shí)性能,所以一階段目標(biāo)檢測(cè)成為了首選,在檢測(cè)上主要會(huì)遇到以下難點(diǎn),即遮蔽、誤判、小目標(biāo)和輕量化網(wǎng)絡(luò)所帶來的精度減少的問題。一般從數(shù)據(jù)、主干網(wǎng)絡(luò)、注意力機(jī)制、損失函數(shù)和輕量化出發(fā)解決以上的檢測(cè)問題。
4.3.1 數(shù)據(jù)
數(shù)據(jù)增強(qiáng)可以防止訓(xùn)練過程中模型過擬合,以及降低標(biāo)注成本與擴(kuò)充數(shù)據(jù)集。為了防止CNN過于關(guān)注一個(gè)小的中間激活集或輸入圖像上的一個(gè)小區(qū)域,提出了隨機(jī)特征去除正則化。在隨機(jī)失活(Dropout)用于隨機(jī)刪除隱藏激活,用于刪除輸入上的隨機(jī)區(qū)域。特征去除策略通過讓模型不僅關(guān)注對(duì)象中最具辨識(shí)性的部分,而且關(guān)注整個(gè)對(duì)象區(qū)域,從而提高泛化和定位能力。
YOLO V4、YOLO V5、YOLOX算法沒有在YOLO V3的結(jié)構(gòu)上進(jìn)行明顯改進(jìn),而是使用各種數(shù)據(jù)增強(qiáng)方法在數(shù)據(jù)層面使得模型的精度與速度得到提升(如Focs,Cutmix,Cutout,Mosaic等)。
關(guān)于使用位置編碼,Chen等[51]提出一種將騎車人數(shù)量、位置和頭盔使用情況數(shù)據(jù)進(jìn)行集成的新方法。利用一種新的編碼方案,將摩托車頭盔使用分類問題由多類分類問題轉(zhuǎn)化為多類二值分類問題的組合(圖8)。
圖8 位置編碼[53]
4.3.2 主干網(wǎng)絡(luò)
優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu)方面,多尺度特征融合通過融合低層位置信息和高層分類信息,可以明顯提高檢測(cè)精度。張永亮等[52]在YOLOV4算法中采用設(shè)計(jì)多尺寸特征,提取模塊和增強(qiáng)特征融合模塊,改進(jìn)算法同時(shí)提升了定位和分類交通標(biāo)志的能力。金雨芳等[53]在YOLOV4的基礎(chǔ)上,增加128×128特征圖的輸出,基于密集連接的思想,將特征提取網(wǎng)絡(luò)輸入的4個(gè)不同尺度的特征層進(jìn)行重新連接,平均精度高達(dá)91.17%,相比原網(wǎng)絡(luò)檢測(cè)精度提高了2.96%,檢測(cè)速度達(dá)53幀/s。
Wang等[54]在YOLOV4中采用像素洗牌法代替插值采樣法,解決了低分辨率特征圖與高分辨率特征圖融合時(shí)信息丟失的問題。引入Ghost Net和Squeeze Net減少了網(wǎng)絡(luò)的時(shí)延和網(wǎng)絡(luò)參數(shù)。頭盔類和無頭盔類的mAP增加了約5%,相應(yīng)層的參數(shù)和浮點(diǎn)數(shù)(FLOPs)都減少了50%,模型尺寸減少了20%。
4.3.3 注意力機(jī)制
通道注意力機(jī)制(Squeeze-and-Excitation Networks,SE)使用2維全局池化計(jì)算通道注意力,以相當(dāng)?shù)偷某杀咎嵘诵阅埽诰矸e核的注意力機(jī)制(Selective Kernel Networks,SK)則是在SE的基礎(chǔ)上增加不同尺寸的卷積核,完成對(duì)不同尺寸目標(biāo)的注意,SE與SK只考慮編碼通道間信息而忽略位置信息的重要性。通道空間注意力機(jī)制(Channel Block Attention Model,CBAM)使用空間注意力完成了對(duì)位置信息的利用,而卷積只能獲得局部的位置關(guān)系。坐標(biāo)注意力機(jī)制(Coordinate Attention,CA)使用2種轉(zhuǎn)化分別沿著2個(gè)空間方向聚合,一個(gè)保存沿著一個(gè)空間方向的長(zhǎng)期依賴關(guān)系,并保存另一個(gè)方向的精確位置關(guān)系。
趙夢(mèng)等[55]針對(duì)模糊情況、失真場(chǎng)景使用了SK結(jié)合YOLOV5算法,有效的解決了水下模糊圖片的識(shí)別問題。
王玲敏等[56]在YOLOV5的主干網(wǎng)絡(luò)中加入了CA,使網(wǎng)絡(luò)可以在更大的感受野中進(jìn)行注意,使用加權(quán)雙向特征金字塔網(wǎng)絡(luò)加權(quán)雙向特征網(wǎng)絡(luò)(BiFPN)網(wǎng)絡(luò)替代原有的特征融合層,實(shí)現(xiàn)高效的雙向尺度連接與特征融合,在自制安全帽數(shù)據(jù)集上進(jìn)行了測(cè)試,平均精度提高了5%。
王靜等[57]針對(duì)白細(xì)胞數(shù)據(jù)樣本量上、類間差別小以及目標(biāo)尺寸小的問題,在YOLOV5的主干網(wǎng)絡(luò)中添加坐標(biāo)注意力機(jī)制CA,同時(shí)使用四尺度特征檢測(cè)來提高小目標(biāo)的識(shí)別精度,mAP提高了3.8%。
Zhang等[58]在YOLOV5算法的骨干網(wǎng)絡(luò)中加入深度方式坐標(biāo)注意力機(jī)制(Depthwise Coordinate Attention,DWCA)和K-Means++,使網(wǎng)絡(luò)可以獨(dú)立學(xué)習(xí)各個(gè)通道的權(quán)重,增加區(qū)分前景、背景的能力,提高了先驗(yàn)錨框的匹配度,比YOLOV5頭盔檢測(cè)的平均精度提高了3%。
4.3.4 損失函數(shù)
對(duì)于一階段檢測(cè)模型的損失函數(shù),定位信息與分類信息適合不同的卷積參數(shù),如YOLOX的雙檢測(cè)頭。
交并比(IOU)作為損失函數(shù)時(shí),如果2個(gè)物體不重疊,不會(huì)反映2個(gè)形狀之間的距離,此時(shí)梯度為0,無法進(jìn)行梯度回傳。廣義交并比(GIOU)則是采用IOU減去2框交集與并集的比,解決了損失(Loss)為零時(shí)梯度不回傳的問題,但出現(xiàn)邊界框覆蓋真實(shí)框(Ground truth)時(shí),只要邊界框與真實(shí)框的面積不變,不管2個(gè)框的位置在哪里,IOULoss與GIOU Loss都是一個(gè)定值,因此可以忽略2個(gè)框的中心位置。距離交并比(DIOU)則是引入了2個(gè)框中心的距離作為懲罰項(xiàng)來限制中心點(diǎn)的位置??紤]到邊界框回歸3要素中的長(zhǎng)寬比還沒被考慮到計(jì)算中,進(jìn)一步在DIOU的基礎(chǔ)上提出了完整交并比完整交并比(CIOU)。
表3 IOU、GIOU、DIOU、CIOU在COCO數(shù)據(jù)集上的表現(xiàn)
于娟等[59]針對(duì)無人機(jī)圖像中的小目標(biāo)與遮蔽目標(biāo),在YOLO V5的基礎(chǔ)上使用相對(duì)熵(Kullback-Leibler,KL)散度損失函數(shù)替代原有的置信度損失的交叉熵函數(shù),提高模型的泛化能力。研究人員將殘差模塊替換為沙漏(LSandGlass)模塊,減少低分辨率的語義損失。
Wu等[60]采用多尺度骨干網(wǎng)絡(luò)增強(qiáng)結(jié)構(gòu)(Im-Res2Net),利用增強(qiáng)的EN-PAN進(jìn)行特征融合,并使用焦點(diǎn)損失(Focal loss)緩解了正負(fù)本不平衡的狀況,在IOU等于0.5的水平上獲得92.8%的高準(zhǔn)確率。徐守坤等[61]通過對(duì)Faster-RCNN運(yùn)用多尺度訓(xùn)練和增加錨點(diǎn)數(shù)量,提高網(wǎng)絡(luò)檢測(cè)不同目標(biāo)的魯棒性,使用在線困難樣本的挖掘策略,解決了正負(fù)樣本的不均衡問題,提高了對(duì)安全帽檢測(cè)精度,比原始的Faster R-CNN準(zhǔn)確率提高了7%。Zhang等[62]在YOLOV3的基礎(chǔ)上使用Anchor free和Focal loss方法避免正負(fù)樣本的不平衡帶來的問題,同時(shí)采用GIOU作為損失函數(shù),改善了均方誤差。
4.3.5 輕量化
實(shí)現(xiàn)網(wǎng)絡(luò)輕量化使網(wǎng)絡(luò)參數(shù)、模型結(jié)構(gòu)變小,不可避免的犧牲檢測(cè)精度。
經(jīng)典目標(biāo)檢測(cè)依賴于CNN作為主干進(jìn)行特征提取。一些優(yōu)秀的基礎(chǔ)網(wǎng)絡(luò),如VGGNet、ResNet等,雖然能很好地提取特征,但是這些網(wǎng)絡(luò)的計(jì)算量很大,特別是用于嵌入式設(shè)備時(shí),依靠這些網(wǎng)絡(luò)設(shè)計(jì)的物體檢測(cè)模型很難達(dá)到實(shí)時(shí)性的要求。因此要對(duì)模型進(jìn)行加速,一方面對(duì)訓(xùn)練好的復(fù)雜模型進(jìn)行壓縮得到小模型,另一方面直接設(shè)計(jì)小模型并進(jìn)行訓(xùn)練,如Mobilenet、Shufflenet、Mixnet等。
在摩托車頭盔檢測(cè)領(lǐng)域中,主要分為傳統(tǒng)的檢測(cè)算法、混合算法、深度學(xué)習(xí)算法。傳統(tǒng)的檢測(cè)算法通過頭盔的外形輪廓進(jìn)行目標(biāo)定位與分類,忽略了更深的語義信息導(dǎo)致檢測(cè)效果偏差?;旌纤惴ɡ脗鹘y(tǒng)算法對(duì)目標(biāo)進(jìn)行摩托車與背景分類,再通過深度學(xué)習(xí)算法對(duì)檢測(cè)出的摩托車進(jìn)行頭盔分類,混合算法在檢測(cè)的第一步依賴傳統(tǒng)算法,難以在復(fù)雜工況下檢測(cè)出摩托車,導(dǎo)致混合算法的精度較低。深度學(xué)習(xí)算法直接通過檢測(cè)網(wǎng)絡(luò)從圖片中檢測(cè)出駕駛員與乘客的頭部,可以成功地從復(fù)雜工況下檢測(cè)出駕駛員是否佩戴頭盔。近年來深度學(xué)習(xí)算法成為了摩托車頭盔檢測(cè)領(lǐng)域的主流算法。
在行人檢測(cè)領(lǐng)域中,傳統(tǒng)的檢測(cè)算法大多數(shù)建立在二值法的基礎(chǔ)上,檢測(cè)中圖片丟失了顏色信息,不利于模型分類,同時(shí)傳統(tǒng)算法對(duì)遮蔽情況的處理也是不利的;使用深度學(xué)習(xí)算法,解決了傳統(tǒng)算法常見的色彩丟失問題,精度上超過了傳統(tǒng)的檢測(cè)算法,所以深度學(xué)習(xí)算法是行人檢測(cè)算法的發(fā)展趨勢(shì)。
近年來深度學(xué)習(xí)算法成為摩托車頭盔檢測(cè)與行人檢測(cè)的主流算法,出現(xiàn)了大量針對(duì)模型改進(jìn)的方法。主要從數(shù)據(jù)、主干網(wǎng)絡(luò)、注意力機(jī)制、損失函數(shù)輕量化5個(gè)角度出發(fā)。數(shù)據(jù)主要使用各種的數(shù)據(jù)增強(qiáng)方法,近年來出現(xiàn)的位置編碼成功解決了樣本的不平衡問題。骨干網(wǎng)絡(luò)主要從位置與分類信息出發(fā),融合低層位置信息與高層分類信息。注意力機(jī)制從通道、空間、位置之間的關(guān)系出發(fā),增強(qiáng)模型對(duì)目標(biāo)的敏感程度。損失函數(shù)從預(yù)測(cè)框的角度出發(fā),文章研究趨勢(shì)傾向于無錨框方式。輕量化趨向使用輕量化網(wǎng)絡(luò)替換檢測(cè)網(wǎng)絡(luò)中的骨干網(wǎng)絡(luò)。
本文首先對(duì)摩托車頭盔與行人的檢測(cè)特點(diǎn)與任務(wù)進(jìn)行總結(jié)。其次針對(duì)常見的目標(biāo)檢測(cè)模型進(jìn)行分析,二階段算法精度高但是速度慢,滿足不了實(shí)時(shí)檢測(cè)的要求,一階段算法在精度上已經(jīng)滿足了檢測(cè)精度,速度也可以滿足實(shí)時(shí)檢測(cè)的要求。然后總結(jié)國(guó)內(nèi)外具有代表性的摩托車與行人檢測(cè)相關(guān)文獻(xiàn),深度學(xué)習(xí)算法在速度與精度上都遠(yuǎn)超傳統(tǒng)算法,更適合作為檢測(cè)模型。最后從數(shù)據(jù)、主干網(wǎng)絡(luò)、注意力機(jī)制、損失函數(shù)、輕量化5個(gè)角度出發(fā),總結(jié)最新的檢測(cè)模型改進(jìn)方向。
學(xué)者可以通過閱讀本文對(duì)摩托車違規(guī)檢測(cè)與行人檢測(cè)進(jìn)行了解,通過本文總結(jié)的改進(jìn)方向,得到高精度、高速度、泛化能力強(qiáng)、小參數(shù)的檢測(cè)模型,應(yīng)用于交通的監(jiān)管中,提高檢測(cè)效率,降低事故率。