林 海,胡旭曉,吳躍成,汪燕超
(浙江理工大學(xué)機(jī)械與自動控制學(xué)院,浙江 杭州 310018)
2049535531@qq.com;huxuxiao@zju.edu.cn;wuyuechen@126.com;2597123426@qq.com
石油化工行業(yè)是我國最大的基礎(chǔ)性制造行業(yè),石油化工產(chǎn)品在儲存、運(yùn)輸和生產(chǎn)各個環(huán)節(jié)均有極高的安監(jiān)、環(huán)保、應(yīng)急管理要求[1]。油庫儲備的原油具有易燃、易爆、易揮發(fā)、易產(chǎn)生靜電等危險特性,安全風(fēng)險非常高,因此加強(qiáng)對油庫的安全監(jiān)測,及時制止工作人員錯誤行為和發(fā)現(xiàn)安全隱患顯得尤為重要。隨著大數(shù)據(jù)和人工智能技術(shù)的發(fā)展,在視頻監(jiān)控中加入對視頻的智能監(jiān)測,實(shí)現(xiàn)對視頻源實(shí)時分析,可以避免遺漏信息,使各種安全風(fēng)險在發(fā)生之初就被發(fā)現(xiàn),并提醒工作人員及時解決,從而避免安全事故發(fā)生,不但降低了工作人員的工作強(qiáng)度,還有效地提高了油庫安全監(jiān)測的效果和質(zhì)量。
近年來,深度學(xué)習(xí)飛速發(fā)展,計算機(jī)視覺領(lǐng)域中很多優(yōu)秀的算法都是基于深度學(xué)習(xí)的。目標(biāo)檢測領(lǐng)域主流的方法目前分為兩類:一類是基于候選框的兩階段算法,如RCNN[2]、Fast-RCNN[3]、Faster-RCNN[4]、Mask-RCNN[5]等。另一類是基于邊框回歸的一階段算法,如SSD[6]和YOLO[7]系列算法。兩階段目標(biāo)檢測算法精度高,但是檢測速度相對較慢。與兩階段目標(biāo)檢測算法相比,一階段目標(biāo)檢測算法速度遠(yuǎn)快于兩階段目標(biāo)檢測算法,經(jīng)過許多研究者的不斷努力,目前一階段目標(biāo)檢測算法基本能達(dá)到兩階段目標(biāo)檢測算法的精度,所以實(shí)際應(yīng)用中主要采用一階段目標(biāo)檢測算法,例如YOLO系列目標(biāo)檢測算法。
本文選用目前表現(xiàn)優(yōu)秀的YOLOv5目標(biāo)檢測算法為基礎(chǔ),通過加入CA[8]提取更加豐富的特征,同時修改邊框回歸損失函數(shù)以提升邊框回歸精度,最后在輸出結(jié)果中用DIOUNMS替換傳統(tǒng)的NMS,提高對遮擋目標(biāo)的辨識度。目標(biāo)檢測對象主要為油庫工作人員是否佩戴安全頭盔,以及煙霧和火焰。實(shí)驗(yàn)結(jié)果表明,改進(jìn)后的YOLOv5算法比原始的YOLOv5算法的mAP高2.9%。
YOLOv5是Ultralytics團(tuán)隊于2020 年提出的,雖然YOLOv5并沒有對YOLO算法系列進(jìn)行全新的模型架構(gòu)重建,但是YOLOv5在目標(biāo)檢測領(lǐng)域中的應(yīng)用表現(xiàn)優(yōu)異。YOLOv5在網(wǎng)絡(luò)體積上分為YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四個不同的版本。YOLOv5各個型號的網(wǎng)絡(luò)模型結(jié)構(gòu)大致相同,通過不同的寬度系數(shù)和深度系數(shù)控制模型體積的大小。本文以最小的網(wǎng)絡(luò)模型YOLOv5s為例,介紹YOLOv5的模型結(jié)構(gòu),其結(jié)構(gòu)主要由輸入端、主干網(wǎng)絡(luò)、Neck網(wǎng)絡(luò)和輸出端四個部分組成,詳細(xì)網(wǎng)絡(luò)結(jié)構(gòu)圖如圖1所示。
圖1 YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.1 YOLOv5 network structure diagram
YOLOv5的輸入端和YOLOv4一樣采用了Mosaic數(shù)據(jù)增強(qiáng),Mosaic數(shù)據(jù)增強(qiáng)就是隨機(jī)選取4 張圖片采用隨機(jī)縮放、隨機(jī)裁剪、隨機(jī)排布的方式將其拼接為一張圖片用于訓(xùn)練。這種方法不但豐富了數(shù)據(jù)集,而且能隨機(jī)縮放,增加了很多小目標(biāo),在一定程度上提高了網(wǎng)絡(luò)對小目標(biāo)的檢測,大大減少了GPU內(nèi)存的消耗,即使使用單張GPU訓(xùn)練,也能達(dá)到很好的效果。同時,輸入端還使用自適應(yīng)錨框主動學(xué)習(xí)并調(diào)整錨框大小和自適應(yīng)圖片縮放來減少信息冗余并提升推理速度。
相比YOLOv4,YOLOv5的主干網(wǎng)絡(luò)在前面添加了一個Focus結(jié)構(gòu),主要用于切片操作。以YOLOv5s為例,原始608×608×3的圖片經(jīng)過Focus結(jié)構(gòu)切片后,先得到304×304×12的特征圖,然后經(jīng)過一次輸出通道為32的卷積操作,最終得到304×304×32的特征圖。與YOLOv4相比,本研究在YOLOv5中設(shè)計了兩種CSP結(jié)構(gòu),CSP1_X結(jié)構(gòu)用于主干網(wǎng)絡(luò),CSP2_X結(jié)構(gòu)用于Neck網(wǎng)絡(luò)中。
YOLOv5的Neck網(wǎng)絡(luò)采用PAN結(jié)構(gòu)和FPN結(jié)構(gòu),PAN層自底向上傳達(dá)強(qiáng)定位特征,F(xiàn)PN層自頂向下傳達(dá)強(qiáng)語義特征,把這兩種結(jié)構(gòu)結(jié)合在一起,不同的主干層對不同的檢測層進(jìn)行參數(shù)聚合,進(jìn)一步提高特征提取能力。
YOLOv5的輸出端采用GIOU_Loss作為Bounding box的回歸損失函數(shù),GIOU_Loss緩解了IOU_Loss邊界框不重合情況下的損失計算問題,最后使用非極大抑制NMS,進(jìn)而選取最優(yōu)的目標(biāo)框。
大部分注意力機(jī)制用于深度神經(jīng)網(wǎng)絡(luò)都可以帶來不錯的性能提升,例如使用Self-Attention,但是這種注意力帶來的計算復(fù)雜度對輕量級網(wǎng)絡(luò)而言是無法承受的。所以,在輕量級網(wǎng)絡(luò)上主要使用SE(Squeeze-and-Excitation)和CBAM(Convolutional Block Attention Module),但SE只考慮內(nèi)部通道信息,忽略了位置信息,而計算機(jī)視覺任務(wù)中目標(biāo)的空間結(jié)構(gòu)是十分重要的。CBAM提出通過在通道上進(jìn)行全局池化來捕獲位置信息,但是這種方式只能捕獲局部的信息,而無法獲得大范圍相互依賴的信息。
坐標(biāo)注意力是新加坡國立大學(xué)的HOU等[8]提出了一種為輕量級網(wǎng)絡(luò)設(shè)計的新的注意力機(jī)制。CA(Coordinate Attention)是一種新的高效注意力機(jī)制,其原理是將位置信息嵌到通道注意力中,使得輕量級網(wǎng)絡(luò)能夠在更大的區(qū)域進(jìn)行注意力,同時減輕了大量的計算,降低了計算的復(fù)雜度。為了避免2D全局池化造成的位置信息丟失,研究人員將通道注意力分解為兩個并行的1D特征編碼過程,有效地將空間坐標(biāo)信息整合到生成的注意力圖中。CA模塊結(jié)構(gòu)如圖2所示。
圖2 CA模塊結(jié)構(gòu)示意圖Fig.2 CA module structure diagram
CA模塊工作流程如下,首先假定輸入的特征圖大小為C×H×W,分別用H×1和W×1大小的池化核沿著水平方向與垂直方向?qū)γ總€通道進(jìn)行編碼,得到水平方向和垂直方向的特征圖zh和zw,zh的大小為C×H×1,zw的大小為C×1×W。其次將上述兩個帶有方向信息的特征圖進(jìn)行拼接且利用權(quán)值共享的 1× 1卷積和進(jìn)行卷積操作,經(jīng)過一個非線性激活函數(shù)輸出特征圖f∈R(C/r)×1×(H+W),r為卷積過程中下采樣的比例。最后將f在通道進(jìn)行拆分,分別經(jīng)過 1× 1卷積核進(jìn)行通道調(diào)整,得到fh∈RC×H×1和fw∈RC×1×W,再經(jīng)過Sigmoid激活函數(shù)得到兩個不同空間方向的注意力權(quán)重gh和gw[9]。將輸入特征圖與上述兩個注意力權(quán)重相乘,從而得到表現(xiàn)能力更強(qiáng)的特征圖。
CA是一個簡單的即插即用的輕量級網(wǎng)絡(luò)注意力機(jī)制,HOU等[8]在EfficientNet和MobileNet加入了CA模塊,在圖像分類任務(wù)上均取得了不錯的效果。同時,HOU等[8]也在目標(biāo)檢測和語義分割任務(wù)上進(jìn)行實(shí)驗(yàn),發(fā)現(xiàn)模型性能均得到不小的提升。所以,本研究同樣將CA模塊添加到Y(jié)OLOv5的主干網(wǎng)絡(luò)中,它既能捕獲通道之間的依賴,也能很好地捕獲位置信息的空間長距離依賴[10]。
YOLOv5的邊框回歸損失函數(shù)使用的GIOU_Loss,其計算式如式(1)所示:
式(1)中,IOU表示交并比,即預(yù)測框和真實(shí)框相交區(qū)域面積與合并區(qū)域的面積比。IOU_Loss為1減去IOU后的值,當(dāng)預(yù)測框和真實(shí)框不相交時,IOU的值為0,這就導(dǎo)致在一定范圍內(nèi)損失函數(shù)沒有梯度,無法進(jìn)行學(xué)習(xí)和訓(xùn)練。針對這個問題,有研究者提出了GIOU_Loss,GIOU_Loss的原理是假定有兩個框A和B,然后找到一個最小的封閉形狀C,再計算C中沒有覆蓋A和B的面積與C總面積的比值,最后用A和B的IOU減去這個值。GIOU_Loss不僅關(guān)注重合區(qū)域,還關(guān)注其他非重合區(qū)域,能更好地反映二者的重合度。
邊框回歸的過程中需要考慮三個主要問題:重疊面積、中心點(diǎn)距離和長寬比。無論是IOU_Loss還是GIOU_Loss都只考慮了重疊面積,因此有學(xué)者提出DIOU_Loss,計算式如式(2)所示:
同樣,DIOU_Loss只考慮了重疊面積和中心點(diǎn)距離,沒有考慮到長寬比,CIOU_Loss在DIOU_Loss的基礎(chǔ)上進(jìn)行了一定的改進(jìn),計算式如式(3)所示:
式(3)中,v表示預(yù)測框與真實(shí)框長寬比的相似性:
α為一個權(quán)重參數(shù):
CIOU_Loss雖然考慮了邊框回歸的重疊面積、中心點(diǎn)距離及縱橫比,但是公式中反映的是縱橫比的差異,而不是寬高與其置信度真實(shí)差異,有時會阻礙模型有效的優(yōu)化相似性。所以,有學(xué)者在CIOU_Loss的基礎(chǔ)上將縱橫比拆開,提出EIOU_Loss,計算式如式(6)所示[11]:
式(6)中,前三項(xiàng)與DIOU_Loss一樣,分別表示重疊損失和中心點(diǎn)距離損失,后兩項(xiàng)表示將縱橫比拆分為預(yù)測的寬高分別與最小外接框?qū)捀叩牟钪担@樣使得收斂速度更快,Cw和Ch表示覆蓋兩個邊框的最小外接框的寬度和高度。
基于上述分析,本文選擇EIOU_Loss作為邊框回歸的損失函數(shù),不但能加速收斂,而且能提高邊框回歸精度。
目標(biāo)檢測最后的預(yù)測階段會輸出很多候選的anchor box,其中同一個目標(biāo)往往會有許多的接近重疊的預(yù)測框,這時候就需要使用NMS挑選一個最好的邊框保留。在原始的NMS中,得分最高的框與周圍其他框分別作IOU計算,如果IOU大于一個給定的閾值,則認(rèn)為是同一個物體,將刪除這個邊框。如果兩個物體十分接近且給定的IOU閾值較高時,經(jīng)過NMS后就只剩下一個物體,這樣就造成漏檢的情況。為了減少這種漏檢現(xiàn)象,本文用DIOU-NMS代替原始的NMS,DIOU-NMS不但考慮兩個框體的IOU,還考慮兩框中心點(diǎn)的距離,即使兩個框的IOU較大時,如果這兩個框的中心距離也較大,則可認(rèn)為這是兩個物體的候選框而不會被抑制掉,這樣就在一定程度上減少了漏檢現(xiàn)象和提高被遮擋物體的辨識率。
由于油庫視頻監(jiān)控中很少能采集到煙霧、火焰和工人信息,所以從互聯(lián)網(wǎng)上爬取需要的圖片。爬取的圖片可能未包含研究人員所需要的物體或者摻雜了許多的噪音,所以需對圖片進(jìn)行初步篩選,最終本文選取了4,000 張圖片作為標(biāo)注數(shù)據(jù)集,對標(biāo)注數(shù)據(jù)集進(jìn)行預(yù)處理,如重命名和將圖片統(tǒng)一轉(zhuǎn)換成jpg格式,使用labelImg對圖片進(jìn)行手工標(biāo)注,標(biāo)注對象為煙霧(Smoke)、火焰(Fire)、佩戴安全帽(Hat)和未佩戴安全帽(Person)四類,標(biāo)注的數(shù)據(jù)集格式為PASCAL VOC格式。將標(biāo)注好的數(shù)據(jù)集按8:2的比例隨機(jī)劃分為訓(xùn)練集和測試集,最終有3,200 張圖片用于訓(xùn)練,800 張圖片用于測試。
此次訓(xùn)練的模型是在YOLOv5s的基礎(chǔ)上進(jìn)行改進(jìn)的,在主干網(wǎng)絡(luò)中添加CA模塊,使用EIOU_Loss代替原來的GIOU_Loss,使用DIOU-NMS代替?zhèn)鹘y(tǒng)的NMS。本次實(shí)驗(yàn)在Ubuntu 18.04操作系統(tǒng)、NVIDIA RTX2080Ti顯卡、CUDA版本為10.1、深度學(xué)習(xí)框架為PyTorch 1.9.0的環(huán)境下進(jìn)行,選取的batch_size為32,訓(xùn)練輪數(shù)epochs為280。
將800 張測試集圖放在YOLOv5測試文件夾中,測試集中煙霧目標(biāo)包含256 個,火焰目標(biāo)包含186 個,佩戴安全帽目標(biāo)包含891 個,未佩戴安全帽目標(biāo)包含431 個。分別用原始的YOLOv5s訓(xùn)練出的模型和改進(jìn)后的YOLOv5訓(xùn)練出的模型對測試集圖片進(jìn)行檢測,最終危險目標(biāo)識別結(jié)果如表1所示,模型性能對比結(jié)果如表2所示。
表1 危險目標(biāo)識別結(jié)果Tab.1 Dangerous target identification results
表2 模型性能對比結(jié)果Tab.2 Model performance comparison results
由表1可以看出,模型的改進(jìn)提升效果主要體現(xiàn)在對小目標(biāo)的識別上。由表2可以看出,改進(jìn)后模型較原YOLOv5s模型,平均精度提高2.9%,并且?guī)缀醪辉黾幽P痛笮『湍P屯评頃r間,改進(jìn)后模型檢測效果如圖3所示。
圖3 檢測效果示意圖Fig.3 Schematic diagram of detection effect
針對傳統(tǒng)油庫監(jiān)測系統(tǒng)采用人工觀察視頻監(jiān)控方式存在的缺陷,本文提出了一種基于深度學(xué)習(xí)的油庫監(jiān)測方法,該方法基于表現(xiàn)優(yōu)秀的YOLOv5網(wǎng)絡(luò)模型,通過對原始的YOLOv5模型的部分結(jié)構(gòu)進(jìn)行改進(jìn),在油庫安全監(jiān)測中取得了較原始YOLOv5模型更好的監(jiān)測效果。最終實(shí)驗(yàn)結(jié)果表明,改進(jìn)后模型的平均精度mAP達(dá)到了91.2%,推理速度只需要5.1 ms,能很好地完成油庫安全監(jiān)測工作,不但節(jié)省了大量人力資源,保證了油庫安全監(jiān)測效果,而且進(jìn)一步推動了智慧油庫的建設(shè)。