高武陽(yáng),張麟華
(1. 太原師范學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,晉中 030619; 2. 太原工業(yè)學(xué)院計(jì)算機(jī)工程系,太原 030008)
在戶(hù)外場(chǎng)景下,目標(biāo)檢測(cè)是一項(xiàng)至關(guān)重要的技術(shù)[1],其準(zhǔn)確性和魯棒性對(duì)于實(shí)際應(yīng)用至關(guān)重要[2]。然而,在大霧天氣場(chǎng)景下,由于光線減弱和物體邊緣模糊等問(wèn)題,導(dǎo)致算法性能下降,影響檢測(cè)的準(zhǔn)確性,從而帶來(lái)挑戰(zhàn)[3]。因此,對(duì)霧天場(chǎng)景下的目標(biāo)檢測(cè)進(jìn)行研究具有重要意義。
隨著深度學(xué)習(xí)技術(shù)的不斷發(fā)展,深度學(xué)習(xí)逐漸成為目標(biāo)檢測(cè)領(lǐng)域的研究熱點(diǎn)。與傳統(tǒng)方法相比,深度學(xué)習(xí)模型可以直接從原始數(shù)據(jù)中進(jìn)行學(xué)習(xí),并通過(guò)在大規(guī)模數(shù)據(jù)集上進(jìn)行訓(xùn)練而達(dá)到泛化的能力[4]。基于深度學(xué)習(xí)目標(biāo)檢測(cè)算法可分為兩階段檢測(cè)算法和一階段檢測(cè)算法。兩階段檢測(cè)器首先生成一組候選框,然后對(duì)每個(gè)候選框進(jìn)行分類(lèi)和位置回歸。Faster R-CNN[5]是該類(lèi)別中最具代表性的算法,它采用RPN[5]生成候選框,并利用ROI Pooling[6]對(duì)每個(gè)候選框進(jìn)行分類(lèi)和位置回歸。在解決霧天條件下的目標(biāo)檢測(cè)問(wèn)題時(shí),Chen 等[7]提出了一種域自適應(yīng)方法,該方法在源域和目標(biāo)域之間對(duì)齊特征并適應(yīng)域,從而提高了目標(biāo)域中的檢測(cè)性能。然而,這種方法需要更多的計(jì)算資源并且產(chǎn)生更高的成本,使得它們不太適合具有嚴(yán)格定時(shí)要求的實(shí)時(shí)應(yīng)用。
一階段檢測(cè)算法直接對(duì)輸入圖像進(jìn)行分類(lèi)和位置回歸,而不需要生成候選框。相比兩階段檢測(cè)算法在速度方面具有顯著優(yōu)勢(shì),特別適合于實(shí)時(shí)應(yīng)用。這類(lèi)算法中最具代表性的是YOLO 系列[8-10]和SSD[11]。YOLO 將圖像劃分為網(wǎng)格,并預(yù)測(cè)每個(gè)網(wǎng)格單元的邊界框和類(lèi)概率,而SSD 在不同的特征層上預(yù)測(cè)不同大小的邊界框與兩級(jí)檢測(cè)器。Fan 等[12]將YOLOv5與暗通道增強(qiáng)相結(jié)合,提出了減少草莓果實(shí)錯(cuò)摘和漏摘的解決方案。Baidya 等[13]在無(wú)人機(jī)檢測(cè)場(chǎng)景下,為YOLOv5 增加了一個(gè)檢測(cè)頭,并加入了Conv-Mixers[14]。他們?cè)赩isDrone2021 數(shù)據(jù)集上訓(xùn)練和測(cè)試了提出的算法,取得了與最先進(jìn)方法相當(dāng)?shù)慕Y(jié)果。
然而,在復(fù)雜的天氣和光照條件下,提高目標(biāo)檢測(cè)的準(zhǔn)確性仍然是一個(gè)挑戰(zhàn)。為了解決這一具有挑戰(zhàn)性的問(wèn)題,Huang 等[15]采用了兩個(gè)子網(wǎng)來(lái)共同學(xué)習(xí)可見(jiàn)性增強(qiáng)和目標(biāo)檢測(cè),通過(guò)共享特征提取層來(lái)減少圖像退化的影響。Li等[16]基于YOLOv3 設(shè)計(jì)了一種完全可微的圖像處理模塊,用于霧天和低光場(chǎng)景下的目標(biāo)檢測(cè)。雖然這種圖像自適應(yīng)方法提高了檢測(cè)精度,但也引入了一些噪聲。
在關(guān)于霧天目標(biāo)檢測(cè)的研究中,雖然檢測(cè)精度有所提高,但這些方法大多主要集中在去霧和圖像增強(qiáng)上。本研究旨在使目標(biāo)檢測(cè)算法在不對(duì)原始圖像進(jìn)行任何預(yù)處理的情況下,在霧天場(chǎng)景中實(shí)現(xiàn)目標(biāo)的準(zhǔn)確檢測(cè)。
YOLOv7-tiny 算法是在YOLOv7 的基礎(chǔ)上進(jìn)行精簡(jiǎn)和改進(jìn)后的算法。它改進(jìn)了YOLOv7算法的高效遠(yuǎn)程聚合網(wǎng)絡(luò)(ELAN),同時(shí)保留了基于級(jí)聯(lián)的模型縮放策略,從而使得YOLOv7-tiny 算法在保證一定檢測(cè)精度的基礎(chǔ)上減少了運(yùn)算的參數(shù),提高了檢測(cè)速度。YOLOv7-tiny 算法由輸入、特征提取網(wǎng)絡(luò)、特征融合網(wǎng)絡(luò)和輸出四個(gè)部分組成,如圖1所示。

圖1 YOLOv7-tiny網(wǎng)絡(luò)結(jié)構(gòu)
輸入層用于接收傳入的圖片。在輸入層,圖片需要調(diào)整為3 通道640*640 大小的圖片進(jìn)而進(jìn)入到下一個(gè)網(wǎng)絡(luò)結(jié)構(gòu)。特征提取網(wǎng)絡(luò)包括CBL卷積塊、改進(jìn)的高效遠(yuǎn)程聚合網(wǎng)絡(luò)(ELAN-T)層和MPConv 卷積層,它可以將一些原始的輸入數(shù)據(jù)維度減少或者將原始的特征進(jìn)行重新組合以便于后續(xù)的使用。特征融合的主要作用是將來(lái)自多個(gè)不同源的特征或特征提取器合并為一個(gè)更好的特征表示,以提高模型的性能。YOLOv7-tiny 的特征融合網(wǎng)絡(luò)采用了YOLOv5 系列的路徑聚合特征金字塔網(wǎng)絡(luò)(PAFPN)架構(gòu),它可以通過(guò)特征信息融合實(shí)現(xiàn)多尺度學(xué)習(xí)。模型的輸出使用了IDetect 檢測(cè)頭,類(lèi)似于YOLOR 模型,同時(shí)引入了隱式表示策略,以基于融合的特征值來(lái)細(xì)化預(yù)測(cè)結(jié)果。
本文對(duì)YOLOv7-tiny算法做了如下改進(jìn),首先是添加注意力機(jī)制SimAM[17],添加在YOLOv7-tiny網(wǎng)絡(luò)的特征融合部分的CONCAT 模塊后面。然后將YOLOv7-tiny 算法的損失函數(shù)CIoU 替換為wIoU[18]。改進(jìn)后網(wǎng)絡(luò)結(jié)構(gòu)圖如圖2所示。

圖2 改進(jìn)后網(wǎng)絡(luò)結(jié)構(gòu)
在具有挑戰(zhàn)性的天氣條件下,如大霧環(huán)境,傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)(CNN)在目標(biāo)檢測(cè)任務(wù)中面臨一系列限制和挑戰(zhàn)。首先,霧的存在會(huì)導(dǎo)致圖像模糊、對(duì)比度降低,以及色彩失真,使得傳統(tǒng)的卷積運(yùn)算難以有效提取清晰的物體邊緣和精細(xì)的細(xì)節(jié)。其次霧天場(chǎng)景中的光照變化和遮擋給傳統(tǒng)CNN 準(zhǔn)確定位和檢測(cè)物體帶來(lái)了挑戰(zhàn)。Yang 等[17]提出了一種3D 注意力模塊SimAM,不同于現(xiàn)有的通道/空域注意力模塊,該模塊無(wú)需額外參數(shù),可以為特征圖推導(dǎo)出3D注意力權(quán)值。該模塊的大部分操作均基于所定義的能量函數(shù)選擇,避免了過(guò)多的結(jié)構(gòu)調(diào)整,從而能夠提取出模糊圖像的重要特征。注意力機(jī)制SimAM的添加位置和數(shù)量如圖2所示。
圖3中(a)代表通道注意力機(jī)制,(b)代表空間注意力,(c)為三維權(quán)重注意力,即SimAM 注意力。在每個(gè)子圖中,相同的顏色表示每個(gè)通道,空間位置或特征上的每個(gè)點(diǎn)使用單個(gè)標(biāo)量。大多數(shù)現(xiàn)有的注意力模塊會(huì)從特征X生成一維或二維權(quán)重,從而為通道注意力和空間注意力拓展生成的權(quán)重,而三維注意力模塊SimAM 會(huì)直接估算三維權(quán)重。通道注意力為一維注意力,它對(duì)不同通道區(qū)別對(duì)待,對(duì)所有位置同等對(duì)待??臻g注意力為二維注意力,它對(duì)不同位置區(qū)別對(duì)待,對(duì)所有通道同等對(duì)待。這些會(huì)限制它們學(xué)習(xí)更多辨別線索的能力,因此三維權(quán)重注意力SimAM優(yōu)于傳統(tǒng)的一維和二維權(quán)重注意力。

圖3 不同注意力機(jī)制對(duì)比圖
SimAM 注意力不需要額外的訓(xùn)練參數(shù),并使用能量函數(shù)E來(lái)計(jì)算目標(biāo)像素點(diǎn)和周?chē)袼攸c(diǎn)之間的關(guān)系。公式(1)是能量函數(shù),其中t是目標(biāo)神經(jīng)元,λ是一個(gè)常數(shù),而μ和σ2是在該通道內(nèi)去除的目標(biāo)神經(jīng)元的均值和方差。在公式(2)中,使用sigmoid 函數(shù)將能量函數(shù)轉(zhuǎn)換為像素權(quán)重,并采取一系列值限制。
IoU-Loss 作為一種損失函數(shù),用于度量預(yù)測(cè)邊界框與實(shí)際注釋之間的相似度,更側(cè)重于預(yù)測(cè)結(jié)果與真實(shí)情況之間的重疊程度。它是衡量邊界框之間相似性的最廣泛使用的度量。YOLOv7-tiny 中的損失函數(shù)采用CIoU,CIoU 使用了復(fù)雜的函數(shù)計(jì)算,它在大量的計(jì)算過(guò)程中消耗了大量的算力,增加了訓(xùn)練時(shí)間。wIoU 提出了一種動(dòng)態(tài)非單調(diào)聚焦機(jī)制,用“out-lieress”代替IoU 來(lái)評(píng)價(jià)錨框的質(zhì)量,并采用梯度增益分配策略,既降低了高質(zhì)量錨框的競(jìng)爭(zhēng)力,又減少了低質(zhì)量錨框產(chǎn)生的有害梯度,使wIoU 能夠?qū)W⒂诘唾|(zhì)量錨框,提高探測(cè)器的整體性能。因此,我們將YOLOv7-tiny 算法的CIoU 損失函數(shù)替換為wIoU。
wIoU 有三個(gè)版本,其中wIoUvl 構(gòu)建了一個(gè)基于注意力的邊界盒損失,wIoUv2 和wIoUv3 是在wIoUv1 的基礎(chǔ)上在焦點(diǎn)機(jī)制中加入梯度增益得到的。wIoUv1 的損失函數(shù)計(jì)算公式如公式(3)~(5)所示。
wIoUv2 的損失函數(shù)計(jì)算公式如公式(6)所示。
式(6)中:表示單調(diào)注意系數(shù),為均值,在公式中進(jìn)行歸一化,使梯度增益保持在較高水平。
wIoUv3 的損失函數(shù)計(jì)算公式如公式(7)和(8)所示。
式(7)和(8)中:β為非單調(diào)聚焦系數(shù),α和δ為超參數(shù)。當(dāng)β=δ,r= 1,且錨框的離群度滿(mǎn)足β=C(C為固定值)時(shí),錨框?qū)@得量高的梯度增益。β和r的值由超參數(shù)α和δ控制。
3.1.1 實(shí)驗(yàn)環(huán)境
實(shí)驗(yàn)在配備了4個(gè)NVIDIA 3090Ti 的服務(wù)器上進(jìn)行,CPU為Intel Xeon(R)silver 4210R。實(shí)驗(yàn)環(huán)境由ubuntu18.04.4LTS、Python 3.8、PyTorch 1.8.0、CUDA 11.1組成。在訓(xùn)練階段,使用隨機(jī)梯度下降優(yōu)化器進(jìn)行訓(xùn)練。初始學(xué)習(xí)率為0.01,動(dòng)量因子設(shè)置為0.937,權(quán)重衰減設(shè)置為0.1,訓(xùn)練輪次設(shè)置為300,圖像的分辨率設(shè)置為(640*640)。
3.1.2 數(shù)據(jù)集
本次實(shí)驗(yàn)選擇的是ug2 數(shù)據(jù)集,ug2 數(shù)據(jù)集是一個(gè)有霧場(chǎng)景下的目標(biāo)檢測(cè)數(shù)據(jù)集。該數(shù)據(jù)集包括真實(shí)世界有霧場(chǎng)景下的圖片和部分人工合成的有霧圖片。該數(shù)據(jù)集共包括4320 張圖片和對(duì)應(yīng)的標(biāo)簽。該數(shù)據(jù)集共包含五個(gè)類(lèi)別的標(biāo)簽,分別是行人、小汽車(chē)、大巴、自行車(chē)和摩托車(chē)。由于原始數(shù)據(jù)集是VOC 格式的,并不適合本算法的直接使用,因此本數(shù)據(jù)集在使用前,首先進(jìn)行了格式轉(zhuǎn)換和預(yù)處理操作,為了保證算法的通用性和魯棒性,我們將數(shù)據(jù)集按照7∶1∶2 的比例劃分訓(xùn)練集、驗(yàn)證集和測(cè)試集。為了增加樣本的多樣性,提高網(wǎng)絡(luò)的性能,使用默認(rèn)的圖像數(shù)據(jù)增強(qiáng)如縮放、圖像翻轉(zhuǎn)、馬賽克和混合等進(jìn)行訓(xùn)練。
本文實(shí)驗(yàn)的評(píng)價(jià)指標(biāo)包括平均精度mAP0.5、mAP0.5∶0.95、參數(shù)Params 和浮點(diǎn)數(shù)Flops。平均精確度mAP 用于度量目標(biāo)檢測(cè)模型預(yù)測(cè)框類(lèi)別和位置是否準(zhǔn)確。在多類(lèi)別目標(biāo)檢測(cè)中,通常對(duì)目標(biāo)類(lèi)別分別計(jì)算AP 值后再求平均值,得到的平均精確率mAP用來(lái)評(píng)價(jià)檢測(cè)模型性能的優(yōu)劣。mAP0.5表示IoU 為0.5 時(shí)所有類(lèi)別的平均AP,mAP0.5∶0.95表示不同IoU 值(從0.5 到0.95,步長(zhǎng)為0.05)下的平均mAP。mAP 的計(jì)算公式如公式(9)~(13)所示。Params 是網(wǎng)絡(luò)模型的加權(quán)參數(shù)量。Flops 是模型在操作中使用的浮點(diǎn)運(yùn)算數(shù),用來(lái)反映模型的復(fù)雜度。
其中:TP為將正類(lèi)預(yù)測(cè)為正類(lèi)的數(shù)量;FP為將負(fù)類(lèi)預(yù)測(cè)為正類(lèi)的數(shù)量;FN為將正類(lèi)預(yù)測(cè)為負(fù)類(lèi)的數(shù)量;P為準(zhǔn)確率,R為召回率,AP為平均準(zhǔn)確率,APi為單一類(lèi)別的識(shí)別平均準(zhǔn)確率,N為總類(lèi)別數(shù)。
本次實(shí)驗(yàn)的基礎(chǔ)模型是YOLOv7-tiny,改進(jìn)后的算法在訓(xùn)練過(guò)程中的收斂情況如圖4所示。

圖4 模型訓(xùn)練過(guò)程
從圖4可以看出,改進(jìn)后的網(wǎng)絡(luò)模型大約在50 個(gè)epoch 后各種類(lèi)型的損失下降到一個(gè)較低的水平,并且隨著訓(xùn)練的進(jìn)行,損失值繼續(xù)緩慢下降。網(wǎng)絡(luò)模型在100 個(gè)epoch 后基本達(dá)到收斂,其訓(xùn)練集和驗(yàn)證集的類(lèi)別損失、定位損失和obj損失均正常收斂。在200 個(gè)epoch 之后mAP0.5和mAP0.5∶0.95也趨于穩(wěn)定并最終達(dá)到收斂水平。收斂后mAP0.5為0.782,mAP0.5∶0.95為0.515。
3.3.1 消融實(shí)驗(yàn)
為了驗(yàn)證本文所使用的方法在遙感目標(biāo)檢測(cè)中的實(shí)際效果,在ug2 數(shù)據(jù)集上對(duì)改進(jìn)的模塊進(jìn)行一系列的消融實(shí)驗(yàn),結(jié)果見(jiàn)表1。

表1 消融實(shí)驗(yàn)結(jié)果
從表1 可以看出,YOLOv7-tiny 算法的mAP0.5為0.765,而mAP0.5∶0.95為0.480。當(dāng)給YOLOv7-tiny 算法增加了SimAM 注意力機(jī)制后,其mAP0.5為0.774,mAP0.5∶0.95為0.496,相比YOLOv7-tiny 算法mAP0.5提高了0.9 個(gè)百分點(diǎn),mAP0.5∶0.95提高了1.6個(gè)百分點(diǎn)。YOLOv7-tiny 算法增加了SimAM 注意力機(jī)制和wIoU 損失函數(shù)之后,其mAP0.5為0.782, mAP0.5∶0.95為0.515,相比只增加了SimAM 注意力機(jī)制的算法,mAP0.5提高了0.8 個(gè)百分點(diǎn),mAP0.5∶0.95提高了1.9 個(gè)百分點(diǎn)。與YOLOv7-tiny 算法相比,本文算法mAP0.5提高了1.7 個(gè)百分點(diǎn),mAP0.5∶0.95提高了3.5 個(gè)百分點(diǎn),同時(shí)Params 和GFLOPs 略有增加。這說(shuō)明了本文改進(jìn)算法的有效性。
3.3.2 訓(xùn)練曲線對(duì)比
本文在保證實(shí)驗(yàn)條件一致的前提下,分別對(duì)YOLOv7-tiny 算法和逐步改進(jìn)后的算法進(jìn)行訓(xùn)練,訓(xùn)練曲線如圖5 所示,我們從兩個(gè)指標(biāo)對(duì)YOLOv7-tiny 和改進(jìn)后算法進(jìn)行對(duì)比,分別是mAP0.5和mAP0.5∶0.95。可以看出,隨著epoch 的增加,mAP0.5和mAP0.5∶0.95均穩(wěn)步上升。改進(jìn)后的算法一開(kāi)始就表現(xiàn)出了優(yōu)于YOLOv7-tiny 的特性,隨著訓(xùn)練的進(jìn)行,曲線逐漸收斂,并在100 個(gè)epoch 左右接近收斂狀態(tài)。逐步添加改進(jìn)點(diǎn)的算法在收斂后表現(xiàn)出了梯度性,這表明注意力機(jī)制SimAM 和損失函數(shù)wIoU 改進(jìn)點(diǎn)都能帶來(lái)檢測(cè)效果的提升,并能夠相互兼容。

圖5 改進(jìn)方法對(duì)比圖
3.3.3 檢測(cè)結(jié)果對(duì)比
為了更為直觀地驗(yàn)證算法的有效性,我們對(duì)霧天戶(hù)外目標(biāo)檢測(cè)結(jié)果進(jìn)行了對(duì)比展示,分別使用YOLOv7-tiny 算法和本文改進(jìn)的算法對(duì)遙感圖像進(jìn)行可視化實(shí)驗(yàn)展示,檢測(cè)結(jié)果如圖6 所示。其中(a)為YOLOv7-tiny 算法的檢測(cè)結(jié)果,(b)為改進(jìn)后算法的檢測(cè)結(jié)果。可以看出,YOLOv7-tiny 算法在檢測(cè)有重疊和遮擋目標(biāo)時(shí)出現(xiàn)了漏檢的情況,改進(jìn)后的算法克服了部分遮擋和漏檢的問(wèn)題。同時(shí)在YOLOv7-tiny 算法和改進(jìn)后算法均檢測(cè)到的目標(biāo)中,改進(jìn)后算法檢測(cè)的目標(biāo)置信度也高于YOLOv7-tiny 算法,這證明本文算法是有效的。

圖6 檢測(cè)效果對(duì)比圖
在大霧天氣場(chǎng)景下,由于光線減弱、物體邊緣模糊、目標(biāo)重疊遮擋等問(wèn)題,導(dǎo)致算法性能下降,從而影響檢測(cè)性能。本文在YOLOv7-tiny 算法的基礎(chǔ)上對(duì)算法進(jìn)行改進(jìn),通過(guò)增加注意力機(jī)制和改進(jìn)損失函數(shù)的方法來(lái)提高算法的檢測(cè)性能。具體來(lái)說(shuō)就是首先在網(wǎng)絡(luò)的CONCAT 結(jié)構(gòu)后面添加SimAM 注意力機(jī)制,從而優(yōu)化特征融合,然后替換原來(lái)的CIoU 損失函數(shù)為wIoU,從而在整體上提高錨框的檢測(cè)性能和定位準(zhǔn)確度。結(jié)合了這兩種改進(jìn)方法的算法在保持一定計(jì)算復(fù)雜度的基礎(chǔ)上提高了檢測(cè)性能,適合應(yīng)用于霧天場(chǎng)景下的戶(hù)外目標(biāo)檢測(cè)任務(wù)。