陳灝然,彭 力+,李文濤,戴菲菲
1.物聯(lián)網(wǎng)技術(shù)應(yīng)用教育部工程研究中心(江南大學(xué) 物聯(lián)網(wǎng)工程學(xué)院),江蘇 無錫 214122
2.臺州市產(chǎn)品質(zhì)量安全監(jiān)測研究院,浙江 臺州 318000
目標(biāo)檢測一直是圖像識別領(lǐng)域經(jīng)久不衰的研究方向,通過搭建出的算法模型將圖片或者視頻中感興趣的目標(biāo)提取出來。在當(dāng)下的生活中,這一研究成果被廣泛應(yīng)用于機器人導(dǎo)航、智能視頻監(jiān)控、工業(yè)檢測等諸多領(lǐng)域。近年來,各種深度學(xué)習(xí)模型不斷被推出并且不斷被改進(jìn),從基于產(chǎn)生候選區(qū)域并進(jìn)行分類的two-stage 算法演化至直接將提取出特征丟入卷積網(wǎng)絡(luò)訓(xùn)練的one-stage算法。
One-stage 類算法的典型代表為Liu 等人于2016年提出的SSD(single shot multibox detector)算法,對于特征的提取采用了金字塔結(jié)構(gòu)的特征提取層,針對不同層提取到的特征分別進(jìn)行了分類與回歸。同為one-stage 類算法的YOLO(you only look once)算法僅僅利用了高層卷積層提取到的信息,因此缺失了低層特征圖的語義信息,直接導(dǎo)致對于小型目標(biāo)的檢測效果并不是十分理想。相比YOLO,SSD 雖然利用了低層語義信息,但是層級與層級之間并未存在任何信息交互,而是直接將特征提取的結(jié)果丟入預(yù)測層中,對于小目標(biāo)的檢測效果仍不是十分理想。
針對SSD 對小目標(biāo)檢測效果不好的情況,F(xiàn)u 等人發(fā)表了DSSD(deconvolution single shot multibox detector)算法。該算法在SSD 基礎(chǔ)上采用了輔助卷積層以及相對應(yīng)的不對稱反卷積層來增強語義信息的感知與融合。此外,將基礎(chǔ)訓(xùn)練網(wǎng)絡(luò)換成ResNet101(residual network)。因為ResNet101 自身攜帶殘差網(wǎng)絡(luò)的特性,使其在特征提取以及網(wǎng)絡(luò)收斂方面效果良好,但是過深的訓(xùn)練網(wǎng)絡(luò)增加了特征提取過程中的計算量,由于其層數(shù)較大,不可避免地導(dǎo)致速度變慢。
由Li 等人提出的FSSD(feature fusion single shot multibox detector)解決了多尺度特征的問題。特征提取骨架仍然沿用了VGG16,在此基礎(chǔ)上增加一個輕量級的特征融合模塊,來自不同層提取出的特征最后concat一起,通過下采樣模塊生成更新的特征金字塔。
此外,后ResNet(deep residual network)時代,出現(xiàn)了SENet(sequeeze and excitation block)網(wǎng)絡(luò),通過對每個通道的全局平均池化,再用兩個非線性的fc層捕捉非線性通道的交互,外加一個sigmoid函數(shù)生成通道進(jìn)行傳值來提升通道間的注意力,解決了因為多層網(wǎng)絡(luò)導(dǎo)致層間傳遞特征丟失的問題,達(dá)到了針對小目標(biāo)物體檢測精度的提升。
基于現(xiàn)有的理論,提出一種基于SSD,利用輕量級多尺度框架及對樣本采取目標(biāo)增強的算法。在特征提取階段采用了STRFB(small target in receptive field block)的基礎(chǔ)特征提取框架,并在基礎(chǔ)框架中融入基于SENet 改進(jìn)的新的注意力通道機制。此外設(shè)計了一個通用的損失函數(shù)來覆蓋大多數(shù)具有不同采樣策略的基于區(qū)域的目標(biāo)檢測器,并在此基礎(chǔ)上提出了一個基于樣本加權(quán)網(wǎng)絡(luò)來預(yù)測樣本的任務(wù)權(quán)重。同時,對于訓(xùn)練的樣本采用數(shù)據(jù)增強的方法來增強樣本特征對于一幅圖的占比。
當(dāng)下的深度學(xué)習(xí)算法正逐漸從單一地專注于精度向犧牲部分精度達(dá)到速度與精度兼?zhèn)涞碾A段。基于候選區(qū)域并進(jìn)行分類的two-stage 算法,如圖1 所示,主要通過一個卷積神經(jīng)網(wǎng)絡(luò)來完成目標(biāo)檢測的過程。提取樣本特征結(jié)束后,訓(xùn)練主要分為兩步:首先需要訓(xùn)練RPN(region proposal network)網(wǎng)絡(luò),同時也會對特征圖進(jìn)行區(qū)域的分類,進(jìn)行目標(biāo)位置的初步預(yù)測;其次是針對預(yù)測的位置進(jìn)行精準(zhǔn)定位以及修正。
圖1 two-stage算法流程圖Fig.1 Network structure of two-stage algorithm
相比兩步走的two-stage 類算法,one-stage 類算法更傾向于直接通過主干網(wǎng)絡(luò)給出類別和位置信息,如圖2 所示,在犧牲精度的情況下大大提升了算法的速度。
圖2 one-stage算法流程圖Fig.2 Network structure of one-stage algorithm
針對小目標(biāo)的定義,一般分為相對尺寸定義與絕對尺寸定義。相對尺寸的定義是根據(jù)國際組織SPIE 制定的標(biāo)準(zhǔn),一般在256×256 的圖像中小于80個像素的目標(biāo)便可稱為小目標(biāo),即小于等于圖像整體大小的0.12%。絕對目標(biāo)則是在官方制定的VOC數(shù)據(jù)集中,尺寸小于32×32 像素的目標(biāo)可被認(rèn)定為小目標(biāo),在VOC 數(shù)據(jù)集中32×32 像素的目標(biāo)小于圖片大小的0.12%。一般由于感受野過大,且卷積神經(jīng)網(wǎng)絡(luò)中使用了池化層,導(dǎo)致特征圖上小目標(biāo)的感受野會因為特征的降維丟失部分信息,因此一個特征圖包含小目標(biāo)物體的概率就會更小。同時,特征圖的細(xì)節(jié)特征在網(wǎng)絡(luò)提取的過程中會隨著深度的增加導(dǎo)致語義信息的減少。
通過對訓(xùn)練樣本進(jìn)行數(shù)據(jù)增強,可以使圖片在更加多樣的同時,同一條件下進(jìn)行多次重復(fù)訓(xùn)練。傳統(tǒng)的數(shù)據(jù)增強包括對圖像進(jìn)行縮放并進(jìn)行長和寬的扭曲,或者可以對圖像進(jìn)行翻轉(zhuǎn),也可以對圖像進(jìn)行色域上的扭曲。倘若單純采用傳統(tǒng)方法的話,樣本便失去了多樣性,根本原因仍然是其本質(zhì)上并未保證小物體在每一幅圖像中足夠地出現(xiàn)。
對此,本文采用了首先對樣本中圖像內(nèi)部的小目標(biāo)進(jìn)行采樣,其次通過復(fù)制粘貼小對象來增強每一張圖像。如圖3 所示,在將目標(biāo)于圖像中進(jìn)行粘貼之前,選擇對其進(jìn)行隨機變化,將目標(biāo)的尺寸放大縮小的范圍定位在±20%的范圍,旋轉(zhuǎn)的尺寸規(guī)定在±15%的范圍。在自制的數(shù)據(jù)集中,如圖4 所示,若拍到的同種類型目標(biāo)比較多,便不再做類似的樣本處理,如此操作可以增強樣本中小目標(biāo)的多樣性。
圖3 VOC 數(shù)據(jù)集樣本Fig.3 VOC dataset sample
圖4 自制航拍數(shù)據(jù)集樣本Fig.4 Self-made aerial dataset sample
在粘貼樣本中的小目標(biāo)時,需要著重考慮兩點:首先,必須確定目標(biāo)是否可以與其他被檢測目標(biāo)可以重疊,通過對訓(xùn)練好的模型進(jìn)行檢測觀察是否會影響被遮擋物體的訓(xùn)練精度;其次,選擇高斯濾波器對樣本進(jìn)行噪聲處理,使得樣本中的小目標(biāo)的邊緣更加平滑。
為了解決層間信息傳遞導(dǎo)致的部分特征細(xì)節(jié)的損失,提出了基于SENet 改進(jìn)的自適應(yīng)個鄰域的信道交互機制。
在SENet 中的特征變化是通過先壓縮后擴(kuò)張來達(dá)到通道數(shù)不變的效果,壓縮帶來的降維不可避免地會給注意力預(yù)測帶來副作用,導(dǎo)致捕獲通道間的依賴低效,如圖5 所示。避免降維對于學(xué)習(xí)通道注意力非常重要,適當(dāng)跨信道可以在顯著降低模型復(fù)雜度的同時保持網(wǎng)絡(luò)的性能。此外,由于用的是兩個全連接層進(jìn)行的信道交互,會不可避免導(dǎo)致參數(shù)量增加,利用個信道信息的融合可以達(dá)到參數(shù)量不變的目的。
圖5 SENet信道交互圖Fig.5 SENet channel interaction
在平均池化階段,將需要的大小為的一維卷積給與適當(dāng)?shù)膒adding(間隔)值,便會阻止池化階段降低維數(shù),同時對于池化后得到的一維參數(shù)選擇個相鄰參數(shù)來捕獲局部跨通道交互信息,這個相鄰參數(shù)同時代表了局部跨信道交互的覆蓋率。針對=3,5,7 分別進(jìn)行實驗,發(fā)現(xiàn)=3 時,個鄰域間的信道交互達(dá)到了良好的實驗結(jié)果,如圖6 所示。
圖6 k 鄰域跨信道交互圖Fig.6 k-neighbour cross-channel interaction
在SENet的局部通信塊中,其信道權(quán)重表達(dá)式為:
由式(1)、式(2)可得()=ReLU(),證明這是一個可預(yù)測的線性模型。
在本文中,令=(),可得=()。此時針對某個參數(shù)y和它個相鄰參數(shù)的信息交互如式(3)所示。
因為需要統(tǒng)一參數(shù),所以可以令所有參數(shù)和各自的個相鄰參數(shù)信息交互,可得式(4):
整體計算的空間復(fù)雜度因為個信道的交互而大幅度降低,付出的代價是增加了部分時間復(fù)雜度。
當(dāng)下的檢測器中,區(qū)域加權(quán)對于基于區(qū)域的目標(biāo)檢測器也十分重要。相較于以往優(yōu)化函數(shù)的過分關(guān)注困難樣本,針對樣本的區(qū)域加權(quán)應(yīng)該與數(shù)據(jù)集以及需要檢測的目標(biāo)相關(guān)。
因此設(shè)計了一種針對one-stage 算法的損失函數(shù)來針對目標(biāo)檢測器,并以這個損失函數(shù)為基礎(chǔ),提出一個基于樣本的加權(quán)網(wǎng)絡(luò)來預(yù)測樣本的任務(wù)權(quán)重。
它的優(yōu)點在于可以在學(xué)習(xí)分類的同時學(xué)習(xí)回歸任務(wù)的樣本權(quán)重。這是一個數(shù)據(jù)驅(qū)動的模型,與人為調(diào)整參數(shù)無任何聯(lián)系,減少了人為的干擾。此外針對多類檢測器都比較適用。相較于過去的方法,在性能以及多樣性上有著顯著的提升。
在多任務(wù)問題中,由于每個樣本間的不確定性相對較大,導(dǎo)致采樣加權(quán)的過程較為復(fù)雜。因此不應(yīng)該將聯(lián)系寄托于樣本之間的關(guān)系,而是應(yīng)該將注意力轉(zhuǎn)至樣本和任務(wù)以及任務(wù)之間的平衡。因為樣本的權(quán)重首先應(yīng)該是取決于樣本的內(nèi)部屬性。其次,小目標(biāo)是個多任務(wù)問題,樣本的權(quán)重應(yīng)該是在不同任務(wù)間尋求一個平衡,而不單單依賴于樣本之間的聯(lián)系。因此,提出的動態(tài)加權(quán)網(wǎng)絡(luò)是基于分類和回歸之間取得平衡的一種網(wǎng)絡(luò)。
對于給定的一組錨點α∈,多任務(wù)的目標(biāo)檢測訓(xùn)練表達(dá)式為:
其中,表示回歸損失,表示采樣的錨點,與分別為訓(xùn)練樣本和預(yù)測樣本,增加S作為損失權(quán)重后,損失函數(shù)將轉(zhuǎn)化為:
當(dāng)下的損失函數(shù)的設(shè)計僅僅側(cè)重單方面,并沒有做到分類與回歸的均衡。針對損失函數(shù)的設(shè)計,在注重硬樣本的同時,也需要注重那些簡單樣本,做到分類與回歸的平衡。
因為多任務(wù)學(xué)習(xí)的過程充滿了不確定性,所以采用概率格式重新定制了樣本加權(quán)的問題,使得每個樣本特征可以有效地自動調(diào)整自身的樣本權(quán)重。這里采用了令
由式(6)、式(7)可得:
設(shè)計的樣本權(quán)重網(wǎng)絡(luò)(sample weight network)由兩層感知網(wǎng)絡(luò)MLP(multiple layer perception)組成,MLP 的輸入由分類損失、回歸損失、IOU 以及置信度組成。倘若樣本為負(fù)樣本,則其IOU 以及置信度為0。其中分類損失以及回歸損失在一定程度上可以反映預(yù)測的不確定性。如此便可以將每一維度的損失映射到更高維度的特征。這里使用函數(shù)將MLP的輸入進(jìn)行整合。
其中,、、、將四個輸入轉(zhuǎn)化為更有意義的表征,d為拼接后的特征,從樣本的拼接特征中學(xué)習(xí)用于分類損失和回歸損失的自適應(yīng)權(quán)重。最后進(jìn)行反向傳播,反向傳播過程中所有的樣本損失進(jìn)行了平均梯度下降并且反向傳播利用了檢測網(wǎng)絡(luò)和樣本加權(quán)網(wǎng)絡(luò)來優(yōu)化模型參數(shù)。
算法的整體框架依然采用的是SSD 的整體結(jié)構(gòu),沿用了STRFB 中的部分特征提取模塊的替換,在兼顧速度的同時通過模擬人類視覺的感受野來增強網(wǎng)絡(luò)對于細(xì)微特征的提取能力。其中在Conv4_3、Conv7_fc、Conv7_2雙線性插值改變尺度后對其concat的結(jié)果插入信道交互機制,并將其傳入Conv7_2 后的RFB(receptive field block)模塊。這里不選擇對Conv3 進(jìn)行尺度變化融合是因為在實驗中發(fā)現(xiàn)是否融入Conv3,mAP 沒有多少變化,但是融入Conv3 會增加網(wǎng)絡(luò)的計算量,故在最終的實驗中未融入變化的Conv3 特征。中間的BN(batch normalization)層仍然保留,用以確保模型的收斂性,防止梯度爆炸的現(xiàn)象出現(xiàn)。此外,將網(wǎng)絡(luò)中間的特征相互連接起來并加入信道交互機制。
信道交互模塊其結(jié)構(gòu)原理圖如圖7,其次需要將信道交互模塊融入特征提取模塊中。整體的算法結(jié)構(gòu)如圖8 所示。
圖7 信道交互圖Fig.7 Channel interaction
圖8 整體算法結(jié)構(gòu)圖Fig.8 Block diagram of algorithm
本文算法整體上仍然屬于輕量級的層次。首先,在網(wǎng)絡(luò)層方面,僅僅只有16 層,相對于ResNet 的50 層、100 層或者是DenseNet上百層的網(wǎng)絡(luò)少了很多層,降低了大量的計算復(fù)雜度。其次,在網(wǎng)絡(luò)的修改方面,僅僅是對淺層特征進(jìn)行了融合,并未加大計算量融合所有層特征,越深的卷積層,提取到的體征越少,對于整體的融合效果微乎其微反而會增加計算量。最后,相對于更輕量級的MobileNet 框架,精度有著大幅度的提升,因為MobileNet 算法框架面向的目標(biāo)是移動端設(shè)備,所以在大幅度降低模型復(fù)雜度的同時也降低了精度。
本次實驗選擇了Pascal VOC 官方數(shù)據(jù)集以及自制的航拍數(shù)據(jù)集。VOC 數(shù)據(jù)集分為交通工具、房屋、動物、人共計20 小類(另加背景21 類)。自制航拍數(shù)據(jù)集分為交通工具、油罐、操場、十字路口共計12 小類(另加背景13 類)。因為訓(xùn)練所用的GPU 為12 GB顯存,所以訓(xùn)練的batch-size 選擇為32,這里訓(xùn)練的總輪數(shù)為所用的數(shù)據(jù)集圖片張數(shù)除以所訓(xùn)練的batchsize,總迭代次數(shù)為250~300 間的隨機數(shù)乘以訓(xùn)練的總輪數(shù)。初始學(xué)習(xí)率設(shè)置為0.01,學(xué)習(xí)衰減系數(shù)gamma 設(shè)置為0.1。因為本文的模型并沒有選用預(yù)訓(xùn)練模型,為了避免損失率在訓(xùn)練開始就出現(xiàn)Nan的狀況,選擇將前1 000 次迭代選擇作為預(yù)熱階段,同時在50 000、100 000、150 000、200 000 次迭代處分別設(shè)置了4 個學(xué)習(xí)率衰減點用以保證學(xué)習(xí)率的穩(wěn)定下降。
本文提出的基于加權(quán)網(wǎng)絡(luò)的算法在VOC2007+2012 的官方數(shù)據(jù)集上mAP 為81.2%,相比SSD 算法有4.0 個百分點的提升,相比FSSD 有0.4 個百分點的提升。在自制的航拍數(shù)據(jù)集中mAP 為82.3%。綜合性能相較于SSD 系列的FSSD 以及DSSD,SENet 等有著綜合性方面的進(jìn)步。
首先比較的是不同值下,樣本是否采取數(shù)據(jù)增強后的結(jié)果。因此分別令=3,5,7 進(jìn)行實驗,選取奇數(shù)的原因是需要padding 將全局池化的核撐開,故需要奇數(shù)的值,若值過大也有可能導(dǎo)致全局池化后得到的樣本特征不足,得到了如表1 所示的結(jié)果。
表1 不同k 值在VOC2007+2012 下檢測結(jié)果Table 1 Test results of different k under VOC2007+2012
對比表1 中的實驗1 與實驗2 可以發(fā)現(xiàn),特征融合選用ele-sum 顯然更加合適,對比表1 中的實驗2 與實驗3,發(fā)現(xiàn)在實驗中倘若對所有卷積層加上信道交互模塊,會導(dǎo)致網(wǎng)絡(luò)臃腫,造成檢測率下降的狀況,因此最終僅選擇在融合后的層中加上信道交互模塊。對比不同值以及是否對樣本采用數(shù)據(jù)增強,發(fā)現(xiàn)當(dāng)且僅當(dāng)=3 時,最終的結(jié)果為最優(yōu)結(jié)果。檢測精度雖然略微下降,但是在檢測速度上有了較小的提升,綜合性能略有進(jìn)步。
接下來需要對比的是不同損失函數(shù)下算法UWN(unified weighted network)的檢測結(jié)果,如表2 所示。首先可以直觀地發(fā)現(xiàn),平均精度有了小幅的提升。除此之外,從表3 中可以看出在平均精度提升的同時,F(xiàn)PS 僅有略微下降,綜合性能仍然是較好的。
表2 不同損失函數(shù)在VOC2007+2012 下檢測結(jié)果Table 2 Test results of different methods under VOC2007+2012
表3 不同檢測算法在VOC2007+2012 下檢測結(jié)果Table 3 Test results of different methods under VOC2007+2012
最后需要對比的是樣本數(shù)據(jù)在不同增強方式下的檢測精度,如表4 所示,扭曲長寬、翻轉(zhuǎn)以及相關(guān)組合方案的平均精度均不如本文所提出的樣本數(shù)據(jù)增強方式。
表4 樣本數(shù)據(jù)在不同增強方式下的檢測結(jié)果Table 4 Test results of sample data under different enhancement
實際應(yīng)用中,選取了PASCAL VOC2007+2012 官方數(shù)據(jù)集以及自制的航拍數(shù)據(jù)集分別進(jìn)行了模型的訓(xùn)練以及測試。從表3 最后兩行可以看出,平均精度有小幅度提升的同時速度并沒有下降太多。從圖9官方數(shù)據(jù)集的檢測結(jié)果以及圖10 自制數(shù)據(jù)集的檢測結(jié)果中可以發(fā)現(xiàn),相比改進(jìn)之前的算法,本文算法能夠檢測到的小目標(biāo)個數(shù)以及檢測框的精確度都有著明顯的提升。
圖9 不同算法在VOC 數(shù)據(jù)集上的對比結(jié)果Fig.9 Comparison results of different algorithms on VOC dataset
圖10 不同算法在航拍數(shù)據(jù)集上的對比結(jié)果Fig.10 Comparison results of different algorithms on Aerial photography dataset
本文提出的是一種可以快速檢測的輕量級目標(biāo)檢測算法,依然沿用了輕量級的VGG16 作為主體的backbone 并進(jìn)行了部分特征提取層的替換。除此之外,對樣本采取了不同于傳統(tǒng)處理方法的樣本增強操作。此外,對損失函數(shù)也采用了加權(quán)損失函數(shù)來同時兼顧難易樣本,達(dá)到了在學(xué)習(xí)分類的同時學(xué)習(xí)回歸任務(wù)的樣本權(quán)重。在使用感受野模塊加強特征提取的前提下采用了信道融合的方法,增加了檢測精度且僅損失部分速度。在PASCAL VOC 數(shù)據(jù)集以及自制的航拍數(shù)據(jù)集中均有良好的表現(xiàn),相較單一的特征融合系列FSSD 以及SENet有不少提升。