肖體剛,蔡樂才,高 祥,黃洪斌,張超陽
1.四川輕化工大學 自動化與信息工程學院,四川 自貢643000
2.宜賓學院 三江人工智能與機器人研究院,四川 宜賓644000
在智能監控報警系統中,施工場地安全帽佩戴檢測問題十分重要,安全帽是工作人員腦部的防護用具,在發生事故的情況下[1],可以有效地保護施工人員頭部免受重壓,能強有力地保護生命財產安全;那么,急需在智能監控報警系統中對安全帽佩戴情況進行實時準確地檢測,避免事故的發生[1]。
許多研究者使用機器學習和圖像處理技術實現了安全帽佩戴檢測,胡恬等采用YCbCr[2]色彩模型配合膚色定位到人臉,再結合圖像處理[2]和神經網絡實現安全帽佩戴檢測。劉曉慧等[3]采用hu矩陣和支持向量機相結合的方式完成安全帽檢測。李琪瑞[4]采用Vibe算法進行人體檢測,再使用凸字算法檢測頭部,最后使用HOG算法特征提取后結合SVM實現安全帽佩戴檢測。這些算法利用了膚色、頭部和人臉信息配合圖像處理和機器學習實現了安全帽檢測,取得了一定的效果,但實際檢測環境存在復雜背景、復雜干擾和安全帽體積較小等問題,基于傳統特征提取算法的安全帽檢測可能存在穩定性差和泛化能力不足等問題,導致安全帽檢測不準確。也有研究者采用基于卷積神經網絡(CNN)[5]的目標檢測算法實現安全帽檢測,實現了安全帽佩戴檢測,徐守坤等[5]在算法Faster-RCNN的基礎上進行改進,實現了安全帽佩戴檢測,并且檢測準確率高,但是算法實現復雜,訓練步驟繁瑣,檢測速率慢;對比傳統特征提取的目標檢測算法[5],基于CNN的目標檢測算法檢測準確率高。
基于CNN的目標檢測算法分為兩步法和一步法,兩步法設計思想是:先單獨采用CNN網絡或者算法進行先驗框(anchor box)的獲取,再進行分類和位置回歸,代表算法主要有RCNN[6]、Fast-RCNN[7]、Faster-RCNN[8];而一步法是采用端到端(end-to-end)設計思想,直接在同一個CNN中進行anchor獲取、類別和位置的預測,代表算法有YOLO[9]、SSD[10]、YOLOV2[11]以及YOLOv3[12]等等;兩種類別算法相比較,一步法的檢測速度快,模型訓練簡單,但檢測準確率稍弱;YOLOv3算法的檢測準確率高檢測速率也快。
綜上,本文提出一種基于改進YOLOv3[12]的安全帽佩戴檢測算法YOLOv3-WH,通過增大輸入圖像尺度,改進卷積基礎結構,增加多尺度預測,引入多尺度融合,并重新訓練獲取先驗框等改進方法,實現安全帽佩戴檢測,同時通過自制安全帽佩戴數據集進行改進模型的訓練和驗證;并在相同環境下與YOLOv3、SSD、Fast-RCNN[7]等檢測算法進行性能對比,檢驗改進算法的性能。
YOLOv3匯集了許多深度學習目標檢測框架的優點,運用CNN網絡Darknet-53[13]來實現特征提取,Darknet-53網絡結構使用了殘差結構的設計思想,將網絡層數設計更深但不會出現梯度爆炸和梯度消失[13]等問題,網絡能夠提取出目標更深層的信息;該網絡有53層,主要由卷積層和最大池化層[13]組成,網絡有殘差單元,使用3×3和1×1卷積層組成;網絡包含批標準化(Batch Normalization)[13],Leaky ReLU激活函數層。另外,YOLOv3采用多尺度進行檢測,在三種尺度之間使用了類似于FPN[14](Feature Pyramid Networks)特征金字塔結構,實現不同尺度特征信息的融合;YOLOv3算法分別在13×13、26×26和52×52三個尺度上實現類別和位置預測。YOLOv3[12]的主要結構如圖1所示。YOLOv3采用K-Means[15]聚類算法,獲取待檢測目標的anchor,然后將獲取的先驗框按檢測尺度進行分配,提升模型訓練和預測的速率,提升檢測的準確率。

圖1 YOLOv3網絡結構
YOLOv3是一種檢測準確率高且實時性好的目標檢測算法,圖2是YOLOv3與主流檢測算法的性能對比圖,可以看到YOLOv3檢測速率和準確率比大部分算法優秀。YOLOv3雖然在開源數據集[16]上檢測精準度和速率優于其他算法,但是在安全帽佩戴檢測問題上,需要進行改進,安全帽佩戴檢測主要解決安全帽是否佩戴到人員頭部的問題,因此目標大多數都是比較小,檢測背景也比較復雜;另外檢測速率需要實時性。為解決這個問題,本文在YOLOv3[16]的基礎上進行改進優化,提出一種安全帽佩戴檢測算法YOLOv3-WH,通過實驗和測試,驗證了改進算法在安全帽佩戴檢測上的有效性。

圖2 YOLOv3與其他算法性能對比
YOLOv3的主干卷積網絡是Darknet-53[15],Darknet-53網絡是在Darknet-19[15]的基礎上去掉了全連接層和池化層,再融合了ResNet[16]殘差網絡的跳躍連接層結構。網絡結構中主要使用1×1和3×3的卷積層,分別實現增加特征通道和壓縮特征增強網絡性能的作用。
本文使用深度可分離卷積(Depth Separable Convolution,DSC)結構的思想替換Darknet-53網絡里面殘差塊(Residual)[16]的傳統卷積部分,殘差[16]結構使CNN網絡的層數更深,提取目標深層的語義信息,但會丟失小目標特征信息,降低檢測精準度,同時加倍了計算量,降低檢測速率;為了提高算法在安全帽佩戴檢測上的檢測準確率和速率,本文引入深度可分離卷積結構,減少CNN網絡特征提取中目標信息的丟失,同時減少檢測模型的計算量,提升檢測模型的檢測速率。圖3中(a)圖是Darknet-53網絡中殘差塊的卷積結構,直接使用1×1和3×3連續卷積,然后使用跳躍連接組合通道輸出;本文的改進結構如圖3(b)所示,保留了1×1卷積結構,增加3×3的深度可分離卷積[16](DSC)進行特征圖通道卷積,然后使用1×1的卷積進行點卷積,實現通道特征層的融合;再使用跳躍式[16]連接組合特征,最后增加1×1卷積平滑特征輸出。

圖3 特征提取結構對比
深度可分離卷積[17]實現過程如圖4(a)圖所示,圖4(b)是傳統卷積實現過程,傳統卷積將所有通道一起卷積計算,深度可分離卷積[17]將輸入特征圖的每個通道分離,分別實現卷積操作,最后使用點卷積實現分離通道卷積的組合,達到與傳統卷積計算相同的效果。實現壓縮計算量,提升檢測速率,減少特征丟失的效果。

圖4 兩種卷積對比
通過計算公式對比效果,公式(1)是傳統卷積計算量,公式(2)是深度可分離卷積計算量,公式(3)是計算量壓縮比值;其中D K×D K是卷積核的大小[18],D F×D F是輸入特征圖的大小,M是輸入通道,N是輸出通道。將深度可分離卷積計算量和傳統卷積[17]計算量進行比值,如公式(3)所示,可以將計算量壓縮為原來的

本文為了提升安全帽檢測的準確率和檢測速率,將在Darknet-53網絡的基礎上進行改進;主要分為兩部分改進,第一部分上面已敘述,引入深度可分離卷積結構;第二部分將輸入圖像尺度從416×416增大為608×608尺度,減少CNN網絡下采樣時小目標特征的丟失,在Darknet-53網絡的基礎上,結合以上兩部分改進點進行優化,優化網絡如圖5所示。

圖5 改進網絡結構部分
YOLOv3采用多尺度檢測,獲取13×13、26×26和52×52三種特征層尺度進行預測;分別將13×13特征層2倍上采樣和26×26特征層進行融合預測,將26×26特征層2倍上采樣和52×52特征層進行融合預測,所以YOLOv3相比于SSD等算法,其檢測準確率較好。
YOLOv3主要在開源數據集[18]COCO和VOC[18]進行實驗,這些數據大部分檢測的目標物較大,安全帽作為防護用具佩戴在人員的頭部位置,大部分檢測目標區域較小,在經過多次卷積后較小安全帽區域的信息會丟失,導致整個安全帽佩戴檢測準確率降低。
為解決這個問題,本文將在多尺度檢測基礎上進行改進,添加低維的尺度檢測來增強對淺層的特征學習能力,在原算法的3尺度檢測基礎上拓展為4尺度檢測,根據輸入尺度為608×608,本文將添加152×152的檢測尺度;另外,原YOLOv3算法采用2倍上采樣,不能很好地融合淺層特征信息,本文將采用2倍上采樣和4倍上采樣相結合的方式實現不同淺層特征信息的融合,進一步減少卷積過程中較小安全帽區域的特征信息丟失,同時也使得深層特征信息得到更好的利用,提升安全帽佩戴檢測的準確率。
本文多尺度檢測改進結構如圖6所示,采用608×608的輸入圖像尺度,改進算法將在19×19、38×38、76×76和152×152四類特征尺度上進行檢測;在原YOLOv3算法的基礎上增加兩層4倍上采樣結構,其中主要改進點是將19×19特征層經4倍上采樣后與2倍上采樣特征層和76×76特征層進行級聯,將38×38特征層經4倍上采樣后與2倍上采樣特征層和152×152特征層進行級聯,另外兩層19×19和38×38與原算法一致;通過改進可以充分地利用安全帽的淺層特征信息,將不同尺度的特征融合后再進行安全帽佩戴檢測,進一步減少特征的丟失,提升安全帽佩戴檢測的準確率。

圖6 多尺度檢測改進結構
YOLOv3[18]中使用了先驗框(anchor box)思想,采用了K-Means[18]聚類算法根據標注的目標框(ground truth)獲取K個anchor box;獲取合適的anchor box可以提高檢測的準確率和檢測速率;YOLOv3算法根據COCO和VOC2007[18]等開源數據集獲取anchor box,開源數據集檢測的目標較大,獲取的anchor box也較大,不適合bounding box較小的安全帽檢測任務,那么就需要重新進行anchor box的選取。
在安全帽佩戴檢測任務中,聚類的目的是使anchor box與ground truth的IOU[19]越大越好,所以不能采用一般聚類方法的歐式距離,應該采用IOU來作為度量函數,公式(4)是新的度量函數;其中box是標注的真實目標框,centroid是聚類的中心點,IOU越大,距離越小,anchor box與真實框越接近。

使用標注的安全帽數據集進行聚類計算,獲得anchor box個數K與IOU的關系曲線如圖7所示,圖中IOU隨著anchor box數量增加而增加,在K=12后逐漸居于平穩,并且IOU值較大;所以本文選擇K=12,統計的anchor分配如表1所示,獲得12組anchor:(9,10),(12,13),(13,16),(15,18),(15,21),(17,19),(18,21),(22,26),(30,35),(47,54),(89,103),(205,237)。將anchor按照預測層尺度進行分配,最大感受野特征層19×19上使用(47,54),(89,103),(205,237)這三種anchor來檢測較大安全帽佩戴情況;在38×38特征層上使用(18,21),(22,26),(30,35);在76×76特征層上使用(15,18),(15,21),(17,19);在152×152特征層上使用(9,10),(12,13),(13,16),用于檢測較小安全帽佩戴情況。

圖7 先驗框個數K與IOU分析圖
YOLOv3-WH的損失函數公式(8)由位置損失公式(5)、置信度損失公式(6)以及分類損失公式(7)組成,在分類和置信度預測中,采用二元交叉熵損失[18](Binary Cross-Entropy)進行分類和置信度預測,使用多個獨立的logistic函數替換原本的softmax[18]分類;在位置信息回歸中,采用均方差誤差[18](Mean Square Error,MSE)實現預測。損失函數中λcoord和λnoobj是損失權重系數,分別代表坐標權重和不包含目標的置信度權重;添加權重系數是為了調節坐標誤差和置信度誤差的權重,本文參考YOLOv3算法的參數設置,調高位置誤差權重,將λcoord取值為5;另外,由于檢測圖像的大部分區域不包含目標物,在檢測過程中會導致網絡傾向于預測單元格不包含物體的情況,所以需要減少不包含目標物的計算權重,即將λnoobj取值0.5;N是anchor個數;x i、y i、w i、h i、C i和pi分別是預測目標橫縱坐標、目標框寬高、置信度和類別概率;x?i、y?i、w?i、h?i、C?i和p?i分別是真實的目標信息。

本文的實驗環境為:Intel?CoreTMi7-9750H CPU@2.60 GB 2.59 GHz,32 GB運行內存,Nvidia Gefo-rece Gtx1080ti,ubuntu18.04,64位操作系統,Tensorflow[18]深度學習框架。編程語言是Python,GPU加速軟件CUDA10.0和CUDNN7.6[19]。
實驗數據分為兩部分,一部分從網絡爬取,然后進行數據清洗選取適合的安全帽佩戴圖片;另一部分通過視頻幀獲得;大概覆蓋了工廠、工地、礦產以及車間等場所,避免了檢測背景環境的單一性,提升模型的泛化能力;兩個部分數據集綜合總計獲得7 000張安全帽佩戴圖像。采用開源工具Labelimg[19]標注數據,標注數據分為兩個類別,佩戴安全帽樣本標注為hat,未佩戴全帽樣本標注為person;最后按照5∶1比例分配樣本為訓練和測試樣本,分配情況如圖8所示,其中橫坐標表示的是標注的樣本數量。

表1 anchor box分配表

圖8 數據集分配統計
本文的實驗樣本數據集采用VOC2007[19]數據集的格式進行處理,需要對數據圖像進行統一的編號后使用Labelimg[19]標注軟件進行類別和位置信息標注,生成XML[19]腳本文件,圖9是標注和腳本數據制作過程;最后編寫Python腳本程序將標注好的數據轉換成TXT文件用于改進算法的訓練。

圖9 訓練樣本制作
為了驗證YOLOv3-WH改進算法的性能,本文采用平均精準度(mean Average Precision,mAP)和每秒檢測幀數(FPS)兩個指標對算法進行評估。其中,mAP是對所有類別的平均精度(Average Precision,AP)求取均值后獲得。精確度(P)如公式(9)所示,召回率(R)如公式(10)所示,平均精準度(mAP)如公式(13)所示。其中,TP[20](True Positive)表示檢測結果為正的正樣本[20],FP(False Positive)表示被檢測為負的正樣本;FN[20](False Negative)表示被檢測為負的正樣本。另外,本文統計了實驗過程中的FPS參數,以檢驗模型的檢測速率。


使用前面制作的安全帽佩戴數據集進行訓練,一共訓練四個網絡模型,分別是SSD[10]、Faster-RCNN[8]、YOLOv3[12]和本文改進模型YOLOv3-WH,訓練的目的是統一做對比分析。訓練的參數設置參考了YOLO官網上的訓練參數,設置批訓練數據量(batch_size)為32,輸入圖像尺度設置為608×608,權重衰減值[20](Decay)為0.000 5,訓練動量配置為0.9,整個訓練過程有40 000步分200個epoch(輪次)完成,實驗采用小批量梯度下降法[20]的方式進行優化參數,其中本文訓練過程中學習率(learning rate)呈動態變化,開始訓練的學習率為0.000 1,訓練次數7 000次后,學習率動態設置為0.000 03,訓練達到11 000次時,學習率穩定為0.000 01。
在對改進模型的訓練過程中,使用Tensorboard[20]統計訓練中的日志信息,并保存訓練的權重參數;通過統計的數據信息繪制了模型在訓練過程中損失函數的變化曲線,圖10是實驗過程原算法與改進后的算法損失值變化曲線對比結果,黃色曲線是未改進YOLOv3損失值變化情況,藍色曲線改進YOLOv3-WH損失值變化情況,橫坐標是訓練迭代次數(Iteration),縱坐標是總損失值(Loss),可以發現,兩個算法在初始時刻的損失值都很大,但是本文改進算法YOLOv3-WH初始損失值較??;在訓練次數超過20 000次后,模型開始逐漸收斂,最終訓練達到40 000次后,YOLOv3模型的損失值收斂到2.5,而本文改進算法損失值收斂到0.5??芍倪M的算法YOLOv3-WH使得最終的損失值收斂更小。

圖10 訓練損失曲線對比
通過保存訓練中預測邊界框與真實邊界框的交并比(IOU)來評估模型的性能[20],本文實驗統計了模型預測邊框和真實邊界框的平均交并比(AVG IOU)變化值,并繪制曲線圖,如圖11所示,可知,模型訓練在10 000次以內,平均交并比在不斷升高,但是YOLOv3-WH變化較未改進前穩定;30 000~40 000次迭代訓練后,本文改進算法平均交并比穩定在0.92附近,未改進YOLOv3算法則穩定在0.8附近,可知,本文改進算法YOLOv3-WH在針對安全帽檢測上的預測邊界框更加接近真實邊界框。

圖11 平均交并比對比
本文將YOLOv3-WH算法與目標檢測模型[21]Faster-RCNN、SSD和YOLOv3使用相同的測試數據集進行對比實驗,統計并計算AP[20]指標進行對比,如表2所示。同時,將上述算法的檢測平均精準度(mAP)、檢測速率(FPS)和模型大小進行對比統計,如表3所示。

表2 算法的AP值對比 %

表3 整體檢測性能對比
通過對統計的表2和表3分析可知,本文算法YOLOv3-WH的mAP達到了89%,相對比與Faster-RCNN[8]、SSD[10]和YOLOv3[12]算法性能分別提高了3.36個百分點、26.25個百分點、6.5個百分點,可知本文算法在安全帽佩戴檢測性能上要優于上述三種算法。另外,從統計的檢測速率分析上可知,本文算法檢測速率要優于YOLOv3和Faster-RCNN算法,檢測速率比YOLOv3提高了64%,但是相對比SSD算法,檢測速率還遠不及。并且,本文采用深度可分離卷積結構,使得模型的參數量大大壓縮,比上述三種算法模型參數都小,相對比YOLOv3算法,YOLOv3-WH模型參數量僅為原來的1/5。
本文進行了消融實驗對比分析,以檢驗各個改進點的優化作用,實驗統計結果如表4所示,其中改進點1、2、3分別對應基礎卷積網絡改進、多尺度檢測改進以及anchor優化,從表4中可知,引入深度可分離卷積改進基礎卷積網絡,可以提升檢測的速率;多尺度檢測改進點提升了檢測的平均檢測準確度,但是檢測速率變慢;而改進優化K-Means后,平均檢測準確度和檢測速率都提升了;結合上述三類改進點后,相對于YOLOv3,本文算法在安全帽佩戴檢測上相對可靠。

表4 消融實驗結果
下面隨機選取測試數據集的圖片進行檢測結果分析,對YOLOv3和YOLOv3-WH進行對比分析,圖12是YOLOv3算法改進前后的效果對比結果,從左往右分別是圖(1)、圖(2)、圖(3)和圖(4),可以看到圖(1)存在5個目標,并且安全帽目標較大,兩種算法都準確檢測到安全帽;圖(2)存在5個目標,存在圖片清晰度較差、安全帽較小以及部分遮擋等問題,YOLOv3檢測到3個,漏檢2個,YOLOv3-WH檢測到4個,漏檢了1個,圖(3)存在7個目標,圖片中背景復雜以及部分遮擋等問題,YOLOv3漏檢2個目標,YOLOv3-WH全部檢測準確。圖(4)是安全帽密集數據,YOLOv3-WH漏檢1個,YOLOv3漏檢6個。綜上各種環境下的圖片檢測結果可知,YOLOv3-WH可以準確檢測到安全帽佩戴情況,雖然存在小部分漏檢,但相比于YOLOv3算法,改進算法的檢測準確率提升了許多,同時泛化能力較好。圖13是本文算法YOLOv3-WH部分檢測結果,背景包含了建筑、工廠以及施工場所,佩戴或者未佩戴安全帽的人員存在于密集、遮擋或者干擾等位置,可以看到,YOLOv3-WH準確地檢測出安全帽佩戴的情況,也說明改進算法YOLOv3-WH的實用性。

圖12 改進前后效果對比

圖13 YOLOv3-WH部分檢測結果
針對在智能監控中安全帽佩戴檢測準確率低和檢測速率慢的問題,本文在YOLOv3的基礎上提出改進安全帽佩戴檢測算法YOLOv3-WH,通過增大輸入尺度,添加深度可分離卷積結構;采用四種尺度檢測,增加4倍上采樣結構層;以及優化K-Means聚類算法等改進措施。實驗結果表明,YOLOv3-WH損失函數收斂值更小,平均IOU值更大,YOLOv3-WH算法的mAP比YOLOv3提高了6.5%,檢測速率提高了64%,模型大小僅為YOLOv3的1/5,所以YOLOv3-WH安全帽佩戴檢測算法具有可行性。