段瑞霞 張海東
(中海油信息科技有限公司天津分公司,天津 300452)
安全生產(chǎn)是企業(yè)發(fā)展的基礎(chǔ)和保障,須牢固樹立安全紅線意識,通過人防、技防、物防等多種手段,遏制安全風(fēng)險事故,控制安全隱患,保證人員安全。企業(yè)有大量安全生產(chǎn)管理需求,大部分企業(yè)安全生產(chǎn)管理依靠人員現(xiàn)場巡檢或者抽查攝像機視頻,很多違規(guī)情況未被及時發(fā)現(xiàn),由此造成一定的事故發(fā)生。
海量視頻數(shù)據(jù)都在“沉睡”,被查閱視頻不足10%,管理部門缺乏可延展的視頻分析系統(tǒng),缺乏視頻數(shù)據(jù)的挖掘利用,無法一目了然的通過視頻發(fā)現(xiàn)各種人或物的不安全行為,無法實現(xiàn)視頻資源價值利用的最大化,難以有力支撐管理現(xiàn)代化水平的進一步提高。
隨著人工智能技術(shù)的發(fā)展,智能視頻分析在業(yè)務(wù)研發(fā)中的占比逐漸升高。卷積神經(jīng)網(wǎng)絡(luò)作為深度學(xué)習(xí)的常用方法,憑借其獨特性已經(jīng)廣泛應(yīng)用在目標(biāo)檢測領(lǐng)域。
為了滿足企業(yè)的安全生產(chǎn)管理需求,積極引入人工智能視覺技術(shù),基于現(xiàn)有的傳統(tǒng)視頻監(jiān)控系統(tǒng),識別人員是否佩戴安全帽為例,通過YOLOv5 目標(biāo)檢測算法進行安全帽的佩戴檢測,實現(xiàn)生產(chǎn)工人違章的智能識別能力,并將識別結(jié)果及時推送給管理人員,管理人員可及時制止各種不安全行為,實現(xiàn)將事故事后整改的“亡羊補牢”模式轉(zhuǎn)變?yōu)椤笆虑邦A(yù)警、機器監(jiān)控”的新模式。
本文研究首先從收集素材開始,利用標(biāo)注軟件進行安全帽數(shù)據(jù)集標(biāo)注;然后采用YOLOv5 檢測算法,利用深度學(xué)習(xí)框架對訓(xùn)練集進行訓(xùn)練,取得初步模型開發(fā),對初步模型進行推理加速,完成模型優(yōu)化;最后將完成開發(fā)的模型分配給攝像機,實現(xiàn)攝像機能智能識別安全帽并將識別結(jié)果展示給管理人員,方便管理人員及時處理。
本系統(tǒng)邏輯架構(gòu)設(shè)計為五層結(jié)構(gòu),從底部到頂部依次為數(shù)據(jù)接入層、核心算法層、業(yè)務(wù)模型層、接口服務(wù)層、業(yè)務(wù)應(yīng)用層。數(shù)據(jù)接入層負(fù)責(zé)各種場景的視頻采集,支持接入數(shù)據(jù)包括攝像機、硬盤錄像機和下載視頻。核心算法層負(fù)責(zé)集成算法工程設(shè)計、開發(fā)通用的算法模型,對模型進行參數(shù)化、模塊化和接口化。業(yè)務(wù)模型層負(fù)責(zé)利用各種接口化的服務(wù)調(diào)用通用算法模塊構(gòu)建不同的應(yīng)用組合,完成模型設(shè)計。接口服務(wù)層負(fù)責(zé)進行參數(shù)配置、參數(shù)傳入業(yè)務(wù)模型層,經(jīng)過業(yè)務(wù)模型的計算返回想要的結(jié)果;同時與其他系統(tǒng)通過SDK 或者API 進行二次開發(fā)對接,形成告警結(jié)果通過短信、對講、聲光報警器等方式告知管理人員。業(yè)務(wù)應(yīng)用層負(fù)責(zé)用戶使用安全生產(chǎn)場景。
為保證系統(tǒng)安全性,系統(tǒng)部署在企業(yè)內(nèi)網(wǎng),包括智能分析服務(wù)器和應(yīng)用服務(wù)器。智能分析服務(wù)器主要用于視頻流解析、智能圖片識別并形成告警,應(yīng)用服務(wù)器主要用于管理人員登錄系統(tǒng)進行增、刪、改、查等。
3.1.1 目標(biāo)檢測算法技術(shù)
隨著CNN 的興起,產(chǎn)生了很多深度學(xué)習(xí)檢測算法。以深度學(xué)習(xí)為基礎(chǔ)的檢測算法,包括雙階段檢測和單階段檢測。單階段檢測主要包括YOLO 和SSD 算法。目標(biāo)檢測算法包括輸入端、BackBone 網(wǎng)絡(luò)和Head 輸出端3個通用模塊[1]。
輸入端:表示輸入的圖片。該模塊是圖像預(yù)處理階段,即將輸入圖像縮放到640*640,并進行歸一化等操作。Backbone 網(wǎng)絡(luò):表示性能優(yōu)異的分類器網(wǎng)絡(luò),該模塊可以提取通用的特征。Head 輸出端網(wǎng)絡(luò):經(jīng)過上采樣和三 個 卷 積 網(wǎng) 絡(luò) , 產(chǎn) 生 三 個76*76*255,38*38*255,19*19*255 的卷積結(jié)果,用于檢測目標(biāo)識別輸出。
3.1.2 YOLOv5 算法技術(shù)
YOLOv5 是單階段檢測算法的一種,在YOLOv4 基礎(chǔ)上添加新的改進思路,速度與精度得到了極大提升。YOLOv5 算 法 包 括 YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x4 個版本[2]。
不同版本的YOLOv5 檢測算法在COCO2017 驗證集與測試集有模型輸入大小、AP 指標(biāo)、AP50 指標(biāo)、Speed指標(biāo)、FPS 指標(biāo)、params 指標(biāo)以及GFLOPS 指標(biāo), 對比圖如圖1 所示。
圖1 不同版本的YOLOv5 檢測算法對比
通過上圖的各項指標(biāo)對比,可得出以下結(jié)論:
(1)YOLOv5s 的輸入圖片分辨率為640*640,在COCO測試集與驗證集中AP 指標(biāo)為36.8,AP50 指標(biāo)為55.6。該算法在GPU 芯片為V100 的推理速度僅為2.2ms、幀率為455FPS,模型大小僅為7.3M。
(2)YOLOv5x 的輸入圖像分辨率為640*640,在COCO測試集與驗證集中AP 指標(biāo)為50.1,AP50 指標(biāo)為68.7。該算法在GPU 芯片為V100 的推理速度需要6.0ms,幀率為167FPS,模型大小為87.7M。
(3)在實際使用中,需要根據(jù)現(xiàn)實場景用戶不同關(guān)注點需要選擇合適的模型。在相同輸入圖片分辨率條件下,如果用戶關(guān)注推理速度,首選YOLOv5s 算法;如果用戶關(guān)注精度,首選YOLOv5x 算法。
本項目比較關(guān)注推理速度,所以采用YOLOv5s。
3.1.3 素材標(biāo)注技術(shù)
LabelImg 是一個可視化的圖形圖像標(biāo)注注釋工具,python 編寫,用QT 作為圖形界面[3]。YOLO、SSD 等目標(biāo)檢測網(wǎng)絡(luò)所需要的的數(shù)據(jù)集,都需要使用此工具進行圖像中目標(biāo)標(biāo)注。本文采用YOLOv5 算法,亦使用此工具進行圖片素材標(biāo)注。
3.1.4 推理加速技術(shù)
TensorRT 是一個為深度學(xué)習(xí)提供低延遲、高吞吐率的高性能的推理優(yōu)化器。TensorRT 支持TensorFlow、Caffe、Mxnet、Pytorch 等幾乎所有的深度學(xué)習(xí)框架,支持提供C++ API 和Python API,對NVIDIA GPU 有快速、高效、高性能推理加速能力。
3.2.1 標(biāo)注數(shù)據(jù)集
通過攝像機,收集大量安全帽的素材。使用LabelImg進行安全帽標(biāo)注,將佩戴安全帽設(shè)為hat,標(biāo)簽為0,將未佩戴安全帽設(shè)定為nohat, 標(biāo)簽為1,標(biāo)注完成后保存為XML 文件。
3.2.2 劃分?jǐn)?shù)據(jù)集
將收集的全部數(shù)據(jù)集進行分類,分別為訓(xùn)練集,驗證集和測試集。
3.3.1 模型框架
2017 年1 月,F(xiàn)acebook 人工智能研究院基于Torch推出了PyTorch[4]。PyTorch 是以Python 優(yōu)先的擁有自動求導(dǎo)功能的強大的深度學(xué)習(xí)框架,底層和Torch 框架相同,但是新增很多內(nèi)容,如靈活性更好、支持動態(tài)圖、提供Python 接口等。PyTorch 相比Tensorflow 等主流深度學(xué)習(xí)框架有其獨特的優(yōu)勢,如支持強大的GPU 加速,支持動態(tài)神經(jīng)網(wǎng)絡(luò)。
3.3.2 模型實現(xiàn)
本文采用PyTorch 深度學(xué)習(xí)框架,使用已標(biāo)注的安全帽素材,利用YOLOv5 檢測算法進行模型訓(xùn)練,形成安全帽模型文件。模型訓(xùn)練架構(gòu)如圖2 所示。
圖2 模型訓(xùn)練框架圖
同時,在進行安全帽識別實際應(yīng)用中,不斷收集誤報和漏報素材,定期對誤報素材和漏報素材進行標(biāo)注并重新訓(xùn)練優(yōu)化模型,以便提升模型準(zhǔn)確性,提升用戶體驗。
首先讀取攝像機中視頻,使用Opencv 將視頻進行抽幀處理得到圖像,然后對利用TensorRT 進行推理加速,即加載安全帽模型文件進行檢測,不斷讀取視頻,以完成對視頻的檢測,實現(xiàn)在指定區(qū)域出現(xiàn)人員沒有佩戴安全帽,系統(tǒng)能夠自動識別該情況并抓拍預(yù)警。安全帽識別框架如圖3 所示。
圖3 安全帽識別框架圖
3.4.1 非極大值抑制
非極大值抑制就是搜索局部極大值,以便抑制不是極大值的元素。在目標(biāo)對象檢測中,滑動窗口通過特征提取、分類器分類識別之后,每個窗口均可以得到一個分類和分?jǐn)?shù)?;瑒哟翱谟袝r出現(xiàn)很多窗口與其他窗口有包含關(guān)系或者大部分交叉的情況,這時就需要用非極大值抑制來選取鄰域里分?jǐn)?shù)最高的窗口,抑制鄰域里分?jǐn)?shù)低的窗口。未運行非極大值抑制的目標(biāo)檢測算法效果圖如圖4 所示。從圖4 中可以看出,檢測目標(biāo)為人,該女生有三個重疊框。
圖4 未運行非極大值抑制的目標(biāo)檢測算法效果圖
如果想去掉重疊框,只保留一個矩形框,就需要進行非極大值抑制的目標(biāo)檢測。開展非極大值抑制的目標(biāo)檢測,首先對概率進行排序,選擇概率為0.98 的矩形框,然后計算概率0.98 的矩形框與概率0.83 矩形框、概率0.75矩形框的重疊度是否大于某個設(shè)定的閾值。如果大于設(shè)定的閾值,將概率0.83 矩形框和概率0.75 的矩形框移除,只保留0.98 的矩形框。運行非極大值抑制后的目標(biāo)檢測算法效果圖如圖5 所示。
圖5 運行非極大值抑制后的目標(biāo)檢測算法效果圖
3.4.2 安全帽識別效果
利用TensorRT 檢測出佩戴安全帽的人檢測結(jié)果為0,如圖6 所示,利用TensorRT 檢測出的未佩戴安全帽的人檢測結(jié)果為1,如圖7 所示。
圖6 佩戴安全帽檢測
圖7 未佩戴安全帽檢測
不少網(wǎng)站癱瘓,數(shù)據(jù)無法恢復(fù),說明系統(tǒng)數(shù)據(jù)備份很重要。本系統(tǒng)數(shù)據(jù)備份機制為非結(jié)構(gòu)化的文件備份和結(jié)構(gòu)化的數(shù)據(jù)庫備份。通過設(shè)置定時運行腳本任務(wù),實現(xiàn)數(shù)據(jù)庫增量備份和全備份,以備系統(tǒng)宕機,恢復(fù)數(shù)據(jù)。
結(jié)束語
智能識別是否佩戴安全帽已上線使用,達到了實時檢測效果,實踐證明該應(yīng)用滿足用戶安全生產(chǎn)管理需求,得到用戶認(rèn)可。在安全生產(chǎn)中,可以考慮使用YOLOv5 算法進行走路看手機、限制區(qū)域違規(guī)停車、人員逗留等應(yīng)用研究,進一步提升安全管理效率。