洪哲昊,陳東方+,王曉峰
(1.武漢科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,湖北 武漢 430065; 2.武漢科技大學(xué) 智能信息處理與實(shí)時(shí)工業(yè)系統(tǒng)湖北省重點(diǎn)實(shí)驗(yàn)室,湖北 武漢 430065)
目前在目標(biāo)檢測(cè)算法[1-3]中,對(duì)不同尺度目標(biāo)的檢測(cè)一直是一個(gè)難點(diǎn),其最直觀的一種解決方式是采用多尺度圖像金字塔[4],然而這種方式檢測(cè)太費(fèi)時(shí),使其難以在實(shí)際生產(chǎn)中應(yīng)用。一些其它的算法采用在網(wǎng)絡(luò)內(nèi)部構(gòu)建特征金字塔的方式,降低圖像金字塔的計(jì)算成本,例如SSD[5]、DSSD[6]、RSSD[7]、FPN[8]、YOLO系列檢測(cè)器[9-11],還有一些兩步檢測(cè)的算法例如Faster R-CNN[12]、R-FCN[13]、Mask R-CNN[14]等。上述算法雖然取得了較好的檢測(cè)結(jié)果,但仍然存在一些不足。SSD算法各層特征之間相互獨(dú)立,沒有充分利用各尺度特征的特點(diǎn),導(dǎo)致小目標(biāo)檢測(cè);DSSD和RSSD算法采用較深的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行特征融合,使其參數(shù)量大大增加導(dǎo)致檢測(cè)速度過于緩慢;FPN網(wǎng)絡(luò)只將高層特征引入底層,沒有考慮底層特征對(duì)高層的影響,使得特征融合不夠充分。為了解決上述存在的問題,從特征金字塔的角度出發(fā),提出了一種多任務(wù)分支SSD的目標(biāo)檢測(cè)算法。第一個(gè)分支為高層和淺層融合位置信息和語義信息,第二個(gè)分支為中間特征層融合語義位置信息,之后通過多尺度通道聚合將兩個(gè)分支結(jié)果融合,加強(qiáng)對(duì)不同尺度目標(biāo)的檢測(cè)能力和重要特征的表征能力。
研究人員已經(jīng)投入了大量的努力來提高不同尺度物體的檢測(cè)精度,無論是一階段檢測(cè)器還是二階段檢測(cè)器,近年來針對(duì)檢測(cè)過程中出現(xiàn)的尺度變化問題,主要有兩個(gè)策略來改善尺度變換帶來的影響。
第一個(gè)策略是圖像金字塔,該策略將原圖像縮放到不同尺度,以獲取具有代表性的多尺度特征。不同尺度圖像的特征分別產(chǎn)生預(yù)測(cè),最后這些預(yù)測(cè)總和在一起作為最終的預(yù)測(cè)。在識(shí)別精度和定位精度方面,來自不同大小圖像的特征確實(shí)超越了僅僅基于單尺度圖像的特征。SNIP[4]就采用了這種策略,盡管在性能方面有所提高,但帶來的問題是消耗了大量的時(shí)間和內(nèi)存,這使得這種策略在實(shí)時(shí)任務(wù)中難以實(shí)現(xiàn)。
第二種方法是從網(wǎng)絡(luò)內(nèi)部的固有層提取特征金字塔來檢測(cè)目標(biāo),同時(shí)只提取單一尺度的圖像。與第一種策略相比,這種策略所需的額外內(nèi)存和計(jì)算成本要少得多,因此可以實(shí)時(shí)的進(jìn)行網(wǎng)絡(luò)測(cè)試,更容易在實(shí)時(shí)任務(wù)中部署。MS-CNN[15]將多尺度特征引入到深度卷積神經(jīng)網(wǎng)絡(luò)中進(jìn)行目標(biāo)檢測(cè)任務(wù)的構(gòu)建;SSD使用VGG16網(wǎng)絡(luò)結(jié)構(gòu)作為基礎(chǔ)特征提取網(wǎng)絡(luò),并從其結(jié)構(gòu)中抽取不同尺度的特征層進(jìn)行檢測(cè);DSSD采用ResNet加深了主干網(wǎng)絡(luò),并將反卷積層應(yīng)用在深淺層的特征融合中;FPN使用橫向連接操作構(gòu)建了一個(gè)自頂向下的通路,實(shí)現(xiàn)了高層語義信息的傳遞。
在對(duì)特征金字塔的研究中[5,6,8,15-17]表明,高層和低層具有的特征信息是不相同的,高層具有更多的語義信息,而低層特征圖的分辨率較大,含有更多的位置信息和細(xì)節(jié)特征,而整合不同尺度的特征有利于各種目標(biāo)檢測(cè)任務(wù)[18]。SSD采用不同尺度特征圖分別檢測(cè),底層高分辨率的大特征圖往往用于檢測(cè)小目標(biāo),高層低分辨率的小特征圖的感受野更大往往用來檢測(cè)大目標(biāo),這樣的結(jié)構(gòu)可以看出各層特征之間沒有關(guān)聯(lián),底層特征缺乏語義信息,使得小目標(biāo)檢測(cè)效果不好,而高層特征分辨率低沒有足夠的位置信息容易導(dǎo)致中大型目標(biāo)出現(xiàn)漏檢情況。FPN和DSSD能夠有效的把高層語義信息傳遞到底層特征,使得在底層高分辨率特征圖上進(jìn)行小目標(biāo)檢測(cè)的效果有了提升。但同時(shí)只使用了單一的特征金字塔結(jié)構(gòu),忽略了底層特征對(duì)高層的影響,使最后融合的特征不夠充分,有效檢測(cè)中大型目標(biāo)的高層特征仍然缺乏位置信息。
基于此,本文算法借鑒FPN的思想構(gòu)建了兩個(gè)分支,其中第一個(gè)分支針對(duì)語義信息和定位信息采用了不同的兩個(gè)模塊進(jìn)行級(jí)聯(lián),加強(qiáng)對(duì)深淺層中所包含的語義和定位信息在深層和淺層特征中的表征能力,第二個(gè)分支采用融合分裂的方式將深淺層的信息傳遞到中間層,之后將兩個(gè)分支的輸出經(jīng)過一個(gè)多尺度通道聚合模塊,融合整體的特征得到一個(gè)具有多尺度的特征金字塔,這種結(jié)構(gòu)加強(qiáng)了SSD網(wǎng)絡(luò)中各層特征的關(guān)聯(lián),同時(shí)也彌補(bǔ)了原始FPN網(wǎng)絡(luò)特征融合不充分的問題。
本文算法的整體結(jié)構(gòu)如圖1所示,整體上分為3步。第一步通過VGG16主干網(wǎng)絡(luò)提取不同尺度的六層特征記為 {G1,G2,G3,G4,G5,G6}, 其各層特征的大小為(38,19,10,5,3,1),之后通過瓶頸層改變各個(gè)尺度特征的通道數(shù)。第二步是一個(gè)包含二個(gè)任務(wù)分支的并行結(jié)構(gòu),使用上一步瓶頸層處理之后的一組特征圖作為輸入,在第一個(gè)分支中,將語義信息增強(qiáng)模塊(semantic information enhancement module, SIEM)和定位信息增強(qiáng)模塊(localization information enhancement module, LIEM)級(jí)聯(lián),對(duì)深層特征所包含的豐富語義信息和淺層特征所包含的豐富定位信息進(jìn)行雙向傳遞;第二個(gè)分支才采用融合分裂增強(qiáng)模塊(fusion split enhancement module, FSEM)將深淺層所具有代表性的語義和定位信息向中間層傳遞。第三步將第二部分中不同分支的輸出送入多尺度通道聚合模塊(multi-scale channel aggregation, MSCA),進(jìn)行兩個(gè)分支輸出特征的融合,并為不同尺度特征通道之間引入權(quán)重系數(shù),對(duì)同一尺度下不同特征的關(guān)系進(jìn)行表征,增強(qiáng)了原本響應(yīng)較大的特征同時(shí)也對(duì)那些不敏感的特征進(jìn)行一定程度的抑制。最后同SSD相似,圖1中Detection per Class這一步驟,通過在不同尺度的特征圖上進(jìn)行卷積來生成若干個(gè)不同形狀與比例的預(yù)選框,每一個(gè)預(yù)選框都包含著預(yù)測(cè)的類別與邊界位置信息。然后通過非最大抑制(non-maximum suppression, NMS)操作生成最終結(jié)果。
圖1中Bottleneck為瓶頸層,為了減少網(wǎng)絡(luò)的參數(shù)量和回傳梯度過大帶來影響,Bottleneck層使用了1×1卷積對(duì)主干網(wǎng)提取到的不同尺度的特征進(jìn)行平滑處理,將各個(gè)尺度的特征通道數(shù)減少到256,以提高計(jì)算效率。同時(shí)因?yàn)镚0的大小為(1,1),位置信息已經(jīng)丟失,但其語義信息豐富,因此作為一個(gè)全局平均池化(global average pooling, GAP)之后的全局特征引入前五層特征。輸出得到一組多尺度的基礎(chǔ)特征 {C1,C2,C3,C4,C5} 和G0, 在這些特征圖中,從C1到C5其特征圖分辨率逐漸降低,包含的位置信息逐漸減少而語義信息逐漸增多。下面介紹網(wǎng)絡(luò)中各個(gè)模塊的具體細(xì)節(jié)。
圖1 本文算法具體網(wǎng)絡(luò)結(jié)構(gòu)
語義信息增強(qiáng)模塊(SIEM)主要采用自頂向下的特征金字塔結(jié)構(gòu),另外在基礎(chǔ)FPN結(jié)構(gòu)上做了一些修改:①使用了最小層的特征圖G0作為GAP操作之后的全局特征引入到低層特征中,G0可以學(xué)習(xí)到更多的語義信息,突出識(shí)別出的目標(biāo)區(qū)域;②采用雙線性插值代替最鄰近插值進(jìn)行上采樣操作,彌補(bǔ)最鄰近插值帶來的精度損失。SIEM結(jié)構(gòu)如圖2所示。
圖2 SIEM結(jié)構(gòu)
首先將G0層進(jìn)行上采樣到C5特征圖同樣大小,將其與C5特征圖融合,把具有全局語義信息的特征傳遞到C5特征圖上,之后把融合過的特征圖通過一個(gè)上采樣操作將分辨率增加到(10,10),之后將C4特征層與上采樣操作過后的C5特征層進(jìn)行融合,通過這樣的方式得到五層融合過后的特征,最后對(duì)這五層特征分別使用一個(gè)3×3卷積來減少上采樣導(dǎo)致混疊效應(yīng)的影響,輸出五層特征記為 {T1,T2,T3,T4,T5}。
自頂向下特征金字塔結(jié)構(gòu)中的每一個(gè)特征圖(Ti)由主干網(wǎng)中提取到的同一層特征圖(Ci)和高一層的特征(Ti+1)融合得到
Ti=Ki?(S(Ti+1)+Ci)
(1)
式中:Ki為一個(gè)3×3大小的卷積核,?表示一個(gè)卷積操作,用于減少上采樣帶來的混疊效應(yīng), S(Ti+1) 表示一個(gè)將特征圖大小增加為原來兩倍的雙線性插值上采樣操作。這種自頂向下的特征金字塔將高層主干特征的語義信息逐層傳播到分辨率更高的底層特征上,所以原本缺乏語義信息的低層特征得到了加強(qiáng),對(duì)小目標(biāo)的檢測(cè)更加有利。
在SIEM中,自頂向下的特征金字塔將深層的語義信息傳導(dǎo)至淺層特征中,讓位置信息豐富的高分辨率特征圖上具有了更多的語義信息,但是這種單一的特征金字塔結(jié)構(gòu)沒有考慮到淺層特征所包含的位置信息對(duì)深層特征的作用。本文設(shè)計(jì)了定位信息增強(qiáng)模塊(LIEM),并于SIEM進(jìn)行級(jí)聯(lián),在SIEM的基礎(chǔ)上加強(qiáng)淺層特征定位信息向深層傳遞。SIEM和LIEM級(jí)聯(lián)之后的結(jié)構(gòu)如圖3所示。
圖3 SIEM和LIEM級(jí)聯(lián)結(jié)構(gòu)
LIEM與SIEM結(jié)構(gòu)相反,利用SIEM輸出的特征 {T1,T2,T3,T4,T5}, 從最大的特征圖開始自底向上逐步構(gòu)建特征金字塔,首先對(duì)T2進(jìn)行上采樣增大分辨率,將其與T1特征圖融合,得到第一個(gè)融合的特征圖,通過池化的方式減少分辨率并獲取最重要的特征,第二次再以同樣的方式對(duì)T2,T3進(jìn)行融合。特別的,LIEM增加了對(duì)原始特征層相鄰上下文的融合,以此方式減少池化時(shí)分辨率減小帶來的信息丟失問題,最后得到的特征圖記為 {B1,B2,B3,B4,B5}。
每一個(gè)自底向上特征金字塔中的特征層(Bi)都由同一大小的主干網(wǎng)特征(Ti)和其上一層特征(Ti+1)與特征金字塔中低一層的特征(Bi-1)融合得到
Bi=Ki?(M(Bi-1)+Ti+S(Ti+1))
(2)
式中:Ki同樣為一個(gè)3×3的卷積核,?表示一個(gè)卷積操作來減小上采樣帶來的混疊效應(yīng)的影響,M(·) 表示一個(gè)大小為2,步長為2的最大池化操作,將大特征圖的尺寸減小為原始的一半。 S(Ti+1) 為一個(gè)雙線性插值操作,將Ti+1這層特征圖上采樣到原來的兩倍大小。由于這種自底向上的特征金字塔結(jié)構(gòu)將底層主干特征的空間定位信息較好傳播至高層特征,使得原本缺乏位置信息的高層特征得到加強(qiáng),從而加強(qiáng)了對(duì)大目標(biāo)的檢測(cè),在這個(gè)級(jí)聯(lián)結(jié)構(gòu)中SIEM將語義信息傳遞至淺層特征,通過LIEM將淺層中的定位信息反向傳遞至深層特征中,彌補(bǔ)了深層特征中定位信息不夠的缺陷,從而提升了對(duì)大小目標(biāo)的檢測(cè)能力。
SIEM和LIEM中的特征金字塔結(jié)構(gòu)都是順序構(gòu)造結(jié)構(gòu),分別針對(duì)底層特征語義信息不足和高層特征定位信息不足的問題進(jìn)行優(yōu)化。而從深層和淺層特征圖直接的關(guān)系出發(fā),設(shè)計(jì)了融合分裂增強(qiáng)模塊(FSEM)分別融合主干網(wǎng)上深層的特征和淺層的特征,之后把這兩組特征進(jìn)行累加混合,再分裂至不同尺寸的特征層上,如圖4所示。
圖4 FSEM結(jié)構(gòu)
在SSD主干網(wǎng)提取到的六層特征中,使用前四層 {C1,C2,C3,C4} 來構(gòu)建中型目標(biāo)任務(wù)分支,其尺寸分別是(38,38)、(19,19)、(10,10)、(5,5),后兩層特征圖(3,3)、(1,1)尺寸過小,位置信息較差,但有著較為豐富的語義信息。首先將G0通過雙線性插值上采樣到C5特征圖大小,隨后將它們?nèi)诤?,把融合后的特征圖再次通過雙線性插值到C4特征圖大小并與C4特征圖融合,這樣將后兩層分辨率較低的特征層所包含的語義信息融合到下面的特征層當(dāng)中,記融合過后的特征圖為Cfix。
在前四層特征圖中, {C1,C2} 為淺層高分辨率特征,通過池化將C1的尺寸減小到(19,19),之后與C2進(jìn)行融合得到一個(gè)具有豐富位置信息的特征圖?low
?low=M(C1)+C2
(3)
之后利用融合后的特征層Cfix與C3進(jìn)行深層特征的融合,得到一個(gè)尺寸為(10,10)并具有豐富語義信息的特征圖?hight
?hight=S(Cfix)+C3
(4)
在分別對(duì)深層和淺層特征進(jìn)行融合之后,得到大小為(10,10)和大小為(19,19)的兩個(gè)特征圖?hight和?low, 其通道數(shù)都為256,之后將?hight和?low進(jìn)行合并得到兩個(gè)具有全面信息的特征圖δlow和δhight
δlow=Klow?cat(?low,S(?hight))δhight=Khight?cat(M(?low),?hight)
(5)
式中:Klow和Khight為兩個(gè)3×3卷積操作, cat(·) 代表沿通道維數(shù)的Concat操作,在此之后,特征圖δlow和δhight同時(shí)融合了來自主干網(wǎng)深層特征和淺層特征的信息,最后對(duì)δlow和δhight分別進(jìn)行雙線性插值和池化操作得到各個(gè)尺度的特征圖
F1=S(δlow),F2=δlowF3=δhight,F4=M(δhight)
(6)
另外將F4通過最大池化操作得到特征金字塔中的第五層:F5=M(F4)。 通過上述對(duì)深層和淺層特征的融合和分裂,中間大小的特征層(F2和F3)包含了來自主干網(wǎng)中淺層的位置信息和深層的語義信息,加強(qiáng)了對(duì)中型目標(biāo)需要的位置和語義信息的提取。
在經(jīng)過兩個(gè)分支對(duì)不同尺度中所包含的信息融合之后,輸出了兩個(gè)特征金字塔,一個(gè)特征金字塔中的深淺層包含了定位和語義信息,另一個(gè)特征金字塔中的中間層包含了定位和語義信息,本文通過一個(gè)MSCA模塊將這兩組特征金字塔進(jìn)行整合。在近期的研究中表明,通過求和組合特征圖是一種常見的從多個(gè)特征中收集上下文信息的方法[19],然而,Huang等[20]認(rèn)為求和會(huì)削弱網(wǎng)絡(luò)中的信息流。此外每一個(gè)尺度中不同的通道表示了不同的特征,而這些特征之間缺乏關(guān)聯(lián),以至于重要的特征不能夠顯著的表示。
因此本文設(shè)計(jì)了一個(gè)多尺度通道聚合模塊(MSCA)如圖5所示,第一步沿著通道維將同等大小尺度的特征串聯(lián)在一起,最后聚合的特征金字塔可以表示為P=[P1,P2,…,Pi], 其中每一個(gè)P表示為Pi=cat(Bi,Fi), 這樣聚合金字塔中的每個(gè)尺度都包含多層次深度的特征,然而,簡單的連接操作不能夠表征通道之間的關(guān)系。第二步,和SE Block[21]相似,引入了一組通道權(quán)重,針對(duì)不同尺度特征中的關(guān)系進(jìn)行加權(quán),顯著表征網(wǎng)絡(luò)更感興趣的特征,同時(shí)抑制其它的特征。先對(duì)每個(gè)尺度聚合的特征在通道維度上采用全局平均池化(GAP),對(duì)每個(gè)尺度的特征進(jìn)行壓縮獲取權(quán)重系數(shù)z, 通道數(shù)目為C, 之后為了捕獲通道之間的依賴關(guān)系,使用了兩個(gè)全連接層對(duì)權(quán)重系數(shù)進(jìn)行激活
S=fex(z,W)=σ(W2φ(W1,z))
(7)
式中:σ為Relu激活函數(shù),φ為sigmoid激活函數(shù),W1為第一個(gè)全連接層FC1參數(shù),其尺寸為C/r×C,W2為第二個(gè)全連接層FC2參數(shù),其尺寸為C×C/r,r是一個(gè)縮放比例,在本實(shí)驗(yàn)中采用r=16, 最終將得到的權(quán)重系數(shù)S與原始特征圖Pi在同一通道Ci上相乘
(8)
圖5 MSCA結(jié)構(gòu)
本文算法目的為對(duì)圖中目標(biāo)的檢測(cè),需要進(jìn)行定位與分類,本次實(shí)驗(yàn)使用的損失函數(shù)為位置回歸損失函數(shù)與分類損失函數(shù)之和。其公式如下
(9)
式中:N為預(yù)測(cè)框匹配到目標(biāo)框的數(shù)量,如果N為0,那么損失函數(shù)值為0;x為預(yù)測(cè)框與真實(shí)目標(biāo)框關(guān)于每一個(gè)類別的指示器,其取值為0或1;c為網(wǎng)絡(luò)對(duì)樣本的輸出的概率值;l為預(yù)測(cè)框的位置信息,g為真實(shí)目標(biāo)框的位置信息;α為一個(gè)權(quán)重系數(shù)因子,在訓(xùn)練過程中設(shè)置為1。對(duì)于分類損失函數(shù),采用交叉熵?fù)p失函數(shù),其公式如下
(10)
(11)
(12)
本文使用MAP(mean average precision)作為指標(biāo)來對(duì)算法的性能進(jìn)行衡量,其公式如下
(13)
MAP為在所有圖片上對(duì)所有類別的目標(biāo)識(shí)別的精確程度,其中N(Classes) 為數(shù)據(jù)集中共有物體的類別數(shù), ∑AveragePrecisionC則是對(duì)所有類別物體的平均精度求和。AveragePrecisionC表示C這類物體的平均精度,其公式如下
(14)
式中:N(TotalImages)C則表示所有包含C這一類的目標(biāo)的圖像的數(shù)量,PrecisionC為在測(cè)試集的所有圖像當(dāng)中C這一類的精度,其計(jì)算方式如下
(15)
N(TotalObjects)C表示測(cè)試圖像當(dāng)中含有C這一類目標(biāo)的數(shù)量,N(TruePositives)C為C這一類目標(biāo)被正確預(yù)測(cè)的數(shù)量。
本實(shí)驗(yàn)的軟件環(huán)境為Ubuntu 16.04.6 LTS,深度學(xué)習(xí)框架為PyTorch。硬件環(huán)境使用CPU型號(hào)為Intel(R) Xeon(R) CPU E5-2628 v3,GPU型號(hào)為NVIDIA GeForceRTX2080,8 G顯存。
本次實(shí)驗(yàn)所使用的數(shù)據(jù)集為PASCAL VOC 07+12 trai-nval和PASCAL VOC 2007 test,其中訓(xùn)練集PASCAL VOC 07+12 trainval一共包含16 551幅圖像,49 653個(gè)目標(biāo)對(duì)象,PASCAL VOC 2007 test作為測(cè)試集一共包含4952幅圖像,14 856個(gè)目標(biāo)對(duì)象,其中共有20個(gè)類別的目標(biāo)對(duì)象。
在本次實(shí)驗(yàn)過程中,使用300*300的分辨率作為網(wǎng)絡(luò)的輸入,訓(xùn)練過程中采用的BatchSize大小為16,總訓(xùn)練次數(shù)為120 000次,使用SGD優(yōu)化器,初始學(xué)習(xí)率為0.001,優(yōu)化器動(dòng)量設(shè)置為0.9,學(xué)習(xí)率衰減率為0.1,分別在訓(xùn)練到第80 000次,第100 000次進(jìn)行學(xué)習(xí)率的變更。在訓(xùn)練過程中,每1000次進(jìn)行保存一次模型權(quán)重結(jié)果,整體訓(xùn)練損失值結(jié)果如圖6所示,平均精度曲線如圖7所示。
圖6中,本次實(shí)驗(yàn)使用了預(yù)訓(xùn)練的VGG16權(quán)重,前期loss下降的較快,然后在不斷的振蕩,最終大概在80 000次左右收斂。
圖6 損失函數(shù)收斂曲線
圖7 平均精度收斂曲線
圖7中,利用訓(xùn)練過程中保存的權(quán)重模型在VOC2007test數(shù)據(jù)集上進(jìn)行測(cè)試,一共120次測(cè)試,其中實(shí)線為本文算法的平均精度曲線,短橫虛線為SSD算法的平均精度曲線,點(diǎn)虛線為FPN算法,點(diǎn)加橫虛線為DSSD算法,可以看出在前期存在一些振蕩,在60 000次左右逐漸穩(wěn)定,最后收斂的結(jié)果比其它算法要高。
為了驗(yàn)證本文算法的檢測(cè)效果,將與原始SSD算法、其改進(jìn)算法DSSD和基于特征金字塔的算法FPN算法進(jìn)行實(shí)驗(yàn)對(duì)比。對(duì)比結(jié)果見表1,其中MAP為算法的整體檢測(cè)精度,F(xiàn)ps為每秒檢測(cè)的圖像數(shù)量,單位為幀/秒,Backbone為算法采用的基礎(chǔ)特征提取網(wǎng)絡(luò),our表示本文算法的實(shí)驗(yàn)結(jié)果。
如表1所示,原始SSD算法整體檢測(cè)精度MAP為77.1,本文算法的整體檢測(cè)精度為79.6,較原始SSD算法增加了2.5個(gè)百分點(diǎn),而DSSD和FPN算法分別采用了resnet-101和resnet-50作為基礎(chǔ)特征提取網(wǎng)絡(luò),其網(wǎng)絡(luò)較深導(dǎo)致了檢測(cè)速度慢,但加入了自頂向下的特征金字塔,對(duì)船只、飛機(jī)等小目標(biāo)檢測(cè)比原始SSD較好,本文算法采用VGG16,網(wǎng)絡(luò)層數(shù)相對(duì)較淺,相對(duì)于DSSD算法和FPN算法在這些類別目標(biāo)上檢測(cè)精度相近,而對(duì)于其它類別的目標(biāo),本文算法有了一定的提升,總體上也較DSSD算法和FPN算法相比增加了1.0和1.3個(gè)百分點(diǎn),同時(shí)保證了檢測(cè)速度。從其中選取了部分檢測(cè)結(jié)果,如圖8所示,圖8(a)為原始SSD,圖8(b)為DSSD算法,圖8(c)為FPN算法,圖8(d)為本文算法??梢钥闯?,本文對(duì)一些小目標(biāo)的檢測(cè)有所加強(qiáng),例如火車旁邊的行人,原始SSD只檢測(cè)出了尺度較大的3個(gè)人,F(xiàn)PN則檢測(cè)出了重復(fù)的人,而本文能夠檢測(cè)出右側(cè)較為明顯的人和左側(cè)的一個(gè)小尺度的人。對(duì)于中型和大型目標(biāo)的檢測(cè),本文也能夠進(jìn)行有效的檢測(cè),例如中等尺度大小的鸚鵡,SSD、DSSD和FPN都出現(xiàn)了漏檢的情況,本文算法能夠較為全面地檢測(cè)出所有的鸚鵡。
圖8 各個(gè)算法檢測(cè)對(duì)比
為了進(jìn)一步驗(yàn)證本文提出的4種模塊對(duì)不同尺度下目標(biāo)檢測(cè)的效果,對(duì)PASCAL VOC 2007 test進(jìn)行分析處理,得到14 856個(gè)目標(biāo)對(duì)象中最大目標(biāo)所占像素掩碼為245 000,而最小的目標(biāo)所占的像素掩碼為44,根據(jù)測(cè)試集中所有目標(biāo)的尺度范圍將14 856個(gè)目標(biāo)劃分為L、M、S這3組,分別對(duì)應(yīng)大、中、小3種尺度。對(duì)本文設(shè)計(jì)的4種模塊(SIEM、LIEM、FSEM、MSCA)分別進(jìn)行實(shí)驗(yàn)并與SSD算法進(jìn)行對(duì)比。如表2所示,SSD+SIEM(S)表示在SSD算法上只使用了SIEM,SSD+SIEM+LIEM(S+L)表示將SIEM與LIEM級(jí)聯(lián)加入網(wǎng)絡(luò),SSD+FSEM(F)表示只使用了FSEM,SSD+SIEM+LIEM+FSEM(S+L+F)表示,同時(shí)采用這3種模塊,但沒有使用MSCA,Our表示在使用前面3種模塊的基礎(chǔ)上加入了特征融合模塊MSCA,其結(jié)果見表2。
表2 對(duì)不同尺度目標(biāo)的檢測(cè)結(jié)果
從表2可以看出,原始SSD算法以不同尺度目標(biāo)劃分時(shí)檢測(cè)的整體精度為64.5,本文提出的3種模塊對(duì)不同尺度目標(biāo)的貢獻(xiàn)程度不同,語義信息增強(qiáng)模塊(SIEM)更好利用了高層語義信息,將小尺度目標(biāo)的檢測(cè)精度提升了2.1;而級(jí)聯(lián)語義信息增強(qiáng)模塊(SIEM)和定位信息增強(qiáng)模塊(LIEM)之后可以看到在保證小目標(biāo)檢測(cè)能力的同時(shí)提升大目標(biāo)檢測(cè)效果,將大尺度目標(biāo)檢測(cè)精度提升了1.8;而分裂融合增強(qiáng)模塊(FSEM)將語義和位置信息融入到中間大小特征層,將中等尺度目標(biāo)檢測(cè)精度提升了0.8,在第五行(SSD+S+L+F)和第六行(Our)可以看出,在使用了前面3種模塊后,加入多尺度通道聚合(MSCA)模塊對(duì)網(wǎng)絡(luò)整體效果有0.1~0.4的提升。最后本文算法對(duì)以不同尺度目標(biāo)劃分時(shí)檢測(cè)整體精度為66.5,較原始SSD算法提升了2.0。可以驗(yàn)證針對(duì)不同尺度目標(biāo),本文改進(jìn)的SSD算法都有所加強(qiáng)。
本文提出了一種多任務(wù)分支SSD的目標(biāo)檢測(cè)算法,針對(duì)檢測(cè)時(shí)目標(biāo)的不同尺度,采用FPN的思想和深層和淺層特征的關(guān)系設(shè)計(jì)了3種不同模塊(SIEM、LIEM、FSEM),分別是自頂向下的結(jié)構(gòu)、自底向上的結(jié)構(gòu)和深層淺層向中間層融合的結(jié)構(gòu),SIEM加強(qiáng)對(duì)語義信息的傳遞,LIEM加強(qiáng)對(duì)位置信息的傳遞,F(xiàn)SEM將語義信息和定位信息引入中間層針對(duì)中等尺度目標(biāo)檢測(cè),之后將SIEM與LIEM進(jìn)行級(jí)聯(lián)得到一組適合對(duì)大小尺度目標(biāo)檢測(cè)的特征金字塔。
在此基礎(chǔ)上,將FSEM與級(jí)聯(lián)結(jié)構(gòu)采用并行架構(gòu)組裝為兩個(gè)分支進(jìn)行,更好的對(duì)不同尺度目標(biāo)進(jìn)行學(xué)習(xí)訓(xùn)練,在得到兩個(gè)分支的特征金字塔后,使用多尺度通道聚合模塊(MSCA)將兩組特征金字塔聚合,并且訓(xùn)練了一組通道權(quán)重尋找同一尺度特征之間的依賴關(guān)系,加強(qiáng)對(duì)當(dāng)前檢測(cè)任務(wù)貢獻(xiàn)程度大的特征的利用,同時(shí)抑制不重要的特征,讓網(wǎng)絡(luò)更注重感興趣的特征進(jìn)行學(xué)習(xí),最后通過實(shí)驗(yàn)對(duì)比,可以看出本文算法相對(duì)于SSD、DSSD、FPN有更好的整體檢測(cè)效果。未來可以采用更深一些的基礎(chǔ)特征提取主干網(wǎng)加強(qiáng)對(duì)基礎(chǔ)特征的提取,獲取更好的特征,以提升檢測(cè)的效果。