王冠博,楊俊東,李 波,保利勇,丁洪偉
(云南大學 信息學院,云南 昆明 650500)
隨著深度學習在目標檢測領域的應用,目前基于深度學習的目標檢測主要分為類:單階段目標檢測算法和雙階段目標檢測算法[1]。雙階段目標檢測算法會把目標檢測分為兩個階段,第一階段會生成可能包含待檢物體的候選框,第二階段會對候選框的物體進行預測識別。常見的雙階段目標檢測算法有Fast R-CNN[2]、Faster R-CNN[3]、MASK-RCNN[4]等。雙階段目標檢測算法精度高,但處理速度慢,無法滿足火焰圖像實時檢測的實時性需求。單階段目標檢測算法是直接對源數據生成檢測結果,處理速度較快,可滿足火焰圖像實時檢測的實時性需求。常見的單階段目標檢測算法有SSD[5]、RetinaNet[6]、EfficientDet[7]、YOLO[8]等。其中,Bochkovskiy等[8]提出了以CSP-Darknet53為骨干網絡的YOLO v4,通過增加感受野、改進多通道特征融合、馬賽克數據增強等方法,達到了實時性與準確率的均衡。
針對火焰圖像實時檢測對實時性的需求,以及火焰特征復雜、火焰檢測易受周圍環境干擾的特點,本文提出一種改進的YOLO v4的火焰圖像實時檢測模型。該模型以YOLO v4為基礎,引入了注意力機制(包括改進型通道注意力(CAB)模塊和改進型空間注意力(SAB)模塊),可提取出融合通道注意力和空間注意力的特征。此外,還對YOLO v4算法的激活函數、先驗框、損失函數進行改進。與傳統的YOLO算法和SSD、RetinaNet、EfficientDet相比,該模型在保證實時性的基礎上提升了準確率,降低了損失值,從而使火焰的圖像的實時檢測更加準確、有效。
YOLO v4是由Bochkovskiy等在YOLO v3算法的基礎上,以CSPDarknet53為骨干網絡,提取圖像多尺度的特征進行目標檢測。YOLO v4采用SPP(spatial pyramid pooling)替代了YOLO v3的FPN(feature pyramid networks),將不同尺度的特征圖進行拼接,增加了模型感受域,從而使模型更快提取出有效特征[9],其結構如圖1所示。YOLO v4還采用了PANet(path aggregation network),在不增加網絡復雜度的前提下,使網絡能獲取更全面的細節特征。此外,YOLO v4還采用了Mosaic數據增強、部分網絡結構采用Mish激活函數取代了YOLO v3中的Leaky Relu激活函數等[10]。這些方法在保證檢測速度的前提下,提高了檢測精度。
YOLO v4模型可分為Input、Backbone、Neck、Head這4部分。Input部分負責輸入圖片;Backbone部分包含CBM(Conv2D_BN_Mish)層、CSPn(cross stage partial connections)層,負責特征提取;Neck部分包含CBL(Conv2D_BN_Leaky Relu)層、SPP層,負責上采樣和下采樣;Head部分會獲取到Neck部分提取的特征圖。

圖1 SPP-YOLO網絡結構
以輸入尺寸為(832,832,3)的圖像為例,輸入圖像通過Backbone部分不同尺度的CSP層進行下采樣處理后,得到3個不同尺度的特征圖,之后會經過Neck部分處理,增加了特征圖的感受域,進一步得到經過上采樣和下采樣處理后不同尺度的特征圖。最后,將特征圖輸入Head部分進行處理,得到目標檢測結果。YOLO v4網絡結構如圖2所示。

圖2 YOLO v4網絡結構
Misra等[10]提出Mish激活函數,Mish是一個光滑、連續、非單調的激活函數,式(1)為Mish激活函數的表達式。Mish激活函數上下有界,范圍≈[0.31,+∞]。 與ReLU、Swish等激活函數相比,Mish激活函數解決了網絡層數加深,精度下降的問題,在深層卷積神經網絡中能更好保持穩定性和準確性
(1)
YOLO v4的Backbone部分采用Mish激活函數,Neck部分采用Leaky Relu激活函數,其圖像如圖3所示。

圖3 Mish和Leaky Relu 激活函數圖像
與YOLO v3損失函數的結構類似,YOLO v4的損失函數也由3部分組成,分別是定位損失函數、目標置信度損失函數、分類損失函數。式(2)為YOLO v4的損失函數

(2)

YOLO v4的Backbone部分均采用Mish激活函數,Neck部分均采用Leaky Relu激活函數。Mish激活函數由Misra等[10]提出,其圖像如圖3所示。Relu的負半軸完全截斷,梯度下降不夠平滑,可能會出現死亡節點[12];Leaky Relu在負半軸加一個參數α, 可避免其在負半軸直接截斷,解決了Relu進入負區間后神經元不學習的問題,減少了靜默神經元的出現[13]。但該激活函數對α值的選取要求較高,目前對其性能優劣仍存在爭議。Mish激活函數在負區間并不是完全截斷,這可使它在負區間允許較小的梯度流入。此外,如圖3所示,Mish激活函數無邊界,可使其避免出現死亡節點。Misra等[10]也提到,Mish激活函數可保證每一點的平滑,在實際表現中,梯度下降效果優于Relu。
式(3)為Mish激活函數的一階導數,圖4為Mish激活函數和Leaky Relu的一階導數、二階導數比較
(3)
其中,ω=4(x+1)+4e2x+e3x+ex(4x+6),δ=2ex+e2x+2。
Leaky Relu的一階導數均為常數,二階導數為0。從圖4 Mish激活函數的一階導數可以看出,它是連續可微的,一階導數、二階導數均無斷點,可避免出現奇點。與Leaky Relu相比,Mish激活函數的性能和穩定性更好。

圖4 Mish和Leaky Relu的一階導數和二階導數
本文對YOLO v4網絡結構的Neck部分激活函數進行了改進,將Neck部分Leaky Relu激活函數替換為Mish激活函數。改進后的YOLO v4網絡結構如圖5所示。

圖5 改進后的YOLO v4網絡結構
YOLO v4中采用了K-means聚類算法來獲取9個先驗框,并將其運用至網絡Head部分3個不同尺度的特征圖,從而預測待檢目標的邊界框。YOLO v4中的先驗框是通過對PASCAL VOC數據集進行聚類得到的,不適用于火焰圖像檢測。式(4)為YOLO v4中K-means聚類算法距離的計算方法
d(box,central)=1-IOU(box,central)
(4)

采用IOU反映預測框與真實框的檢測效果時,如果兩個框沒有相交,則IOU=0, 無法正確反映預測框和真實框的實際距離。針對IOU的不足,Hamid Rezatofighi等[14]提出GIOU(generalized IoU),式(5)GIOU的表達式
(5)
式中:C為同時包含B和Bgt的最小框面積。GIOU不僅可以衡量預測框和真實框重疊度,還可正確衡量不重疊的情況,能更好反映預測框和真實框的重疊度。
因此,為了能更好衡量預測框和真實框的重疊度,本文采用GIOU取代IOU。 式(6)為改進后的K-means聚類算法距離計算方法
dGIOU(box,central)=1-GIOU(box,central)
(6)
以輸入圖像尺寸為416*416為例,采用改進后的K-means聚類算法進行距離計算之后,選取的9個先驗框分別為(34,57)、(91,85)、(62,187)、(161,160)、(142,381)、(289,245)、(300,572)、(557,350)、(679,688)。表1為修改先驗框前后,模型相關參數對比。

表1 YOLO v4修改先驗框前后相關指標對比
YOLO v4的損失函數由定位損失函數、目標置信度損失函數、分類損失函數3部分組成,式(2)為YOLO v4的損失函數。式(7)為YOLO v4的定位損失函數
(7)
(8)
(9)
(10)
式中:Lciou為CIOU(complete IoU)損失函數,β為權重函數,ρ為預測框與真實框中心點的歐氏距離,υ可度量預測框與真實框的長寬比相似性,wgt、hgt分別為真實框的寬度、高度,w、h分別為預測框的寬度、高度,如圖6所示。

圖6 預測框和真實框相關參數
CIOU考慮了預測框與真實框之間的歐氏距離、重疊率、尺度特征、預測框的寬高比。在對寬高比有一定規律的目標(比如人、汽車等)進行檢測時, 能獲取目標真實框的寬高比,從而可提高目標檢測的AP值。但火焰特征比較復雜,且源數據集火焰圖像的大小不固定,寬高比并沒有特定的規律。若采用CIOU使模型學習到部分類似大小真實框的寬高比,則可能使模型對其它寬高比的圖像造成誤判,反而會降低模型的魯棒性。因此,本文采用的分類損失函數采用DIOU(distance-IoU)。式(11)為DIOU表達式
(11)
式中:ρ為預測框與真實框中心點的歐氏距離,c為包含預測框和真實框最小矩形框的對角線距離,如圖6所示。DIOU包含了預測框和真實框中心點的歐氏距離、重疊度等特征,但沒有考慮真實框的寬高比。因此,針對火焰圖像寬高比沒有固定比例的特點,DIOU能更好反映預測框與真實框的關系,能有效增強模型的泛化能力。
注意力機制模仿了人類的視覺系統,融合局部視覺結構,獲取場景特征,并將注意力集中于特征較為顯著的區域[15]。本文引入的注意力模塊包括通道注意力(channel attention block,CAB)和空間注意力(spatial attention block,SAB)。
通道注意力可對不同通道特征的依賴關系進行建模,融合多通道的特征圖像,自適應調節其特征權重。在針對火焰圖像的目標檢測中,可對火焰的特征進行強化,其結構如圖7所示。SENet采用全局平均池化來對通道特征進行壓縮,可使模型側重于關注信息量大的通道特征,但僅采用全局平均池化較難獲取物體間更詳細的通道注意力[16]。全局最大池化可將梯度較大的位置進行反向傳播,進一步提高通道特征提取的敏感度。因此,本文同時采用全局最大池化和全局平均池化,將低階通道特征進行全局最大池化和全局平均池化融合,實現了對高階通道特征的引導與校準。

圖7 通道注意力模塊(CAB)
對YOLO v4算法添加空間注意力,可彌補通道注意力的不足。空間注意力對特征圖有效信息的區域比較敏感,可對特征圖內部像素點進行建模[17]。本文采用Bochkovskiy等[8]提出的改進型Modified SAM,其結構如圖8所示。
本文采用融合CAB和SAB的注意力機制,將其用于YOLO v4算法中進行火焰圖像的檢測,其結構如圖9所示。改進型的注意力機制將淺層卷積層的通道和空間特征進行提取,并將其與深層卷積層提取的特征進行融合,可在增加少量計算量的基礎上,增強模型的特征提取能力。

圖8 空間注意力模塊(SAB)

圖9 融合CAB和SAB的注意力機制
由于火焰圖像數據集中,火焰尺寸大小差距較大,引入注意力機制之后,可對火焰圖像特征進行多尺度提取,加強了模型對火焰圖像的檢測能力。
本實驗的環境配置見表2,對比實驗的硬件配置與該實驗的配置相同。

表2 實驗環境配置
本實驗火焰圖像分別來自kaggle火焰數據集(https://www.kaggle.com/phylake1337/fire-dataset)、火焰公開數據集(http://signal.ee.bilkent.edu.tr/VisiFire/)以及互聯網采集,一共967張火焰圖像。其中,70%(711張)為訓練集,30%(256張)為測試集。所有數據集均采用labelimg進行標注。
本實驗YOLO v4的參數以YOLO v4[9]為基礎,經過大量實驗選取最優參數,對部分參數進行了調整。實驗批量大小設置為32,動量為0.949,初始學習率設置為0.0013,前1000次采用固定學習率進行學習,第16 000代和第18 000代學習率分別為0.000 13、0.000 013,總迭代次數為20 000次。
3.2.1 改進的YOLO v4算法
首先將本文改進的YOLO v4算法與原YOLO v4算法進行比較,分別選取AP(average precison)、Loss、FPS、Recall、Average IOU作為評價指標。其中,AP為目標檢測的平均精度,可評估模型在每一類別的好壞。Loss為損失函數,式(2)為改進算法前的Loss值,式(12)為改進后的Loss值。FPS為每秒處理圖片的數量,可反映模型的檢測速度。Recall為目標檢測的召回率,可評估模型是否有漏檢,式(13)為Recall的計算公式。Average IOU可反映預測框和真實框的重疊程度

(12)
(13)
在與原YOLO v4算法進行比較時,輸入圖像尺寸統一設置為832*832,采用Darknet骨干網絡進行訓練,迭代次數為30 000次。為使模型盡快收斂,本實驗采用了遷移學習的方法,預訓練權重文件為yolov4.conv.137(https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v3_optimal/yolov4.conv.137)。實驗數據見表3。

表3 原YOLO算法與本文改進YOLO算法結果對比
從表3可以看到,未進行改進的YOLO v4網絡的精度較低,AP只有46.24%,Loss值較大。采用YOLO v4作者的權重文件進行遷移學習之后,Loss值下降的較低,但AP值、Average IOU與之前相比反而下降了,這可能是因為本文的目標檢測只有火焰這一個類別,權重文件的類別數量遠遠大于本文類別數,模型參數無法完全適配。與原算法相比,采用本文改進型YOLO算法之后,模型的AP值提高了36.56%,Loss值下降了1.2942,FPS也略有提升,提高了1.1,Recall值提高了0.36,Average IOU提高了0.2162。總體而言,與原算法相比,本文的改進算法是有效的。
3.2.2 與其它目標檢測算法的對比
本文改進算法與YOLO v3、SSD、Efficientdet、Retinanet進行比較,選取AP、Loss、FPS作為評價指標,對比實驗結果見表4。
與上一代YOLO v3算法對比,雖然都是采用Darknet骨干網絡,但由于YOLO v3采用的是FPN,且在訓練過程中只進行了上采樣未進行下采樣,導致其AP值較低,且在本數據集上出現了過擬合的情況。雖然其FPS較高,但無法滿足準確率的需求。SSD采用VGG16作為骨干網絡,訓練復雜度高于YOLO,AP值較YOLO v3有了一定的提升,但仍無法滿足準確率的要求。Efficientdet采用Ef-ficeentnet作為骨干網絡,并引入BiFPN,可實現模型的雙向跨尺度連接以及加權特征融合,AP值是對比實驗中最高的,但FPS較低,無法滿足火焰圖像檢測的實時性需求。Retinanet采用ResNet作為骨干網絡,整體模型由骨干網和子網組成,可提取豐富的火焰特征,其AP值優于未改進的YOLO v4算法。但其FPS是所有對比實驗中最低的。
總體而言,與其它目標檢測算法相比,本文改進算法的AP值和FPS都是最優的,滿足了火焰圖像識別對準確度、實時性的需求,但Loss值相對來說仍有改進空間。

表4 不同目標檢測算法實驗結果對比
3.2.3 消融實驗結果分析
為進一步驗證本文改進算法的科學性和有效性,本文采用消融實驗進行分析。為了提高訓練速度,輸入圖像尺寸統一調整為416*416。每組實驗僅改變一個變量,消融實驗結果見表5。
由表5可知,僅改變激活函數時,AP、Recall、Average IOU略有提升,Loss值有較大幅度的下降,模型整體性能比原YOLO v4算法略有提升。采用改進型K-means算法對模型的先驗框進行調整之后,使得模型的先驗框能更好適配本實驗的火焰圖像,模型的AP、FPS、Recall、Average IOU均有較大的提升。采用改進型損失函數之后,模型的AP、Recall、Average IOU有了進一步提升,但FPS與之前相比略有下降,這可能是改進算法增加了模型的運算復雜度,使得模型處理速度略有下降。整體而言,改進的YOLO v4算法在火焰圖像識別的準確度上有較大提升,且在一定程度上提高了目標檢測的實時性。因此,本文提出的改進型YOLO v4算法是有意義的。

表5 改進YOLO v4算法消融實驗結果分析
針對火焰圖像的復雜性、傳統目標檢測實時性較差的情況,本文提出了改進型YOLO v4算法。通過對激活函數、先驗框、損失函數進行改進,并引入了注意力機制。與原YOLO v4算法相比,模型AP值提高了36.56%,fps提高了1.1,模型整體性能有了較大的提升,滿足了火焰圖像檢測的準確度、實時性的需求。通過與其它目標檢測算法(YOLO v3、SSD、Efficientdet、Retinanet)作對比,本文改進算法的實驗數據是最優的,驗證了本文改進方法的有效性。最后采用消融實驗進行分析,模型整體性能隨著實驗的進行逐步提升,驗證了本文改進算法的科學性。
本文提出的改進型YOLO v4算法雖使模型的整體性能有了較大的提升,但由于火焰圖像的復雜性、火焰尺寸大小的不確定性,仍有較大的改進空間。此外,針對小目標的火焰圖像實時檢測,模型的表現并不好,常有漏檢情況。因此,下一步要針對不同尺寸火焰的目標檢測進行研究,進一步提升火焰圖像檢測的準確度和實用性。