李明,杜茂華
(650500 云南省 昆明市 昆明理工大學(xué) 機(jī)電工程學(xué)院)
摩托車(chē)、電動(dòng)車(chē)、自行車(chē)等騎乘交通工具以其便捷、便宜、環(huán)保等特點(diǎn)受到出行者的廣泛歡迎,但這類(lèi)騎乘人員在駕駛過(guò)程中完全暴露于道路之中,容易在交通事故中傷亡。2019 年,我國(guó)共發(fā)生交通事故244 058 起,其中摩托車(chē)、非機(jī)動(dòng)車(chē)、自行車(chē)交通事故發(fā)生數(shù)共76 967 起,占比約為31.54%。摩托車(chē)、非機(jī)動(dòng)車(chē)、自行車(chē)發(fā)生交通事故致死人數(shù)占總交通事故死亡人數(shù)的24.91%[1]。
騎行頭盔是騎乘交通工具不可缺少的一部分,可以有效減少發(fā)生交通事故時(shí)的傷亡。近幾年全國(guó)各地陸續(xù)開(kāi)始實(shí)施相關(guān)法規(guī),要求騎乘者必須佩戴安全頭盔。在各個(gè)交通要道安排執(zhí)勤人員檢測(cè)騎乘者頭盔佩戴情況,但是這種檢測(cè)方式效率低、漏檢率高,對(duì)執(zhí)勤人員的生命安全也存在一定威脅。
近十年人工智能崛起,機(jī)器學(xué)習(xí)代替了人工學(xué)習(xí),極大地提高了工作效率,尤其在圖像處理領(lǐng)域,深度學(xué)習(xí)成果顯著。采用深度學(xué)習(xí)網(wǎng)絡(luò)對(duì)騎行人員進(jìn)行頭盔佩戴檢測(cè)能有效解決當(dāng)前所存在的問(wèn)題。目前,基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法主要分為2 類(lèi):(1)兩階段(Two-stage)算法,如RCNN[2](Region-proposal Convolutional Neural Network)、Fast R-CNN[3]、Faster R-CNN[4]、R-FCN[5](Regionbased fully convolutional network)、Mask R-CNN[6]等;(2)單階段(One-stage)算法,如SSD[7](Single Shot MultiBox Detector)、YOLO[8](You Only Look Once)等。這2 類(lèi)算法的區(qū)別在于是否需要生成候選框。一般而言,使用兩階段算法的模型在預(yù)測(cè)精度上表現(xiàn)優(yōu)秀,但2 步計(jì)算方式增加了計(jì)算成本,影響網(wǎng)絡(luò)訓(xùn)練速度。YOLO、SSD 等單階段算法將目標(biāo)邊框定位問(wèn)題轉(zhuǎn)化為回歸問(wèn)題,可以進(jìn)行端到端檢測(cè),因?yàn)闆](méi)有候選框,所以速度快、實(shí)時(shí)性好,被廣泛應(yīng)用于工程實(shí)際中。
頭盔檢測(cè)應(yīng)用的場(chǎng)景是車(chē)水馬龍的交通道路,環(huán)境復(fù)雜,且人流車(chē)流量大。不但要對(duì)龐大的車(chē)流人流進(jìn)行分析,還要從中識(shí)別出騎行者有無(wú)佩戴頭盔,所以對(duì)模型運(yùn)算精度和實(shí)時(shí)性都有較高的要求。因此,本文采用具有較高精度且時(shí)效性更好的單階段算法YOLOv4 模型。傳統(tǒng)檢測(cè)方法將待檢測(cè)目標(biāo)劃分為2 部分:騎車(chē)人和騎乘工具[9-10],這樣制作的數(shù)據(jù)集極易將非騎行人員納入識(shí)別范圍,增加了擬識(shí)別對(duì)象的數(shù)目,也就增加了計(jì)算量和計(jì)算過(guò)程,所以在人員密集環(huán)境下的檢測(cè)精度不高。為此,本文采用人與車(chē)整體標(biāo)定的方法,即在制作數(shù)據(jù)集時(shí),將騎車(chē)人與騎乘工具標(biāo)定為一個(gè)整體。這樣,訓(xùn)練出的網(wǎng)絡(luò)就可有效地將騎車(chē)者與非騎車(chē)者區(qū)別開(kāi)來(lái);同時(shí),為了實(shí)現(xiàn)遠(yuǎn)程監(jiān)控功能,采用以太網(wǎng)搭配網(wǎng)絡(luò)攝像頭的方式,將現(xiàn)場(chǎng)采集的視頻流通過(guò)以太網(wǎng)實(shí)時(shí)輸送到Y(jié)OLOv4 模型中進(jìn)行分析預(yù)測(cè),以實(shí)現(xiàn)遠(yuǎn)程目標(biāo)的檢測(cè)。
2020 年4 月,Bochkovskiy 等[11]在前3 版YOLO 模型的基礎(chǔ)上,提出了YOLOv4 的網(wǎng)絡(luò)模型,該模型將Cross-Stage-connection(CSP)、Self-adversarial-training(SAT)、Mosaic data augmentation 等技術(shù)融合,使YOLOv4 性能得到大幅度提高。圖1 所示為各神經(jīng)網(wǎng)絡(luò)的性能對(duì)比。
圖1 各神經(jīng)網(wǎng)絡(luò)的性能對(duì)比Fig.1 Performance comparison of each neural network
與YOLOv3 相比YOLOv4 網(wǎng)絡(luò)主要有以下改進(jìn):(1)使用CSPDarknet53[12]代替Darknet53 作為特征提取網(wǎng)絡(luò),目的是解決復(fù)雜卷積神經(jīng)網(wǎng)絡(luò)框架主干中網(wǎng)絡(luò)優(yōu)化梯度信息重復(fù)的問(wèn)題[13]。CSPDarknet53 模塊示意圖如圖2 所示;(2)使用SPP[14]網(wǎng)絡(luò)作為Neck 的附加模塊,主要解決輸入圖像尺寸與所要求尺寸不匹配、對(duì)圖像進(jìn)行拉伸和裁剪時(shí)易失真的問(wèn)題。該方法應(yīng)用于YOLOv4 中,增強(qiáng)了網(wǎng)絡(luò)感受野。網(wǎng)絡(luò)結(jié)構(gòu)示意圖如圖3 所示;(3)使用PANet[15]作為Neck 的特征融合模塊,進(jìn)一步加強(qiáng)了YOLOv4 的特征提取能力。
圖2 CSPDarknet53 模塊示意圖Fig.2 CSPDarknet53 module diagram
圖3 YOLOv4 網(wǎng)絡(luò)結(jié)構(gòu)示意圖Fig.3 Schematic diagram of YOLOv4 network structure
實(shí)驗(yàn)平臺(tái)是Windows10(64位)操作系統(tǒng),CPU為AMD Ryzen 7 4800H,2.9 GHz,GPU 為NVIDIA GTX1650Ti,顯存為4 G。CUDA 版本為10.2,CuDNN版本為7.6.5,采用的編程語(yǔ)言為Python3.7。
為了適應(yīng)在復(fù)雜交通環(huán)境中對(duì)來(lái)往騎行車(chē)輛進(jìn)行頭盔檢測(cè),本文采用網(wǎng)絡(luò)爬取圖片加攝像頭拍攝的方式制作數(shù)據(jù)集。網(wǎng)絡(luò)爬取的目的是收集不同拍攝角度騎行狀態(tài)的圖片,便于后期模型能學(xué)到多種特征,進(jìn)而提高檢測(cè)的精度。攝像頭拍攝馬路上真實(shí)交通狀態(tài),一張圖片中包含多個(gè)檢測(cè)目標(biāo),有利于后期訓(xùn)練出的模型對(duì)密集目標(biāo)的檢測(cè),更好地?cái)M合實(shí)際交通情況。圖片采集情況如圖4 所示。
圖4 圖片采集Fig.4 Image acquisition
為了解決現(xiàn)有模型[9]錯(cuò)誤地將行人判定為待檢測(cè)目標(biāo)的問(wèn)題,本文采用整體標(biāo)定的方式對(duì)擬檢測(cè)目標(biāo)進(jìn)行標(biāo)定,使得模型檢測(cè)的范圍鎖定為騎行者而非其他目標(biāo),整體標(biāo)定例圖如圖5 所示。因?yàn)閷?duì)目標(biāo)進(jìn)行檢測(cè)屬于監(jiān)督學(xué)習(xí)的范疇,所以要對(duì)訓(xùn)練集中待檢測(cè)的目標(biāo)進(jìn)行位置和類(lèi)別的標(biāo)注。采用Labeling 軟件對(duì)圖片進(jìn)行逐一標(biāo)注,生成xml 文件,文件格式如圖6 所示。本次數(shù)據(jù)集一共采集1 500張圖片,其中75%作為訓(xùn)練集,25%作為測(cè)試集。
圖5 整體標(biāo)定示意圖Fig.5 Overall calibration diagram
圖6 xml 文件Fig.6 xml file
對(duì)于一個(gè)給定的樣本,樣本里包含n個(gè)對(duì)象,X={X1,X2,X3,…,Xn},隨機(jī)設(shè)置K個(gè)特征空間內(nèi)的點(diǎn)作為初始的聚類(lèi)中心{m1,m2,m3,…,mk},然后計(jì)算每個(gè)點(diǎn)到K個(gè)中心的歐式距離,未知的點(diǎn)選擇最近的一個(gè)聚類(lèi)中心點(diǎn)作為標(biāo)記類(lèi)別。歐式距離表達(dá)式為
式中:Xi——第i個(gè)對(duì)象;mi——第i個(gè)聚類(lèi)中心;Xit——第i個(gè)對(duì)象的第t個(gè)屬性。
采用誤差二次方和準(zhǔn)則函數(shù)作為聚類(lèi)準(zhǔn)則函數(shù),誤差二次方和J為
式中:ni——第i個(gè)聚類(lèi)樣本點(diǎn)數(shù)量;mi——第i個(gè)聚類(lèi)中心;Xij——第i個(gè)聚類(lèi)中的第j個(gè)樣本點(diǎn)。
本實(shí)驗(yàn)所涉及的對(duì)象只有戴頭盔與未帶頭盔2種,因此需要重新對(duì)先驗(yàn)框進(jìn)行聚類(lèi)分析。K-means算法具有收斂速度快、聚類(lèi)效果較好的優(yōu)點(diǎn),但得到的結(jié)果和運(yùn)行時(shí)間容易受初始聚類(lèi)中心的影響,一旦初始聚類(lèi)中心選取不恰當(dāng),就容易造成局部最優(yōu)解。為了解決局部最優(yōu)解問(wèn)題,本實(shí)驗(yàn)采用二分K-means 算法對(duì)先驗(yàn)框進(jìn)行聚類(lèi)分析。該算法不需要選擇初始聚類(lèi)中心,由一個(gè)樣本集分裂后得到2 個(gè)簇,對(duì)于K個(gè)簇則進(jìn)行K-1 次分裂,具體流程如圖7 所示[16]。實(shí)驗(yàn)得到在K=9 時(shí)先驗(yàn)框最優(yōu),分別為(35,84)、(80,118)、(115,162)、(92,282)、(151,219)、(148,441)、(223,338)、(285,500)、(431,543)。之后再將新的聚類(lèi)結(jié)果更新到Y(jié)OLOv4 的配置文件中進(jìn)行訓(xùn)練。
圖7 二分K-means 算法流程圖Fig.7 Flow chart of bisection K-means algorithm
首先修改YOLOv4 相關(guān)配置文件,本次實(shí)驗(yàn)選擇迭代次數(shù)為8 000 次,學(xué)習(xí)率使用分步策略。訓(xùn)練結(jié)果如圖8 所示。
圖8 實(shí)驗(yàn)結(jié)果對(duì)比Fig.8 Comparison of experimental results
從圖8(a)可以看出,未采用二分K-means算法之前所標(biāo)定的先驗(yàn)框在訓(xùn)練過(guò)程中的mAP波動(dòng)較大,mAP=78.4%;圖8(b)采用二分K-means算法對(duì)整體標(biāo)定數(shù)據(jù)集的先驗(yàn)框聚類(lèi)分析訓(xùn)練時(shí)的mAP處于較平穩(wěn)狀態(tài),mAP=90.8%,因此,采用改進(jìn)算法后的準(zhǔn)確率有很大提升,如表1 所示。
改進(jìn)前后的目標(biāo)檢測(cè)效果如圖9 所示。圖9(a)為改進(jìn)前模型檢測(cè)結(jié)果,在預(yù)測(cè)的過(guò)程中將圖片中間的步行者視為待檢測(cè)目標(biāo),對(duì)其進(jìn)行有無(wú)佩戴頭盔的判定,造成了錯(cuò)檢,且容易對(duì)遠(yuǎn)處目標(biāo)漏檢。圖9(b)為改進(jìn)后效果,模型能正確識(shí)別出騎行者與非騎行者,只對(duì)騎行者進(jìn)行頭盔檢測(cè)。
圖9 改進(jìn)前后的檢測(cè)效果比較Fig.9 Comparison of detection effect before and after improvement
本文采用網(wǎng)絡(luò)攝像頭+以太網(wǎng)的方式,實(shí)現(xiàn)對(duì)目標(biāo)的遠(yuǎn)程檢測(cè),且YOLOv4 網(wǎng)絡(luò)模型的檢測(cè)精度遠(yuǎn)遠(yuǎn)高于人工檢測(cè),可將執(zhí)法人員從危險(xiǎn)的執(zhí)法環(huán)境中脫離出來(lái)
網(wǎng)絡(luò)攝像頭型號(hào) MC-E25,長(zhǎng)寬為38 mm×38 mm,約60 g,工作電壓DC12 V、電流2 A。該攝像頭可適應(yīng)環(huán)境溫度最高為85 ℃,完全適用于本文要求的實(shí)驗(yàn)環(huán)境,還具有一個(gè)型號(hào)為RJ45 的10/100 M 自適應(yīng)以太網(wǎng)接口,以太網(wǎng)接口具有通訊速率高、通訊穩(wěn)定的特性,能確保網(wǎng)絡(luò)攝像頭采集的環(huán)境圖像快速、穩(wěn)定地傳輸至PC 端。該網(wǎng)絡(luò)攝像頭像素為400 萬(wàn),焦距為4 mm,可觀察至20 m處物件輪廓,主碼流幀數(shù)25 FPS,支持即時(shí)串流協(xié)議RTSP(Real Time Streaming Protocol)、ONVIF(Open Network Video Interface Forum)、HTTP、P2P 等視頻流網(wǎng)絡(luò)協(xié)議以及NVR(Network Video Recorder)對(duì)接協(xié)議。
首先使用ONVIF 獲取網(wǎng)絡(luò)攝像頭的RTSP 地址。ONVIF 使不同網(wǎng)絡(luò)攝像頭具有互通性,同時(shí)可以利用 ONVIF 協(xié)議來(lái)實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)攝像頭的信息獲取,如獲取RTSP 地址信息、實(shí)時(shí)視頻流與音頻等。而RTSP 則是用于實(shí)現(xiàn)視頻或音頻的多媒體串流,可以使用TCP(Transmission Control Protocol)或UDP(User Datagram Protocol)來(lái)實(shí)現(xiàn)信息傳輸,另外可以實(shí)現(xiàn)多個(gè)串流控制,即可以同時(shí)獲取多個(gè)網(wǎng)絡(luò)攝像頭的視頻或音頻信息。
在獲取網(wǎng)絡(luò)攝像頭RTSP 地址后,可將其輸入到攝像頭顯示軟件中,如圖10 所示。在圖11 中所顯示的MC-E25 網(wǎng)絡(luò)攝像頭的RTSP 地址為“rtsp://admin:123456@192.168.0.123:554/mpeg4”,該地址中“rtsp”為協(xié)議類(lèi)型,“192.169.0.123”為網(wǎng)絡(luò)攝像頭IP 地址,“554”為網(wǎng)絡(luò)端口,“mpeg4”表示獲取主碼流。PC 端根據(jù)RTSP 地址獲取視頻流信息,之后再將截取后的視頻流通過(guò)以太網(wǎng)導(dǎo)入YOLOv4 的網(wǎng)絡(luò)模型中進(jìn)行預(yù)測(cè),最終的顯示效果如圖11 所示。圖11(a)為網(wǎng)絡(luò)攝像頭獲取視頻流,通過(guò)以太網(wǎng)實(shí)時(shí)輸送到PC 端的YOLOv4 模型中,對(duì)畫(huà)面中佩戴頭盔的對(duì)象做出了正確的識(shí)別;圖11(b)為對(duì)未佩戴頭盔對(duì)象做出了正確識(shí)別。
圖10 輸入RTSP 地址Fig.10 Input the RTSP address
圖11 網(wǎng)絡(luò)攝像頭遠(yuǎn)程實(shí)時(shí)監(jiān)控Fig.11 Remote real-time monitoring by webcam
在使用相同YOLOv4 模型的條件下,一方數(shù)據(jù)集采用整體標(biāo)定的方式進(jìn)行制作,另一方采用非整體標(biāo)定的方式進(jìn)行制作。結(jié)果表明,整體標(biāo)定的數(shù)據(jù)集所訓(xùn)練出來(lái)的網(wǎng)絡(luò)模型能夠?qū)Ψ球T行狀態(tài)下與騎行狀態(tài)下的2 種狀態(tài)進(jìn)行區(qū)分,更加適用于真實(shí)的交通環(huán)境。為了提高檢測(cè)精度,通過(guò)二分K-means算法對(duì)先驗(yàn)框進(jìn)行聚類(lèi)分析,得到一組最適合該實(shí)驗(yàn)條件的9 組先驗(yàn)框,采用分步訓(xùn)練方式優(yōu)化學(xué)習(xí)權(quán)重,平均準(zhǔn)確率mAP達(dá)到了90.8%;其次,為了將執(zhí)法者從危險(xiǎn)的交通環(huán)境中脫離出來(lái),采用網(wǎng)絡(luò)攝像頭+以太網(wǎng)進(jìn)行遠(yuǎn)距離的傳輸,最終實(shí)現(xiàn)了在PC 端進(jìn)行遠(yuǎn)程檢測(cè)。因此,使用此方法使得騎乘人員頭盔佩戴的遠(yuǎn)程檢測(cè)成為可能。