徐先峰,趙萬(wàn)福,鄒浩泉,張 麗,潘卓毅
(長(zhǎng)安大學(xué)電子與控制工程學(xué)院,西安 710064)
安全帽作為一種安全防護(hù)工具,對(duì)工人的人身安全具有重要保障作用。目前對(duì)于工人安全帽的佩戴檢測(cè)主要依靠人工監(jiān)視,這種檢查方式不僅耗費(fèi)人力資源,而且容易受工作人員的主觀影響?;谝曨l監(jiān)控的智能安全帽佩戴檢測(cè),在能夠降低施工現(xiàn)場(chǎng)人力資源成本的同時(shí),也能防范安全事故的發(fā)生。
人員之間的部分遮擋、攝像頭的拍攝像素、攝像頭距目標(biāo)距離的遠(yuǎn)近程度等因素造成安全帽的佩戴檢測(cè)具有一定的難度。為實(shí)現(xiàn)安全帽佩戴自動(dòng)檢測(cè),研究人員進(jìn)行了大量研究。LI 等[1]運(yùn)用幀間差分方法分割視頻畫面的動(dòng)態(tài)目標(biāo)后,利用圖像的方向梯度直方圖(Histogram of Oriented Gradient,HOG)特征訓(xùn)練支持向量機(jī)(Support Vector Machines,SVM)分類器,并使用該分類器判斷動(dòng)態(tài)目標(biāo)是否為行人。若是行人,則使用Haar-like 進(jìn)行特征提取并輸送到Adaboost 分類器以判斷畫面中的行人是否佩戴安全帽。LIU 等[2]使用尺度濾波算法從視頻圖像中提取前景,對(duì)運(yùn)動(dòng)目標(biāo)進(jìn)行分割、跟蹤和標(biāo)記,通過檢測(cè)運(yùn)動(dòng)目標(biāo)的上部1/3 部分中的像素點(diǎn)及色度值的分布情況判斷檢測(cè)目標(biāo)安全帽的佩戴情況。FENG 等[3]使用混合高斯模型進(jìn)行前景檢測(cè),通過圖像處理方法對(duì)連通域進(jìn)行處理并判斷其是否屬于人體,定位到的人體頭部區(qū)域可實(shí)現(xiàn)安全帽的自動(dòng)識(shí)別。DU 等[4]利用viBe 算法提取前景目標(biāo),通過前景目標(biāo)對(duì)安全帽的佩戴區(qū)域進(jìn)行初步定位,并使用DPM 算法對(duì)安全帽佩戴情況進(jìn)行檢測(cè)。此類方法受視角影響較大,當(dāng)出現(xiàn)被檢測(cè)人員非站立、被遮擋、靜止不動(dòng)等復(fù)雜情況時(shí),此類方法呈現(xiàn)一定局限性,其檢測(cè)精度還有待提高??傮w來(lái)說,以上基于傳統(tǒng)方法的安全帽佩戴檢測(cè)算法存在手工設(shè)計(jì)特征困難、泛化能力差等問題,難以應(yīng)用到實(shí)際工程實(shí)踐中。
目前,基于深度學(xué)習(xí)的方法是目標(biāo)檢測(cè)的主流方法[5-6],單發(fā)多盒探測(cè)器(Single Shot MultiBox Detector,SSD)[7]作為經(jīng)典的基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法之一,具有檢測(cè)速度快、檢測(cè)精度高、對(duì)小目標(biāo)和多目標(biāo)檢測(cè)效果好的優(yōu)點(diǎn),在行人檢測(cè)[8]、遙感目標(biāo)檢測(cè)[9]、絕緣子檢測(cè)[10]等目標(biāo)檢測(cè)領(lǐng)域應(yīng)用廣泛。但目前為止尚未發(fā)現(xiàn)有文獻(xiàn)將SSD 算法應(yīng)用于安全帽佩戴檢測(cè)中。在通常情況下,視頻監(jiān)控設(shè)備運(yùn)行在CPU 平臺(tái)下,而SSD 在GPU 平臺(tái)下的檢測(cè)速度快但在CPU 平臺(tái)下無(wú)法達(dá)到實(shí)時(shí)的目標(biāo)檢測(cè)。由于SSD 為卷積神經(jīng)網(wǎng)絡(luò),需要大量數(shù)據(jù)集,而目前可用的安全帽公開數(shù)據(jù)集少且規(guī)模較小,數(shù)據(jù)集收集困難。有研究人員發(fā)現(xiàn),遷移學(xué)習(xí)(Transfer Learning)[11]通過從已學(xué)習(xí)的相關(guān)任務(wù)中轉(zhuǎn)移知識(shí)以改進(jìn)學(xué)習(xí)的新任務(wù),可有效解決SSD 模型訓(xùn)練困難的問題。
針對(duì)安全帽佩戴檢測(cè)多為小目標(biāo)和多目標(biāo)的現(xiàn)實(shí)問題,本文基于深度學(xué)習(xí)的基礎(chǔ)理論知識(shí),對(duì)SSD 檢測(cè)算法中暴露出的問題進(jìn)行優(yōu)化改進(jìn)。引入輕量型網(wǎng)絡(luò)加快檢測(cè)速度實(shí)現(xiàn)實(shí)時(shí)的目標(biāo)檢測(cè),采用遷移學(xué)習(xí)策略訓(xùn)練SSD,通過依托互聯(lián)網(wǎng)平臺(tái)大量采集安全帽圖像,并從施工相關(guān)視頻中獲取真實(shí)環(huán)境下的安全帽樣本構(gòu)建樣本集。
SSD[12]是經(jīng)典的目標(biāo)檢測(cè)算法,其在6 層卷積層輸出的特征圖上進(jìn)行多尺度特征提取,這些特征圖又被稱為預(yù)測(cè)層,每層分別對(duì)多尺度分支的回歸網(wǎng)絡(luò)(Loc_Layers)和多尺度分支的分類網(wǎng)絡(luò)(Conf_Layers)進(jìn)行卷積,得到待檢測(cè)目標(biāo)的位置和種類。
靠近輸入的特征圖尺寸較大而感受野較小,特征包含的位置信息豐富,因此適合檢測(cè)小安全帽目標(biāo);靠近輸出的特征圖尺寸較小而感受野較大,包含全局信息,因此適合檢測(cè)大安全帽目標(biāo)。SSD 檢測(cè)算法在大特征圖和小特征圖上均可進(jìn)行位置回歸,因此可同時(shí)兼顧大小安全帽目標(biāo)的檢測(cè),較僅在最后一層特征圖上進(jìn)行位置回歸的算法檢測(cè)性能優(yōu)異。在實(shí)際應(yīng)用場(chǎng)景中,由于監(jiān)控?cái)z像頭與距檢測(cè)目標(biāo)具有一定的距離,因此會(huì)出現(xiàn)較多的小安全帽目標(biāo),而SSD 檢測(cè)算法在小目標(biāo)檢測(cè)上表現(xiàn)出較好的檢測(cè)性能,非常適用于安全帽的佩戴檢測(cè)場(chǎng)景[13-14]。
SSD 檢測(cè)算法雖然在檢測(cè)精度和檢測(cè)速度上均優(yōu)于傳統(tǒng)檢測(cè)算法,但仍然無(wú)法達(dá)到實(shí)時(shí)的目標(biāo)檢測(cè),對(duì)于安全帽的佩戴檢測(cè)速度還無(wú)法達(dá)到實(shí)際的應(yīng)用要求。針對(duì)此問題,本文引入輕量型網(wǎng)絡(luò)對(duì)SSD 模型進(jìn)行壓縮以加快安全帽的檢測(cè)速度。同時(shí),針對(duì)SSD 訓(xùn)練困難這一問題,使用遷移學(xué)習(xí)訓(xùn)練策略對(duì)輕量型SSD 網(wǎng)絡(luò)進(jìn)行訓(xùn)練,以快速訓(xùn)練網(wǎng)絡(luò)并得到較好的訓(xùn)練結(jié)果。
實(shí)際應(yīng)用中的視頻監(jiān)控設(shè)備多使用CPU 平臺(tái),不具備GPU的并行加速計(jì)算能力。而在CPU平臺(tái)下,SSD算法的檢測(cè)速度非常緩慢,難以滿足安全帽佩戴檢測(cè)的速度要求。針對(duì)此問題,在SSD 的研究基礎(chǔ)上,提出使用MobileNet[15]代替SSD 中的基礎(chǔ)網(wǎng)絡(luò)VGG[16]進(jìn)行安全帽佩戴檢測(cè)以加快模型的檢測(cè)速度。
MobileNet 是一種兼?zhèn)錂z測(cè)精度和檢測(cè)速度的輕量型神經(jīng)網(wǎng)絡(luò),其通過構(gòu)建深度可分離卷積(Depthwise Separable Convolution)以改變網(wǎng)絡(luò)的計(jì)算方式從而降低網(wǎng)絡(luò)參數(shù)量,在降低模型復(fù)雜度的同時(shí)提高模型的檢測(cè)速度。其中,深度可分離卷積分為單深度卷積(Depthwise)和單點(diǎn)卷積(Pointwise)2 個(gè)操作,如圖1所示。
圖1 深度可分離卷積過程Fig.1 Deep separable convolution process
深度可分離卷積能夠減少模型的參數(shù)量,表1 為MobileNet 網(wǎng)絡(luò)參數(shù)量和VGG 網(wǎng)絡(luò)參數(shù)量的統(tǒng)計(jì)結(jié)果[17]。
表1 VGG 和MobileNet 網(wǎng)絡(luò)參數(shù)量對(duì)比Table 1 Comparison of parameters of VGG and MobileNet
在表1 中:訪存量是參數(shù)量所占內(nèi)存與輸出特征圖參數(shù)量所占內(nèi)存之和;計(jì)算量(Floating Point 0perations,F(xiàn)LOPs)指浮點(diǎn)運(yùn)算數(shù),用來(lái)衡量算法或模型的復(fù)雜度,1GFLOPs=109FLOPs;VGG 網(wǎng)絡(luò)的GFLOPs 為14.20,表示模型前向傳播一次需要進(jìn)行142 億次浮點(diǎn)運(yùn)算;MobileNet 的GFLOPs 為0.53,表示模型向前傳播一次需要進(jìn)行5.3 億次浮點(diǎn)運(yùn)算。MobileNet 的運(yùn)算量遠(yuǎn)少于VGG 的運(yùn)算量。此外,VGG 的參數(shù)量是MobileNet 的30 倍左右,表明MobileNet 占用的內(nèi)存空間更少。
綜上所述,MobileNet 無(wú)論是在計(jì)算量、參數(shù)量還是在內(nèi)存消耗上,均比VGG 網(wǎng)絡(luò)更加適用于CPU平臺(tái)下的目標(biāo)檢測(cè)。因此,本文將SSD 中VGG 基礎(chǔ)網(wǎng)絡(luò)替換為MobileNet 網(wǎng)絡(luò),引入MobileNet-SSD 實(shí)現(xiàn)監(jiān)控視頻中佩戴安全帽人員[17]和未佩戴安全帽人員的檢測(cè),MobileNet-SSD 結(jié)構(gòu)如圖2 所示。
圖2 MobileNet-SSD 網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 MobileNet-SSD network structure
遷移學(xué)習(xí)[18]是將網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)的權(quán)重從一個(gè)訓(xùn)練好的網(wǎng)絡(luò)遷移到另一個(gè)全新的網(wǎng)絡(luò)。在實(shí)際應(yīng)用中,通常不會(huì)針對(duì)新任務(wù)從頭開始訓(xùn)練神經(jīng)網(wǎng)絡(luò),因?yàn)榇瞬僮鬏^為耗時(shí),尤其是當(dāng)訓(xùn)練數(shù)據(jù)無(wú)法達(dá)到類似ImageNet 數(shù)據(jù)集的規(guī)模時(shí),想要訓(xùn)練出泛化能力足夠強(qiáng)的深度神經(jīng)網(wǎng)絡(luò)[19]極為困難。且即使數(shù)據(jù)集足夠,從頭開始訓(xùn)練將付出較大的訓(xùn)練代價(jià)。使用遷移學(xué)習(xí)策略能夠加快安全帽檢測(cè)模型的訓(xùn)練速度,訓(xùn)練過程簡(jiǎn)單且在相同的訓(xùn)練時(shí)間內(nèi)能得到更高精度的檢測(cè)模型。
MobileNet-SSD[20]需要對(duì)輸入圖像中的目標(biāo)具體位置進(jìn)行定位,其次將定位好的目標(biāo)分類為Hat 類或Person 類。具體過程為:定義輸入樣本x,根據(jù)具體分類和定位任務(wù)同時(shí)調(diào)整位置誤差損失函數(shù)和置信度誤差損失函數(shù),損失函數(shù)如式(1)所示:
其中:N是先驗(yàn)框的正樣本數(shù)量;α的作用是調(diào)整位置誤差與置信度誤差之間的比例,默認(rèn)設(shè)置為1;c為類別置信度預(yù)測(cè)值;l為邊界框的先驗(yàn)框位置;g是真實(shí)目標(biāo)的位置參數(shù);x為指示參數(shù),具體形式為?{1,0},當(dāng)=1 時(shí),第i個(gè)先驗(yàn)框與第j個(gè)真實(shí)目標(biāo)相匹配,即對(duì)第j個(gè)真實(shí)目標(biāo)來(lái)說,第i個(gè)先驗(yàn)框是其正樣本,且真實(shí)目標(biāo)的類別為p;當(dāng)=0 時(shí),對(duì) 第j個(gè)真實(shí)目標(biāo)來(lái)說,第i個(gè)先驗(yàn)框是其負(fù)樣本,同樣真實(shí)目標(biāo)的類別為p;位置損失函數(shù)Lloc使用SmoothL1損失函數(shù),具體形式如式(2)~式(7)所示:
由于的存在,位置誤差損失函數(shù)中只有正樣本參與訓(xùn)練。對(duì)于類別置信度誤差采用softmax loss函數(shù),如式(8)所示:
其中:含義與位置損失函數(shù)中的含義一致,但因?yàn)閕?Pos,因 此的值只能為1,表示第i個(gè)先驗(yàn)框(正樣本)與第j個(gè)真實(shí)目標(biāo)相匹配且真實(shí)目標(biāo)的類別為p;表示該第i個(gè)先驗(yàn)框是p類目標(biāo)的置信度,由于已知該第i個(gè)先驗(yàn)框是p類,因此在訓(xùn)練過程中越大越好,這與訓(xùn)練時(shí)應(yīng)該不斷減小損失函數(shù)相悖,因此在log前添加負(fù)號(hào),以達(dá)到訓(xùn)練時(shí)不斷減小損失函數(shù)而增大的目的表示第i個(gè)先驗(yàn)框是0 類即背景類的置信度,由于i?Neg,因此第i個(gè)先驗(yàn)框一定是背景類,且在訓(xùn)練時(shí)越大越好。與上述相同,在損失函數(shù)中在前添加負(fù)號(hào),以達(dá)到損失不斷減 小不斷增大的目的。
顯然,通過類別置信度誤差函數(shù)能同時(shí)減少安全帽特征向量間的差異及人臉特征向量間的差異,并增大安全帽與人臉特征向量間的差異,即減小類內(nèi)差異,增大類間差異。從大量的訓(xùn)練樣本中學(xué)習(xí)該特征空間的更魯棒、更具可區(qū)分的距離度量,將原本在原始空間中分辨困難的數(shù)據(jù)進(jìn)行維度規(guī)約,降低干擾影響,提升識(shí)別精度。
針對(duì)目前安全帽數(shù)據(jù)集規(guī)模較小、網(wǎng)絡(luò)難以充分?jǐn)M合特征這一問題,依托互聯(lián)網(wǎng)平臺(tái)大量采集安全帽圖像,并從施工相關(guān)視頻中獲取真實(shí)環(huán)境下的安全帽樣本以構(gòu)建本文安全帽樣本集。數(shù)據(jù)集中包含5 034張佩戴安全帽圖片,共13 325個(gè)佩戴安全帽目標(biāo)、4 340 張人臉圖片、人臉目標(biāo)111 514 個(gè)。佩戴安全帽的圖像收集于網(wǎng)絡(luò),人臉圖像來(lái)自部分SCUT-HEAD 數(shù)據(jù)集。
將樣本數(shù)據(jù)集分為訓(xùn)練集和測(cè)試集,訓(xùn)練集為4 034 張安全帽圖像和3 340 張人臉圖像,測(cè)試集為1 000 張安全帽圖像和1 000 張人臉圖像。真實(shí)場(chǎng)景下的部分?jǐn)?shù)據(jù)集如圖3 所示。
圖3 真實(shí)場(chǎng)景下的部分?jǐn)?shù)據(jù)集Fig.3 Part of the data set in the real scene
本課題的實(shí)驗(yàn)平臺(tái)配置:系統(tǒng)為Ubuntu16.04;GPU 平臺(tái)版本為NVIDIA GTX 1080Ti(x2);編程語(yǔ)言為Python3.5;標(biāo)注工具采用LabelImg;加速工具為CUDA10.0;模型的搭建、訓(xùn)練和結(jié)果的測(cè)試均在Caffe 框架下完成,使用CUDA 并行計(jì)算架構(gòu),同時(shí)將Cudnn 加速庫(kù)集成到Caffe 框架下以加速計(jì)算機(jī)計(jì)算能力。下文未佩戴安全帽的人臉識(shí)別使用同樣的環(huán)境配置。
目標(biāo)檢測(cè)模型的檢測(cè)精度衡量指標(biāo)有召回率(Recall)、精確度(Precision)和均值平均精度(mean Average Precision,mAP)等,模型的檢測(cè)速度衡量指標(biāo)有每秒幀率(Frame Per Second,F(xiàn)PS)等,本文使用上述評(píng)價(jià)指標(biāo)對(duì)安全帽的佩戴檢測(cè)模型性能進(jìn)行衡量。
召回率和精確度的計(jì)算過程如式(9)和式(10)所示:
其中:TP 為真正例,表示模型分類正確,原本屬于正類的樣本分為正類;FP 為假正例,表示模型分類錯(cuò)誤,原本屬于負(fù)類的樣本分為正類;TN 為真負(fù)例,表示模型分類正確且原本屬于負(fù)類的樣本分為負(fù)類;FN 為假負(fù)例,表示模型分類錯(cuò)誤且原本屬于正類的樣本分為負(fù)類;Recall 表示分類器認(rèn)為是正類且原本確實(shí)是正類的部分占所有原本屬于正類的比例;Precision 表示分類器認(rèn)為是正類并且原本確實(shí)是正類的部分占所有分類器認(rèn)為是正類的比例。
根據(jù)式(9)和式(10)計(jì)算Recall 和Precision 值,并以Recall值為x軸,Precision 值為y軸繪制P-R 曲線,AP即為曲線所包圍的面積,在測(cè)試集上求每一類目標(biāo)的AP 值再取平均。mAP 的計(jì)算過程如式(11)所示:
探究MobileNet-SSD 相對(duì)于SSD 的優(yōu)越性,對(duì)其檢測(cè)速度和檢測(cè)精度進(jìn)行對(duì)比。
保持硬件平臺(tái)相同,分別統(tǒng)計(jì)SSD 算法在GPU和CPU 設(shè)備下的檢測(cè)速度,測(cè)試視頻來(lái)自互聯(lián)網(wǎng)的工地施工視頻,其中包含大量安全帽佩戴人員樣本。結(jié)果如表2 所示。
表2 SSD 在不同平臺(tái)下的檢測(cè)速度比較Table 2 Comparison of SSD detection speeds under different platforms(frame·s?1)
由表2 可知,GPU 平臺(tái)下檢測(cè)速度達(dá)到了15 frame/s 左右,即每秒可以處理大約15 張圖像,而CPU 平臺(tái)下檢測(cè)速度僅為1 frame/s 左右,圖像處理速度較慢,由此可知SSD 在GPU 平臺(tái)下的檢測(cè)速度遠(yuǎn)快于在CPU 平臺(tái)下的檢測(cè)速度。
使用相同的測(cè)試視頻,分別統(tǒng)計(jì)MobileNet-SSD 算法在GPU和CPU設(shè)備下的檢測(cè)速度,結(jié)果如表3所示。
表3 MobileNet-SSD 在不同平臺(tái)下檢測(cè)速度比較Table 3 Comparison of detection speed of MobileNet-SSD under different platforms(frame·s?1)
與SSD 在CPU 平臺(tái)下的速度(1.24 frame/s)對(duì)比,輕量型MobileNet-SSD 的檢測(cè)速度是其10.6 倍左右。對(duì)比SSD 的檢測(cè)精度(90.51%),MobileNet-SSD 的檢測(cè)精度為87.32%,較SSD 下降了約3.2 個(gè)百分點(diǎn)。因此可以認(rèn)為,在基于智能視頻監(jiān)控的安全帽佩戴檢測(cè)中,輕量型MobileNet-SSD 僅在損失很小精度的情況下,極大地提高了安全帽的檢測(cè)速度,使得安全帽佩戴檢測(cè)能夠在CPU 平臺(tái)下順利實(shí)現(xiàn)。
本文首先使用ImageNet數(shù)據(jù)集訓(xùn)練VGG 網(wǎng)絡(luò)[21],將得到的參數(shù)初始化后輸入MobieNet-SSD,并在此基礎(chǔ)上使用自建數(shù)據(jù)集進(jìn)行進(jìn)一步優(yōu)化訓(xùn)練。此過程中,初始學(xué)習(xí)率設(shè)置為0.001,迭代次數(shù)為50 000 次,學(xué)習(xí)率調(diào)整策略為Multistep,步長(zhǎng)分別設(shè)置為10 000、20 000、30 000,動(dòng)量(Momentum)為0.9,衰減系數(shù)(Delay)為0.000 5。MobileNet-SSD 和SSD 算法的損失隨迭代次數(shù)的變化曲線如圖4 所示。
圖4 訓(xùn)練損失曲線Fig.4 Training loss curve
由圖4 可知,在整個(gè)訓(xùn)練過程中SSD 算法具有更低的損失值,且迭代到14 000 次左右時(shí),SSD 和MobileNet-SSD 算法的損失值均不再震蕩而是趨于穩(wěn)定,SSD 收斂到更低的損失值。
由于計(jì)算機(jī)內(nèi)存限制,因此訓(xùn)練和驗(yàn)證不同時(shí)進(jìn)行,而是每訓(xùn)練5 000 次保存一組算法,并在保存的算法上對(duì)測(cè)試集進(jìn)行測(cè)試,以探究算法在特定的迭代次數(shù)時(shí)對(duì)圖像數(shù)據(jù)中目標(biāo)的檢測(cè)能力。測(cè)試集在MobileNet-SSD 算法上得到的Hat 類和Person 類的召回率和精確度分別如圖5 和圖6 所示。
圖5 MobileNet-SSD 各組算法的召回率統(tǒng)計(jì)結(jié)果Fig.5 Recall statistics of each group algorithm of MobileNet-SSD
圖6 MobileNet-SSD 各組算法的精確度統(tǒng)計(jì)結(jié)果Fig.6 Accuracy statistics results of each group algorithm of MobileNet-SSD
由圖5 和圖6 可知,隨著MobileNet-SSD 算法的訓(xùn)練加大,召回率和檢測(cè)精度不斷上升,之后逐漸趨于穩(wěn)定并在小范圍內(nèi)震蕩。當(dāng)訓(xùn)練到30 000 次(第6 組模型)和45 000 次(第9 組模型)時(shí),Hat 類和Person 類取得了最高的召回率,分別為91%和90.46%;當(dāng)訓(xùn)練到35 000 次(第7 組)和40 000 次(第8 組)時(shí),Hat 類和Person類取得了最高的精確度,分別為85.2%和85.5%。分析圖4 還可發(fā)現(xiàn)第8 組即SSD 模型訓(xùn)練40 000 次時(shí),檢測(cè)精度達(dá)到最大為90.51%,第9 組MobileNet-SSD 模型即訓(xùn)練45 000 次時(shí),檢測(cè)精度達(dá)到最大為87.32%。
圖7 MobileNet-SSD 和SSD 在各組模型的mAP 統(tǒng)計(jì)結(jié)果Fig.7 mAP statistical results of MobileNet-SSD and SSD in each group of models
除了對(duì)MobileNet-SSD 檢測(cè)精度進(jìn)行分析外,還需探究MobileNet-SSD的檢測(cè)速度。本文所使用的GPU型號(hào)為GTX 1080Ti,能有效地提高計(jì)算機(jī)的計(jì)算性能,但在實(shí)際應(yīng)用場(chǎng)景中,視頻監(jiān)控一般使用普通的CPU設(shè)備,CPU 設(shè)備不具備GPU 的并行加速計(jì)算能力。本文在其他硬件平臺(tái)相同下,分別在使用GPU 和CPU 設(shè)備下對(duì)最終模型的檢測(cè)速度進(jìn)行統(tǒng)計(jì)。測(cè)試集共有2 000 張圖像,其中安全帽圖像和人臉圖像各1 000 張,包含20 196 個(gè)人臉目標(biāo)和2 151 個(gè)安全帽目標(biāo),共22 348 個(gè)待檢測(cè)目標(biāo)。最終結(jié)果如表4 所示。
表4 不同算法分別在CPU和GPU平臺(tái)下的檢測(cè)速度比較Table 4 Comparison of detection speeds of different algorithms on CPU and GPU platforms
由表4可知,SSD算法在CPU平臺(tái)下檢測(cè)2 000張圖像共用了1 613 191.86 ms,而在GPU 平臺(tái)下檢測(cè)2 000 張圖像共用了130 645.27 ms,即SSD 算法在GPU 平臺(tái)下的檢測(cè)速度遠(yuǎn)高于在CPU 平臺(tái)下的檢測(cè)速度。此外,SSD 算法在GPU 平臺(tái)下的檢測(cè)速度達(dá)到了15 frame/s 左右,即每秒可以處理大約15 張圖像,而在CPU 平臺(tái)下的檢測(cè)速度僅為1frame/s 左右,圖像處理速度緩慢。因此,本文認(rèn)為SSD 算法在GPU 平臺(tái)下可以實(shí)現(xiàn)實(shí)時(shí)安全帽佩戴檢測(cè),但在CPU 平臺(tái)下還需進(jìn)一步優(yōu)化算法以提高安全帽佩戴的檢測(cè)速度。
與表4 中SSD 在CPU 平臺(tái)下的速度對(duì)比,輕量型MobileNet-SSD 的檢測(cè)速度是其11.9 倍左右。同時(shí)對(duì)比SSD 的檢測(cè)精度90.51%,MobileNet-SSD 的檢測(cè)精度為87.32%,較SSD 下降了約3.2 個(gè)百分點(diǎn)。因此可以認(rèn)為,在基于智能視頻監(jiān)控的安全帽佩戴檢測(cè)中,輕量型MobileNet-SSD 僅在損失很小精度的情況下,極大地提高了安全帽的檢測(cè)速度,使得安全帽佩戴的實(shí)時(shí)檢測(cè)能夠在CPU 平臺(tái)下順利實(shí)現(xiàn)。
為進(jìn)一步驗(yàn)證本文算法具有較高的檢測(cè)精度和檢測(cè)速度,分別使用Faster-RCNN 和YOLO 等經(jīng)典算法在相同測(cè)試數(shù)據(jù)集下進(jìn)行測(cè)試,結(jié)果如表5 所示。其算法采用Ubuntu16.04 系統(tǒng),在版本為Intel E5 2660 的CPU 平臺(tái)下進(jìn)行,內(nèi)存為16 GB DDR3 RAM(x2),硬盤版本為Intel 500G SSD,GPU 為NVIDIA GTX 1080Ti(x2)。
表5 不同算法下的檢測(cè)結(jié)果對(duì)比Table 5 Comparison of detection results under different algorithms
由表5可知,F(xiàn)aster-RCNN[22]具有較高的檢測(cè)精度,但其檢測(cè)速度緩慢,無(wú)法實(shí)現(xiàn)實(shí)時(shí)安全帽佩戴檢測(cè);YOLO 和SSD 算法檢測(cè)速度相當(dāng),但SSD 的檢測(cè)精度高于YOLO 的檢測(cè)精度;對(duì)于MobileNet-SSD,其檢測(cè)速度相對(duì)于SSD 有較大提升,但檢測(cè)精度有所下降。此結(jié)果再次印證本文結(jié)論,即輕量型MobileNet-SSD 僅在損失很小精度的情況下,極大地提高了安全帽的檢測(cè)速度,使得安全帽佩戴檢測(cè)能夠?qū)崟r(shí)實(shí)現(xiàn)。
為更直觀地展現(xiàn)MobileNet-SSD 的檢測(cè)效果,本文選取單目標(biāo)和多目標(biāo)情形、小目標(biāo)和極端小目標(biāo)情形、復(fù)雜背景和其他特殊應(yīng)用場(chǎng)景下的測(cè)試圖像序列進(jìn)行檢測(cè)效果驗(yàn)證。
安全帽佩戴檢測(cè)的最終目的是將佩戴安全帽人員的面部和安全帽作為一個(gè)整體區(qū)域提取出來(lái),針對(duì)沒有佩戴安全帽的人員僅提取其面部區(qū)域。圖8 和圖9分別為單目標(biāo)和多目標(biāo)檢測(cè)結(jié)果,佩戴安全帽[23]的人員的具體坐標(biāo)位置使用紅色矩形框(彩色效果見《計(jì)算機(jī)工程》官網(wǎng)HTML 版)標(biāo)出,未佩戴安全帽的人員人臉的具體位置使用藍(lán)色框標(biāo)出。圖8 和圖9 分別為選取了人臉正面、背面和多角度的3 張單目標(biāo)圖像的檢測(cè)結(jié)果對(duì)比。通常單目標(biāo)圖像[25]不存在目標(biāo)間的遮擋,因此其檢測(cè)過程相較于多目標(biāo)檢測(cè)更簡(jiǎn)單??傮w上,MobileNet-SSD 算法對(duì)單目標(biāo)圖像能做出正確的檢測(cè),檢測(cè)結(jié)果基本滿足需求。對(duì)于多目標(biāo)圖像,目標(biāo)間往往存在遮擋及互相干擾,這在一定程度上增加了安全帽佩戴檢測(cè)的難度。圖9(a)、9(b)均為沒有遮擋的情況,因此全部檢測(cè)成功。從圖9(c)的檢測(cè)結(jié)果可以看出,當(dāng)遮擋面積過大時(shí)會(huì)出現(xiàn)一定的漏檢情況,為安全帽佩戴檢測(cè)帶來(lái)誤差。
圖8 單目標(biāo)下mobileNet-SSD 的檢測(cè)結(jié)果展示Fig.8 Display of mobileNet-SSD detection results under single target
圖9 多目標(biāo)下mobileNet-SSD 的檢測(cè)部分結(jié)果展示Fig.9 shows the results of the detection part of mobileNet-SSD under multiple targets
在單目標(biāo)和多目標(biāo)情形、復(fù)雜背景情形和其他特殊情形下,MobileNet-SSD 的檢測(cè)效果與SSD 非常接近。而對(duì)于小目標(biāo)和極端小目標(biāo)的情形,兩者檢測(cè)效果差異較大,圖10 為MobileNet-SSD 在小目標(biāo)和極端小目標(biāo)情形下的安全帽佩戴檢測(cè)效果。
圖10 小目標(biāo)和極端小目標(biāo)下MobileNet-SSD 的檢測(cè)結(jié)果Fig.10 Mobilenet-SSD detection results for small targets and extremely small targets
觀察圖10(a)~圖10(c)可知,對(duì)于包含小目標(biāo)且小目標(biāo)間無(wú)遮擋的圖像,輕量型Mobilenet-SSD 表現(xiàn)出較好的檢測(cè)效果。而對(duì)于如圖10(d)包含大量的極端小目標(biāo)的圖像,輕量型Mobilenet-SSD 僅能檢測(cè)出很少一部分目標(biāo),檢測(cè)效果不佳。對(duì)比SSD 對(duì)極端小目標(biāo)的檢測(cè)結(jié)果可知,SSD 對(duì)圖像中的大部分目標(biāo)檢測(cè)正確,僅有小部分目標(biāo)出現(xiàn)漏檢情況。因此可以認(rèn)為,若視頻監(jiān)控中含有大量的極端小目標(biāo),輕量型Mobilenet-SSD 會(huì)出現(xiàn)嚴(yán)重漏檢的情況。但考慮到一般監(jiān)控視頻中多含有較小目標(biāo)和正常目標(biāo),含有極端小目標(biāo)的情況很少,且本文對(duì)極端小目標(biāo)無(wú)法進(jìn)行后續(xù)的人臉識(shí)別處理,因此極端小目標(biāo)的檢測(cè)并不在本文的研究范圍。綜合考慮,MobileNet-SSD 基本能夠滿足實(shí)際檢測(cè)需求。
針對(duì)真實(shí)場(chǎng)景下安全帽檢測(cè)所面臨的背景復(fù)雜且干擾性強(qiáng)、待檢測(cè)目標(biāo)較小、對(duì)檢測(cè)速度要求較高等問題,本文采用SSD 算法進(jìn)行安全帽佩戴檢測(cè)。由于SSD 算法在不使用GPU 加速時(shí)會(huì)出現(xiàn)檢測(cè)速度緩慢、內(nèi)存消耗大和計(jì)算復(fù)雜度高的問題,因此引入一種輕量級(jí)MobileNet 網(wǎng)絡(luò)代替SSD 中的基礎(chǔ)網(wǎng)絡(luò)VGG,在遷移學(xué)習(xí)策略上訓(xùn)練得到MobileNet-SSD 算法。實(shí)驗(yàn)結(jié)果表明,該算法在CPU 下檢測(cè)速度達(dá)到13.72 frame/s,檢測(cè)精度達(dá)到87.32%,較SSD算法的檢測(cè)速度提高了10.2 倍,MobileNet-SSD 在僅損失很小精度的情況下,大幅提升了安全帽佩戴檢測(cè)的速度。本文算法雖然加快了模型的檢測(cè)速度,但是其精度卻有所損失,下一步將研究如何在提高檢測(cè)速度的同時(shí)保持甚至提高檢測(cè)精度。