肖體剛, 蔡樂才, 湯科元, 高 祥, 張超洋
(1.四川輕化工大學自動化與信息工程學院, 四川 自貢 643000;2.宜賓學院三江人工智能與機器人研究院, 四川 宜賓 644000)
在施工、生產和煤礦作業(yè)中,安全帽是一種保護工作人員頭部的工具[1],在作業(yè)過程中是必須要求所有人員佩戴。安全帽可以保護頭部免受高處墜物對頭部的沖擊力,減輕頭部在重壓下受到的損傷,從而保護工作人員在危機時刻的生命安全[2]。根據(jù)權威機構的部分統(tǒng)計顯示,施工場所造成的傷亡事故大部分都是因為沒有佩戴安全帽造成的,為了降低施工人員因沒有佩戴安全帽造成的事故率,有必要對人員進行安全帽佩戴檢測[2]。另外,在準確檢測出安全帽佩戴情況的前提下,快速檢測出未佩戴安全帽人員,并及時給予預警和提醒,也會大大降低因未佩戴安全帽造成的生命和財產損失發(fā)生率[2]。因而,在工廠等需要佩戴安全帽的場所中,及時并準確地檢測出安全帽佩戴情況是一個值得研究的問題。
近年來,卷積神經網絡提取圖像特征為分類等任務帶來了很大的提升,這引起了很多計算機視覺方向學者的青睞,很多研究機構也是在此基礎上進行了一系列的視覺任務研究,其中基于深度學習的目標檢測尤為熱門,產生了許多經典的目標檢測算法。Girshick等[3]在2014年結合了卷積網絡和候選區(qū)域框算法(selective search)提出了區(qū)域卷積神經網絡(R-CNN)算法,揭開了深度特征的目標檢測序幕。2015年,Girshick等[4]在R-CNN的基礎上提出了Fast-RCNN算法,先進行全圖的卷積特征提取后再進行候選框的提取,很大程度上提升了檢測的速率。同年,Ren等[5]使用區(qū)域搜索網絡(RPN)結合卷積網絡提出Faster-RCNN算法,在保證檢測精度的同時,提高了檢測速率,達到17 fps。2016年,Redmon等[6]提出了端到端的目標檢測算法YOLO,從此開啟了一步法的深度學習目標檢測時代。在同年的國際視覺會議上,中國學者Liu等[7]也提出了相同類型的目標檢測算法SSD,SSD不僅在檢測速度上很快,平均檢測精準度也首次超過了兩步檢測法Faster R-CNN。但是從實驗對比和分析上來看,在對較小目標和密集目標的檢測上,端到端的目標檢測算法仍需改進,基于此,Redmon[8]又相繼提出了YOLOv2和YOLOv3檢測算法。
隨著深度目標檢測的快速發(fā)展,很多研究者將這種技術應用到實際的工程實踐中。吳天舒等[9]運用YOLO算法進行駕駛員安全帶檢測,實現(xiàn)了對駕駛員安全帶的快速檢測。沈新烽等[10]在SSD算法的基礎上進行改進,運用到零部件檢測中,實現(xiàn)了在生產線上對零件的精確實時檢測。安全帽佩戴檢測問題也是一類目標檢測問題,國內外很多學者已經進行了相關的研究。劉曉慧等[11]通過膚色檢測的方法定位到人臉,然后提取到安全帽的Hu矩,利用支持向量機完成對安全帽的檢測。Park[12]等通過方向梯度直方圖和顏色直方圖檢測安全帽。賈峻蘇等[13]采用可變形部件模型,將梯度方向直方圖、顏色特征和局部二值模式直方圖進行組合,加上支持向量機對安全帽的佩戴進行檢測。這些方法在安全帽檢測上取得了一些效果,但是這些方法采用人工設計特征提取算法的方式進行檢測,泛化能力比較差,人工設計特征提取算法需要花費大量時間,可能在復雜的環(huán)境因素干擾下,檢測效果魯棒性較差。為此,一些學者采用深度學習目標檢測算法完成檢測任務,采用卷積神經網絡進行特征提取,在搭建的卷積網絡下運用大量數(shù)據(jù)進行訓練,使得最后的檢測模型對各種檢測環(huán)境有較強的適應性。李昕等[14]采用在深度目標檢測算法YOLOv3的基礎上進行改進,實現(xiàn)了對遙感圖像中的油罐檢測。徐守坤等[15]采用對兩步目標檢測算法Faster-RCNN進行改進,實現(xiàn)了對安全帽佩戴的檢測。杜晨錫等[16]在YOLOv2的基礎上進行改進,完成了對視頻火焰的檢測,達到對火災進行預測的效果。這些研究都在深度目標檢測算法的基礎上改進,實現(xiàn)了對特定目標的檢測任務,在檢測精度和檢測速率上取得了比較好的效果。而且,由于采用卷積網絡提取特征,模型的泛化能力比傳統(tǒng)檢測算法較好,同時也證明了對于特定目標的檢測,基于深度學習目標檢測的改進算法具有可行性。
通過以上的分析,本文在SSD算法的基礎上,提出一種改進SSD的安全帽佩戴檢測算法,以實現(xiàn)對安全帽佩戴情況的快速準確檢測。為了實現(xiàn)提高檢測速率,替換SSD算法的卷積神經網絡VGG-16為MobileNetV3-small,同時將輸入圖片尺寸從300×300減少為224×224。為提升改進算法的檢測準確度,引入特征金字塔網絡結構,融合不同分辨率的特征圖。通過爬蟲網絡收集以及實際監(jiān)控錄像的方式獲取數(shù)據(jù)并制作數(shù)據(jù)集,命名為HWear。實驗表明,相比SSD算法,本文改進的算法提升了檢測精度和檢測速率,有助于將來在移動端現(xiàn)場部署。
SSD目標檢測算法是2016年ECCV會議上由Liu等[7]提出的算法,相對于two-stage方法有著更快的檢測速率。SSD的主干特征提取網絡是由VGG-16卷積網絡組成,其在VGG-16的網絡基礎上添加了部分卷積層獲取不同尺度的特征圖用于位置和類別預測,實現(xiàn)多尺度特征圖預測結構。SSD算法網絡如圖 1所示,其中多尺度預測提取的特征圖尺寸分別是38×38、19×19、10×10、5×5、3×3、1×1。SSD算法的目標檢測損失函數(shù)如式(1)表示,由位置損失和分類損失加權求和組成,本文實驗過程中的訓練和測試都是按照這個函數(shù)進行。
圖1 SSD網絡圖
(1)
其中:M表示正樣本的總和;x表示默認框和真實框的匹配結果,x=0表示失敗,x=1表示成功;c是softmax函數(shù)分別對每一類別判斷的置信度;Lloc(x,l,g)為位置損失函數(shù),Lconf(x,c)分類損失函數(shù),分別表示為:
(2)
(3)
(4)
本文使用MobileNetV3-small作為改進SSD算法的特征提取主干網絡。為了配合SSD算法,本文移除了MobileNetV3-small[17]的平均池化層和1×1卷積層,然后在簡單處理后的MobileNetV3-small網絡后面添加一系列卷積層,改進算法的整體網絡模型如圖2所示,其中藍色框表示bottleneck結構得到的特征層,黃色框表示正常卷積的特征層,網絡結構參數(shù)見表1。
表1 MobileNetV3-small-SSD網絡參數(shù)表
圖2 MobileNetV3-small-SSD網絡結構圖
通過一些修改,本文的算法框架將原SSD算法輸入尺寸300×300減少為224×224;原SSD算法獲取38×38、19×19、10×10、5×5、3×3、1×1共6個尺寸的特征圖實現(xiàn)多尺度特征圖檢測,6種特征層之間沒有任何聯(lián)系,本文算法選取28×28、14×14、7×7、4×4、2×2、1×1共6種尺寸特征圖為特征金字塔結構做準備,實現(xiàn)層與層之間的信息融合,便于計算從特征圖到原始圖像的對應位置關系;將獲取6種特征圖自底向上構成特征金字塔結構,實現(xiàn)不同特征層的融合。
MobileNetV3[17]中主要的結構就是bottleneck,其主要由三部分組成:深度可分離卷積、反殘差結構和SE塊。反殘差結構是在MobileNet V2中用ResNet的殘差結構改進得到[18],在 bottleneck 結構中當卷積核步長為 1 時使用,用于減少梯度消失的出現(xiàn)。bottleneck結構先使用逐點卷積降維,再使用深度卷積,最后使用逐點卷積提升維度。MobileNetV3-small的bottleneck模塊結構如圖3所示。
圖3 bottleneck 結構
深度可分離卷積計算公式為:
(5)
其中:P表示輸出特征圖;G表示卷積核;K表示輸入特征圖;i和j為特征圖像素位置;k、l表示輸出特征圖分辨率;m表示通道數(shù)[18]。
相較于標準卷積,深度可分離卷積分為深度卷積和點卷積兩個階段[18],如圖4所示,一般來說標準的多通道卷積的計算如公式(6)所示,深度可分離卷積的計算如公式(7)所示。
圖4 標準卷積和深度可分離卷積對比圖
DK×DK×M×N×DF×DF
(6)
DK×DK×M×DF×DF+M×N×DF×DF
(7)
(8)
SE模塊首先存在于SENet網絡結構中[18],它將特征通道的相關性實現(xiàn)建模,增強重要的特征信息,提升網絡模型的魯棒性,這部分在網絡模型中是可以選擇的。本文所使用的bottleneck 結構的內部就是使用了這個SE模塊。SE模塊的h-swish激活函數(shù)是由swish演變而來,與swish函數(shù)類似,其公式為:
(9)
SSD模型的金字塔特征層檢測結構如圖5所示,其從不同層提取不同大小的特征圖做預測,不同深度的特征圖有著不同的語義信息,淺層的特征層分辨率高,包含的語義信息比較少,對于小目標的檢測魯棒性較好,深層的特征層學到更深的語義信息,但也丟失了特征信息,對小目標的檢測效果較差。本文使用MobileNetV3-small輕量型卷積網絡替換原來SSD的VGG-16網絡,必然會導致特征信息的提取減少。為了減少這個缺陷帶來的影響,本文引入特征金字塔網絡結構融合特征,如圖6所示。特征金字塔網絡結構[19]是將高分辨率的淺層特征層和低分辨率深層特征層進行融合,使得最終用于預測的特征圖同時具有淺層特征和深層特征的語義信息,使得整體的檢測精度提升,從而提升改進算法在安全帽佩戴檢測這一問題上的魯棒性。
圖5 金字塔特征層
圖6 特征金字塔網絡
由圖6可知,本文截取6種不同分辨率的特征層組成金字塔結構,然后自頂向下將深層更加抽象的特征層進行2倍的上采樣,與前一層特征層的尺度一致,采用1×1卷積將通道數(shù)提升到512,提高最后的預測效果。本文特征金字塔網絡會產生6類融合了不同尺度、不同語義信息的特征層,使用非極大值抑制(NMS)對所有預測的目標框進行篩選后獲得最終的預測目標框。與SSD算法相比,本文算法將大大減少計算量,提升檢測速率。
通過爬蟲收集和實際場景監(jiān)控錄像等方式收集7000張樣本標注并制作數(shù)據(jù)集。獲取的安全帽佩戴情況數(shù)據(jù)經過篩選后,基本都是施工現(xiàn)場的人員佩戴情況。樣本的標注使用labelimg標注出目標區(qū)域以及類別,對佩戴安全帽的人員標注為hat(正樣本),對未佩戴安全帽的人員標注為person(負樣本),如圖7所示。最后將收集的圖片和標注的正負樣本制作成Hwear數(shù)據(jù)集,最后標注的總數(shù)為64 862個,其中8562個佩戴安全帽正類,以及56 300個未佩戴安全帽的負類。其中5844張圖作為訓練樣本,1156張圖片作為測試樣本。數(shù)據(jù)集的分配見表2。
表2 數(shù)據(jù)集分配表
圖7 樣本標注
本文的實驗環(huán)境為:Intel(R) Core(TM) i7-9750 CPU @ 2.60G 2.59 GHz,32 G運行內存,Nvidia Gefo-rece Gtx1660ti,ubuntu16.04,64位操作系統(tǒng),Tensorflow深度學習框架。實驗采用自主收集制作的數(shù)據(jù)集HWear從零開始訓練改進的MobileNetV3-small-SSD算法,最終得到該網絡在安全帽佩戴檢測這一目標檢測問題上的模型。在訓練階段,參照文獻[7]的超參數(shù)對本文算法的部分超參數(shù)進行調整,見表3。
表3 本文算法的部分超參數(shù)設置
在訓練階段,采用數(shù)據(jù)增強技術提升網絡模型的性能,對樣本進行裁剪、平移、亮度改變、加噪聲等,實現(xiàn)數(shù)據(jù)的擴增效果,如圖8所示;訓練采用多尺度策略,每5個訓練周期就重新調整輸入圖像分辨率大小,增強對不同分辨率圖像的適應性。本文改進SSD算法的訓練過程損失曲線圖如圖9所示。從圖9可以看到,模型在訓練近40 000次后,損失值穩(wěn)定在5~10之間,通過曲線的波動程度可以推斷模型較好的魯棒性。另外,在相同的實驗環(huán)境下使用制作的數(shù)據(jù)集HWear分別對原SSD和YOLOv3進行訓練,得到相應的最終模型,與本文算法進行對比分析。
圖8 數(shù)據(jù)增強效果圖
圖9 損失曲線
為了對比本文改進算法的有效性,本文使用制作的測試樣本集對訓練的SSD和YOLOv3等模型以及本文MobileNetV3-small-SSD模型進行性能測試,并統(tǒng)計測試的輸出圖像數(shù)據(jù)進行對比分析。圖10是在測試樣本中隨機選擇的5張圖片進行對比分析。圖10(a)是原始圖像樣本,從左往右,依次編號1、2、3、4、5;圖10(b)是在SSD算法下的測試結果;圖10(c)和圖10(d)是分別在本文算法MobileNetV3-small-SSD和YOLOv3模型的測試結果。對應的輸出結果中,紅色框表示安全帽佩戴的人員hat,藍色框表示未佩戴安全帽的人員person。從輸出的結果中可以看到,3種模型在無遮擋環(huán)境且面對大目標的情況下檢測結果都正確,準確檢測到4個佩戴安全帽人員和一個未佩戴安全帽人員,如第2列圖所示。在第1列和第3列樣本中存在部分小目標的情況下,可以看到SSD在對于1個未佩戴安全帽的小目標檢測效果不準確,而本文算法和YOLOv3準確地檢測到了該目標。在第4列和第5列存在密集小目標且存在部分目標遮擋以及光線較暗等環(huán)境干擾情況下,SSD算法和本文算法存在漏檢情況,但本文算法相比與SSD多檢測成功一個小目標,YOLOv3算法檢測效果較好,但仍存在部分漏檢情況。通過對比分析可以發(fā)現(xiàn),本文通過替換SSD算法的卷積網絡以及添加特征金字塔結構,融合了高低分辨率特征圖的語義信息,在一定的程度上提升了檢測的準確度,尤其是對一些小目標的檢測。通過圖10的對比分析可知,本文算法在檢測準確度上接近YOLOv3算法,優(yōu)于SSD算法。
圖10 部分樣本對比檢測結果
為了檢驗改進的SSD算法MobileNetV3-small-SSD對于人員安全帽佩戴檢測的有效性和實時性,本文運用精準度(Precision)、召回率(Recall)和錯誤率(Error)來檢驗改進算法的有效性。對應指標分別表示為:
(10)
(11)
(12)
其中:TP(true positive)表示檢測結果為正值的正樣本[20],F(xiàn)P(false positive)表示被檢測為負值的正樣本;FN(false negative)表示被檢測為負值的正樣本。為了進一步對比算法改進的效果,獲取現(xiàn)場攝像頭某時段的監(jiān)控視頻,并針對視頻流按照每秒提取1幀的頻率獲得200張測試樣本,在對數(shù)據(jù)進行篩選和標注后,統(tǒng)計總共有355個佩戴安全帽人員和261個未佩戴安全帽人員。同訓練樣本一致,佩戴安全帽為正樣本hat,未佩戴安全帽為負樣本person。對比驗證SSD算法和本文算法,統(tǒng)計結果見表4。
分析表4可以發(fā)現(xiàn),在SSD基礎上改進的算法MobileNetV3-small-SSD相比于SSD算法,對于正樣本hat和負樣本person的測試在精準度上平均提高了3.85%,在召回率上平均提高了7.6%,同時錯誤率平均減少了8.1%。由圖10所示的對比實驗也可以看出,改進算法相比與SSD算法是有效的,并且算法性能優(yōu)于原算法。
表4 模型效果對比
使用本文制作的安全帽佩戴檢測數(shù)據(jù)集HWear對本文改進算法、SSD以及YOLOv3等模型進行測試實驗,整個過程在同一硬件環(huán)境下進行。測試實驗分別在CPU和GPU下進行檢測測試,記錄各個模型的檢測準確率和在不同運算環(huán)境下的檢測速率,統(tǒng)計結果見表5。由表5可以看出,本文改進算法MobileNetV3-small-SSD在檢測準確率上與SSD算法相近,mAP僅提高了0.5%,遜色于YOLOv3,但因為整個模型采用了輕量化模型MobileNetV3-small,所以相比與SSD和YOLOv3,模型的參數(shù)量減少了很多,可以減少90%以上的計算量。另外,從檢測速率對比來看,本文采用輕量模型作為特征提取網絡,大大提高了檢測的速率,由表5可以看到,在本文的實驗設備條件上,基于GPU的檢測速度達到108 fps,基于CPU的檢測速度也有62 fps,檢測速率達到了實時性效果,有利于在實際現(xiàn)場部署。
表5 測試結果對比
本文在SSD算法的基礎上提出了一種改進的用于安全帽佩戴快速檢測的算法MobileNetV3-small-SSD。改進算法主要使用MobileNetV3-small輕量型的卷積神經網絡替換SSD算法的VGG-16卷積網絡,采用特征金字塔網絡結構增強語義信息的融合。實驗采用本文制作數(shù)據(jù)集HWear的方式對模型進行訓練和測試,在相同的HWear數(shù)據(jù)集上分別對SSD、YOLOv3等算法進行訓練和測試。實驗對比結果表明,本文改進算法的檢測準確率稍優(yōu)于SSD算法且接近YOLOv3,檢測速度優(yōu)于SSD和YOLOv3等算法,能夠實現(xiàn)實時性檢測,具有一定的實踐和現(xiàn)實意義。另外,本文算法仍會出現(xiàn)錯檢漏檢等情況,將在以后研究中進行改進。