王 灃
(福建省建筑科學研究院有限責任公司/福建省綠色建筑技術重點實驗室,福建 廈門 361000)
疫情期間,在特定環(huán)境下進行建筑施工或建筑檢測作業(yè),作業(yè)人員佩戴安全帽和口罩是標配。比如在密閉的門窗幕墻施工和檢測現(xiàn)場,如果沒有佩戴安全帽和口罩,將會造成嚴重的安全隱患和疫情的傳播風險。使用監(jiān)控攝像頭,通過人工智能算法實時監(jiān)控現(xiàn)場作業(yè)人員的安全帽和口罩佩戴情況具有很大意義和價值。
近年來,很多研究學者發(fā)布了大量基于人工智能的目標識別檢測模型。比如R-CNN、Fast R-CNN 和Faster R-CNN 作為最為常見的Two-Stage 算法模型,最早是Ross Girshick 發(fā)布的。這種模型首先從基于特征提取的基礎上,采用一個神經網絡生成候選區(qū)域,然后再對候選區(qū)域回歸來確定目標的類別和位置,檢測速率可以達到5f/s。由Redmon 等提出的YOLO 方法,Liu 等提出 SSD 方法,是 One-Stage 算法,檢測速度達到了45 f/s。
2019 年施輝采用Image Pyramid 通過提取多種尺度的特征圖,結合YOLO v3 進行安全帽佩戴的檢測。2020 年王兵使用新的Target識別函數和GIoU 計算方法來改進YOLO v3 算法,訓練檢測模型。
本文使用門窗幕墻實驗室監(jiān)控錄像數據,以及網絡收集的口罩佩戴數據集和安全帽佩戴數據,制作了安全帽和口罩佩戴的檢測數據集。基于YOLO v5 模型為主體,將多尺度的特征進行融合,用于進行類別判斷和位置識別;然后用數據集對Anchor 框進行統(tǒng)計,增加Anchor 框的個數,通過預測偏移量,基于Anchor 框和gird 的sigmoid 偏移量;最后,采用多個分辨率的圖片進行模型訓練,在預測的時候,輸入大尺寸的圖片或大分辨率的流媒體數據,保證多尺寸的訓練效果。試驗表明,改進的 YOLO v5 算法,不但有效提高了檢測速率,同時也能夠保證檢測精度。
傳統(tǒng)目標檢測方法:滑動窗口分類法,耗時,操作復雜,需要手動生成大量樣本,檢測性能依靠的是分類器的性能和遍歷的性能。因此yolov1 實現(xiàn)了通過直接擬合坐標位置x,y,物體寬和高w,h,置信度的算法。存在很明顯的缺陷坐標位置x,y 可以任意值,也可以為沒有意義的負值,降低了訓練速度和預測的準確率。
因此,yolov2 改為偏移量預測:采用了anchor 機 制 (location prection) 局 部 預 測, 也就是坐標位置x,y 是通過gird 預測,然后寬和高w,h 是依據anchor 的寬和高預測。yolov2 的 backbone 改 為 了 darknet19, 訓 練 不同epoch 后的調整訓練圖,也就是Multi-Scale Training,連接檢測頭部分取消了FC 的連接方式,改為卷積層??墒莥olov2 還是存在小目標預測不準確的問題。
隨著殘差網絡resnet 對backbone 性能的提升,yolov3 又有了新的性能提升。首先是因為resnet 出現(xiàn)了,網絡可以做的更深了,backbone更改為darknet53,然后檢測頭也更改為多尺度,統(tǒng)計數據得來的9 個尺度,32 倍下采樣,16 倍下采樣,8 倍下采樣,分別用3 個檢測頭來預測。
到 yolov4 在 bakbone 更 改 為 采 用CSPDarknet53,同時采用了一些技巧進行提升性能,首先數據增強采用了cutmix and mosaic,class label smoothing,Mosaic 就 是 合 并 4 張圖,起到了跨越上下進行標檢測的作用,同時相當于minibatch 的數量擴大了4 倍,同樣的GPU 內存訓練提升了性能。損失函數改為mish。網絡結構采用了SPP、PAN、SAM 的網絡,DropBlcok CmBN。Yolo v1-v3 (location prection)因為激活用的sigmod 區(qū)間是(0,1)開區(qū)間,yolov4 對此進行了改進。在sigmod乘上1.01。
Yolov5 按照網絡深度大小和特征圖寬度大小分為 Yolov5s、 Yolov5m、Yolov5l、Yolov5,本文采用了yolov5s 作為使用模型。Yolov5 的結構分為input,backbone,Neck,預測層。
(1)在輸入端使用了Mosaic 的數據增強方式,隨機調用4 張圖片,隨機大小和分布,進行堆疊,豐富了數據,增加了很多小目標,提升小物體的識別能力??梢酝瑫r計算4 張圖片,相當于增加了Mini-batch 大小,減少了GPU 內存的消耗。Yolov5 首先也可以通過聚類設定anchor大小,然后還可以在訓練過程中,在每次訓練時,計算不同訓練集中的ahchor值。然后在預測時使用了自適應圖片大小的縮放模式,通過減少黑邊,提高了預測速度。
(2)在Backbone 上的主要是采用了Focus 結構,CSPnet 結構。
(3)在Neck 上采用了FPN 結構和PAN結構。
(4)在損失函數則使用了GIOU_Loss。
Yolov5 中 采 用 其 中 的 GIOU_Loss 做Bounding box 的損失函數。GIOU_Loss 中,增加了相交尺度的衡量方式,解決了無法反應兩個框距離的遠近,此時loss 函數是不可求導的,GIOU_Loss 就無法計算兩個框沒有交集的情況。但是無法解決預測框在目標框內部且預測框大小一致的情況,因為這時預測框和目標框的差集都是相同的,因此,這三種狀態(tài)的GIOU 值也都是相同的。因此更改為采用效果更好的CIOU_Loss,考慮了邊界框中心點距離的信息,同時考慮邊界框寬高比的尺度信息。
非極大值抑制nms,用于推理過程中的預測框的選擇,yolov5 算法中,采用普通的nms的方式。本文將其更改為Diou_nms。使得NMS 得到的結果更加合理和有效。
本文的實驗數據,是針對安全帽和口罩同時佩戴檢測的數據,由于沒有的公開數據集,本文制作了一套安全帽和口罩佩戴的數據集,制作數據集主要包含了四個步驟:數據采集和整理、數據的預處理、數據的篩選和數據集標注。
圖1 圖像標記示意圖
本數據集的數據來源一個是建筑檢測實驗室的視頻監(jiān)控數據和工地施工現(xiàn)場視頻監(jiān)控數據,以及網絡上采集的圖片數據。主要使用福建省建筑工程質量檢測中心有限公司實驗室門窗幕墻檢測過程中,工人安裝門窗幕墻的視頻監(jiān)控數據。從監(jiān)控中分幀得到的圖片數據,很多沒有檢測實體,將這些數據通過算法刪除。然后使用labelimg 工具對圖像進行標記,標注類別為佩戴口罩,佩戴安全帽,人臉三類,如圖1 所示。
選取20000 張標注的圖片作為訓練樣本,不同分辨率和大小的樣本均分,以確保不同尺寸的圖片都能得到充分的訓練;另外選取1000 張圖片作為是測試數據集。
為了加快訓練速度,快速達到訓練收斂的目的。本次訓練采用了網絡上的算力平臺。系統(tǒng)配置為GeForce RTX 2080 Ti x4 GPU,Intel(R)Core(TM) i7-9800X CPU,內存16G,操作系統(tǒng)Ubuntu 19.10 5.3.0-42-generic GNU/Linux,CUDA 10.2。
第 3 節(jié)提出的 yolov5 改進算法,Ciou 和Diou_nms 對檢測效果有很大的提升,為了對比改進效果,按照檢測目標的大小分為大中小三類,圖2 中列出了原始算法和yolov5 改進算法對三類圖片的檢測效果。
由圖2 可以看出,采用Ciou 和Diounms 算法的檢測準確率均比原始算法檢測精度更高。
因為Yolov5 的模型大小僅為28m,可以方便的部署在小型嵌入式設備中,本文將其部署在jet nano 上便攜可移動。Nano 支持高分辨率攝像頭,可同時處理多個傳感器,支持常見的框架,如yolov5 模型使用的pytorch 框架。本文最終設備如圖3 所示。包含了攝像頭,無線網卡,主板,風扇,sd 卡。檢測效果如圖4所示。
圖4 檢測效果示意圖
因此,改進 YOLO v5 算法能夠滿足高檢測速率和高準確率。同時將模型部署在nano上是可行的。
綜上所述,本文提出了識別安全帽和口罩佩戴的基于改進YOLO v5 的檢測算法。使用門窗幕墻檢測實驗室現(xiàn)場和施工現(xiàn)場監(jiān)控視頻作為主要數據來源進行檢測試驗,通過Ciou,Diou_nms 等方法改進 YOLO v5 網絡,并將其部署于nano 設備上,能夠滿足疫情期間,特定環(huán)境安全帽和口罩佩戴監(jiān)控需求。