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