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