高武陽,張麟華
(1. 太原師范學院計算機科學與技術(shù)學院,晉中 030619; 2. 太原工業(yè)學院計算機工程系,太原 030008)
在戶外場景下,目標檢測是一項至關(guān)重要的技術(shù)[1],其準確性和魯棒性對于實際應用至關(guān)重要[2]。然而,在大霧天氣場景下,由于光線減弱和物體邊緣模糊等問題,導致算法性能下降,影響檢測的準確性,從而帶來挑戰(zhàn)[3]。因此,對霧天場景下的目標檢測進行研究具有重要意義。
隨著深度學習技術(shù)的不斷發(fā)展,深度學習逐漸成為目標檢測領(lǐng)域的研究熱點。與傳統(tǒng)方法相比,深度學習模型可以直接從原始數(shù)據(jù)中進行學習,并通過在大規(guī)模數(shù)據(jù)集上進行訓練而達到泛化的能力[4]?;谏疃葘W習目標檢測算法可分為兩階段檢測算法和一階段檢測算法。兩階段檢測器首先生成一組候選框,然后對每個候選框進行分類和位置回歸。Faster R-CNN[5]是該類別中最具代表性的算法,它采用RPN[5]生成候選框,并利用ROI Pooling[6]對每個候選框進行分類和位置回歸。在解決霧天條件下的目標檢測問題時,Chen 等[7]提出了一種域自適應方法,該方法在源域和目標域之間對齊特征并適應域,從而提高了目標域中的檢測性能。然而,這種方法需要更多的計算資源并且產(chǎn)生更高的成本,使得它們不太適合具有嚴格定時要求的實時應用。
一階段檢測算法直接對輸入圖像進行分類和位置回歸,而不需要生成候選框。相比兩階段檢測算法在速度方面具有顯著優(yōu)勢,特別適合于實時應用。這類算法中最具代表性的是YOLO 系列[8-10]和SSD[11]。YOLO 將圖像劃分為網(wǎng)格,并預測每個網(wǎng)格單元的邊界框和類概率,而SSD 在不同的特征層上預測不同大小的邊界框與兩級檢測器。Fan 等[12]將YOLOv5與暗通道增強相結(jié)合,提出了減少草莓果實錯摘和漏摘的解決方案。Baidya 等[13]在無人機檢測場景下,為YOLOv5 增加了一個檢測頭,并加入了Conv-Mixers[14]。他們在VisDrone2021 數(shù)據(jù)集上訓練和測試了提出的算法,取得了與最先進方法相當?shù)慕Y(jié)果。
然而,在復雜的天氣和光照條件下,提高目標檢測的準確性仍然是一個挑戰(zhàn)。為了解決這一具有挑戰(zhàn)性的問題,Huang 等[15]采用了兩個子網(wǎng)來共同學習可見性增強和目標檢測,通過共享特征提取層來減少圖像退化的影響。Li等[16]基于YOLOv3 設(shè)計了一種完全可微的圖像處理模塊,用于霧天和低光場景下的目標檢測。雖然這種圖像自適應方法提高了檢測精度,但也引入了一些噪聲。
在關(guān)于霧天目標檢測的研究中,雖然檢測精度有所提高,但這些方法大多主要集中在去霧和圖像增強上。本研究旨在使目標檢測算法在不對原始圖像進行任何預處理的情況下,在霧天場景中實現(xiàn)目標的準確檢測。
YOLOv7-tiny 算法是在YOLOv7 的基礎(chǔ)上進行精簡和改進后的算法。它改進了YOLOv7算法的高效遠程聚合網(wǎng)絡(ELAN),同時保留了基于級聯(lián)的模型縮放策略,從而使得YOLOv7-tiny 算法在保證一定檢測精度的基礎(chǔ)上減少了運算的參數(shù),提高了檢測速度。YOLOv7-tiny 算法由輸入、特征提取網(wǎng)絡、特征融合網(wǎng)絡和輸出四個部分組成,如圖1所示。
圖1 YOLOv7-tiny網(wǎng)絡結(jié)構(gòu)
輸入層用于接收傳入的圖片。在輸入層,圖片需要調(diào)整為3 通道640*640 大小的圖片進而進入到下一個網(wǎng)絡結(jié)構(gòu)。特征提取網(wǎng)絡包括CBL卷積塊、改進的高效遠程聚合網(wǎng)絡(ELAN-T)層和MPConv 卷積層,它可以將一些原始的輸入數(shù)據(jù)維度減少或者將原始的特征進行重新組合以便于后續(xù)的使用。特征融合的主要作用是將來自多個不同源的特征或特征提取器合并為一個更好的特征表示,以提高模型的性能。YOLOv7-tiny 的特征融合網(wǎng)絡采用了YOLOv5 系列的路徑聚合特征金字塔網(wǎng)絡(PAFPN)架構(gòu),它可以通過特征信息融合實現(xiàn)多尺度學習。模型的輸出使用了IDetect 檢測頭,類似于YOLOR 模型,同時引入了隱式表示策略,以基于融合的特征值來細化預測結(jié)果。
本文對YOLOv7-tiny算法做了如下改進,首先是添加注意力機制SimAM[17],添加在YOLOv7-tiny網(wǎng)絡的特征融合部分的CONCAT 模塊后面。然后將YOLOv7-tiny 算法的損失函數(shù)CIoU 替換為wIoU[18]。改進后網(wǎng)絡結(jié)構(gòu)圖如圖2所示。
圖2 改進后網(wǎng)絡結(jié)構(gòu)
在具有挑戰(zhàn)性的天氣條件下,如大霧環(huán)境,傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(CNN)在目標檢測任務中面臨一系列限制和挑戰(zhàn)。首先,霧的存在會導致圖像模糊、對比度降低,以及色彩失真,使得傳統(tǒng)的卷積運算難以有效提取清晰的物體邊緣和精細的細節(jié)。其次霧天場景中的光照變化和遮擋給傳統(tǒng)CNN 準確定位和檢測物體帶來了挑戰(zhàn)。Yang 等[17]提出了一種3D 注意力模塊SimAM,不同于現(xiàn)有的通道/空域注意力模塊,該模塊無需額外參數(shù),可以為特征圖推導出3D注意力權(quán)值。該模塊的大部分操作均基于所定義的能量函數(shù)選擇,避免了過多的結(jié)構(gòu)調(diào)整,從而能夠提取出模糊圖像的重要特征。注意力機制SimAM的添加位置和數(shù)量如圖2所示。
圖3中(a)代表通道注意力機制,(b)代表空間注意力,(c)為三維權(quán)重注意力,即SimAM 注意力。在每個子圖中,相同的顏色表示每個通道,空間位置或特征上的每個點使用單個標量。大多數(shù)現(xiàn)有的注意力模塊會從特征X生成一維或二維權(quán)重,從而為通道注意力和空間注意力拓展生成的權(quán)重,而三維注意力模塊SimAM 會直接估算三維權(quán)重。通道注意力為一維注意力,它對不同通道區(qū)別對待,對所有位置同等對待??臻g注意力為二維注意力,它對不同位置區(qū)別對待,對所有通道同等對待。這些會限制它們學習更多辨別線索的能力,因此三維權(quán)重注意力SimAM優(yōu)于傳統(tǒng)的一維和二維權(quán)重注意力。
圖3 不同注意力機制對比圖
SimAM 注意力不需要額外的訓練參數(shù),并使用能量函數(shù)E來計算目標像素點和周圍像素點之間的關(guān)系。公式(1)是能量函數(shù),其中t是目標神經(jīng)元,λ是一個常數(shù),而μ和σ2是在該通道內(nèi)去除的目標神經(jīng)元的均值和方差。在公式(2)中,使用sigmoid 函數(shù)將能量函數(shù)轉(zhuǎn)換為像素權(quán)重,并采取一系列值限制。
IoU-Loss 作為一種損失函數(shù),用于度量預測邊界框與實際注釋之間的相似度,更側(cè)重于預測結(jié)果與真實情況之間的重疊程度。它是衡量邊界框之間相似性的最廣泛使用的度量。YOLOv7-tiny 中的損失函數(shù)采用CIoU,CIoU 使用了復雜的函數(shù)計算,它在大量的計算過程中消耗了大量的算力,增加了訓練時間。wIoU 提出了一種動態(tài)非單調(diào)聚焦機制,用“out-lieress”代替IoU 來評價錨框的質(zhì)量,并采用梯度增益分配策略,既降低了高質(zhì)量錨框的競爭力,又減少了低質(zhì)量錨框產(chǎn)生的有害梯度,使wIoU 能夠?qū)W⒂诘唾|(zhì)量錨框,提高探測器的整體性能。因此,我們將YOLOv7-tiny 算法的CIoU 損失函數(shù)替換為wIoU。
wIoU 有三個版本,其中wIoUvl 構(gòu)建了一個基于注意力的邊界盒損失,wIoUv2 和wIoUv3 是在wIoUv1 的基礎(chǔ)上在焦點機制中加入梯度增益得到的。wIoUv1 的損失函數(shù)計算公式如公式(3)~(5)所示。
wIoUv2 的損失函數(shù)計算公式如公式(6)所示。
式(6)中:表示單調(diào)注意系數(shù),為均值,在公式中進行歸一化,使梯度增益保持在較高水平。
wIoUv3 的損失函數(shù)計算公式如公式(7)和(8)所示。
式(7)和(8)中:β為非單調(diào)聚焦系數(shù),α和δ為超參數(shù)。當β=δ,r= 1,且錨框的離群度滿足β=C(C為固定值)時,錨框?qū)@得量高的梯度增益。β和r的值由超參數(shù)α和δ控制。
3.1.1 實驗環(huán)境
實驗在配備了4個NVIDIA 3090Ti 的服務器上進行,CPU為Intel Xeon(R)silver 4210R。實驗環(huán)境由ubuntu18.04.4LTS、Python 3.8、PyTorch 1.8.0、CUDA 11.1組成。在訓練階段,使用隨機梯度下降優(yōu)化器進行訓練。初始學習率為0.01,動量因子設(shè)置為0.937,權(quán)重衰減設(shè)置為0.1,訓練輪次設(shè)置為300,圖像的分辨率設(shè)置為(640*640)。
3.1.2 數(shù)據(jù)集
本次實驗選擇的是ug2 數(shù)據(jù)集,ug2 數(shù)據(jù)集是一個有霧場景下的目標檢測數(shù)據(jù)集。該數(shù)據(jù)集包括真實世界有霧場景下的圖片和部分人工合成的有霧圖片。該數(shù)據(jù)集共包括4320 張圖片和對應的標簽。該數(shù)據(jù)集共包含五個類別的標簽,分別是行人、小汽車、大巴、自行車和摩托車。由于原始數(shù)據(jù)集是VOC 格式的,并不適合本算法的直接使用,因此本數(shù)據(jù)集在使用前,首先進行了格式轉(zhuǎn)換和預處理操作,為了保證算法的通用性和魯棒性,我們將數(shù)據(jù)集按照7∶1∶2 的比例劃分訓練集、驗證集和測試集。為了增加樣本的多樣性,提高網(wǎng)絡的性能,使用默認的圖像數(shù)據(jù)增強如縮放、圖像翻轉(zhuǎn)、馬賽克和混合等進行訓練。
本文實驗的評價指標包括平均精度mAP0.5、mAP0.5∶0.95、參數(shù)Params 和浮點數(shù)Flops。平均精確度mAP 用于度量目標檢測模型預測框類別和位置是否準確。在多類別目標檢測中,通常對目標類別分別計算AP 值后再求平均值,得到的平均精確率mAP用來評價檢測模型性能的優(yōu)劣。mAP0.5表示IoU 為0.5 時所有類別的平均AP,mAP0.5∶0.95表示不同IoU 值(從0.5 到0.95,步長為0.05)下的平均mAP。mAP 的計算公式如公式(9)~(13)所示。Params 是網(wǎng)絡模型的加權(quán)參數(shù)量。Flops 是模型在操作中使用的浮點運算數(shù),用來反映模型的復雜度。
其中:TP為將正類預測為正類的數(shù)量;FP為將負類預測為正類的數(shù)量;FN為將正類預測為負類的數(shù)量;P為準確率,R為召回率,AP為平均準確率,APi為單一類別的識別平均準確率,N為總類別數(shù)。
本次實驗的基礎(chǔ)模型是YOLOv7-tiny,改進后的算法在訓練過程中的收斂情況如圖4所示。
圖4 模型訓練過程
從圖4可以看出,改進后的網(wǎng)絡模型大約在50 個epoch 后各種類型的損失下降到一個較低的水平,并且隨著訓練的進行,損失值繼續(xù)緩慢下降。網(wǎng)絡模型在100 個epoch 后基本達到收斂,其訓練集和驗證集的類別損失、定位損失和obj損失均正常收斂。在200 個epoch 之后mAP0.5和mAP0.5∶0.95也趨于穩(wěn)定并最終達到收斂水平。收斂后mAP0.5為0.782,mAP0.5∶0.95為0.515。
3.3.1 消融實驗
為了驗證本文所使用的方法在遙感目標檢測中的實際效果,在ug2 數(shù)據(jù)集上對改進的模塊進行一系列的消融實驗,結(jié)果見表1。
表1 消融實驗結(jié)果
從表1 可以看出,YOLOv7-tiny 算法的mAP0.5為0.765,而mAP0.5∶0.95為0.480。當給YOLOv7-tiny 算法增加了SimAM 注意力機制后,其mAP0.5為0.774,mAP0.5∶0.95為0.496,相比YOLOv7-tiny 算法mAP0.5提高了0.9 個百分點,mAP0.5∶0.95提高了1.6個百分點。YOLOv7-tiny 算法增加了SimAM 注意力機制和wIoU 損失函數(shù)之后,其mAP0.5為0.782, mAP0.5∶0.95為0.515,相比只增加了SimAM 注意力機制的算法,mAP0.5提高了0.8 個百分點,mAP0.5∶0.95提高了1.9 個百分點。與YOLOv7-tiny 算法相比,本文算法mAP0.5提高了1.7 個百分點,mAP0.5∶0.95提高了3.5 個百分點,同時Params 和GFLOPs 略有增加。這說明了本文改進算法的有效性。
3.3.2 訓練曲線對比
本文在保證實驗條件一致的前提下,分別對YOLOv7-tiny 算法和逐步改進后的算法進行訓練,訓練曲線如圖5 所示,我們從兩個指標對YOLOv7-tiny 和改進后算法進行對比,分別是mAP0.5和mAP0.5∶0.95??梢钥闯觯S著epoch 的增加,mAP0.5和mAP0.5∶0.95均穩(wěn)步上升。改進后的算法一開始就表現(xiàn)出了優(yōu)于YOLOv7-tiny 的特性,隨著訓練的進行,曲線逐漸收斂,并在100 個epoch 左右接近收斂狀態(tài)。逐步添加改進點的算法在收斂后表現(xiàn)出了梯度性,這表明注意力機制SimAM 和損失函數(shù)wIoU 改進點都能帶來檢測效果的提升,并能夠相互兼容。
圖5 改進方法對比圖
3.3.3 檢測結(jié)果對比
為了更為直觀地驗證算法的有效性,我們對霧天戶外目標檢測結(jié)果進行了對比展示,分別使用YOLOv7-tiny 算法和本文改進的算法對遙感圖像進行可視化實驗展示,檢測結(jié)果如圖6 所示。其中(a)為YOLOv7-tiny 算法的檢測結(jié)果,(b)為改進后算法的檢測結(jié)果??梢钥闯?,YOLOv7-tiny 算法在檢測有重疊和遮擋目標時出現(xiàn)了漏檢的情況,改進后的算法克服了部分遮擋和漏檢的問題。同時在YOLOv7-tiny 算法和改進后算法均檢測到的目標中,改進后算法檢測的目標置信度也高于YOLOv7-tiny 算法,這證明本文算法是有效的。
圖6 檢測效果對比圖
在大霧天氣場景下,由于光線減弱、物體邊緣模糊、目標重疊遮擋等問題,導致算法性能下降,從而影響檢測性能。本文在YOLOv7-tiny 算法的基礎(chǔ)上對算法進行改進,通過增加注意力機制和改進損失函數(shù)的方法來提高算法的檢測性能。具體來說就是首先在網(wǎng)絡的CONCAT 結(jié)構(gòu)后面添加SimAM 注意力機制,從而優(yōu)化特征融合,然后替換原來的CIoU 損失函數(shù)為wIoU,從而在整體上提高錨框的檢測性能和定位準確度。結(jié)合了這兩種改進方法的算法在保持一定計算復雜度的基礎(chǔ)上提高了檢測性能,適合應用于霧天場景下的戶外目標檢測任務。