郭普特 鄭 斌 黃 敏 蘇 潔 李鋮杰 韋天健 劉 宇
(長沙理工大學計算機與通信工程學院,湖南 長沙 410114)
建筑業是國民經濟的重要物質生產行業,它與整個國家的經濟發展和人民的生活質量息息相關,但近幾年來,建筑行業的安全事故一直呈現上升趨勢,究其原因,對安全帽的忽視是很重要的一個因素。正確佩戴安全帽能夠在一定程度上避免事故的發生,然而,工人不戴安全帽的不安全行為時有發生,主要原因是安全帽智能檢測系統市場的空缺,依靠安全管理人員監控來提醒工人佩戴安全帽,不光監控時效性差、監控范圍具有局限性以及無法全程監控等,還會導致人力成本的增加。
考慮到檢測現場作業人員安全帽佩戴情況的任務對實時性要求很高,團隊首先考慮了實時性強且準確度也可靠的YOLO系列模型。其中,YOLOX是該系列中性能最強大的模型版本,但YOLOX、YOLOv4和YOLOv5模型對邊緣設備的架構不具有廣泛的兼容性,考慮到這一點,本文研究采用工業制造最常用的 YOLOv3[7-9]檢測模型來實現檢測任務。YOLOv3(You Only Look Once V3)模型作為端到端目標檢測模型的代表,不僅具有良好的實時性,同時具有較高的準確性。本文基于YOLOv3模型設計了安全帽檢測算法,并通過PyQt5創建了可視化界面,實現了跨平臺功能的同時方便了遠程終端的智能監控,測試過程中視頻檢測的FPS基本保持在20以上,mAP達到86.7%(數據集由本團隊制作,測試集共1518張圖片,測試設備為Nvidia AGX Xavier)
基于深度學習安全帽智能識別系統可分為兩個子系統,分別為以目標檢測算法為主體的安全帽識別系統和以用戶操作為主體的智能終端交互系統。系統框架如圖1 所示。

圖1 系統整體架構圖
在檢測過程中,性能的開銷主要來源于神經網絡對特征圖的卷積等操作和網絡中各層參數在存儲系統中頻繁的調度。本系統所采用的YOLOv3模型本身具有較好的并行性,但由于其運行時存儲的圖像數據和模型參數會占用較大的存儲空間,所以過小的運行內存將會導致其檢測性能下降,因此需要使用擁有更大內存空間的運算平臺來支撐本系統的正常運行,本系統使用Nvidia AGX Xavier作為計算平臺。
本系統設計的另一個目標為跨平臺運行,為實現該運行效果,上位機系統開發階段要求所有功能均使用PyQt5框架提供的庫函數以保證系統的兼容性。本系統采用的PyQt版本為5.13.0。
YOLO3模型的網絡結構如圖 2 所示,主要由三部分組成,分別是特征提取網絡、特征增強結構和目標檢測層。模型檢測的過程中,首先將攝像頭捕獲的圖像信息送入特征提取網絡Darknet-53進行特征提取,該骨干網絡通過一系列的下采樣操作來提取圖像中不同層級的特征信息,其中殘差結構通過將殘差塊的主干網絡處理后的特征圖和原始特征圖進行疊加來抑制反向傳播時梯度消失的發生,該結構使得深層網絡在進行訓練的時候也能穩定地收斂。其次,在特征增強網絡中采用類FPN結構(特征金字塔結構),即連續地將Darknet-53骨干網絡中間層特征圖和后一層特征圖的上采樣結果進行拼接,以融合不同層級特征圖中的語義信息。最后,得到 13×13、26×26、52×52 三種不同尺寸的特征圖輸出,以適用于圖像中不同大小的安全帽目標檢測。

圖2 YOLOv3模型結構圖[10]
傳統的NMS(非極大值抑制)算法有一定的缺陷,如當兩個物體在圖像中距離較近時,NMS算法會將得分較低的檢測框直接刪除,最后可能導致漏檢的情況。針對該問題,本文采用Bodla等[11]提出的Soft-NMS算法,該算法的核心是“合理降低重疊預測框的置信度”,如果圖像中同一個物體有多個重疊的預測框,此時通過排序算法選出得分最高的預測框,再計算其他預測框和得分最高預測框的IoU值,值越大則該預測框置信度被降低得越多,經過一輪操作后即可濾除重復的預測框,而保留正確的預測框。傳統NMS算法和Soft-NMS算法處理效果對比如圖3中(a)、(b)所示。

圖3 Soft NMS優化對比圖
對于卷積神經網絡的訓練,數據集中圖像的數量和質量會直接影響模型最終的檢測性能。模型訓練的數據集由團隊在實地中拍攝采集而來,對已有的訓練圖像數據做圖像增強等預處理,能夠在一定程度上優化訓練的質量,本文從以下兩個方面來完成圖像增強的操作:
(1)受到張等[12]提出的視覺相干圖像混合算法的啟發,應用Mixup算法防止特征增強過程中檢測目標發生畸變。采取保留圖像幾何特征的方式進行混合,可以成功減輕網絡中由于批量數據的變換所帶來的擾動,同時提升對復雜圖像的檢測能力。
11號礦體:該礦體的構成為一套礦條和平行的扁豆體,在5~8線展布,總長為2 500 m,厚度為16.4~108.4 m,平均為42.7 m,走向呈北北東方向,傾向南東,傾角為80°~85°。
(2)同時結合傳統的數據預處理方式,包括隨機的顏色抖動、隨機翻轉、旋轉和裁剪圖像,以提高泛化精度并避免過度擬合。
IoU是一種度量在特定數據集中檢測相應物體準確度的一個標準。但IoU作為度量和損失函數時存在以下問題:
(1)若圖像中兩個對象不重疊,IoU值將為零,則不能反映兩個對象之間的距離,在該情況下如果使用IoU作為損失函數的參考值,則梯度將為零,將無法對模型進行優化。
(2)IoU不能正確地區分兩個目標之間不同的對齊形式,更確切地說,不同方向上有相同交叉級別的兩個重疊對象的IoU會完全相同。
針對存在的問題,本文采用了GIoU[13]的方法來計算損失,即首先計算兩個框的最小閉包區域的面積,同時計算出 IoU,再計算閉包區域中不屬于兩個框的區域占閉包區域的比重,最后用IoU減去這個比重得到GIoU,如公式(1)所示:

基于深度學習的目標檢測模型的訓練步驟如下:
使用Python3.6.9+Pytorch1.7.0+CUDA10.2 搭建模型運行平臺,通過遷移學習算法加載已經ImageNet數據集上預訓練好的模型參數,提高下游任務的學習效率。
實地采集圖像數據,使用Labelimg工具給圖像數據打上標簽,制作成模型訓練、測試數據集。
使用圖像增強算法對訓練數據集進行擴充。
將數據集接入模型,使用NAdam優化器來實現對模型的優化,同時采取余弦退火算法對學習率進行一個動態調節。
根據全插值方法把數據準確率與召回率構成的p-r曲線的函數進行求積分操作以獲得AP,通過求出所有類別物體(未佩戴安全帽的工人和已佩戴安全帽的工人)的平均AP獲得mAP的值。
將訓練好的模型參數導入網絡中,構建成系統中的目標檢測模型。
通過以上步驟訓練得到的模型即可實現視頻圖像中安全帽的實時檢測。
圖像顯示模塊的主要作用是將神經網絡處理后的檢測結果信息顯示在GUI界面上,上位機顯示效果如圖4所示。

圖4 界面布局設計
團隊使用PyQt5 平臺中的QGraphicsView作為顯示圖像的控件,方便讀取 QImage 中的內容并進行顯示。
PyQt5為開發者提供了QVBoxLayout、QHBoxLayout、QGridLayout等基本布局管理類[14],這些基本布局管理類可以通過相互嵌套來實現自適應窗口大小的功能,本系統采用了QVBoxLayout和QHBoxLayout的嵌套來實現該功能,為用戶設計了“打開文件”“開始/暫停”“打開攝像頭/退出系統”的功能按鍵,實現了對本地視頻文件的讀入、對工地現場攝像頭進行操作等智能化功能。
PyQt5中的QImage提供了文件讀取、存儲的功能,同時提供了編輯圖像單個像素點的接口,使得開發程序得到了簡化。QImage支持讀取和保存圖片的數據格式包括JPG、JPEG、PNG、BMP等。
本文在Nvidia AGX Xavier平臺上針對1518張測試數據集進行了測試,其中包括了對密集人群檢測效果和遠距離安全帽檢測效果的測試,測試效果如圖5(a)、(b)所示。

圖5 檢測效果圖
從檢測結果來看,系統的核心功能達到了團隊的預期目標,系統實時檢測的效率較高,對密集人群和遠距離安全帽的檢測效果達到了理想的效果,其他正常環境下出現誤測的情況較少。同時對是否佩戴安全帽的工人采用了兩種不同顏色的檢測框來區分(白色為沒有佩戴安全帽,綠色為正確佩戴安全帽),為監控人員了解施工人員的安全帽佩戴情況提供了良好的參考依據。
本文采用改進后的YOLOv3模型實現了對安全帽的實時準確檢測,并基于PyQt5開源框架開發了用于展示檢測結果的跨平臺遠程終端智能交互界面,最終實現的智能檢測系統填補了建筑行業安全帽智能識別系統的空缺,給現場作業人員的安全帶來了有效的保障。但是該系統依然存在一些缺陷,比如檢測效果受到光照條件影響較大、系統對運行平臺的算力要求較高等問題,在今后的研究中,團隊將針對這些問題繼續對檢測模型進行優化改進。