李文濤,彭 力
物聯(lián)網(wǎng)技術(shù)應(yīng)用教育部工程研究中心(江南大學(xué) 物聯(lián)網(wǎng)工程學(xué)院),江蘇 無錫 214122
小目標(biāo)檢測在日常生活中扮演著極為重要的角色[1-3],如無人機(jī)航拍領(lǐng)域、遙感圖像、無人駕駛汽車對周邊較遠(yuǎn)較小目標(biāo)的檢測以及工業(yè)領(lǐng)域?qū)Ξa(chǎn)品微小瑕疵的檢測等。當(dāng)前計算機(jī)領(lǐng)域?qū)π∧繕?biāo)物體還沒有一個嚴(yán)格的定義與區(qū)分,每個數(shù)據(jù)集對小目標(biāo)的像素劃分也不盡相同。本文按照主流的小目標(biāo)定義[4-5],規(guī)定圖像中尺寸小于32×32 像素的物體為小目標(biāo)。當(dāng)前,目標(biāo)檢測領(lǐng)域?qū)Υ笾心繕?biāo)的檢測效果已經(jīng)達(dá)到了很高的水平[6-7],但是小目標(biāo)因為其分辨率低,圖像模糊,攜帶的信息少,所以導(dǎo)致特征表達(dá)能力弱,其檢測已經(jīng)成為目標(biāo)檢測中的一大難題。
目標(biāo)檢測領(lǐng)域發(fā)展了幾十年,傳統(tǒng)的基于手工設(shè)計特征的目標(biāo)檢測算法如Haar(joint Haar-like features)[8]、HOG(histograms of oriented gradients)[9]等由于其準(zhǔn)確性低、魯棒性差而逐漸被淘汰。隨之而來的是近些年蓬勃發(fā)展的基于深度學(xué)習(xí)的各種神經(jīng)網(wǎng)絡(luò)算法,這些算法在縮短檢測時間的同時大大提高了檢測精度。基于卷積神經(jīng)網(wǎng)絡(luò)的檢測算法大概可以分為兩類,one-stage(單步)算法和two-stage(雙步)算法。two-stage 檢測算法將檢測任務(wù)分成了兩步,第一步生成候選區(qū)域,第二步對選出的候選區(qū)域進(jìn)行分類預(yù)測,采用這種方式雖然犧牲了速度,但檢測的精度較高。比較有代表性的是Girshick等人提出的R-CNN(region-based convolutional networks)[10]和Fast R-CNN(fast region-based convolutional networks)[11],以及Ren 等人提出的Faster R-CNN(faster region-based convolutional networks)[12]檢測算法,均取得了很好的檢測效果。
One-stage 類檢測算法直接對不同區(qū)域的候選框尺度和長寬比進(jìn)行預(yù)設(shè),然后分類與回歸,速度快,精度低。2016 年,Liu 等人提出利用不同尺度特征進(jìn)行特征提取融合的SSD(single shot multibox detector)[13]算法,首次實(shí)現(xiàn)了精度與速度的相對平衡。其利用多尺度特征進(jìn)行小目標(biāo)檢測,但是由于使用的低層特征圖的感受野不夠小,導(dǎo)致SSD 算法對小目標(biāo)檢測效果較差。很多學(xué)者研究了基于SSD 模型的小目標(biāo)檢測算法并進(jìn)一步做出了改進(jìn)。Fu等人提出了DSSD(deconvolutional single shot multibox detector)[14]模型,利用殘差網(wǎng)絡(luò),同時增加了反卷積模塊來融合上下文信息,但是由于計算量大無法實(shí)現(xiàn)實(shí)時性的目標(biāo)檢測。Jeong 等人提出了RSSD(rainbow single shot multibox detector)[15]模型,通過反復(fù)堆疊池化和反卷積的操作來融合不同特征圖,檢測性能與DSSD 持平。Li 等人提出了FSSD(feature fusion single shot multibox detector)[16]算法,通過建立一個輕量級的特征融合模塊提高了與淺層特征的交互能力,速度和精度都得到了提高,但是精度提高有限。
針對上述小目標(biāo)檢測中遇到的問題,本文提出了一種基于SSD 的多尺度通道注意力融合網(wǎng)絡(luò)的小目標(biāo)檢測算法。首先,針對小目標(biāo)存在的特征不足情況設(shè)計出了一種基于K鄰域的局部通道注意力模塊,實(shí)現(xiàn)特征通道間的信息交互,通過對每個通道的特征進(jìn)行權(quán)重分配來學(xué)習(xí)不同通道間特征的相關(guān)性和重要性。其次,為了能有效地把信息融合起來,構(gòu)造了Bottleneck 模塊,通過在卷積神經(jīng)網(wǎng)絡(luò)中加入該模塊來實(shí)現(xiàn)更好的特征融合,利用網(wǎng)絡(luò)低層和高層的特征進(jìn)行多尺度檢測,提高了小目標(biāo)檢測的精度。同時將基礎(chǔ)網(wǎng)絡(luò)由原來的VGG16 替換為特征表達(dá)能力強(qiáng)和速度快的ResNet[17],在獲取更多網(wǎng)絡(luò)特征的同時保證了網(wǎng)絡(luò)的收斂性。損失函數(shù)采用在標(biāo)準(zhǔn)交叉熵?fù)p失函數(shù)基礎(chǔ)上修改得到的Focal Loss[18],通過減少易分類樣本的權(quán)重,使得模型在訓(xùn)練時更關(guān)注于難分類的樣本。實(shí)驗結(jié)果表明,該算法在提升整體檢測精度的同時保證了速度,并且對小目標(biāo)的檢測能力有了較大的提高。
目標(biāo)檢測算法中通常會選取在分類任務(wù)中表現(xiàn)較好的網(wǎng)絡(luò)模型作為其基礎(chǔ)網(wǎng)絡(luò),基礎(chǔ)網(wǎng)絡(luò)完成大部分特征提取的任務(wù),對目標(biāo)檢測的性能有非常大的影響。卷積神經(jīng)網(wǎng)絡(luò)能夠提取低、中、高層的特征[19],網(wǎng)絡(luò)的層數(shù)越多,意味著能夠提取到的特征越豐富,目標(biāo)檢測需要提取更多的特征信息使得對目標(biāo)的分類更加精準(zhǔn)。但是簡單的直接增加網(wǎng)絡(luò)層數(shù)會存在信息丟失、損耗問題,導(dǎo)致梯度爆炸。ResNet 殘差網(wǎng)絡(luò)的殘差單元解決了由網(wǎng)絡(luò)深度增加導(dǎo)致的退化問題,使網(wǎng)絡(luò)深度得到大幅增加,擁有更多的特征信息,提高了網(wǎng)絡(luò)對小目標(biāo)的識別和分類能力,因此本文將其作為基礎(chǔ)網(wǎng)絡(luò)。
卷積神經(jīng)網(wǎng)絡(luò)在進(jìn)行前向傳播階段,依次調(diào)用每個網(wǎng)絡(luò)層的前向傳播函數(shù),得到逐層的輸出,最后一層與目標(biāo)函數(shù)比較得到損失函數(shù),計算誤差更新值,通過反向傳播逐層到達(dá)第一層,所有權(quán)值在反向傳播結(jié)束時一起更新。一個好的損失函數(shù)可以讓預(yù)測值一直逼近真實(shí)值的效果,當(dāng)預(yù)測值和真實(shí)值相等時,損失最小。本文采用He 提出的焦點(diǎn)損失函數(shù)Focal Loss,真實(shí)目標(biāo)預(yù)測概率公式定義如下:
這里以二分類為例,y表示label,y的取值為1和-1,p表示預(yù)測樣本屬于1 的概率,1-p表示預(yù)測樣本屬于-1 的概率。損失函數(shù)如下:
目標(biāo)檢測中存在著難易樣本不平衡問題,易分類樣本對模型來說是一個簡單樣本,模型很難從這個樣本中得到有用的信息,難分類樣本對模型來說是一個困難的樣本,它產(chǎn)生的梯度信息會更豐富,指導(dǎo)模型優(yōu)化的方向。然而易分樣本數(shù)量在總體樣本中占有絕對優(yōu)勢,即使單個樣本損失函數(shù)較小,累計的損失函數(shù)會主導(dǎo)損失函數(shù),但這部分引導(dǎo)的參數(shù)更新不會改善模型的判斷能力。難分類樣本占總體樣本的比例較小,訓(xùn)練貢獻(xiàn)低,導(dǎo)致訓(xùn)練效率變低,甚至模型不能收斂。本文使用的Focal Loss 損失函數(shù)很好地解決了這個問題,在式(2)中,當(dāng)pt趨向于1的時候,此時分類正確而且是易分類樣本,調(diào)制系數(shù)(1-pt)γ趨于0,也就是對于總的損失貢獻(xiàn)很小。當(dāng)pt<0.5 時,此時為困難樣本,即難分類樣本,(1-pt)γ趨于1,對于總的損失貢獻(xiàn)大,這樣的話困難樣本的權(quán)重就相對提升了很多,增加了那些誤分類的重要性。其中,可以通過設(shè)定αt的值來控制正負(fù)樣本對于總的損失的共享權(quán)重,αt取比較小的值來降低負(fù)樣本的權(quán)重。本文損失函數(shù)參數(shù)取γ=2,αt=0.25。
通過這個損失函數(shù)可以解決目標(biāo)檢測中的難易樣本不平衡問題,減少了易分類樣本的權(quán)重,使得模型在訓(xùn)練時更關(guān)注于難分類的樣本。在消融實(shí)驗中,F(xiàn)ocal Loss 損失函數(shù)對比SSD 原始損失函數(shù)將mAP 提高了0.24 個百分點(diǎn),取得了更高的精確度。
在進(jìn)行特征圖融合時,采用的是Concat(串聯(lián))操作,但是Concat 操作只是在通道維度上將特征連接,不能反映出不同通道間特征的相關(guān)性和重要性。為了能使網(wǎng)絡(luò)自動學(xué)習(xí)特征圖通道之間的相關(guān)性和重要性,本文采用了一種不降維的K鄰域通道注意力模塊(K-neighbor channel attention module,KNCA)?,F(xiàn)有的注意力模塊為實(shí)現(xiàn)更好的性能,加入了大量的參數(shù)計算,增加了模型的復(fù)雜性[20-21]。KNCA 模塊則沒有采取降維和全部通道進(jìn)行關(guān)聯(lián)的做法,在大大降低了復(fù)雜度的同時提高了模型的檢測性能。
如圖1 所示,KNCA 模塊首先對輸入特征塊的每個通道分別進(jìn)行不降低維數(shù)的全局平均池化GAP 操作,輸出維度為1×1×C的特征圖,此輸出特征圖反映了全局的感受野。然后通過卷積核為K的Conv1d(一維卷積)操作來捕獲每個通道及其K個通道鄰域之間的局部交互信息。利用Sigmoid 激活函數(shù)輸出維度為1×1×C的權(quán)值。接著對輸入的特征圖與激活函數(shù)得到的權(quán)值進(jìn)行乘積運(yùn)算,從而對各通道特征進(jìn)行權(quán)值重新分配。KNCA 模塊可以使網(wǎng)絡(luò)自動地學(xué)習(xí)特征通道之間的相關(guān)性和重要性。在獲取通道信息時,捕獲所有通道之間的依賴是低效而不必要的,這在后面的對照實(shí)驗中有所體現(xiàn)。需要注意的是,本文的KNCA 模塊可以通過大小為K的一維卷積來有效實(shí)現(xiàn),其中卷積核大小為K,代表了局部跨通道交互的覆蓋率,即該通道及附近共K個通道參與了這個通道的注意力預(yù)測。圖2 直觀展示出了加入KNCA 模塊前后卷積神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)到的特征,該模塊促進(jìn)了各通道間信息交流,使得特征塊各個通道不再是一個個獨(dú)立的個體,信息關(guān)聯(lián)加強(qiáng)了目標(biāo)整體特征對最終模型檢測結(jié)果的貢獻(xiàn),對目標(biāo)檢測提升效果顯著。
Fig.1 K-neighbor channel attention module structure圖1 K 鄰域通道注意力模塊結(jié)構(gòu)圖
Fig.2 Heat maps before and after adding K-neighbor channel attention module圖2 K 鄰域通道注意力模塊添加前后熱力圖
KNCA 模塊的通道權(quán)重公式可以表示如下:
其中,g(x)代表通道級的全局平均池化GAP 操作,式(4)中W和H分別代表特征塊的寬和高,其余的W均表示為一個C×C的參數(shù)矩陣,f{W}為K個通道鄰域的交互函數(shù),σ代表Sigmoid 函數(shù)。
現(xiàn)令y=g(x),則ω=σ(Wy),對于每一個通道權(quán)重:
此時,該算法可以由一個卷積核為K的一維卷積實(shí)現(xiàn),公式進(jìn)一步簡化為:
式中,Conv1dK代表卷積核為K的一維卷積。卷積核K計算公式如下:
其中,Nin=Nout,S=1,故K=2P+1 為奇數(shù),卷積核的大小K對KNCA 模塊有一定的影響,分別取K值為3、5、7 進(jìn)行對比,選取最優(yōu)的鄰域K值,在消融實(shí)驗中,K=3 時模型取得了最好的效果。
在一個多層卷積神經(jīng)網(wǎng)絡(luò)中,低層的特征往往能很好地表示圖像的紋理、邊緣等細(xì)節(jié)信息,而越往高層走,隨著神經(jīng)元感受野的擴(kuò)大,高層的特征往往能很好地表示圖像的語義信息,相應(yīng)的就會忽視一些細(xì)節(jié)信息[22]。為了進(jìn)一步驗證這個結(jié)論,把ResNet卷積神經(jīng)網(wǎng)絡(luò)不同深度的特征層提取出來,進(jìn)行了特征圖可視化。從圖3 的可視化特征圖中可以看出,低層網(wǎng)絡(luò)提取的是小目標(biāo)檢測更關(guān)注的紋理、細(xì)節(jié)特征等細(xì)節(jié)信息,高層網(wǎng)絡(luò)提取的是輪廓、形狀特征等語義信息。小目標(biāo)的檢測需要更多的細(xì)節(jié)信息,因此本文在對特征圖進(jìn)行融合時既考慮了包含細(xì)節(jié)信息的低層特征圖,又結(jié)合了包含語義信息的高層特征圖。選取ResNet 的Conv3_4、Conv4_23 和Conv5_3層特征圖,首先通過雙線性插值法對特征圖尺寸進(jìn)行統(tǒng)一,然后利用Concat 操作將各深度的特征融合。但是Concat 操作只是在通道維度上將特征連接,不能反映出不同通道間特征的相關(guān)性和重要性。在特征圖尺度縮減的同時為了使網(wǎng)絡(luò)自動學(xué)習(xí)特征圖通道之間的相關(guān)性和重要性,設(shè)計了包含通道注意力機(jī)制的Bottleneck 模塊,利用該模塊對融合后的特征塊進(jìn)行尺度縮減得到7 組尺度不同的特征圖,共利用7 組特征圖構(gòu)建多尺度檢測網(wǎng)絡(luò)。
在對特征圖進(jìn)行尺度縮減時設(shè)計的Bottleneck模塊結(jié)構(gòu)如圖4 所示。圖中的第一個Conv1×1(卷積核為1 的二維卷積)的作用是對輸入特征圖進(jìn)行降維,以降低計算量。BatchNorm(批歸一化)可以加快網(wǎng)絡(luò)的訓(xùn)練和收斂速度,防止梯度消失,對于網(wǎng)絡(luò)比較深的ResNet 非常合適,加入BatchNorm 后還可以適當(dāng)增大學(xué)習(xí)率,加快訓(xùn)練速度。ReLU 層的作用是增加神經(jīng)網(wǎng)絡(luò)各層之間的非線性關(guān)系,避免過擬合問題的發(fā)生。Conv3×3(卷積核為3 的二維卷積)的作用是使輸入特征圖的尺度減半,得到不同尺度的特征圖。第二個Conv1×1 的作用是升維,返回輸入時的特征維度,以減少原特征圖特征信息的損失。KNCA模塊即K鄰域通道注意力模塊,該模塊增加了特征圖不同通道之間特征的相關(guān)性,提高了小目標(biāo)的檢測準(zhǔn)確率。
目前特征融合的方法手段很多,F(xiàn)aster R-CNN 算法僅對最后一個特征塊進(jìn)行預(yù)測,雖然包含了高層特征,但是低層特征信息沒有被使用,在消融實(shí)驗中檢測精度僅為73.2%。SSD 算法采用了特征圖大小遞減的特征金字塔對不同尺度特征進(jìn)行預(yù)測,效果得到提高,但對低層特征的關(guān)注度還是不夠,檢測精度為77.2%。DSSD 采用了特征圖大小先遞減后反卷積遞增的特征金字塔融合方式,融合過程復(fù)雜耗時,檢測速度為13 frame/s。本文僅先對3 個不同深度的特征塊進(jìn)行串聯(lián),得到一個融合特征塊,再從這個特征塊得到不同尺度的特征金字塔進(jìn)行預(yù)測,檢測精度為82.7%,速度為30 frame/s。
Fig.3 ResNet visualization feature map圖3 ResNet可視化特征圖
Fig.4 Bottleneck module structure圖4 瓶頸模塊結(jié)構(gòu)圖
Fig.5 Overall algorithm structure of this paper圖5 本文整體算法結(jié)構(gòu)圖
圖5展示了本文整體算法結(jié)構(gòu)圖,首先選取ResNet的第三、四、五層卷積塊后的特征圖,大小分別為64×64、32×32、16×16,通過選取3 個不同尺度特征圖組成的密集塊,在接下來的Concat 操作中對不同尺度的特征信息進(jìn)行融合,提升了以低層特征為主要檢測依據(jù)的小目標(biāo)檢測精度。然后對第一組特征圖采用Conv1×1 進(jìn)行降維,第二組和第三組特征圖先降維再進(jìn)行上采樣,這里上采樣選取雙線性插值法,使3 組特征圖的尺度相同。這樣接下來就可以進(jìn)行Concat操作,將3 組特征圖進(jìn)行串聯(lián)操作,尺度不變,通道數(shù)相加。合并為一組特征圖后,采取Conv1×1進(jìn)行降維和BN 即BatchNorm 進(jìn)行加速訓(xùn)練,防止梯度消失。然后,基于該組特征圖依次進(jìn)行尺度縮減,獲取檢測用的不同尺度的特征圖。這里利用了剛才提出的Bottleneck 模塊,其中的降維操作有效降低了訓(xùn)練參數(shù),減少了訓(xùn)練時間。位于Bottleneck 模塊中的KNCA 注意力模塊促進(jìn)了通道間的信息流通,增加了特征圖不同通道之間特征的相關(guān)性。最終得到了7組特征圖,尺寸分別為64×64、32×32、16×16、8×8、4×4、2×2、1×1,將這7 組特征圖送入預(yù)測模塊,進(jìn)行分類與回歸,得到預(yù)測結(jié)果。
本文使用兩類不同的數(shù)據(jù)集對算法的精確性和有效性進(jìn)行驗證:第一類VOC 數(shù)據(jù)集,包括PASCAL VOC[23]-2007 公共數(shù)據(jù)集和PASCAL VOC-2012 公共數(shù)據(jù)集;第二類為自建的航拍小目標(biāo)數(shù)據(jù)集[24]AP(aerial photography)數(shù)據(jù)集。VOC 數(shù)據(jù)集中包含人物、動物、交通工具、生活用品等20 類常見目標(biāo),其中PASCAL VOC-2007包含9 963張圖片,PASCAL VOC-2012 包含12 031 張圖片。AP 數(shù)據(jù)集中有22 761 張來自不同傳感器和采集平臺的航拍樣本,包含了車輛、船舶、飛機(jī)等13 類小尺度目標(biāo)。
訓(xùn)練時為了防止過擬合現(xiàn)象的發(fā)生,在訓(xùn)練前先對輸入圖片采取了數(shù)據(jù)增強(qiáng),包括對圖片平移旋轉(zhuǎn)、灰度變換、隨機(jī)裁剪和尺度變換等操作,增強(qiáng)模型的魯棒性。圖片的先驗框長寬比為2 和3,7 張?zhí)卣鲌D的先驗框數(shù)量分別為4、6、6、6、6、4、4。
本次訓(xùn)練基于Pytorch1.0 框架,計算機(jī)操作系統(tǒng)為64 位的Ubuntu16.04,內(nèi)存16 GB,處理器為Intel?CoreTMi5-8500@3.00 GHz 六核,顯卡為一塊英偉達(dá)GTX 1080Ti,顯存11 GB。訓(xùn)練參數(shù)方面,batch size設(shè)置為8,maxiteration 設(shè)置為60 000,動量為0.9,權(quán)值衰減為0.000 5。初始學(xué)習(xí)率為0.000 35,前500 個iteration 是熱身階段,學(xué)習(xí)率逐漸增長,該操作有利于模型更快收斂。之后保持0.001 的學(xué)習(xí)率,當(dāng)iteration是36 000 和48 000 時,學(xué)習(xí)率分別乘以0.1。
本文提出的多尺度通道注意力融合小目標(biāo)算法在PASCAL VOC-2007 和PASCAL VOC-2012 訓(xùn)練集上訓(xùn)練60 000 iteration 時,訓(xùn)練時的損失函數(shù)曲線和測試集mAP 曲線如圖6 所示。
首先對算法各模塊進(jìn)行了對照實(shí)驗,此時訓(xùn)練maxiteration 為200 000,其中包括KNCA 注意力模塊的使用與否;fusion module特征融合模塊的使用與否;Focal Loss 焦點(diǎn)損失函數(shù)的使用與否;fusion method 3 張?zhí)卣鲌D進(jìn)行融合時的方法選擇,有Concat 和Element-wise[25]sum(元素級求和)兩種特征圖融合方式;scale reduction 尺度縮減方法選擇,對比第一種僅使用Conv3×3 進(jìn)行尺度縮減,第二種先使用Conv1×1進(jìn)行降維再使用Conv3×3 進(jìn)行尺度縮減和升維,第三種就是本文提出的Bottleneck 模塊;KNCA 模塊中鄰域K的大小選擇,本文測試了K=3,5,7 時的mAP精確度。算法各模塊在VOC 數(shù)據(jù)集上的檢測結(jié)果如表1 所示。
Fig.6 Loss function convergence curve and mAP curve of algorithm in this paper圖6 本文算法的損失函數(shù)收斂曲線和mAP 曲線
Table 1 Detection results of each module of algorithm on VOC data set表1 算法各模塊在VOC 數(shù)據(jù)集上的檢測結(jié)果
對比表1 中的第1 行和第2 行數(shù)據(jù)可以看出,在使用Focal Loss 后確實(shí)帶來了mAP 精確度的提升,提升了0.24 個百分點(diǎn),原因在于Focal Loss 解決了訓(xùn)練時的正負(fù)樣本不平衡問題。對比表中的第1、3、4 行結(jié)果,可以發(fā)現(xiàn)尺度縮減方式對模型的影響較小,在0.1 個百分點(diǎn)左右。采取單獨(dú)一個Conv3×3 或者是Conv1×1 和Conv3×3 組合的方式都沒能改善模型的性能,同時兩者效果差不多。本文提出的Bottleneck模塊取得了較好的效果,因為該模塊首先進(jìn)行了降維,降低了計算量,最后進(jìn)行升維,保證了原特征圖的特征信息不會丟失。第1 行和第5 行對比了特征融合模塊中3 組特征塊進(jìn)行信息融合的方式,第5 行所采取的Element-wise sum 特征融合方法是將3 組特征圖對應(yīng)元素分別進(jìn)行加和的方式,這種方式會得到新的特征,這個新的特征可以反映原始特征的一些特性,但是原始特征的一些信息會在這個過程中損失,然而Concat 操作是直接對原始特征進(jìn)行串聯(lián),讓網(wǎng)絡(luò)去學(xué)習(xí)如何融合特征,不會造成信息的損失。通過實(shí)驗對比可以看出,Concat操作的檢測精確度更高,因此本文選擇了Concat操作來對3 組特征塊進(jìn)行融合。由第1、6、7 行可以看出,隨著KNCA 模塊中鄰域K的增大,模型的精度越來越低,過多的通道之間的交互確實(shí)是低效且不必要的,這里選取K=3能取得最優(yōu)的效果。第1 行和最后兩行的對比較好地展示了KNCA 注意力模塊和特征融合模塊對目標(biāo)檢測性能的重大影響,檢測精確度均提高了1~2 個百分點(diǎn)。KNCA 注意力模塊對通道間信息的關(guān)注和特征融合模塊對低層高層特征信息的融合都能很好地改善目標(biāo)檢測中小目標(biāo)信息缺乏的問題。
PASCAL VOC 數(shù)據(jù)集上各算法性能對比如表2所示。PASCAL VOC-2007 測試集上測試得到的mAP 為82.7%,相比SSD 算法有5.5 個百分點(diǎn)的提升,較DSSD 算法的mAP 提高了4.1 個百分點(diǎn)。本文算法在檢測鳥、瓶子等小目標(biāo)時,檢測效果明顯優(yōu)于其他算法。
由于拍攝位置的原因,航拍數(shù)據(jù)集AP 的側(cè)重點(diǎn)更偏向于小目標(biāo),且其場景更復(fù)雜,目標(biāo)尺度變換較大。表3 顯示了本文在AP 數(shù)據(jù)集上的檢測表現(xiàn),可以看出,本文所提出的小目標(biāo)檢測算法性能指標(biāo)明顯高于其他幾種算法,進(jìn)一步展示了本文在小目標(biāo)檢測方向所做出的改進(jìn)成效顯著,具備了大部分小目標(biāo)檢測場景的精度要求。在所引用的航拍數(shù)據(jù)集中的mAP 為86.8%。
為了更直觀地分析本文的檢測結(jié)果,圖7 和圖8分別可視化地展示出了一些PASCAL VOC-2007 測試集和航拍測試集上的檢測結(jié)果。將SSD 目標(biāo)檢測算法和本文算法檢測效果進(jìn)行了對比,可以發(fā)現(xiàn),在圖片中具有多個小目標(biāo)的情況下,本文算法檢測出的目標(biāo)數(shù)量和精確度均領(lǐng)先于SSD 檢測算法,取得了更好的小目標(biāo)檢測效果。
Table 2 Performance comparison of algorithms on PASCAL VOC data set表2 PASCAL VOC 數(shù)據(jù)集上各算法性能對比
Table 3 Performance comparison of algorithms on aerial photography data set表3 AP 航拍數(shù)據(jù)集上各算法性能對比
Fig.7 Comparison of SSD and proposed algorithm on PASCAL VOC data set圖7 SSD 和本文算法在PASCAL VOC 數(shù)據(jù)集上對比結(jié)果
Fig.8 Comparison of SSD and proposed algorithm on aerial photography data set圖8 SSD 和本文算法在航拍數(shù)據(jù)集上對比結(jié)果
本文針對目標(biāo)檢測中的小目標(biāo)信息缺失、檢測精度低的問題提出了K鄰域通道注意力模塊(KNCA)。通過對特征圖特征通道權(quán)重的重新分配有效地增強(qiáng)了小目標(biāo)的特征信息。同時提出了基于Bottleneck 模塊的特征融合網(wǎng)絡(luò),該網(wǎng)絡(luò)先對淺層和深層特征進(jìn)行融合,再結(jié)合降維和尺度縮減的方式獲得多尺度特征圖,降低了模型的復(fù)雜度和計算量。并且,檢測模型將ResNet 和Focal Loss 結(jié)合在一起,豐富了網(wǎng)絡(luò)的特征信息且避免了訓(xùn)練時難易樣本不平衡的問題。通過在PASCAL VOC 數(shù)據(jù)集和AP 航拍數(shù)據(jù)集上的訓(xùn)練測試,本文算法在保證檢測速度的情況下檢測精度取得了大幅提高。