劉飛躍,沈靖夫,楊一帆,許之遠,張元良
(江蘇海洋大學海洋工程學院,江蘇連云港 222005)
船舶上火災(zāi)事故是海上主要事故類型之一,據(jù)統(tǒng)計船舶火災(zāi)事故約占船舶總事故的12%。海上船只一旦發(fā)生火災(zāi)往往會帶來很大的人員傷亡和財產(chǎn)損失[1]。火災(zāi)產(chǎn)生時往往伴隨著高溫、高熱量、大量煙霧等現(xiàn)象。傳統(tǒng)的火災(zāi)檢測主要通過布置傳感器進行監(jiān)測,如:感光型、感溫型、感煙型等傳感器類型。但是火災(zāi)剛發(fā)生時往往目標很小,蔓延到一定程度才能被這些傳感器檢測到[2],所以傳統(tǒng)方法響應(yīng)時間過長,不能在第一時間檢測到火災(zāi)的發(fā)生。
隨著近年來計算機的算力飛速發(fā)展,深度學習逐漸應(yīng)用于各個行業(yè),在基于圖像的目標檢測、目標分類等領(lǐng)域均應(yīng)用良多。相較于傳統(tǒng)的傳感器火災(zāi)檢測系統(tǒng),基于圖像的檢測系統(tǒng)因為可以與監(jiān)視器和網(wǎng)絡(luò)互聯(lián),具有響應(yīng)快、處理迅速等特點,有利于更快發(fā)現(xiàn)火災(zāi)情況以便于及時作出應(yīng)對。
在眾多目標檢測的算法中YOLO[3]算法憑借著模型小、效率高、可以部署在移動端等優(yōu)勢脫穎而出。Wu[4]等人提出了適應(yīng)于部署在移動設(shè)備的輕量化網(wǎng)絡(luò)tiny-YOLO。Wang[5]等人提出改進的Tiny-YOLOv3算法,其生成的模型的尺寸比原模型更小,性能比原模型更優(yōu)。Xie[6]等人通過在YOLOv4 中改進候選框,增加通道注意力機制來提高火焰識別精度。Wang[7]等人提出將YOLOv5的三輸出改為四輸出來提高小目標檢測的精度與特征融合能力。Li[8]通過提出Grow up 數(shù)據(jù)增強算法來進行數(shù)據(jù)集處理,并基于YOLOv4提出了SF-YOLO,使用Ghost 卷積替代普通卷積模塊設(shè)計了輕量型GSF-YOLO 算法。Zhang[9]等人通過引入焦點損失函數(shù),結(jié)合火焰靜態(tài)和動態(tài)兩種特征設(shè)計出多特征的融合方法,從而降低誤報火焰的目的。
為了適應(yīng)船上復(fù)雜的空間情況,本文在基礎(chǔ)的火焰數(shù)據(jù)集上增加了船上和倉庫的起火照片,同時為使算法可以部署在設(shè)備上,盡量采用輕量化的模型,在此模型基礎(chǔ)上提高精度。本文基于YOLOv5網(wǎng)絡(luò)進行改進,選用的是小尺度的s 模型,滿足輕量化的條件。旨在通過優(yōu)化后的網(wǎng)絡(luò)盡可能又快又準地檢測到火焰,配合警報器第一時間提醒工作人員,在火災(zāi)造成不可逆局面之前及時處理。
YOLOv5 網(wǎng)絡(luò)通過模塊中的寬度和深度的差別,區(qū)分出s、m、l、x 四種主要版本。除了寬度和深度之外,四種版本網(wǎng)絡(luò)模型完全一致。此網(wǎng)絡(luò)模型由四個部分組成:輸入(Input) ,主干網(wǎng)絡(luò)(Backbone),頸部(Neck),和預(yù)測頭(Head)。相較于YOLOv5 之前的版本,YOLOv5v6.0把Foucs層換成了6×6的卷積層,采用卷積層的效果不變,且更適應(yīng)相應(yīng)的優(yōu)化算法。還將空間金字塔池化(SPP)換成速度更快的空間金字塔池化(SPPF)。本文采用基礎(chǔ)網(wǎng)絡(luò)結(jié)構(gòu)是YOLOv5s6.0 版本,網(wǎng)絡(luò)模型結(jié)構(gòu)如圖1所示。

圖1 YOLOv5 網(wǎng)絡(luò)模型結(jié)構(gòu)圖
Hou[10]等在2021 年中提出了坐標注意力(Coordinate attention,CA)。編碼過程如圖2。該注意力機制將位置信息嵌入到通道注意力中,將通道注意力機制劃分為兩個一維的特征編碼的過程,分別沿兩個空間方向聚合特征,一個方向獲取空間方向的遠程依賴關(guān)系,另一個方向保存精確的位置信息。

圖2 CA編碼過程
本文標簽位置分布如圖3,可以看出樣本檢測框尺度并不均衡。為此加入CA模塊以增強網(wǎng)絡(luò)的全局感受野以及對目標的精確定位能力,來適應(yīng)本文不均衡的圖像標注尺度。全局平均池化主要用于通道注意力對全局空間信息進行的編碼。因為需要將全局空間信息壓縮到通道中,所以很難保留位置信息。

圖3 標簽位置分布
CA 為了保存更多的位置信息,分別對水平和垂直兩個方向進行編碼。給定輸入X 后,使用(H,1) 和(1,W) 的池化核分別對x,y 方向進行平均池化。Zc表示第c 個通道的輸出。zhc表示高度h 的第c 個通道的輸出,式(1)如下:

相較于之前沒有劃分x,y 方向的池化,劃分后既可以幫助我們沿著一個方向獲得遠程依賴關(guān)系,還可以保留這個方向的位置信息,有助于注意力可以更快速更準確地找到感興趣的地方。
信息在神經(jīng)網(wǎng)絡(luò)中的傳遞方式非常重要,YOLOv5 采用的是路徑聚合網(wǎng)網(wǎng)絡(luò)(PANet)[11]。該方法采用了雙向融合,通過由下向上的路徑增強,利用準確的低層定位信號來增強整個特征層次,進而縮短底層與頂層的信息路徑。
本文采用了更為復(fù)雜的加權(quán)雙向特征金字塔(BiFPN)[12]。該網(wǎng)絡(luò)在PANet 的特征融合的基礎(chǔ)上增加橫向連接,做到了在不增加成本的條件下進行更多的特征融合,且在輸出之后進行模塊重復(fù)從而獲取更多的特征,網(wǎng)絡(luò)結(jié)構(gòu)見圖4。BiFPN 集成了雙向跨尺度連接和快速歸一化融合,可以獲取更大感受野和更豐富的語義信息,特別是小目標檢測的淺層特征,滿足火焰檢測時效性的要求。

圖4
在目標檢測的過程中,邊界框回歸在目標定位的過程中有著十分重要的作用。在YOLO v5 6.0版本中邊界框回歸損失函數(shù)采用的是CIOU[13]。CIOU考慮了預(yù)測框和真實框的重疊面積,還有其中心點距離和高與寬的縱橫比,該損失函數(shù)已經(jīng)非常符合真實框的情況。但是由于只是考慮了縱橫比的差異,并不是寬和高分別與其置信度的真實差異,所以在某些特殊情況下會阻礙模型優(yōu)化。對此有學者提出EIOU[14],它明確地衡量了邊界框回歸(bounding box regression,BBR)中三個幾何因素的差異,即重疊區(qū)域、中心點和邊長。并提出了一個回歸版本的焦點損失,使回歸過程專注于高質(zhì)量的錨框。該損失函數(shù)可以實現(xiàn)提高收斂速度和定位精度的明顯優(yōu)勢。
EIOU 的計算公式見式(3),其中b,bgt表示預(yù)測框和真實框的中心點,ρ表示的是兩中心點之間的歐氏距離,wc,hc分別是覆蓋兩個box的最小外接框的寬度和高度,w,h,wgt,hgt分別為預(yù)測框的和真實框的寬高。
本次實驗數(shù)據(jù)集主要來源是網(wǎng)上搜集的船上失火視頻進行截取的圖片。由于此類照片的數(shù)據(jù)量不大,還采用環(huán)境條件相似的照片如廠房、車廂等起火照片組成本文數(shù)據(jù)集1500 張圖片。使用LabelImg 軟件手工進行標注,標注后存取信息的是YOLO 格式的txt文件。在進行訓(xùn)練前對數(shù)據(jù)集進行訓(xùn)練集、測試集和驗證集的分組。
本文實驗使用PyTorch 深度學習框架,編譯語言為Python3.8,訓(xùn)練環(huán)境為CUDA 11.1,GPU 為NVIDIA RTX3070 Laptop,最小訓(xùn)練批次為32,訓(xùn)練100 個周期。
實驗結(jié)果由精確率(P) 、召回率(R) 、平均精度(AP)和平均精度均值(mAP)作為評價指標,計算過程見式(4)~(7)。其中,P表示模型預(yù)測為正的樣本中為正的概率,R 表示真正為正的樣本被成功預(yù)測的概率,AP 表示不同召回率下的平均檢測精度,n 表示數(shù)據(jù)集中的類別數(shù)量,mAP表示多個類別的AP的均值,因為本文是對火焰進行的單目標檢測,所以用AP 表示mAP即可。
其中,TP(True Positive)表示正確的預(yù)測正樣本,F(xiàn)P(False Positive)表示錯誤的把負樣本預(yù)測為正,F(xiàn)N(False Negative)表示錯誤的預(yù)測為負樣本。
首先觀察原YOLO 網(wǎng)絡(luò)和添加了CA 之后的訓(xùn)練結(jié)果對比。如圖5所示,虛線是未做修改結(jié)果,實線是添加CA后的結(jié)果。可以看出修改后網(wǎng)絡(luò)雖然在前三十輪收斂的速度沒有原網(wǎng)絡(luò)迅速,但是原網(wǎng)絡(luò)結(jié)構(gòu)在訓(xùn)練40輪之后原模型有上升趨勢,而增加CA的網(wǎng)絡(luò)逐漸穩(wěn)定在0.016左右。

圖5 增加CA結(jié)構(gòu)前后置信度損失對比

圖6 艙內(nèi)、艙外和倉庫的照片
為了更好地驗證對比實驗結(jié)果,本文設(shè)計了四組實驗,分別是未修改的YOLOv5、增加CA、增加BiFPN、修改損失函數(shù)為EIOU。這四組實驗除了網(wǎng)絡(luò)結(jié)構(gòu)不同,其余配置完全相同。測試結(jié)果如表1所示。

表1 實驗結(jié)果
從表1中可以看出,在進行網(wǎng)絡(luò)改進時,每一步改進都有一定的優(yōu)化作用。最終的結(jié)果對比未修改的YOLOv5,精度增加了6.1%,召回率增加了2.4%,平均精度增加了3%。可以看出優(yōu)化后的網(wǎng)絡(luò)對于精度提升得非常明顯,但是對于召回率和平均精度的改善不是特別顯著。
為了更直觀地感受上述實驗的結(jié)果,抽取了艙內(nèi)、艙外和倉庫的照片分別對每一種網(wǎng)絡(luò)進行測試,可以看出優(yōu)化后的網(wǎng)絡(luò)對于火焰的識別精度有著不少的提升,對于艙外這種低畫質(zhì)的照片尤為顯著。
本文為了適應(yīng)船上遮擋物多、畫質(zhì)不高的特殊環(huán)境,在網(wǎng)絡(luò)結(jié)構(gòu)上增加了CA 模塊以獲取圖片中更多的信息,增強了本文算法對目標定位的精度。采用BiFPN 結(jié)構(gòu)來進行多尺度特征融合。損失函數(shù)改用EIOU 解決了縱橫比的模糊定義,加速了預(yù)測框的收斂,提高了預(yù)測框的回歸精度。下一步需要擴大船上火焰的數(shù)據(jù),在增加精度的同時進行輕量化優(yōu)化,以保證更好地部署算法。