游錦偉,薛 濤,于俊清*
(1.國能長源漢川發(fā)電有限公司,湖北 漢川 431614;2.華中科技大學計算機科學與技術學院,湖北 武漢 430074)
安全帽作為工業(yè)生產(chǎn)過程中必不可少的人身安全防護裝備,可以有效保障生產(chǎn)人員的安全。當前安全監(jiān)管部門在火電廠區(qū)內部安裝監(jiān)控攝像頭,通過人眼觀看監(jiān)控視頻的方式巡視工業(yè)生產(chǎn)運行過程中是否存在安全隱患。但是通過人眼查看監(jiān)控視頻的方式存在諸多缺陷,比如長時間疲勞工作的監(jiān)管人員容易遺漏監(jiān)控視頻畫面中工作人員沒有穿戴安全帽的危險情況,由于監(jiān)管人員自身的麻痹大意無法做到及時預警。利用計算機視覺領域中的相關技術,替代監(jiān)管人員查看監(jiān)控的方式完成安全帽檢測任務。開展基于工業(yè)監(jiān)控視頻的安全帽檢測算法研究,可以起到保障工業(yè)安全生產(chǎn)、維護工作人員生命安全、提高工業(yè)生產(chǎn)管理效率的作用。
在計算機視覺領域中,目標檢測是非常重要且基礎的一項任務,其中相關的目標檢測算法可以根據(jù)實現(xiàn)原理分為傳統(tǒng)目標檢測算法和基于深度學習的目標檢測算法[1]。傳統(tǒng)目標檢測算法主要是通過手工的方式提取目標的特征,例如安全帽的形狀顏色等特征,主要有維奧拉-瓊斯目標檢測框架(Viola-Jones Object Detection Framework,VJ-Det)[2]、可 變 型 部 件 模 型(Deformable Part-based Model,DPM)[3]、選擇性搜索(Selective Search,SS)[4]等。隨著深度學習的發(fā)展,基于深度學習的目標檢測算法因其優(yōu)越的魯棒性逐漸取代了傳統(tǒng)算法,成為工業(yè)領域安全帽檢測算法的主流技術[5]。Krizhevsky 等人在2012 年提出AlexNet[6],該算法獲得了ILSVRC-2012 圖像識別比賽的冠軍,之后更多更深的深度學習目標檢測算法被提出。2014 年,Girshick 等人發(fā)現(xiàn)了基于卷積神經(jīng)網(wǎng)絡特征提取的區(qū)域檢測模型(Regions with CNN features,R-CNN)[7]。后來者們在R-CNN的基礎上對模型繼續(xù)優(yōu)化,例如在網(wǎng)絡中加入空間金字塔池化層(Spatial Pyramid Pooling,SPP)[8]或特征金字塔網(wǎng)絡(Feature Pyramid Networks,F(xiàn)PN)[9]等,用來提高模型的檢測準確率,又提出了Fast R-CNN[10]、Faster R-CNN[11]、Mask R-CNN[12]等優(yōu)秀的算法。2016年,Liu W等人提出了SSD算法[13],并在此基礎上改進得到了DSSD算法[14],同年,Redmon J等人提出YOLO[15],該算法憑借較高的檢測精度與簡單易用的特性被廣泛運用于工業(yè)環(huán)境中各項目標檢測任務,之后經(jīng)過迭代衍生出了一系列的YOLO算法[16-18],本文對安全帽進行目標檢測任務是基于YOLOv5完成的。在工業(yè)生產(chǎn)環(huán)境中,目標檢測算法除了能夠識別安全帽的形狀和顏色外,還需要考慮復雜的背景、光照變化、遮擋以及攝像頭過遠導致目標過小等復雜問題,原有的YOLOv5算法并不足以應付這些場景,實際應用場景中容易出現(xiàn)誤檢、錯檢等問題。
為了能夠在復雜場景中實現(xiàn)更好的魯棒性和小目標的檢測精度,本文提出了改進的YOLOv5 算法,對YOLOv5 的Head 模塊進行了重構,通過基于k-means聚類算法對Anchor數(shù)目大小調整,增加網(wǎng)絡自頂向下特征提取過程中的上采樣,進一步擴大特征圖,并與淺層特征信息充分融合,增強了多尺度特征提取能力,并將改進后的算法應用到工業(yè)監(jiān)控視頻的安全帽佩戴行為檢測中,實際應用結果表明,改進后的算法對安全帽的檢測效果得到了有效提升,能夠滿足工業(yè)場景中的檢測需求。
本文選取YOLOv5算法作為基礎目標檢測模型框架。如圖1所示,YOLOv5的網(wǎng)絡模型結構由4部分組成,包括圖像輸入(Images)、骨干網(wǎng)絡(Backbone)、頸部(Neck)與檢測頭(Head)。
Anchor 是目標檢測算法中常用的一種技術手段,通常目標檢測算法會對預測的對象范圍進行約束,避免模型在訓練時盲目地尋找,如圖2。
圖2 Anchor Fig.2 Anchor
如圖1,YOLOv5中的Head模塊中的主體部分為3個Detect 檢測器,利用基于網(wǎng)格的anchor 在不同尺度的特征圖上進行目標檢測,不同的算法計算anchor 的位置都有所不同,YOLOv5算法中是使用k-means聚類算法來對數(shù)據(jù)集中目標的邊界框進行計算,得到大小不同的矩形框,并根據(jù)待檢測目標對象的尺寸進行匹配,從而識別出不同大小的物體。圖像輸入模塊會對輸入圖片進行自適應縮放,YOLOv5 算法的圖像輸入定義為640×640,當輸入為640×640 時,3 個尺度上的特征圖分別為:80×80、40×40、20×20。
圖1 YOLOv5 網(wǎng)絡結構Fig.1 YOLOv5 network structure
YOLOv5 算法基于k-means 聚類算法得到的9 個Anchor 進行預測,在YOLOv5 的網(wǎng)絡配置文件中可以看到初始的Anchor 維度參數(shù)為:(-[10,13,16,30,33,23]#P3/8;-[30,61,62,45,59,119]#P4/16;-[116,90,156,198,373,326]#P5/32)。如圖3 所示,YOLOv5 預測輸出端由3 個檢測頭組成,每個檢測頭對應一組Anchor 參數(shù)。YOLOv5算法會對輸入圖片進行自適應縮放操作,將網(wǎng)絡的圖像輸入尺寸統(tǒng)一調整為640×640。而#P3/8 網(wǎng)絡層檢測頭尺度為80×80,所以用于檢測尺度為8×8 的小目標。同理,#P4/16 網(wǎng)絡層檢測頭尺度為40×40,用于檢測尺度為16×16 的目標。而#P5/32 網(wǎng)絡層檢測頭尺度為20×20,用于檢測尺寸為32×32 的 較 大 目 標。YOLOv5 的3 組Anchor 是 基 于COCO 數(shù)據(jù)集聚類得到,并不適用于本文所構建的安全帽目標檢測數(shù)據(jù)集。由于YOLOv5具有在模型訓練過程中自適應重新計算并調整Anchor大小的能力,故本文使用k-means聚類算法對安全帽數(shù)據(jù)集重新進行聚類分析,在YOLOv5 的Head 模塊網(wǎng)絡結構的AnchorBoxes中增加一組專門針對于小目標的Anchor:(-[5,6,8,14,15,11]#4)。
圖3 YOLOv5 檢測頭Fig.3 YOLOv5 head module
深度學習中,感受野指的是網(wǎng)絡模型提取的特征圖在原始輸入圖片中對應區(qū)域的大小。如圖3 所示,本文構建的安全帽數(shù)據(jù)集中圖片尺寸為1 920×1 080,以圖片矩形長邊1 920作為放縮標注,針對較小目標的檢測頭在安全帽圖片上的感受野邊長為1 920/640×8=24。也就是說,如果安全帽數(shù)據(jù)集圖片中的目標區(qū)域面積小于242像素,YOLOv5網(wǎng)絡進行相應的特征提取與學習就會非常困難。
卷積神經(jīng)網(wǎng)絡對圖像進行特征提取的方式主要是上采樣與下采樣。如圖4 所示,通過多次卷積上采樣操作,卷積網(wǎng)絡將提取到的特征圖尺寸不斷放大,生成逐漸抽象的特征。通過多次卷積下采樣操作,對圖像特征信息進行池化降維,避免過擬合。隨著卷積神經(jīng)網(wǎng)絡層數(shù)的加深,所得到的感受野面積也在逐漸擴大。其中淺層網(wǎng)絡卷積操作較少,映射于原圖像的感受野面積較小,可以提取到更細粒度的特征信息,比如安全帽的形狀、顏色等特征。而深層網(wǎng)絡經(jīng)過多次卷積下采樣,映射于原圖像的感受野面積越來越大,丟棄了許多細節(jié)特征,所提取到的特征信息也更加抽象。
圖4 YOLOv5感受野Fig.4 YOLOv5 receptive field
基于YOLOv5的小目標檢測網(wǎng)絡改進思路就是在輸入圖像中較小的目標對象區(qū)域盡可能多地提取到更完整的特征信息。本文考慮增加YOLOv5 的Head 模塊中的上采樣操作次數(shù),擴大網(wǎng)絡中的特征圖尺寸,增加特征提取網(wǎng)絡對輸入圖像進行多尺度的特征提取,并增加網(wǎng)絡結構中的連接層,充分融合淺層特征信息與深層特征信息。改進前YOLOv5 的Head 模塊網(wǎng)絡結構層如圖5所示。
圖5 改進前Head模塊網(wǎng)絡結構Fig.5 Head module network structure before improvement
改進后的YOLOv5的Head模塊網(wǎng)絡結構層如圖6所示。在Head網(wǎng)絡第17層BottleneckCSP 網(wǎng)絡提取特征完成卷積操作之后,對提取到的特征圖增加上采樣操作,可以進一步擴大特征圖的尺寸。在Head網(wǎng)絡第20層將得到的包含淺層網(wǎng)絡信息的特征圖與YOLOv5的Backbone 模塊中深層網(wǎng)絡信息特征圖進一步融合,以此獲取更多的特征信息。在Head 網(wǎng)絡的第31 層,即網(wǎng)絡的預測輸出層,為了與新增一組Anchor進行匹配,增加小目標檢測層,共使用[21,24,27,30]4 組檢測層進行計算。改進后的網(wǎng)絡模型結構更加復雜,F(xiàn)LOPs計算量增加,受到GPU計算資源的限制,在模型訓練過程中需要調整網(wǎng)絡的batch-size,將YOLOv5 原始batch-size默認值做減半處理。
圖6 改進后Head 模塊網(wǎng)絡結構Fig.6 Head module network structure after improvement
本文構建數(shù)據(jù)集的視頻來源于海康威視智能監(jiān)控視頻管理平臺,感興趣區(qū)域(Region of Interest,ROI)內的待檢測目標對象為監(jiān)控視頻畫面中的工作人員。為保證所構建的工業(yè)數(shù)據(jù)集能夠最大程度真實反映實際生產(chǎn)作業(yè)情況,多次實地走訪與現(xiàn)場調研,選取接近一年時間跨度獲取監(jiān)控視頻,篩除畫面模糊不清的模擬攝像頭監(jiān)控視頻片段,選取數(shù)字攝像頭監(jiān)控視頻流中畫面清晰的視頻片段,得到視頻分辨率為1 080P(1 920×1 080)的原始視頻。獲取原始視頻之后,本文設計了一種針對工業(yè)監(jiān)控視頻的關鍵幀提取算法的方式,篩選關鍵ROI 片段,完成視頻切幀與關鍵幀保存,對得到的圖片幀使用LabelImg 標注工具采用PASCAL VOC 格式進行標注。構建的數(shù)據(jù)集命名為安全帽目標檢測數(shù)據(jù)集(HUST Safety Helmet Object Detection Dataset,HUST-SHOD),其中根據(jù)檢測任務,HUSTSHOD 可細分為安全帽佩戴狀態(tài)檢測數(shù)據(jù)集(HUST Safety Helmet Wear Dataset,HUST-SHWD)與安全帽佩戴顏色檢測數(shù)據(jù)集(HUST Safety Helmet Wear Dataset of Color,HUST-SHWD_Color)。
對安全帽目標檢測數(shù)據(jù)集進行劃分,訓練集:驗證集:測試集比例設定為8∶1∶1。對數(shù)據(jù)集中的15 774個實例進行劃分,HUST-SHWD 中訓練集包含6 225個正樣本實例,4 419 個負樣本實例,驗證集與測試集數(shù)據(jù)量相同,都包含784 個正樣本實例與493 個負樣本實例。HUST-SHWD_Color中訓練集包含3 395個佩戴藍色安全帽實例,1 443個佩戴黃色安全帽實例,1 001個佩戴紅色安全帽實例,436個佩戴白色安全帽實例,以及4 279 個負樣本實例。驗證集與測試集數(shù)據(jù)量相同,都包含430 個佩戴藍色安全帽實例,178 個佩戴黃色安全帽實例,100個佩戴紅色安全帽實例,51個佩戴白色安全帽實例,以及563個負樣本實例。
人體頭部區(qū)域面積較小,不易被遮擋,故采用Mosaic 和MixUp 數(shù)據(jù)增強技術對訓練過程中一個Batch圖片進行不同程度的混合,增強模型的魯棒性。
1)Mosaic:文獻[17]提出在模型訓練過程中對于獲取到的同一個Batch 中的4 張不同圖片按照一定比例混合成為一個全新的圖片幀。如圖7 所示,在訓練過程中使用Mosaic 數(shù)據(jù)增強,可以使得模型學習如何在非正常情況下識別更小比例的目標,同時它還可以使模型在合成圖片幀的不同區(qū)域分別識別定位不同類別的目標。
圖7 Mosaic數(shù)據(jù)增強示意圖Fig.7 Schematic diagram of Mosaic data enhancement
2)Mixup:文獻[19]提出,在模型訓練過程中生成虛擬實例。隨機挑選兩張圖片并按照一定比例(α:β)進行混合得到全新圖片,模型對新圖片分類結果的概率遵循α:β的混合比例,改變模型在訓練過程中對于單個實例的線性分類結果,決策邊界更為平滑,泛化能力更強。基于MixUp 的虛擬實例構建公式,其中xi,xj是原始圖片輸入得到的向量,yi,yj是經(jīng)過一次標簽重新混合編碼得到的輸出向量。
Mosaic 與Mixup 數(shù)據(jù)增強方式優(yōu)點明顯,其本質思想都是通過在模型訓練過程中通過混合不同的圖片或實例生成全新樣本來提高模型的分類與泛化能力。并且混合后不會生成與原始數(shù)據(jù)無關的干擾信息,模型在學習到更多的實例分類結果,極大地提高訓練效率。
安全帽目標檢測實驗基于HUST-SHWD 與HUST-SHWD_Color 數(shù) 據(jù) 集,選 取 文 獻[20]中XuanyuWang 等人改進后的YOLOv3算法、文獻[21]中LeeCH 等人所使用的YOLOv4 算法、原始YOLOv5 算法、優(yōu)化后的YOLOv5 模型融合算法與改進后的YOLOv5-SOD算法對比實驗。
安全帽佩戴檢測實驗基于HUST-SHWD,對工作人員頭部是否佩戴安全帽的情況進行檢測。表1列出使用不同目標檢測算法對安全帽佩戴狀態(tài)的檢測結果,采用準確率(P)、召回率(Recall)、mAP@.5 與mAP@.5:.95 4 種指標對算法進行評估。本文提出的YOLOv5 模型融合算法,使用深度神經(jīng)網(wǎng)絡模型替換YOLOv5的Backbone 網(wǎng)絡,以ResNet-50與EfficientNet作為其Backbone 網(wǎng)絡的模型mAP@.5 值均得到提升,但前者mAP@.5:.95 值低于原YOLOv5 算法。使用輕量化網(wǎng)絡模型替換,與優(yōu)化前的mAP@.5 值相比沒有得到顯著提升。YOLOv5+EfficientNet 模型融合算法mAP@. 5=0.985,本文改進后的YOLOv5 算法mAP@.5:.95=0.766,本文改進優(yōu)化的兩種算法取得最優(yōu)效果。
表1 安全帽佩戴檢測對比實驗結果Table1 Results of comparative tests of helmet wearing detection
安全帽佩戴顏色檢測實驗基于HUST-SHWD_Color,對工作人員頭部佩戴安全帽顏色的情況進行檢測。表2列出使用不同目標檢測算法對安全帽佩戴狀態(tài)的檢測結果。本文提出的YOLOv5模型融合算法,使用深度神經(jīng)網(wǎng)絡模型替換YOLOv5的Backbone網(wǎng)絡,以EfficientNet 作為其Backbone 網(wǎng)絡模型mAP@.5 值與mAP@.5:.95 均 得 到 提 升,但 以ResNet-50 作 為 其Backbone 的mAP@.5 值 與mAP@.5:.95 值 均 低 于 原YOLOv5算法。使用輕量化網(wǎng)絡模型替換,與優(yōu)化前的mAP@.5值與mAP@.5:.95值相比均有不同程度的下降。改進后的YOLOv5 算法mAP@.5=0.981,mAP@.5:.95=0.775。本文改進算法檢測準確率取得提升。
表2 安全帽顏色檢測對比實驗結果Table2 Results of comparative tests of helmet color detection
對比改進前后的算法對于實際樣例的檢測效果,如圖8所示,改進前的YOLOv5算法無法檢測到工業(yè)生產(chǎn)作業(yè)區(qū)域復雜背景中被遮擋的困難目標與受到光照變化影響的困難目標,以及遠景圖像中的小目標。本文改進的YOLOv5算法在工業(yè)環(huán)境復雜背景中具有小目標魯棒性、遮擋魯棒性、光照魯棒性等諸多優(yōu)點,優(yōu)于原始的YOLOv5算法。
本文選用基于YOLOv5的目標檢測算法完成安全帽佩戴檢測任務,并構建了安全帽目標檢測數(shù)據(jù)集。安全帽目標檢測數(shù)據(jù)集由HUST-SHWD 與HUSTSHWD_Color 兩類構成。本文構建的5 類數(shù)據(jù)集涵蓋了工業(yè)實際生產(chǎn)中各種情況??倲?shù)據(jù)標注量為圖片29 865張,實例54 603個。在原有網(wǎng)絡結構基礎上,通過基于k-means聚類算法對安全帽數(shù)據(jù)集聚類得到的Anchor 數(shù)目與大小進行了調整,增加了自頂向下過程中的上采樣,對提取到的特征圖進一步擴大并與淺層特征信息充分融合,增強了模型多尺度特征提取能力,提高了YOLOv5算法對于小目標等困難目標的檢測準確率。與改進前的YOLOv5 算法進行對比實驗,從檢測準確率、速度、模型體量等多方面綜合考慮,選擇改進后的YOLOv5 算法作為安全帽檢測算法,實現(xiàn)算法的工程落地。