趙維科 焦良葆 孟 琳 浦 東
(南京工程學院人工智能產業技術研究院 南京 211167)
傳統的煙霧檢測方法主要是根據煙霧、氣體、溫度等物理量變化,采用感溫、感光、氣體探測以及復合式探測而設計了各式各樣的煙霧探測器。但是煙霧探測器由于自身的特性而受到空間的限制,尤其是在室外環境,煙霧探測器無法檢測大范圍,而且煙霧易被氣流吹散,煙霧到達不了煙霧探測器。故而近年來,煙火隱患的探測技術正逐漸朝著視頻圖像處理的趨勢發展,通過最近興起的機器視覺技術可以對煙火隱患這類目標進行有效的檢測定位,從而能夠更準確的定位煙霧發生地,避免火災發生更多地延伸。相比煙霧探測器,具有監控范圍廣、監控距離遠、反應快速等顯著的特點。
隨著計算機科學的發展和深度學習理論的不斷完善,目標檢測的研究得到進一步發展,檢測精度與速率都有大幅提升。文獻[12]中將SSD算法中的VGG16網絡進行重構,通過增加6個卷積層和1個池化層,來提升對高鐵監控視頻中煙火的檢測精準度,一定程度上減少了目標檢測漏報率,但同時由于增加了網絡層數導致模型變大而使得檢測速率降低,影響實時檢測效果。文獻[14]利用深度卷積網絡生成對抗網絡和自適應前景分割技術來對輸電線路的工程車輛入侵進行檢測,該算法在煙火隱患檢測的應用中會因在前景分割時花費較多時間大幅降低了識別速率而導致漏幀。文獻[15]根據交通燈尺寸特點,精簡YOLO網絡結構,然而在對復雜環境下的檢測中識別效果會大幅下降,無法準確定位識別目標。文獻[17]通過結合跨階段局部網絡對骨干網絡進行改進,降低計算量,同時利用改進后特征融合增強,有效提升了在復雜環境下檢測中的目標識別效果,由于山火煙霧這類形狀不固定的柔性目標,在環境中檢測更加復雜,需要對柔性目標檢測提取更多的特征信息。深度卷積網絡的深度學習主流目標檢測算法主要有兩階段的Fast R-CNN[2~3]和一階段的YOLO[4,14~15,17,19,23]和SSD[12],其中YOLO算法經過更新發展,結合了多特征提取以及殘差網絡特性,使得對目標的檢測精度識別速率都有較大提升。
針對上述問題以及應用需求,本文提出了YO?LO深度卷積網絡的優化算法,該優化算法包含了2個方面的創新點:一是,利用GIoU_Loss損失函數替換L2 Loss損失函數,降低損失值,提升檢測精度;二是,在輸出層之前添加SPP模塊,將目標特征從多尺度方面進行融合,融合多尺度可以擴大感受范圍,獲得更豐富的信息,從而提高目標檢測的準確性。
煙火隱患作為一類特定目標可以劃分為兩種目標,分別為山火和煙霧,利用目標檢測算法[4]可以對煙火隱患做出大致范圍的劃定。
目標檢測是將圖像或者視頻中的目標與其他不感興趣區域進行區分,判斷是否存在目標,確定目標位置,識別目標種類的計算機視覺任務。以AlexNet為分界線,2012年之前為傳統算法,包括Viola-Jones[6]算法、HOG特征算法以及DPM[1]模型。2012年,Hinton教授的團隊使用了卷積神經網絡設計了一種名為AlexNet的網絡結構,該網絡結構在ImageNet數據集上擊敗了所有傳統方法,使得卷積神經網絡成為計算機視覺領域中最重要的工具。基于深度學習的目標檢測算法大致分為三類:1)基于區域建議的算法,如R-CNN[3]、Fast R-CNN[2]、Faster R-CNN等。2)基于目標回歸的檢測 算 法,如YOLO、SSD[12],retinanet,EfficientDet。3、基于Anchor-free的算法,如CornerNet,Center?Net,FCOS等。
使用coco數據集對比不同目標檢測算法可知,基于目標回歸的檢測算法在檢測精度上高于An?chor-free的算法,檢測速率上遠超區域建議的算法。在這基礎之上,目前目標回歸算法中的YOLO算法在檢測精度上與Fast R-CNN相近,檢測速率上也與SSD相持平,如表1所示,因此YOLO算法在對目標進行實時監測效果最佳。
YOLO本質上是一個實現了識別與回歸功能的深度卷積神經網絡,通過對圖片的全局區域進行訓練,速度加快的同時,能夠更好的區分目標和背景。
這個深度卷積神經網絡主要是由一系列的1×1和3×3的卷積層組成,每個卷積層后都會跟一個BN層和一個LeakyReLU激活函數,網絡結構如圖1所示。它一共有53個全連接卷積層,所以該網絡模型結構又稱為Darknet-53。該結構為了增加網絡的深度,借鑒引入Resnet網絡中的殘差結構,相比較其他深度卷積網絡算法中類似VGG那樣直筒型的網絡結構,YOLO因殘差結構訓練層難度大大減少,因此這里可以將網絡做到53層,精度明顯提升。

圖1 YOLO網絡結構
對于原YOLO算法在應用到煙火隱患檢測時對于不固定形狀的煙火圖像在檢測時,會產生大范圍的煙霧檢測不全,同時還會對小范圍目標的煙霧檢測不準的問題,因此提出了下面的改進策略。
在YOLO算法中把目標邊界框表示為四個變量(x,y,w,h)或(X1,Y1,X2,Y2)。目標邊界框回歸問題通常采用L2 loss(L1 loss、Smooth L1 loss)對上述四個變量進行回歸,但是,這種做法有以下缺點:
1)L2 loss在計算邊界框損失時,先獨立地求出四個點的損失Loss,然后進行相加,這種做法假設了這四個點是相互獨立的,但實際上應該是有一定相關性的,因為這四個點都依賴于同一個目標。
2)實際評價框檢測的指標是使用IoU,這兩者是不等價的,多個檢測框可能有相同大小的L2 Loss,但它們的IoU可能差異很大。
3)L2 loss并不具有尺度不變性。大邊界框的L2損失通常會大于小邊界框的損失,這使得在網絡訓練過程中,網絡會更加注重大邊界框的定位,忽視小邊界框的定位,最終導致模型對小目標的檢測性能比較差。
由圖2所示,其中灰色框為真實框,黑色框為預測框,從圖中可以看出,當L2范數相等時,IoU與GIoU的值都有很大的差異,這表明使用L范數來作為衡量邊界框的距離是不合適的。

圖2 L2范數相等時IoU及GIoU對比
為了解決上述問題,提出了IoU來構造損失函數,然而IoU loss在當預測框A和目標框B不相交時,即IoU(A,B)=0時,不能反映A,B距離的遠近,此時損失函數不可導,IoU loss無法優化兩個框不相交的情況。如圖3所示,場景1和場景2的IoU都為0,由于場景1的兩邊界框比場景2的更近,L范數更小,因此場景1的檢測效果更佳。

圖3 IoU為0的兩種不同情況的回歸
針對IoU作為坐標誤差損失函數IoU無法優化無重疊的bounding box,所以本文使用一種泛化版的GIoU[8],計算公式如下:

其中,C是能完全包圍A和B的最小矩形框。與IoU相似,GIoU[7]也是一種距離度量,作為損失函數的話,LGIoU=1-GIoU滿足損失函數的基本要求。GIoU不僅關注重疊區域,還關注其他的非重合區域,能更好的反映兩者的重合度。當兩個框沒有重疊區域時,此時GIoU是一個在[-1,0]范圍內變化的數,存在梯度,能夠對訓練進行優化,優化方向是逐漸拉近兩個框之間的距離。將GIoU作為YOLO的邊界框回歸損失函數,可以有效降低目標檢測訓練過程時的損失值,從而提高識別的準確精度。
在目標檢測領域,為了更好的提取融合特征,通常在Backbone和輸出層,會插入一些層,這個部分稱為Neck。相當于目標檢測網絡的頸部,也是非常關鍵的。改進的Neck結構主要采用了SPP模塊[16]、FPN+PAN的方式。
3.2.1 SPP模塊
SPP模塊的全名是空間金字塔池化層模塊[17]。圖像空間金字塔[18]是多尺度圖像處理,它使用多分辨率并表征了圖像強大而簡單的結構[19],所提出的模型獲取高級特征,紋理特征,提高了模型的準確性。在SPP模塊中,使用k={1×1,5×5,9×9,13×13}的最大池化的方式,再將不同尺度的特征圖進行Concat操作如圖4所示,此處的最大池化采用padding操作,移動的步長為1,比如13×13的輸入特征圖,使用5×5大小的池化核池化,padding=2,因此池化后的特征圖仍然是13×13大小。在《DC-SPP-Yolo》[22]中對YOLO目標檢測的SPP模塊進行了對比測試,結果表明,采用SPP模塊的方式,比單純使用k×k最大池化的方式,更有效地增加主干特征的接受范圍,顯著的分離了最重要的上下文特征。在使用608×608大小的圖像進行測試時發現,在COCO目標檢測任務中,以0.5%的額外計算代價將AP50增加了2.7%,因此采用SPP模塊。

圖4 SPP模塊
3.2.2 FPN+PAN
FPN+PAN借鑒的是18年CVPR的PANet[20],當時主要應用與圖像分割領域,將其拆分應用到YO?LO中,進一步提高特征提取的能力。YOLO的只有單一的FPN層,它是自頂向下的,將高層的特征信息通過上采樣的方式進行傳遞融合,得到進行預測的特征圖。而改進的結構在FPN層的后面還添加了一個自底向上的特征金字塔,其中包含了兩個PAN結構[21],如圖5所示。這樣結合操作,FPN層自頂向下傳達強語義特征,而特征金字塔則自底向上傳達強定位特征,兩兩聯手,從不同的主干層對不同的檢測層進行特征聚合,從而擴大感受野,提高特征提取能力,提高檢測精度。

圖5 FPN+PAN結構
本文中基于Darknet框架搭建神經網絡,利用C和Python編程語言進行實驗。模型訓練和測試環境如下:Intel(R)Xeon(R)Glod5118 CPU@2.3GHz處理器,GeForce RTX2080Ti型GPU,24GB顯存,Centos7.0操作系統,內存128G。
本文以YOLO V3作為改進和比較的對象,但本文所述的改進適合于所有YOLO框架算法。實驗中將改進的YOLO算法與原算法進行比較。
利用國網公司南京分公司與蘇州分公司提供的輸電通道煙火隱患數據進行模型訓練和測試。采用電力桿塔上安置的攝像頭對輸電通道周圍環境進行拍攝,針對輸電線路通道中可能存在的山火以及煙霧進行模型訓練以及測試。選用其中拍攝清晰、無明顯壓縮痕跡的二維目標圖像作為數據集,轉換標簽文件格式。將數據集按照8∶1∶1的比例隨機分為互斥的訓練集,驗證集和測試集,如表2所示,其中山火為主要檢測類別,煙霧由于其涉及范圍較廣,容易出現誤判斷,因而將其歸類為次要檢測類別。

表2 數據集類別及數量
在深度卷積神經網絡中的參數是數以萬計的,為了使得這些參數能夠達到最佳工作狀態則需要大量的數據進行訓練,因此提出了數據增強的方法來利用有限的數據集產生更多的等價數據。使用Mosaic數據增強[10,13],對四張煙火隱患圖片進行隨機旋轉拼接,每一張圖片都有其對應的目標框,利用四張圖片拼接之后就獲得一張新的圖片,同時也會獲得這張圖片對應的目標框,將這張新的圖片傳入到神經網絡當中去學習,相當于一下子傳入四張圖片進行學習,訓練效果相對于原本算法增強了近4倍。利用labelimg標注軟件將這2類目標標注出來,根據VOC數據集目錄結構,將數據集標記文件保存為txt格式。

選用查全率R、查準率P和平均精度mPA評估模型的檢測準確率,其中R、P的計算公式如下:式中:T為將目標煙火隱患預測為對應目標;F為將目標煙火隱患預測為非對應目標;P為將非目標煙火隱患預測為目標。通過計算每個樣本類別的T、P、F值,得到每個類別對應的查全率、查準率。通過計算每個樣本類別的T、P、F值,得到每個類別對應的查全率、查準率從而繪制查全率-查準(PR)曲線,mAP為曲線下的面積[23]。mAP的計算公式如下:

式中f為PR曲線。
利用國網公司提供的數據集進行訓練得到原算法和改進后YOLO算法的訓練模型,并對其性能進行比較。實驗中設定batch為64,即在訓練集中每次迭代處理64個樣本,設定subdivisions為8,即將batch分割為8個batch。本文中訓練迭代次數為33800,學習率0.001,使用數據集,在GPU上進行了約1天的訓練,獲得最終煙火隱患目標檢測模型權重。
為了評估GIoU_Loss損失函數融合后的YOLO算法的識別效果,引入了Loss損失曲線圖,用于與原來的使用常用邊界框損失函數的YOLO算法進行比較,通過Loss損失曲線圖可以看出,通過GIoU_Loss損失函數與YOLO算法融合后,算法通過Darknet框架進行訓練后的損失值最終降低至0.5532,而原本使用L2 Loss損失函數的YOLO損失值最終降低至0.8905,損失值效果提升了近62%,L2 Loss損失函數Loss曲線圖如圖6改進前所示,GIoU_Loss損失函數Loss曲線圖如圖6改進后所示。

圖6 Loss損失曲線圖
為了評估融合了金字塔池化層的YOLO算法對復雜環境下目標檢測的識別效果,利用原始數據集訓練數據增強后的YOLO算法,進行金字塔池化層融合實驗,并將融合后的識別結果與原始模型結果進行比對分析,圖7所示為改進后的算法與原算法在測試集中PR曲線對比。從圖中可以看出,相比于原算法,改進后的算法PR曲線下的面積更大,平均精度更高。相比于YOLO算法,改進后的算法平均精度提升了2.7%。

圖7 PR曲線圖
為了驗證本文算法相較其他網絡模型的優勢,首先在同樣的實驗環境下利用相同的訓練樣本數據重新訓練了SSD、Fast R-CNN以及YOLO原網絡,獲得相應的模型,然后利用相同的測試數據集,將其他模型檢測結果與本文算法模型進行對比。
以模型檢測平均準確率mAP、檢測速度FPS作為評價指標,分別對比SSD、Fast R-CNN、YOLO原算法以及本文算法的性能,如表3所示。
從表3中可以看出,本文算法在平均準確率上幾乎與Fast R-CNN持平,同時檢測速度上與SSD與YOLO算法模型相近,因此,本文算法在針對山火煙霧這類目標檢測時相較于其他網絡模型有著準確率高和速率快的優勢。

表3 各模型檢測結果
為了進一步體現本文算法相對于原算法在檢測精度上的優勢,利用查全率和查準率兩個評價指標對原算法和本文算法進行對比。通過Mosaic數據增強、GIoU_Loss損失函數、金字塔池化層融合后的YOLO能夠在一定程度上在不影響YOLO實時檢測速率的同時提升檢測精度,識別精度在閾值設置為0.2時對比數據如表3所示。
通過表4可知,原算法在查全率和查準率上對于原算法都有較大提升,山火的查全率提升了1.9%,查準率提升了2.4%,煙霧的查全率提高了0.8%,查準率提高了1.8%。

表4 查全查準率對比
其檢測效果圖如圖8所示,在圖中可以看出對于不同形狀的煙霧都能有較好的檢測效果。

圖8 檢測效果圖
本文中提出的YOLO改進算法,該算法通過Mosaic數據增強,優化網絡訓練數據集,提升訓練效果;利用GIoU_Loss損失函數來降低訓練損失值;同時,引入空間金字塔池化,增大感受野,提高小目標識別效果,從而在不影響識別速率的同時提高復雜化境下的煙火隱患檢測識別精度。使用改進后的算法對山火煙霧這類安全隱患進行實時監測,快速定位隱患火災發生地,有效避免災害進一步擴散。
實驗結果表明,YOLO優化算法取得了更高的檢測準確率的同時優化了數據集改善了誤報率較高的問題,基本滿足了對煙火隱患的實時監測需求。另外,該優化算法并不局限于煙火隱患的檢測,也可應用于其他領域的目標檢測,具有廣闊的應用場景,適用性強。