張梓浩 劉鵬浩 謝漢輝 邵國(guó)林 吳振凱 張嘉利
(廣州工商學(xué)院,廣東 廣州 510850)
圖像識(shí)別技術(shù)逐漸普及,不僅應(yīng)用于日常生活,在消防安全應(yīng)用方面更有它的一席之地。電動(dòng)車因具有便捷、輕巧、無(wú)污染等優(yōu)點(diǎn),成為廣大民眾出行的重要選擇,但是電動(dòng)車電瓶存在安全隱患。近年來(lái),電動(dòng)車在室內(nèi)、電梯內(nèi)發(fā)生自燃、自爆的事件屢見(jiàn)報(bào)端,這些現(xiàn)象嚴(yán)重危害到了居民的生命、財(cái)產(chǎn)安全。如何正確進(jìn)行電動(dòng)車停放、充電關(guān)系到其居民的生命和財(cái)產(chǎn)安全問(wèn)題。
2021年,中國(guó)消防公眾號(hào)發(fā)布的《瓊色:今年以來(lái)發(fā)生電動(dòng)車火災(zāi)1萬(wàn)多起》中指出:“目前全國(guó)電動(dòng)車保有量已經(jīng)超過(guò)3億,今年以來(lái)全國(guó)已經(jīng)發(fā)生電動(dòng)車火災(zāi)1萬(wàn)多起并造成人員傷亡,這集中反映了電動(dòng)車消防安全治理的緊迫性、嚴(yán)峻性、復(fù)雜性。”
現(xiàn)如今,仍然有不少城鄉(xiāng)居民習(xí)慣將電動(dòng)車進(jìn)樓入戶停放、充電,更有將其停放在門廳、樓梯間、疏散走道等公共區(qū)域,一旦起火燃燒,其產(chǎn)生的高溫有毒煙氣將會(huì)迅速充滿整個(gè)空間和消防通道,導(dǎo)致疏散、逃生困難,造成人員傷亡。因此,針對(duì)電動(dòng)車充電不規(guī)范發(fā)生火災(zāi)和電動(dòng)車是否在道路規(guī)范行駛的安全問(wèn)題,本文基于深度學(xué)習(xí)的電動(dòng)車智能檢測(cè)系統(tǒng),實(shí)現(xiàn)電動(dòng)車自動(dòng)識(shí)別并告警,從而起到督促監(jiān)督的作用。
YOLOv3[3]是一個(gè)端到端的回歸網(wǎng)絡(luò)模型,其基礎(chǔ)網(wǎng)絡(luò)是Joseph Redmon設(shè)計(jì)的Darknet-53網(wǎng)絡(luò)架構(gòu)(該網(wǎng)絡(luò)中包含53個(gè)卷積層),由連續(xù)的3×3和1×1卷積層組合而成。由于主干網(wǎng)絡(luò)設(shè)計(jì)為全卷積層,所以特征圖的尺寸的修改是通過(guò)卷積層來(lái)實(shí)現(xiàn)的。YOLOv3算法核心主要分為三點(diǎn):特征提取,網(wǎng)絡(luò)預(yù)測(cè)和網(wǎng)絡(luò)模型。特征提取是將圖片的整個(gè)區(qū)域一同進(jìn)行訓(xùn)練,在保持訓(xùn)練速度的同時(shí),還可以很好地分辨出背景以及要區(qū)分的目標(biāo),但缺點(diǎn)是在面對(duì)比較大的目標(biāo)時(shí),會(huì)將其背景的一部分算入目標(biāo)當(dāng)中從而導(dǎo)致誤差增加。網(wǎng)絡(luò)預(yù)測(cè)是將一張圖片分割成S×S個(gè)網(wǎng)格,若物體出現(xiàn)在某個(gè)網(wǎng)格上,該網(wǎng)格會(huì)對(duì)它進(jìn)行識(shí)別檢測(cè)。網(wǎng)絡(luò)模型則是最為重要的,是本文中提到的YOLOv3的主干網(wǎng)絡(luò)Darknet-53。
2.1.1 YOLOv3的Darknet-53網(wǎng)絡(luò)
Darknet-53[4]是YOLOv3的主干網(wǎng)絡(luò),是在YOLOv2基礎(chǔ)上的改進(jìn)。相對(duì)于YOLOv2,YOLOv3提高了檢測(cè)精度和檢測(cè)速度,能夠獲取更佳的檢測(cè)結(jié)果。
Darknet-53網(wǎng)絡(luò)共有53層,每一層的均由卷積層、BN層和Leaky ReLU層組成,即每一層為一個(gè)DBL模塊。DBL將卷積層的步長(zhǎng)設(shè)置為2進(jìn)行采樣操作,同時(shí)利用BN層和Leaky ReLU層防止數(shù)據(jù)過(guò)擬合。采取此操作使得Darknet-53取消了Darknet-19的最大池化操作。同時(shí),拼接采樣后網(wǎng)絡(luò)中間層和后面層的特征,呈現(xiàn)出特征融合的結(jié)果。圖1為Darknet-53網(wǎng)絡(luò)。

圖1 Darknet-53網(wǎng)絡(luò)
MoblieNet[1]模型是一種基于深度可分離卷積的分解卷積形式,將標(biāo)準(zhǔn)卷積分解為深度卷積和稱為逐點(diǎn)卷積的1×1卷積,如圖2所示。

圖2 MoblieNet網(wǎng)絡(luò)
深度可分離卷積將標(biāo)準(zhǔn)卷積分解成Dk×Dk的深度卷積和一個(gè)1×1的點(diǎn)卷積[2]。MolibeNet模型里的深度卷積將單個(gè)過(guò)濾器應(yīng)用于每個(gè)輸入通道,然后逐點(diǎn)卷積應(yīng)用1×1卷積來(lái)組合深度卷積的輸出。而標(biāo)準(zhǔn)卷積均在一個(gè)步驟中實(shí)現(xiàn)過(guò)濾輸入和組合輸入輸出。深度可分離卷積將其劃分在兩層來(lái)進(jìn)行,一個(gè)是用于過(guò)濾的單獨(dú)層,另一個(gè)是用于組合的單獨(dú)層。
假設(shè)步幅為1和填充的標(biāo)準(zhǔn)卷積的輸出特征圖計(jì)算如下:
深度卷積計(jì)算成本:Dk·Dk·M·DF·DF;深度可分離卷積成本:Dk·Dk·M·DF·DF+M·N·DF·DF
將卷積劃分為過(guò)濾和組合兩層的計(jì)算成本:
由上述的標(biāo)準(zhǔn)卷積、將卷積劃分為兩步的公式可以看出,分解后顯著減少了計(jì)算量和模型大小。
2.2.1 MobileNet系列中的MobileNetv1
MobileNetv1[4]為MobileNetv系列的第一代,它同樣是基于深度可分離卷積的分解卷積形式,將標(biāo)準(zhǔn)卷積分解為深度卷積和稱為逐點(diǎn)卷積的1×1卷積,相對(duì)于Darknet-53有效減少了計(jì)算量和模型大小。MobileNetv1的網(wǎng)絡(luò)結(jié)構(gòu)僅有28層網(wǎng)絡(luò),第1層采用標(biāo)準(zhǔn)卷積;第2~25層采用深度可分離卷積操作;第26~28層采用平均池化方式的池化層、全連接層以及Softmax層。MobileNte結(jié)構(gòu)如表1所示。

表1 MobileNet結(jié)構(gòu)
本文采用MobileNetv1替換YOLOv3的Darknet-53,通過(guò)替換YOLOv3的卷積網(wǎng)絡(luò)實(shí)現(xiàn)消減主干網(wǎng)絡(luò)中卷積運(yùn)算的目的,從而實(shí)現(xiàn)運(yùn)算處理速度的提升。圖3為網(wǎng)絡(luò)模型卷積替換,紅色框內(nèi)為替換部分。

圖3 網(wǎng)絡(luò)模型卷積替換
2.3.1 YOLOv3的損失函數(shù)
損失函數(shù)[5]對(duì)于模型來(lái)說(shuō)是判斷其性能的重要參數(shù)之一,它用于預(yù)判出真實(shí)值與預(yù)測(cè)值的差值。YOLOv3的損失函數(shù)主要由三個(gè)部分相加組成,分別為:LOSScoor、LOSSconf和LOSScls。
LOSScoor是目標(biāo)定位損失函數(shù),利用中心坐標(biāo)預(yù)測(cè)誤差和邊界框預(yù)測(cè)誤差單獨(dú)進(jìn)行預(yù)方差來(lái)運(yùn)算進(jìn)而對(duì)目標(biāo)框進(jìn)行回歸運(yùn)算;LOSSconf是置信度損失函數(shù),該函數(shù)分有兩種情況:有目標(biāo)和無(wú)目標(biāo)兩種情況,在不含有目標(biāo)損失當(dāng)中引入權(quán)重系數(shù);LOSScls是分類損失函數(shù),與交叉熵?fù)p失并同使用,更好地降低計(jì)算的復(fù)雜度。LOSS損失函數(shù)如下所示:
其中S2表示將一張圖片分割成S×S個(gè)網(wǎng)格;B表示共有B個(gè)預(yù)測(cè)框anchor box,anchor box為在預(yù)測(cè)對(duì)象范圍進(jìn)行約束,然后加入尺寸先驗(yàn)經(jīng)驗(yàn);用于判斷第i個(gè)網(wǎng)格中的第j個(gè)預(yù)測(cè)框里面是否出現(xiàn)所研究的目標(biāo),若有則將其值定義為1,否則其值定義為0;相反用于判斷第i個(gè)網(wǎng)絡(luò)中的第j個(gè)預(yù)測(cè)框里面是否沒(méi)有出現(xiàn)所研究的目標(biāo),若沒(méi)有則將其值定義為1,否則其值定義為0負(fù)責(zé)網(wǎng)格的邊界框是否擔(dān)任預(yù)測(cè)某個(gè)實(shí)驗(yàn)對(duì)象,如果其擔(dān)任則將其值改為1,否則其值改為0;表示為擬合值。
2.4.1 實(shí)驗(yàn)環(huán)境
本文實(shí)驗(yàn)所采用的配置設(shè)備為GPU:Tesla V100.Video Mem:32GB.CPU:4 Cores.RAM:32GB.Disk:100GB。Pycharm軟件平臺(tái)在Python3.7版本下,使用Pytorch深度學(xué)習(xí)框架進(jìn)行訓(xùn)練。
2.4.2 數(shù)據(jù)集
為了獲取大量的數(shù)據(jù),以及節(jié)省標(biāo)注圖片的時(shí)間,本文數(shù)據(jù)集采用pascal-voc和coco2017中的電動(dòng)車數(shù)據(jù)作為本次的數(shù)據(jù)集。coco2017數(shù)據(jù)集共有80小類,其中交通工具分為8類:自行車、車、摩托車、飛機(jī)、公共汽車、火車、卡車、船。pascal-voc數(shù)據(jù)集共有20小類,其中交通工具分為7類:自行車、車、摩托車、飛機(jī)、公共汽車、火車、船,我們獲取pascalvoc和coco2017當(dāng)中摩托車類的電動(dòng)車作為本文的數(shù)據(jù)集。其中pascal-voc有467張標(biāo)注圖片,coco2017有3502張未標(biāo)注和8725標(biāo)注框數(shù)量的圖片,共有13694張圖片,其中按照2:8的比例設(shè)置測(cè)試集和訓(xùn)練集。圖4為數(shù)據(jù)集圖片。

圖4 上圖為pascal-voc,下圖為coco2017
2.4.3 實(shí)驗(yàn)步驟
(1)數(shù)據(jù)預(yù)處理及模型訓(xùn)練
數(shù)據(jù)集提取數(shù)據(jù)是指提取出CoCo數(shù)據(jù)集中的電動(dòng)車類,并將其圖片和坐標(biāo)分別放在對(duì)應(yīng)的文件夾中,將提取出來(lái)的數(shù)據(jù)轉(zhuǎn)為voc格式,用于目標(biāo)檢測(cè)。定義訓(xùn)練次數(shù)為200次,將所有提取出來(lái)的圖片一同訓(xùn)練200次。本文實(shí)驗(yàn)使用的模型為YOLOv3-MobileNetV1模型,將數(shù)據(jù)放入初始化好的模型進(jìn)行訓(xùn)練。隨后將模型導(dǎo)出,以便后續(xù)在pycharm做進(jìn)一步實(shí)驗(yàn)。圖5為搭建測(cè)試環(huán)境。

圖5 搭建測(cè)試環(huán)境
(2)研究檢測(cè)電動(dòng)車并警報(bào)
運(yùn)用安裝好的OpenCV.cv2模塊獲取攝像頭所拍攝的視頻,按照一幀一幀的要求劃分,運(yùn)用cv2.imshow、cv2.imwrite等將提取出處理后的圖片數(shù)據(jù)進(jìn)行顯示、保存操作,隨后將其數(shù)據(jù)導(dǎo)入到訓(xùn)練好的模型中進(jìn)行測(cè)試,然后將識(shí)別到電動(dòng)車的圖片導(dǎo)入到指定的文件夾中并將其以視頻方式展示出來(lái)。圖6為研究檢測(cè)電動(dòng)車并報(bào)警流程圖。

圖6 研究測(cè)試電動(dòng)車報(bào)警
(3)制作桌面應(yīng)用程序
PyQt5是基于圖形程序框架Qt5的Python語(yǔ)言實(shí)現(xiàn),由一組Python模塊構(gòu)成,Qt庫(kù)是GUI庫(kù)之一。在pycharm軟件安裝PyQt5模塊,運(yùn)用PyQt5模塊編寫出桌面應(yīng)用程序?qū)崿F(xiàn)結(jié)果可視化,然后將訓(xùn)練好的模型、搭建好的訓(xùn)練和測(cè)試環(huán)境、識(shí)別電動(dòng)車代碼等一系列環(huán)節(jié)一同打包為一款適用于大多數(shù)監(jiān)控的桌面應(yīng)用程序。圖7為制作桌面應(yīng)用程序流程圖。

圖7 桌面應(yīng)用程序制作流程圖
本文針對(duì)識(shí)別電動(dòng)車的檢測(cè)任務(wù),基于YOLOv3-MobileNetV1模型進(jìn)行訓(xùn)練和檢測(cè),實(shí)現(xiàn)了對(duì)圖片、視頻和外接攝像頭的電動(dòng)車識(shí)別。圖8為本文的電動(dòng)車智能安全檢測(cè)系統(tǒng),實(shí)現(xiàn)圖片、視頻、攝像頭的識(shí)別電動(dòng)車系統(tǒng)。可以自行添加圖片、視頻或者連接外設(shè)攝像頭識(shí)別。編寫出簡(jiǎn)單實(shí)用的可視化桌面應(yīng)用,內(nèi)含四個(gè)按鍵以及兩個(gè)展示區(qū)域,從左至右依次是打開(kāi)圖片,檢測(cè)圖片,視頻檢測(cè)和攝像頭檢測(cè)。展示區(qū)域從左至右依次是原視頻和檢測(cè)電動(dòng)車的圖片。

圖8 電動(dòng)車智能安全檢測(cè)系統(tǒng)
YOLOv3-MobileNetV1網(wǎng)絡(luò)和YOLOv3網(wǎng)絡(luò)檢測(cè)模型的性能如圖9。

圖9 網(wǎng)絡(luò)模型性能對(duì)比
由圖9對(duì)比可知,YOLOv3網(wǎng)絡(luò)的模型評(píng)估性能指標(biāo)mAP(mean Average Precision)比YOLOv3-MobileNetV1網(wǎng)絡(luò)的要高出約10%,但YOLOv3網(wǎng)絡(luò)的FPS值比YOLOv3-MobileNetV1網(wǎng)絡(luò)的要低,YOLOv3-MobileNetV1網(wǎng)絡(luò)FPS值能達(dá)到26幀/s,而YOLOv3網(wǎng)絡(luò)的FPS值只有16幀/s,能看出輕量級(jí)的目標(biāo)檢測(cè)網(wǎng)絡(luò)可以通過(guò)減少通道數(shù)來(lái)提升自身的運(yùn)算處理速度。
電動(dòng)車消防安全問(wèn)題一直是一個(gè)長(zhǎng)期值得關(guān)注的難題。為了有效檢測(cè)和警告電動(dòng)車充電和停放的規(guī)范性,我們針對(duì)用戶在給電動(dòng)車充電和停放區(qū)域進(jìn)行基于深度學(xué)習(xí)方法對(duì)電動(dòng)車進(jìn)行檢測(cè)研究,以及時(shí)警告和督促電動(dòng)車停放和充電規(guī)范性。本文使用YOLOv3-MobileNetv1模型進(jìn)行訓(xùn)練和檢測(cè),實(shí)現(xiàn)了對(duì)圖片、視頻和外接攝像頭的電動(dòng)車識(shí)別,通過(guò)減少通道數(shù)提升了運(yùn)算處理速度。但本文提出的電動(dòng)車檢測(cè)方法精確度仍有所不足,考慮從以下幾方面進(jìn)行改進(jìn):
(1)本文在模型訓(xùn)練中采用pascal-voc和coco2017中的電動(dòng)車數(shù)據(jù),僅有1057張電動(dòng)車圖片進(jìn)行訓(xùn)練驗(yàn)證。考慮到電動(dòng)車大小問(wèn)題、距離的精確度,數(shù)據(jù)缺乏多樣性,在未來(lái)需要增加更多電動(dòng)車圖片數(shù)據(jù)作為數(shù)據(jù)集從而提高精確性。
(2)由于MobileNetv3相對(duì)于MobileNetv1增加了具有線性瓶頸的倒殘差結(jié)構(gòu)和SE模塊,考慮采用MobileNetv3替代MobileNetv1進(jìn)一步探討模型優(yōu)化。