張立亭,鄧先金,羅亦泳,孔文學(xué),夏文生
(東華理工大學(xué)測(cè)繪工程學(xué)院,330013,南昌)
目標(biāo)檢測(cè)是計(jì)算機(jī)視覺(jué)和遙感中的一項(xiàng)基本任務(wù),在圖像解譯中起著至關(guān)重要的作用[1]。目標(biāo)檢測(cè)的目的是找出遙感圖像中一個(gè)或多個(gè)人們感興趣的物體,同時(shí)檢測(cè)出它們的位置和大小。跟影像分類(lèi)不同,目標(biāo)檢測(cè)既要解決分類(lèi)問(wèn)題,還要解決特定目標(biāo)的定位問(wèn)題[2]。隨著遙感技術(shù)的快速發(fā)展,極大改善了傳統(tǒng)地面測(cè)量的覆蓋范圍小、數(shù)據(jù)采集不足等缺點(diǎn)。遙感影像目標(biāo)檢測(cè)也成為了遙感領(lǐng)域最重要的任務(wù)之一,對(duì)民用和軍事領(lǐng)域都具有重要意義。在民用領(lǐng)域,高精度目標(biāo)檢測(cè)可以幫助城市實(shí)現(xiàn)交通管理[3];在軍事領(lǐng)域,它被廣泛應(yīng)用于目標(biāo)定位[4]、導(dǎo)彈制導(dǎo)[5]等方面。目前,目標(biāo)檢測(cè)算法主要分為兩大類(lèi):一類(lèi)為基于候選區(qū)域的雙階段算法,主要代表算法有R-CNN[6]、Fast R-CNN[7]、Faster R-CNN[8]、Mask R-CNN[9]等。其流程是首先通過(guò)區(qū)域推薦網(wǎng)絡(luò)生成候選區(qū)域,然后利用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行分類(lèi)和邊框修正。另一類(lèi)為基于回歸方法的單階段算法,將目標(biāo)框的定位問(wèn)題轉(zhuǎn)化為回歸問(wèn)題處理,不用產(chǎn)生候選框,只需使用一個(gè)卷積神經(jīng)網(wǎng)絡(luò)對(duì)目標(biāo)的類(lèi)別和位置進(jìn)行預(yù)測(cè),其中主要代表算法有YOLOv1[10]、YOLOv2[11]、YOLOv3[12]、YOLOv4[13]、SSD[14]等。
由于遙感影像分辨率不同,一些小目標(biāo)在影像中的像素大小存在差異。人們一般把小于32×32像素的目標(biāo)定義為小目標(biāo)[15]。小目標(biāo)檢測(cè)精度給研究者們帶來(lái)諸多挑戰(zhàn)。目前,已有研究者把YOLO算法應(yīng)用到遙感影像目標(biāo)檢測(cè)中。為解決遙感影像小目標(biāo)檢測(cè)問(wèn)題,Xu D[16]等人提出了一種基于YOLOv3改進(jìn)的網(wǎng)絡(luò)——FE-YOLO,通過(guò)引入輕量級(jí)特征提取網(wǎng)絡(luò)和特征增強(qiáng)模塊DPFE、IRFE和Res2Net,來(lái)提高對(duì)影像小目標(biāo)檢測(cè)的精度。Xiao J[17]提出了一種小目標(biāo)檢測(cè)網(wǎng)絡(luò)——exYOLO,通過(guò)疊加原始網(wǎng)絡(luò)模型,對(duì)特征圖進(jìn)行2倍下采樣來(lái)增強(qiáng)淺層特征信息,提高小物體檢測(cè)的準(zhǔn)確性和精度。Ju M[18]等人使用空洞卷積模塊來(lái)擴(kuò)大淺層感受野,并使用特征融合和直通模塊來(lái)提高小目標(biāo)檢測(cè)能力,在小目標(biāo)檢測(cè)方面取得了良好效果。王建軍[19]等人通過(guò)改進(jìn)backbone、優(yōu)化Anchor boxes和引入RFB,增大網(wǎng)絡(luò)感受野和特征提取能力,提高小目標(biāo)檢測(cè)精度。余培東[20]等人通過(guò)增加YOLOv4網(wǎng)路特征尺度和嵌入SE模塊的改進(jìn),顯著提升了遙感影像的小目標(biāo)檢測(cè)精度。上述研究雖然取得了一定成功,但其精度仍有提升的空間
為有效提高遙感小目標(biāo)的檢測(cè)精度,本文以YOLOv3-SPP網(wǎng)絡(luò)為基礎(chǔ)構(gòu)建針對(duì)小目標(biāo)檢測(cè)的改進(jìn)型檢測(cè)模型,取得較好的效果。
YOLOv3作為目前目標(biāo)檢測(cè)領(lǐng)域應(yīng)用性最廣泛的算法之一,它是單階段檢測(cè)器中的典型代表。因其簡(jiǎn)單的結(jié)構(gòu)、較高的檢測(cè)精度和速度,在工業(yè)界具有普遍的適用性。YOLOv3網(wǎng)絡(luò)基于YOLOv1網(wǎng)絡(luò)增加了多標(biāo)簽分類(lèi),并使用多尺度預(yù)測(cè),提高了小目標(biāo)檢測(cè)性能。
YOLOv3-SPP共分為輸入端、backbone、頸部、預(yù)測(cè)4個(gè)部分,其結(jié)構(gòu)圖如圖1所示。輸入端主要是對(duì)圖像的預(yù)處理,包括數(shù)據(jù)增強(qiáng)、裁剪。backbone采用Darknet-53特征提取結(jié)構(gòu),它由不同數(shù)量的Resx組成,每個(gè)Resx由不同數(shù)量CBL塊組成,每個(gè)CBL單元由Conv層、BN層和LeakyRelu激活函數(shù)組成[21]。頸部采用FPN[22]結(jié)構(gòu),通過(guò)上采樣和融合的方法將淺層特征和深層特征融合。預(yù)測(cè)部分通過(guò)1×1卷積分別輸出3個(gè)分支特征圖進(jìn)行目標(biāo)檢測(cè)。YOLOv3-SPP算法在YOLOv3第5、第6層卷積之間添加一個(gè)SPP模塊,通過(guò)最大池化操作豐富特征圖表達(dá)能力,使模型精度提升1%~2%。在U版[23]的YOLOv3-SPP網(wǎng)絡(luò)中采用GIOU[24]作為網(wǎng)絡(luò)的損失函數(shù)。
圖1 YOLOv3-SPP模型框架
YOLOv3-SPP算法在MSCOCO、PASCAL VOC等公共數(shù)據(jù)集上檢測(cè)精度表現(xiàn)良好,但在實(shí)例對(duì)象分布密集且小目標(biāo)較多的遙感影像數(shù)據(jù)集上效果不理想[19]。為此本文對(duì)YOLOv3-SPP模型做出相應(yīng)改進(jìn),以滿(mǎn)足小目標(biāo)檢測(cè)精度的需求。通過(guò)重新聚類(lèi)計(jì)算Anchor值,用于數(shù)據(jù)集的訓(xùn)練和測(cè)試;使用空洞卷積模塊,增大特征圖感受野,提升小目標(biāo)特征信息的提取能力;引入注意力機(jī)制simAM模塊,提升小目標(biāo)檢測(cè)精度。
YOLOv3網(wǎng)絡(luò)中,共9種不同尺寸的先驗(yàn)框,按照大小分為3組,分別檢測(cè)小、中、大3種目標(biāo)。根據(jù)本文數(shù)據(jù)集特點(diǎn),之前的先驗(yàn)框尺寸不再適用于本文,需要獲得新的先驗(yàn)框尺寸。使用K-Means和Genetic Algorithm遺傳算法,在K-Meanss聚類(lèi)的結(jié)果上進(jìn)行變異計(jì)算得到Anchor值。其中把K-Meanss聚類(lèi)時(shí)使用的歐式距離,改成基于距離的方法,這樣能聚類(lèi)得到更合適的Anchor值。
空洞卷積[25],也稱(chēng)為膨脹卷積,就是在卷積核元素之間加入一些空格(零)來(lái)擴(kuò)大卷積核的過(guò)程。通過(guò)在稀疏采樣位置進(jìn)行卷積,擴(kuò)大了具有原始權(quán)值的卷積核大小,在不增加參數(shù)代價(jià)的情況下增加感受野大小??斩淳矸e相對(duì)標(biāo)準(zhǔn)卷積引入擴(kuò)張率新參數(shù),通過(guò)控制擴(kuò)張率大小控制感受野大小。由圖2可以看出,圖2(a)是由1次擴(kuò)張的卷積產(chǎn)生,其感受野為3×3。圖2(b)由圖2(a)通過(guò)2次擴(kuò)張的卷積產(chǎn)生,其感受野為5×5。圖2(c)由圖2(b)通過(guò)3次擴(kuò)張卷積,其感受野為7×7。隨著卷積量的擴(kuò)大,網(wǎng)絡(luò)感受野明顯擴(kuò)大。
圖2 空洞卷積
不同位置使用空洞卷積增大感受野,其效果也不同,為此設(shè)計(jì)了不同結(jié)構(gòu)方案。方案1:由于淺層信息豐富,但是信息容易丟失,為增大淺層感受野,在網(wǎng)絡(luò)第1個(gè)卷積層(CBL)和第1個(gè)殘差模塊(Res1)使用空洞卷積模塊。方案2:在SPP前一個(gè)CBL模塊使用空洞卷積。方案3:分別在輸出層y1、y2、y3前一個(gè)CBL模塊使用空洞卷積。
受人腦注意機(jī)制啟發(fā),Yang L[26]提出了一種具有三維權(quán)重的simAM模塊,并設(shè)計(jì)了一種能量函數(shù)來(lái)計(jì)算權(quán)重,以評(píng)估每個(gè)神經(jīng)元的重要性。在神經(jīng)科學(xué)中,信息豐富的神經(jīng)元通常表現(xiàn)出與周?chē)窠?jīng)元不同的放電模式,激活神經(jīng)元通常會(huì)抑制周?chē)窠?jīng)元,即空域抑制。換句話(huà)說(shuō),具有空域抑制效應(yīng)的神經(jīng)元應(yīng)當(dāng)賦予更高的重要性,找到這些神經(jīng)元最簡(jiǎn)單的方法是測(cè)量一個(gè)目標(biāo)神經(jīng)元和其他神經(jīng)元之間的線(xiàn)性區(qū)分度。
本文將simAM模塊融合到Y(jié)OLOv3-SPP算法中,在不額外增加網(wǎng)絡(luò)參數(shù)情況下推斷特征圖映射的三維權(quán)重,豐富特征圖信息,提升小目標(biāo)檢測(cè)精度同時(shí)給結(jié)構(gòu)優(yōu)化帶來(lái)便利。simAM模塊位于模型的不同位置,其精度也不同。為確定最佳的融合位置,為此設(shè)計(jì)了3種融合實(shí)驗(yàn)方案。方案1:simAM模塊插入SPP模塊之后。方案2:simAM模塊插入上采樣(upsample)之后。方案3:simAM模塊分別插入特征層輸出層y1、y2、y3前。
本文實(shí)驗(yàn)在Windows10操作系統(tǒng)下進(jìn)行,模型搭建是基于PyTorch 深度學(xué)習(xí)框架,版本為pytorch 1.17.0,python版本為3.6.0。CPU為R7-5800H,內(nèi)存16 G,實(shí)驗(yàn)所用GPU為NVIDIA 3060,顯存6 G,算法的訓(xùn)練和測(cè)試均在GPU加速中進(jìn)行。本文實(shí)驗(yàn)使用武漢大學(xué)于2015年發(fā)布的RSOD數(shù)據(jù)集[27]。數(shù)據(jù)集包含從谷歌Earth和天地圖下載的976張圖像,圖像的空間分辨率在0.3~3 m 之間,數(shù)據(jù)影像主要有飛機(jī) (aircraft)、油桶(oiltank)、立交橋(overpass)和操場(chǎng)(playground)4類(lèi)目標(biāo)。
3.2.1 網(wǎng)絡(luò)訓(xùn)練 將實(shí)驗(yàn)數(shù)據(jù)按照7:2:1比例劃分為訓(xùn)練集、驗(yàn)證集、測(cè)試集。經(jīng)實(shí)驗(yàn)驗(yàn)證,在此數(shù)據(jù)集上使用遷移學(xué)習(xí)進(jìn)行訓(xùn)練效果較差,因此使用U版[24]YOLOv3權(quán)重作為網(wǎng)絡(luò)訓(xùn)練初始化參數(shù)。改進(jìn)前后算法的超參數(shù)一致,其部分超參數(shù)設(shè)置如表1所示。
表1 模型超參數(shù)設(shè)置情況
3.2.2 評(píng)價(jià)指標(biāo) 實(shí)驗(yàn)使用平均精度均值(mean average precision,mAP)和F1分?jǐn)?shù)作為模型效果評(píng)價(jià)指標(biāo)。平均精度綜合考慮目標(biāo)檢測(cè)的精確率和召回率,是目標(biāo)檢測(cè)中最常用的目標(biāo)檢測(cè)評(píng)價(jià)指標(biāo)。其對(duì)應(yīng)表表達(dá)式如下:
(1)
(2)
(3)
(4)
其中:TP表示被正確檢測(cè)出的目標(biāo)個(gè)數(shù),F(xiàn)P表示被錯(cuò)誤檢測(cè)出的目標(biāo)個(gè)數(shù),F(xiàn)N表示被漏檢的目標(biāo)個(gè)數(shù)。精度率P是指網(wǎng)絡(luò)預(yù)測(cè)的正確個(gè)數(shù)在所有預(yù)測(cè)中所占的比例。召回率R是指網(wǎng)絡(luò)預(yù)測(cè)的真實(shí)個(gè)數(shù)在所有真實(shí)個(gè)數(shù)中的比例。平均精度均值mAP衡量的是訓(xùn)練出的模型在所有類(lèi)別上的好壞,F(xiàn)1分?jǐn)?shù)是一種通過(guò)將精度率和召回率相結(jié)合來(lái)判斷不同網(wǎng)絡(luò)性能的綜合指標(biāo)。
實(shí)驗(yàn)使用U版[24]YOLOv3-SPP,根據(jù)前文優(yōu)化Anchor值、引入空洞卷積、融合simAM模塊3種改進(jìn)方案分別進(jìn)行實(shí)驗(yàn)。
實(shí)驗(yàn)1:優(yōu)化Anchor值。RSOD數(shù)據(jù)集小目標(biāo)居多,用K-Means聚類(lèi)方法不能得到最優(yōu)Anchor值。因此,將K-Means聚類(lèi)和Genetic Algorithm遺傳算法結(jié)合得到Anchor值,并在ROSD數(shù)據(jù)集上進(jìn)行訓(xùn)練和測(cè)試。表2是不同聚類(lèi)方法在ROSD數(shù)據(jù)集上所得到的不同的Anchor值。表3為實(shí)驗(yàn)訓(xùn)練結(jié)果。
表2 不同聚類(lèi)算法RSOD數(shù)據(jù)集的錨定框的大小
由表3可以看出,使用遺傳算法變異得到的Anchor值,進(jìn)行模型訓(xùn)練,與不使用遺傳算法結(jié)果相比,mAP提升了0.5%,F(xiàn)1分?jǐn)?shù)提升了0.6%。實(shí)驗(yàn)結(jié)果表明本文使用遺傳算法變異得到的Anchor值,有利于提高模型目標(biāo)檢測(cè)精度。
表3 不同anchor值的模型精度比較
實(shí)驗(yàn)2:引入空洞卷積模塊。為更好利用上下文信息,引入空洞卷積模塊,來(lái)增加網(wǎng)絡(luò)特征層感受野,提升模型精度。根據(jù)插入空洞卷積設(shè)計(jì)的3種方案分別在遙感數(shù)據(jù)集上進(jìn)行訓(xùn)練和測(cè)試,實(shí)驗(yàn)結(jié)果如表4所示。
表4 不同位置使用空洞卷積的精度比較
由表4可以看出,方案1使用空洞卷積模塊,模型精度指標(biāo)mAP和F1分?jǐn)?shù)分別達(dá)到 86.7%和88.4%,比原算法YOLOv3-SPP分別提高了1%、4.9%。方案2使用空洞卷積,mAP只提升了0.1%。方案3,mAP提高了0.8%。實(shí)驗(yàn)結(jié)果得出方案1檢測(cè)效果最理想。方案1使用空洞卷積訓(xùn)練得到的各類(lèi)別精度與原算法精度對(duì)比,實(shí)驗(yàn)結(jié)果如圖3所示,小目標(biāo)飛機(jī)(aircraft)類(lèi)提升了1.1%,油桶(oiltank)類(lèi)提升了2.1%。實(shí)驗(yàn)表明在原模型上使用空洞卷積是有效的,可以提高整個(gè)模型的精度。
圖3 使用空洞卷積的模型在數(shù)據(jù)上各類(lèi)精度比較
實(shí)驗(yàn)3:融合注意力機(jī)制simAM。融合無(wú)參數(shù)注意力機(jī)制simAM,能豐富特征圖信息,提升模型小目標(biāo)檢測(cè)精度。對(duì)3種方案分別進(jìn)行訓(xùn)練和測(cè)試,實(shí)驗(yàn)結(jié)果如表5所示。與原算法相比,方案1,mAP只提升了0.4%;方案2,mAP提高了1.1%。方案3,mAP提高了2.7%,F(xiàn)1分?jǐn)?shù)提高了4.4%。實(shí)驗(yàn)結(jié)果表明,融合simAM能夠豐富特征圖的信息,提高目標(biāo)檢測(cè)的精度。其中simAM分別插入在特征層輸出層y1、y2、y3前效果最好。
表5 不同位置插入simAM的精度比較
方案3融合simAM的算法與原算法各類(lèi)別精度比較結(jié)果見(jiàn)圖4。其中,小目標(biāo)飛機(jī)(aircraft)類(lèi)提升了5.1%,油桶(oiltank)類(lèi)提升了5.7%。實(shí)驗(yàn)結(jié)果表明,按方案3融合simAM能有效提升原模型對(duì)小目標(biāo)的檢測(cè)精度。
圖4 插入simAM的模型在數(shù)據(jù)集上各類(lèi)精度比
上述3組實(shí)驗(yàn)對(duì)原有檢測(cè)模型YOLOv3-SPP算法的改進(jìn)都在一定程度上提升了模型對(duì)小目標(biāo)檢測(cè)的精度,因此,本文綜合以上3種改進(jìn)方法提出一種改進(jìn)型YOLOv3-SPP算法以實(shí)現(xiàn)對(duì)小目標(biāo)的高精度檢測(cè)。改進(jìn)后模型算法精度指標(biāo)mAP達(dá)到90.10%,F(xiàn)1分?jǐn)?shù)達(dá)到91.50%,改進(jìn)后結(jié)構(gòu)圖如5所示。
圖5 改進(jìn)后的YOLOv3-SPP模型框架
為了評(píng)價(jià)改進(jìn)算法優(yōu)勢(shì),對(duì)模型進(jìn)行定性評(píng)價(jià)和定量評(píng)價(jià)。
定性評(píng)價(jià):實(shí)驗(yàn)主要測(cè)試小目標(biāo)物體遙感影像圖,原YOLOv3-SPP模型與改進(jìn)后的模型的部分檢測(cè)結(jié)果分別如圖6所示(其中左邊圖片代表原模型檢測(cè)結(jié)果,右邊圖片代表改進(jìn)算法模型檢測(cè)效果)。由圖6可以看出,一些原YOLOv3-SPP算法未檢測(cè)到的小目標(biāo),改進(jìn)算法能檢測(cè)出來(lái),表明本文改進(jìn)算法能更好檢測(cè)遙感影像小目標(biāo)。
圖6 YOLOv3-SPP模型與改進(jìn)模型檢測(cè)效果對(duì)比
定量評(píng)價(jià):如圖7所示,展示了改進(jìn)算法和原YOLOv3-SPP算法的準(zhǔn)確率曲線(xiàn)、召回率曲線(xiàn)、mAP曲線(xiàn)和損失函數(shù)曲線(xiàn)的變化情況。由圖7(a)、(b)所示,為訓(xùn)練273周期的精確率、召回率曲線(xiàn)圖,根據(jù)圖7可以看出,改進(jìn)算法精確率遠(yuǎn)高于原算法精確率,2種算法的召回率幾乎相同。分析圖7(c)可以看出,為mAP曲線(xiàn)對(duì)比圖,由訓(xùn)練結(jié)果可知,YOLOv3-SPP的mAP在86%,而本文改進(jìn)算法mAP達(dá)到90%。由圖7(d)所示,原YOLOv3-SPP模型和改進(jìn)后模型的損失函數(shù)曲線(xiàn)對(duì)比圖。其中橫坐標(biāo)表示訓(xùn)練周期數(shù),縱坐標(biāo)表示損失函數(shù)值。原算法的損失函數(shù)初始值較大,約為8.53,而改進(jìn)的算法的損失函數(shù)初始值較小,在7.4左右。隨著訓(xùn)練周期數(shù)的增加,大概在150個(gè)epoch之后,慢慢趨于平穩(wěn),改進(jìn)算法最終穩(wěn)定在0.737,而原算法的值為0.933,整體損失函數(shù)值下降了0.196。對(duì)比可以看出,相對(duì)于原算法,改進(jìn)算法效果更好,顯著提高了收斂速度并降低了損失函數(shù)值。相比原YOLOv3-SPP算法,本文改進(jìn)算法在檢測(cè)精度方面取得了一定提升,特別對(duì)小目標(biāo)檢測(cè)精度的提升。
圖7 YOLOv3-SPP模型與改進(jìn)模型收斂圖
由表6所示,是Faster R-CNN、SSD、YOLOv3、YOLOv3-SPP和改進(jìn)算法幾種算法精度比較。由表6可以看出,再增加少量訓(xùn)練時(shí)間的代價(jià)下,改進(jìn)算法的mAP比YOLOv3高5.6%,比YOLOv3-SPP高4.3%,F(xiàn)1比比YOLOv3高8.3%,比YOLOv3-SPP高7%;跟兩階段算法比較,比Faster R-CNN高0.24%,比SSD高10.03%。雖然改進(jìn)算法與Faster R-CNN相比mAP接近,但是訓(xùn)練時(shí)間卻多了1倍。因此,本文改進(jìn)的算法在對(duì)RSOD數(shù)據(jù)集小目標(biāo)檢測(cè)方面具有較大優(yōu)勢(shì)。
表6 不同算法檢測(cè)精度對(duì)比
通過(guò)以上實(shí)驗(yàn)結(jié)果可以得出,在遙感影像小目標(biāo)檢測(cè)中,本文對(duì)YOLOv3-SPP模型的改進(jìn),顯著提升了遙感影像RSOD數(shù)據(jù)集小目標(biāo)檢測(cè)精度。主要結(jié)論如下。
1)K-Means聚類(lèi)和遺傳變異算法優(yōu)化Anchor值,模型mAP提升了0.5%,F(xiàn)1分?jǐn)?shù)提升了0.6%。在網(wǎng)絡(luò)結(jié)構(gòu)提取中使用空洞卷積,模型mAP和F1分?jǐn)?shù)分別達(dá)到 86.7%和88.4%,比YOLOv3-SPP原算法分別提高了1%、4.9%。在輸出層前插入simAM模塊,模型mAP提高了2.7%,F(xiàn)1分?jǐn)?shù)提高了4.4%。
2)融合多種改進(jìn)方法后的算法mAP和F1分?jǐn)?shù)分別達(dá)到了90.10%和91.50%。與YOLOv3-SPP相比,mAP和F1分?jǐn)?shù)分別提升了4.3%和7%,而且主要通過(guò)提升小目標(biāo)精度來(lái)提升整體模型精度。