趙恩銘,楊 松,羅 創,劉光宇,朱曉亮
(1.大理大學工程學院,云南大理 671003;2.浙江工商大學信息與電子工程學院,杭州 310018)
目前我國正處在高速發展階段,人們生活水平的提高與工業基礎建設息息相關,工業建設無疑需要更多的施工人員。施工人員的工作環境通常較為復雜,具有很多潛在的安全隱患。在疫情期間施工,安全帽能有效抵御外來物體的撞擊,一定程度上減少物體撞擊的力度,口罩能夠有效降低疫情傳播的風險與施工作業時灰塵的吸入〔1〕。以人工的方式對施工人員進行監管耗時耗力,且長時間的監管可能會出現一定程度上的紕漏,因此采用深度學習技術輔助人工進行安全帽與口罩佩戴檢測,實現安全防護自動化,對保障施工單位安全生產具有重要意義。
口罩與安全帽檢測屬于目標檢測范疇,從2013年開始,隨著圖形處理器(graphics processing unit,GPU)和大數據的不斷發展〔2〕,迎來了基于深度學習的目標檢測時代。在深度學習中,摒棄了手工設計特征的方式,采用卷積神經網絡(convolutional neural networks,CNN)〔3〕自主學習目標更深層次的特征,獲得了更好的目標分類效果,此時典型目標檢測算法有YOLO(You Only Look Once)系列〔4〕。截至目前,深度學習技術在安全帽與口罩的佩戴檢測方面已經取得了許多的成功,但將深度學習應用在具體施工作業現場輔助人工進行實時安全帽、口罩佩戴檢測的研究還比較少。為實現施工場所安全監管自動化,本研究首先采用基于YOLOv5s算法的施工人員安全帽、口罩佩戴檢測方法,輔助監管人員進行施工安全保障,達到了保障施工人員生命安全的目的;其次完成算法在嵌入式平臺Jetson Nano上的部署,方便設備在不同需求場合下進行安裝;最后通過TensorRT技術有效提升算法在嵌入式平臺上的檢測幀率。
1.1 YOLOv5s算法原理 本研究通過Netron工具進行YOLOv5s算法網絡架構可視化,其結構見圖1。按照算法的網絡架構可以分為輸入端(Input)、Back Bone、Neck和預測(Prediction)4個部分〔5〕,主要組成模塊包含卷積層、池化層、BN層、激活層和全連接層。

圖1 YOLOv5s結構
1.1.1 輸入端 輸入端主要進行以下數據處理:(1)采用Mosaic4數據增強方法,豐富了數據集場景,同時加強模型對小目標檢測的能力;(2)添加自適應錨框計算,用來預測不同尺寸目標;(3)圖像自適應縮放,在模型推理時使用圖像自適應縮放減少圖像空白區域色調填充量,提高目標推理效率〔6〕。
1.1.2 Back Bone模塊與Neck模塊Focus結構是YOLOv5算法的獨有結構,會將圖像進行切片,在保留原信息的情況下進行下采樣,起到了減小尺寸、增加網絡深度和降低計算量的作用〔7〕。
Neck部分主要由CSP2_X、FPN(feature pyramid networks)和PAN(path agreegation network)結構組合而成。FPN與PAN構成了雙重特征金字塔結構〔8-9〕,加強網絡對不同尺寸特征的檢測。自上而下的特征金字塔是FPN結構的特色,通過上采樣的方式將高層信息向下傳遞,進行特征融合。
1.1.3 輸出端 預測部分主要包含激活函數、非極大抑制、優化器和損失函數的設置。YOLOv5s算法中間層和分類層的激活函數采用Leaky ReLU函數和Sigmoid函數,非極大抑制階段采用DIOU_nms代替傳統的NMS(non-maximum suppression)算法,優化器選擇SGD(stochastic gradient descent),損失函數使用GIOU_Loss函數。
YOLOv5算法包含YOLOv5x、YOLOv5l、YOLOv5m、YOLOv5s 4個版本,各版本的區別是網絡的深度和寬度依次遞減,其不同算法的深度與寬度見表1。

表1 YOLOv5不同算法的網絡結構
1.2 TensorRT加速算法原理TensorRT加速算法原理主要是利用層間融合與數據精度校準來實現,其默認精度為FP32。TensorRT首先會將沒有用到的輸出層刪除,隨后進行垂直優化與水平優化。在垂直優化階段,將卷積層、激活層等經常使用的層合并為CBR(convolution,bias and ReLu);在水平優化階段,原理與垂直優化相同,同層同時運行的架構則直接合并,在輸出時做分割,輸出到不同層去。本研究使用參數為:網絡批次處理量設置為2,轉換精度設置為FP16,類別總數設置為3,輸入圖像尺寸設置為640×640。
2.1 總體結構 本研究包括數據集處理、檢測模型的構建、嵌入式計算平臺的搭建3個部分,總體結構見圖2。數據集的質量對模型訓練起到主導作用,本研究通過自建數據集獲得更好的目標檢測效果,并按照8∶2互斥拆分得到訓練集和驗證集。模型構建階段用來構建安全帽、口罩佩戴檢測算法,同時采用標簽平滑訓練技巧。嵌入式計算平臺的搭建階段方便設備在不同的地點進行部署,并同時采用TensorRT技術對模型進行優化,優化后的模型具有更高的目標檢測幀率,能夠更好地完成視頻流檢測任務。

圖2 總體結構
2.2 硬件平臺 嵌入式平臺能夠方便安全帽、口罩佩戴檢測算法在多種實際場景下進行部署,具有成本低廉和實用性高等特點。硬件平臺見圖3,其中包含Jetson Nano開發板、免驅USB攝像頭和7寸顯示器各1個。安全帽、口罩佩戴檢測算法在Jetson Nano開發板上部署,通過對攝像頭采集的視頻流進行目標檢測,并將檢測結果反饋在小型顯示器上。

圖3 硬件平臺
2.3 數據集的構建 大量的數據樣本能夠幫助神經網絡進行更好的訓練,本研究使用人工拍攝和互聯網下載等方式收集并篩選得到10 798張目標圖像,包含佩戴安全帽、佩戴口罩和無安全防護設備佩戴情況。使用LabelImg工具對每張圖像進行標簽標定后,獲得安全帽與口罩自建數據集,部分數據集可視化見圖4。在本研究自建數據集中,安全帽防護類別共3 241張圖像,占比為30.0%;口罩防護類別共3 217張圖像,占比為29.8%;無安全防護類別共4 340張圖像,占比為40.2%。

圖4 部分數據集可視化
3.1 實驗條件Jetson Nano定制系統為Ubuntu 18.04,選擇Python 3.6作為編譯器,采用Pytorch框架。GPU為NVIDIA Maxwell,擁有128個CUDA(compute unified device architecture)核心,處理器為四核Cortex-A57 64位處理器,并采用TensorRT技術對算法進行優化。
3.2 評價方法 查準率用來描述數據集被預測為正樣本數據中實際預測正確的數據量占比。查全率又被稱為召回率,用來描述數據集所有正類別中被正確檢測出來的比率。
查準率的表達式如下:

其中,NTP是被判定為正確的個數;NFP是被判定為錯誤的個數。
查全率一般指的是某類目標對應的識別率,其表達式為:

其中,NFN為漏檢的個數。
平均精度(average precision,AP)屬于綜合類指標,它綜合了查準率和查全率兩項指標,是多分類模型中較為常用的評價指標。mAP為AP的平均值,表征一系列查全率下查準率的均值。
AP的表達式如下:

其中,P、r代表查準率和查全率。mAP的表達式如下:

其中n表示類別,N表示實驗總類別數。
F1分數的含義是查準率與查全率的調和平均值,其表達式為:

其中Precision、Recall分別表征查準率與查全率。
3.3 實驗結果與分析 圖5為模型的AP值和F1分數隨置信度變化曲線,能夠詳細展示數據集中各類別的分類效果。圖5(a)反映的是數據集中各類別的AP值和模型的mAP值,可以看出當交并比(intersection over union,IOU)被設置為0.5時,佩戴安全帽類別的AP值為0.950、佩戴口罩類別的AP值為0.922、無任何防護設備佩戴類別的AP值為0.967,模型的mAP值為0.946。圖5(b)反映的是模型F1分數值與置信度的關系,當置信度被設置為0.426時,模型取得最高的F1分數值為0.92。綜合上述指標可以得出,本次訓練的模型能夠很好地完成安全帽、口罩佩戴檢測任務。

圖5 數據集的AP值與F1分數
YOLOv5s算法使用TensorRT技術加速后在簡單背景下對目標進行多組實驗的檢測效果見圖6。轉換得到的TensorRT模型采用FP16精度,置信度的值同樣設置為0.426,其中數字0代表正確佩戴安全帽,數字1代表無任何防護設備佩戴,數字2代表正確佩戴口罩。可以看出TensorRT技術加速后算法在簡單背景下的目標檢測效果較好,包括將圖6中左下角的遮擋目標圖像檢測出來,使用TensorRT技術加速后算法的檢測幀率有大幅度提升,綜合幀率為12.83 FPS,滿足本次研究針對視頻流實時檢測需求。

圖6 使用TensorRT技術加速后模型簡單背景下檢測效果
本研究進一步驗證YOLOv5s算法使用TensorRT技術加速后在復雜背景下的檢測效果,結果見圖7。從圖7可以看出,當目標處在非虛化背景中,算法依舊能夠很好地檢測出目標,檢測幀率為12.08 FPS。當目標處在虛化背景中,可能會出現部分目標漏檢的情況,根本原因是背景虛化嚴重識別難度較大且圖像中出現的目標數過多,算法可能會出現部分漏檢的情況。由于實際場景拍攝中的虛化情況并不多見,所以模型滿足本研究對安全帽和口罩的檢測需求。

圖7 使用TensorRT加速后模型復雜背景下檢測效果
表2為不同結構的YOLOv5算法在同一數據集上的識別效果,幀率為算法在Jetson Nano平臺上測得的近似值。從表2中可以看出,YOLOv5x算法具有最高的mAP值為0.956,幀率為0.52 FPS,權重大小為175.1兆,不利于后續算法的實時信息讀取。YOLOv5s算法mAP值為0.946,與其他算法非常接近,幀率為4.04 FPS,權重大小為13.8兆,算法的讀取速度最快,更加適合本研究對目標檢測算法實時性的需求。

表2 不同算法在同一數據集上的識別效果
本研究基于YOLOv5s算法實現安全帽、口罩佩戴檢測并采用標簽平滑訓練技巧。通過實驗驗證,YOLOv5s算法能夠很好地滿足安全帽、口罩佩戴檢測任務,mAP值達到0.946,使用TensorRT技術能夠有效提高算法在Jetson Nano上的檢測幀率,將算法檢測幀率從4.04 FPS提升至12.83 FPS,對實際應用中的安全保護檢測具有重要意義。