農(nóng)元君,王俊杰,徐曉東,趙雪冰
中國海洋大學(xué) 工程學(xué)院,山東 青島266100
建筑業(yè)因勞動密集及施工作業(yè)環(huán)境復(fù)雜導(dǎo)致安全事故多發(fā)。據(jù)住房和城鄉(xiāng)建設(shè)部統(tǒng)計(jì),2019年全國共發(fā)生房屋市政工程生產(chǎn)安全事故773起、死亡904人,給社會和家庭帶來了巨大的損失[1]。安全帽作為保障現(xiàn)場作業(yè)人員生命安全的基本裝置,很大程度上能減輕安全事故對作業(yè)人員的傷害。但由于施工現(xiàn)場安全管理疏忽、佩戴安全帽引起不適以及施工作業(yè)人員安全防護(hù)意識薄弱等原因,一些因未佩戴安全帽而引發(fā)的工程安全事故頻發(fā)。因此,實(shí)現(xiàn)建筑施工現(xiàn)場工人的安全帽佩戴識別和檢測具有重要的現(xiàn)實(shí)意義。
傳統(tǒng)的安全帽檢測方法主要包括施工管理人員現(xiàn)場巡檢以及查看監(jiān)控視頻等,存在耗時費(fèi)力、人工成本高、容易出現(xiàn)漏檢等缺陷。隨著計(jì)算機(jī)視覺技術(shù)的快速發(fā)展,目標(biāo)檢測技術(shù)掀起新的研究熱潮,為安全帽的智能化檢測提供了新的研究視角。目前,應(yīng)用廣泛的目標(biāo)檢測方法主要分為兩類:一類是以Fast R-CNN[2]和Faster R-CNN[3]等為代表的基于區(qū)域建議的目標(biāo)檢測算法;另一類是以SSD[4]和YOLO[5-7]等為代表的基于回歸的目標(biāo)檢測算法。前者檢測精度高但速度慢,難以實(shí)現(xiàn)實(shí)時檢測,后者檢測速度快但精度較低。目前已有學(xué)者將目標(biāo)檢測技術(shù)應(yīng)用到安全帽的佩戴檢測中。方明[8]、林俊[9]、施輝[10]、王兵[11]采用基于YOLO的方法對安全帽進(jìn)行自動識別和檢測;Wu[12]采用基于SSD 的方法對施工現(xiàn)場工人的安全帽佩戴進(jìn)行檢測;張明媛[13]、徐守坤[14]采用基于Faster R-CNN的方法自動識別和檢測安全帽。
盡管采用目標(biāo)檢測方法可實(shí)現(xiàn)對安全帽的自動檢測,且準(zhǔn)確率較高,但已有研究均采用GPU工作站作為實(shí)驗(yàn)平臺,缺乏在嵌入端對安全帽進(jìn)行檢測的考慮。相比而言,基于嵌入端的安全帽檢測方法將原有在服務(wù)器端的檢測任務(wù)遷移到數(shù)據(jù)源附近,具有實(shí)時數(shù)據(jù)處理、低延遲、部署成本低、可擴(kuò)展性強(qiáng)等優(yōu)勢,可實(shí)現(xiàn)對工人安全帽佩戴的快速檢測。
基于此,本文提出一種適用于嵌入式平臺的輕量化安全帽實(shí)時檢測方法MT-YOLO。該方法通過優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu)、引入空間金字塔池化模塊、改進(jìn)初始化錨框?qū)iny-YOLOv3[7]進(jìn)行改進(jìn)優(yōu)化。實(shí)驗(yàn)結(jié)果表明,所提方法具有較高的檢測精度,同時在嵌入式平臺NVIDIA Jetson Nano 上可達(dá)到實(shí)時的檢測速度,滿足了在嵌入端對安全帽佩戴進(jìn)行實(shí)時高精度檢測的需求。
Tiny-YOLOv3 作為YOLOv3[7]的輕量化版本,是一種端到端的基于回歸的目標(biāo)檢測方法。如圖1 所示,Tiny-YOLOv3 將目標(biāo)識別作為回歸問題進(jìn)行求解,直接在整幅圖上回歸得到目標(biāo)邊框的位置和類別,提高了識別的速度。Tiny-YOLOv3 網(wǎng)絡(luò)結(jié)構(gòu)如圖2 所示。以416×416 尺寸的輸入圖像為例,Tiny-YOLOv3 采用由7層卷積層和6 層池化層組成的特征提取網(wǎng)絡(luò)對輸入圖像進(jìn)行特征提取,特征提取完成后借鑒特征金字塔網(wǎng)絡(luò)[15]的思想,在13×13和26×26兩個尺度上進(jìn)行檢測。
圖1 Tiny-YOLOv3檢測原理Fig.1 Detection principle of Tiny-YOLOv3
圖2 Tiny-YOLOv3的網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Tiny-YOLOv3 network structure
Tiny-YOLOv3因結(jié)構(gòu)輕巧及計(jì)算量小等特點(diǎn),可在嵌入式設(shè)備上實(shí)現(xiàn)實(shí)時檢測,但對安全帽的檢測精度較低,無法滿足實(shí)際需求。基于上述考慮,對Tiny-YOLOv3進(jìn)行如下優(yōu)化:(1)通過改進(jìn)特征提取網(wǎng)絡(luò)和多尺度預(yù)測優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu);(2)引入空間金字塔池化模塊;(3)采用K-means聚類算法改進(jìn)初始化錨框;(4)引入CIoU邊界框回歸損失函數(shù)。
Tiny-YOLOv3 的特征提取網(wǎng)絡(luò)采用最大池化操作對特征圖進(jìn)行下采樣以降低特征圖的大小。最大池化操作在一定程度上可提高網(wǎng)絡(luò)的泛化能力,但只保留池化窗口中安全帽特征信息的最大值,會造成部分語義特征信息的丟失,進(jìn)而影響模型檢測性能。施工現(xiàn)場背景環(huán)境復(fù)雜,會對安全帽檢測產(chǎn)生干擾,因此安全帽的特征信息對網(wǎng)絡(luò)模型的訓(xùn)練學(xué)習(xí)至關(guān)重要。相較于最大池化操作,卷積操作對卷積窗口中的安全帽信息進(jìn)行相乘求和,考慮了卷積窗口中所有的安全帽信息,可降低安全帽特征信息的丟失。因此,將步長為2的最大池化層替換為步長為2的卷積層對特征圖進(jìn)行下采樣,提高網(wǎng)絡(luò)的特征提取能力。
Tiny-YOLOv3特征提取網(wǎng)絡(luò)中卷積核數(shù)量為1 024的第13層卷積層在416×416的輸入尺寸下消耗15.95億次浮點(diǎn)運(yùn)算,對計(jì)算資源有限的嵌入式平臺來說過于冗余,不利于網(wǎng)絡(luò)對安全帽的實(shí)時檢測。因此,移除特征提取網(wǎng)絡(luò)中第13 層卷積層以及第12 層最大池化層,降低Tiny-YOLOv3 的冗余度,提高其在嵌入式設(shè)備上的檢測速度。同時將第11 層的卷積核數(shù)量從512 減少到256以進(jìn)一步精簡網(wǎng)絡(luò)。
Tiny-YOLOv3對輸入圖像進(jìn)行特征提取后,在13×13、26×26 兩個尺度的特征圖上進(jìn)行預(yù)測,未能充分利用淺層的特征信息。如圖3 所示,與26×26 尺度的深層特征相比,52×52尺度的淺層特征包含豐富的安全帽細(xì)節(jié)信息和位置信息,對目標(biāo)定位較準(zhǔn)確,同時淺層特征感受野包含的背景噪聲小,對安全帽小目標(biāo)有更好的表征能力。在建筑施工現(xiàn)場安全帽檢測任務(wù)中,因檢測距離的遠(yuǎn)近會產(chǎn)生大小不同的安全帽目標(biāo),存在小目標(biāo)。為了提高Tiny-YOLOv3 對安全帽小目標(biāo)的檢測效果,優(yōu)化多尺度預(yù)測結(jié)構(gòu),增加一個52×52 的預(yù)測尺度,在13×13、26×26、52×52三個尺度的特征圖上進(jìn)行預(yù)測。
圖3 淺層特征與深層特征Fig.3 Shallow features and deep features
在施工現(xiàn)場的安全帽檢測中,因檢測距離的不同存在大中小不同尺度的安全帽目標(biāo),導(dǎo)致輸入網(wǎng)絡(luò)的安全帽特征信息尺度不一致。為了解決該問題,引入空間金字塔池化[16](spatial pyramid pooling,SPP)模塊。該模塊借鑒了空間金字塔的思想,通過池化操作將局部特征映射到不同維度空間并將其進(jìn)行融合,豐富特征圖的多尺度信息。如圖4 所示,13×13×256 的安全帽特征圖輸入SPP模塊后,在5×5、9×9、13×13三個大中小不同尺度的池化層上進(jìn)行池化操作,生成三個13×13×256的局部特征圖,最后將生成的三個局部特征圖與原始輸入的特征圖利用通道融合在一起,得到13×13×1 024的特征圖,豐富了安全帽特征圖的多尺度信息。引入SPP 模塊可將大中小不同尺度的安全帽特征進(jìn)行融合,有助于消除因不同大小目標(biāo)造成特征信息尺度不一致的影響,提高檢測準(zhǔn)確率。
圖4 空間金字塔池化模塊Fig.4 Spatial pyramid pooling module
將改進(jìn)后的模型命名為MT-YOLO,其結(jié)構(gòu)如圖5 所示。與Tiny-YOLOv3 相較,MT-YOLO 優(yōu)化了網(wǎng)絡(luò)結(jié)構(gòu),并引入了空間金字塔池化模塊。
圖5 MT-YOLO的網(wǎng)絡(luò)結(jié)構(gòu)Fig.5 MT-YOLO network structure
Tiny-YOLOv3 的初始化錨框由K-means 聚類算法在公共數(shù)據(jù)集上聚類生成,用于預(yù)測邊界框的坐標(biāo)。由于公共數(shù)據(jù)集基于自然場景采集,目標(biāo)類別豐富,所生成的錨框具有普遍性,不適合本文的安全帽檢測場景,使用原始錨框?qū)㈦y以得到準(zhǔn)確的目標(biāo)框信息。因此,需要采用K-means聚類算法在安全帽數(shù)據(jù)集上重新聚類,確定適合安全帽檢測場景的錨框。Tiny-YOLOv3 采用6 個錨框并按面積從小到大均分到2 個尺度的特征圖上,由于提出的MT-YOLO 增加了一個預(yù)測尺度,在三個尺度上進(jìn)行預(yù)測,因此將框數(shù)量增加至9 個,采用K-means聚類算法在安全帽數(shù)據(jù)集上進(jìn)行維度重聚類,目標(biāo)框聚類及錨框分布如圖6 所示,得到的9 個錨框分別為(5,9)、(11,19)、(17,30)、(24,44)、(34,60)、(46,85)、(70,111)、(90,167)、(149,245),將其面積按從小到大排列均分到52×52、26×26、13×13 三個不同尺度的特征圖上。
圖6 目標(biāo)框聚類及錨框分布圖Fig.6 Target clustering and anchor distribution
IoU(intersection over union)是目標(biāo)檢測中重要的一個指標(biāo),其通過計(jì)算真實(shí)框和預(yù)測框之間的交并比來衡量邊界框的優(yōu)劣。IoU的計(jì)算式如式(1)所示:
式中,A為目標(biāo)的預(yù)測框,B為目標(biāo)的真實(shí)框。
Tiny-YOLOv3 采用IoU 作為損失函數(shù),如式(2)所示。該損失函數(shù)具有尺度不變性的優(yōu)點(diǎn),但存在一個缺陷:當(dāng)檢測框與真實(shí)框沒有重合部分時,梯度不存在,無法進(jìn)行梯度下降優(yōu)化。
為了彌補(bǔ)IoU損失函數(shù)存在的不足,本文采用CIoU邊界框回歸損失函數(shù)[17],如式(3)所示。該損失函數(shù)考慮了檢測框的重疊面積以及檢測框中心點(diǎn)的距離,有效解決了當(dāng)檢測框與真實(shí)框沒有重合部分時所導(dǎo)致的IoU損失函數(shù)為零的問題,同時還增加檢測框和真實(shí)框的長寬比相似性的衡量參數(shù),使模型更傾向于往重疊區(qū)域密集的方向優(yōu)化。
式中,b、bgt分別表示預(yù)測框和真實(shí)框的中心點(diǎn),ρ表示預(yù)測框和真實(shí)框兩個中心點(diǎn)之間的歐式距離,c表示能夠同時包含預(yù)測框和真實(shí)框的最小閉包區(qū)域的對角線距離,υ為衡量檢測框和真實(shí)框的長寬比相似性的參數(shù),α為權(quán)重參數(shù)。
在公開的安全帽數(shù)據(jù)集GDUT-HWD[12]上對提出的方法進(jìn)行驗(yàn)證。該數(shù)據(jù)集涵蓋了不同背景條件、不同光照條件以及存在遮擋的圖像數(shù)據(jù),共有3 174張圖像和5個類別目標(biāo),其中1 587張圖像用作訓(xùn)練集,剩余的1 587張圖像用作測試集。5類目標(biāo)分別是佩戴紅色、黃色、白色、藍(lán)色安全帽的目標(biāo),以及未佩戴安全帽的目標(biāo),對應(yīng)的類別標(biāo)簽為red、yellow、white、blue和none。
目標(biāo)檢測方法的訓(xùn)練和驗(yàn)證對硬件環(huán)境要求較高,因此選擇在GPU 型號為GeForce RTX 2060 并采用CUDA10.1、CUDNN7.6 加速的工作站上對提出的模型進(jìn)行訓(xùn)練和驗(yàn)證,再將訓(xùn)練完的模型移植到GPU型號為ARMv8 Processor rev1 并采用CUDA10.2、CUDNN8.0加速的嵌入式平臺NVIDIA Jetson Nano 上進(jìn)行部署。實(shí)驗(yàn)基于Darknet 深度學(xué)習(xí)框架進(jìn)行,訓(xùn)練時批處理大小設(shè)置為64,分組設(shè)置16,動量設(shè)置0.9,權(quán)重衰減設(shè)置0.000 5,初始學(xué)習(xí)率設(shè)置10-3,同時引入Mixup[18]數(shù)據(jù)增強(qiáng)方法以提高模型的泛化性能。
為了定量評價(jià)實(shí)驗(yàn)結(jié)果,采用平均準(zhǔn)確率均值(mean average precision,mAP)、召回率(recall)、F1 值作為衡量模型精度的指標(biāo),計(jì)算公式如式(5)、式(6)、式(8)所示。同時還采用模型體積(volume)、浮點(diǎn)運(yùn)算量(billion float operations,BFLOPs)和每秒幀率(frame per second,F(xiàn)PS)作為衡量模型大小、計(jì)算量、及運(yùn)行速度的指標(biāo)。模型性能檢測及評價(jià)在416×416、512×512、608×608三個不同的輸入尺寸下進(jìn)行。
式中,TP表示真正例,F(xiàn)N表示偽負(fù)例,F(xiàn)P表示偽正例,n表示類別總數(shù)。
采用安全帽訓(xùn)練集對提出的模型進(jìn)行訓(xùn)練,訓(xùn)練過程的損失變化如圖7所示。網(wǎng)絡(luò)前5 000次迭代期間的損失值較大,隨著迭代次數(shù)的增加損失值不斷減小,當(dāng)?shù)?5 000 次后損失值基本穩(wěn)定在0.5 左右,表示模型收斂。
圖7 訓(xùn)練過程損失曲線Fig.7 Loss curve in training process
表1對比了所提出的MT-YOLO與其他方法的檢測性能。由表1 可知,MT-YOLO 在精度、計(jì)算量、模型體積上具有較大優(yōu)勢。在檢測精度方面,MT-YOLO 在608×608的輸入尺寸下實(shí)現(xiàn)了87.50%的mAP、84%的召回率、83%的F1值,較Tiny-YOLOv3相關(guān)指標(biāo)分別高出11.27、11和7個百分點(diǎn),與高精度版本YOLOv3相接近。尤為重要的是相較于Tiny-YOLOv3,提出的MT-YOLO方法在較低的輸入尺寸416×416 下仍能保持較高的檢測精度,表明其具有較強(qiáng)的魯棒性。在計(jì)算量和模型體積方面,MT-YOLO 方法的計(jì)算量和體積均小于Tiny-YOLOv3和YOLOv3方法,有利于緩解嵌入式設(shè)備的計(jì)算壓力,釋放存儲空間。實(shí)驗(yàn)結(jié)果表明,相較于Tiny-YOLOv3,所提方法在減少計(jì)算量和模型體積的同時,有效提高了安全帽檢測精度。
表1 不同模型的檢測性能Table 1 Detection results of different models
圖8為不同模型在五個類別目標(biāo)上的PR(precisonrecall)曲線,曲線下的面積即為相應(yīng)模型在該類目標(biāo)下實(shí)現(xiàn)的平均準(zhǔn)確率(average precision,AP)。從圖8可看出,所提出的MT-YOLO在五個類別目標(biāo)上的平均準(zhǔn)確率均高于Tiny-YOLOv3,與高精度版本YOLOv3相接近。
圖8 不同模型在五個類別目標(biāo)上的PR曲線Fig.8 PR curves of different models on five categories of targets
圖9展示了所提出的MT-YOLO在安全帽測試集中不同環(huán)境場景下的檢測結(jié)果。由圖9可知,在檢測角度不佳、目標(biāo)存在遮擋、目標(biāo)密集、小目標(biāo)等復(fù)雜環(huán)境場景下,MT-YOLO具有良好的檢測性能,均精準(zhǔn)地檢測出工人是否佩戴安全帽。
圖9 MT-YOLO在不同環(huán)境場景下的檢測結(jié)果可視化Fig.9 Detection results visualization of MT-YOLO under different environments
為了進(jìn)一步檢驗(yàn)所提出模型的泛化性,除了在公開的安全帽測試集上檢驗(yàn)MT-YOLO的效果之外,還運(yùn)用從施工現(xiàn)場收集的圖像數(shù)據(jù)直接檢驗(yàn)?zāi)P偷臋z測效果。圖10展示了不同模型在光線不佳、小目標(biāo)、目標(biāo)密集等實(shí)際施工現(xiàn)場環(huán)境下的檢測效果。由圖10 可見,Tiny-YOLOv3 存在較多的漏檢(圖中相應(yīng)實(shí)線橢圓處)和誤檢現(xiàn)象(圖中相應(yīng)虛線橢圓處),YOLOv3在密集目標(biāo)場景中也存在漏檢現(xiàn)象,但MT-YOLO依然保持了良好的檢測性能,均精準(zhǔn)地檢測出了安全帽目標(biāo),表明該方法具有良好的泛化性。
圖10 MT-YOLO與其他模型的泛化性檢測結(jié)果Fig.10 Generalization test results of MT-YOLO and other models
如圖11所示,為檢驗(yàn)提出的模型在嵌入式平臺上的檢測速度,將訓(xùn)練好的模型加載到TensorRT加速引擎中進(jìn)行加速推理后,部署到嵌入式平臺NVIDIA Jetson Nano上,并與其他模型的檢測速度相比較,結(jié)果如表2所示。
圖11 在嵌入式平臺Jetson Nano上進(jìn)行實(shí)驗(yàn)Fig.11 Experiment on embedded platform of Jetson Nano
表2 不同方法在Jetson Nano上的檢測速度Table 2 Detection speed of different models on Jetson Nano
由表2 可知,受嵌入式平臺計(jì)算能力的限制,檢測精度較高的YOLOv3 在Jetson Nano 上只達(dá)到了最高3.85 frame/s的檢測速度,無法實(shí)現(xiàn)實(shí)時檢測。而提出的MT-YOLO在三種輸入尺寸下分別實(shí)現(xiàn)了20.58、28.63、39.12 frame/s 的實(shí)時檢測速度,可滿足在嵌入端對安全帽進(jìn)行實(shí)時檢測的需求。為了提高檢測精度,本文對原始的Tiny-YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行了優(yōu)化并引入空間金字塔池化模塊,增加了模型的復(fù)雜度,使得MT-YOLO的檢測速度稍遜色于Tiny-YOLOv3,但依然滿足安全帽實(shí)時檢測的需求。實(shí)驗(yàn)結(jié)果表明,本文提出的MT-YOLO在嵌入端滿足實(shí)時檢測的情況下,檢測精度較Tiny-YOLOv3有較大幅度的提升,更適合在嵌入端進(jìn)行安全帽檢測。
為了實(shí)現(xiàn)在嵌入端對工人佩戴安全帽進(jìn)行檢測,以Tiny-YOLOv3 檢測方法為基礎(chǔ),通過優(yōu)化原始網(wǎng)絡(luò)結(jié)構(gòu)、引入空間金字塔池化、維度重聚類確定適合安全帽檢測的錨框、引入CIoU邊界框回歸損失函數(shù),提出一種適用于嵌入式平臺的輕量化安全帽檢測方法。實(shí)驗(yàn)結(jié)果表明,所提方法檢測精度高、計(jì)算量少、模型體積小、實(shí)時性好、泛化性和魯棒性強(qiáng),在608×608 的輸入尺寸下,平均準(zhǔn)確率均值和召回率分別達(dá)到了87.50%和84%,較Tiny-YOLOv3 提升了11.27 和11 個百分點(diǎn),計(jì)算量和模型體積較Tiny-YOLOv3 方法減少了22.06和63.40個百分點(diǎn),且在嵌入式平臺NVIDIA Jetson Nano上可達(dá)到20.58 frame/s的實(shí)時檢測速度,隨著輸入尺寸的減小,其在嵌入式平臺上的檢測速度可以進(jìn)一步提升。本文提出的方法在精度上稍遜色于Tiny-YOLOv3方法的高精度版本YOLOv3,下一步將引入注意力等機(jī)制,在保持實(shí)時檢測速度的情況下進(jìn)一步提升模型的檢測精度。