陳灝然,彭 力+,李文濤,戴菲菲
1.物聯網技術應用教育部工程研究中心(江南大學 物聯網工程學院),江蘇 無錫 214122
2.臺州市產品質量安全監測研究院,浙江 臺州 318000
目標檢測一直是圖像識別領域經久不衰的研究方向,通過搭建出的算法模型將圖片或者視頻中感興趣的目標提取出來。在當下的生活中,這一研究成果被廣泛應用于機器人導航、智能視頻監控、工業檢測等諸多領域。近年來,各種深度學習模型不斷被推出并且不斷被改進,從基于產生候選區域并進行分類的two-stage 算法演化至直接將提取出特征丟入卷積網絡訓練的one-stage算法。
One-stage 類算法的典型代表為Liu 等人于2016年提出的SSD(single shot multibox detector)算法,對于特征的提取采用了金字塔結構的特征提取層,針對不同層提取到的特征分別進行了分類與回歸。同為one-stage 類算法的YOLO(you only look once)算法僅僅利用了高層卷積層提取到的信息,因此缺失了低層特征圖的語義信息,直接導致對于小型目標的檢測效果并不是十分理想。相比YOLO,SSD 雖然利用了低層語義信息,但是層級與層級之間并未存在任何信息交互,而是直接將特征提取的結果丟入預測層中,對于小目標的檢測效果仍不是十分理想。
針對SSD 對小目標檢測效果不好的情況,Fu 等人發表了DSSD(deconvolution single shot multibox detector)算法。該算法在SSD 基礎上采用了輔助卷積層以及相對應的不對稱反卷積層來增強語義信息的感知與融合。此外,將基礎訓練網絡換成ResNet101(residual network)。因為ResNet101 自身攜帶殘差網絡的特性,使其在特征提取以及網絡收斂方面效果良好,但是過深的訓練網絡增加了特征提取過程中的計算量,由于其層數較大,不可避免地導致速度變慢。
由Li 等人提出的FSSD(feature fusion single shot multibox detector)解決了多尺度特征的問題。特征提取骨架仍然沿用了VGG16,在此基礎上增加一個輕量級的特征融合模塊,來自不同層提取出的特征最后concat一起,通過下采樣模塊生成更新的特征金字塔。
此外,后ResNet(deep residual network)時代,出現了SENet(sequeeze and excitation block)網絡,通過對每個通道的全局平均池化,再用兩個非線性的fc層捕捉非線性通道的交互,外加一個sigmoid函數生成通道進行傳值來提升通道間的注意力,解決了因為多層網絡導致層間傳遞特征丟失的問題,達到了針對小目標物體檢測精度的提升。
基于現有的理論,提出一種基于SSD,利用輕量級多尺度框架及對樣本采取目標增強的算法。在特征提取階段采用了STRFB(small target in receptive field block)的基礎特征提取框架,并在基礎框架中融入基于SENet 改進的新的注意力通道機制。此外設計了一個通用的損失函數來覆蓋大多數具有不同采樣策略的基于區域的目標檢測器,并在此基礎上提出了一個基于樣本加權網絡來預測樣本的任務權重。同時,對于訓練的樣本采用數據增強的方法來增強樣本特征對于一幅圖的占比。
當下的深度學習算法正逐漸從單一地專注于精度向犧牲部分精度達到速度與精度兼備的階段。基于候選區域并進行分類的two-stage 算法,如圖1 所示,主要通過一個卷積神經網絡來完成目標檢測的過程。提取樣本特征結束后,訓練主要分為兩步:首先需要訓練RPN(region proposal network)網絡,同時也會對特征圖進行區域的分類,進行目標位置的初步預測;其次是針對預測的位置進行精準定位以及修正。

圖1 two-stage算法流程圖Fig.1 Network structure of two-stage algorithm
相比兩步走的two-stage 類算法,one-stage 類算法更傾向于直接通過主干網絡給出類別和位置信息,如圖2 所示,在犧牲精度的情況下大大提升了算法的速度。

圖2 one-stage算法流程圖Fig.2 Network structure of one-stage algorithm
針對小目標的定義,一般分為相對尺寸定義與絕對尺寸定義。相對尺寸的定義是根據國際組織SPIE 制定的標準,一般在256×256 的圖像中小于80個像素的目標便可稱為小目標,即小于等于圖像整體大小的0.12%。絕對目標則是在官方制定的VOC數據集中,尺寸小于32×32 像素的目標可被認定為小目標,在VOC 數據集中32×32 像素的目標小于圖片大小的0.12%。一般由于感受野過大,且卷積神經網絡中使用了池化層,導致特征圖上小目標的感受野會因為特征的降維丟失部分信息,因此一個特征圖包含小目標物體的概率就會更小。同時,特征圖的細節特征在網絡提取的過程中會隨著深度的增加導致語義信息的減少。
通過對訓練樣本進行數據增強,可以使圖片在更加多樣的同時,同一條件下進行多次重復訓練。傳統的數據增強包括對圖像進行縮放并進行長和寬的扭曲,或者可以對圖像進行翻轉,也可以對圖像進行色域上的扭曲。倘若單純采用傳統方法的話,樣本便失去了多樣性,根本原因仍然是其本質上并未保證小物體在每一幅圖像中足夠地出現。
對此,本文采用了首先對樣本中圖像內部的小目標進行采樣,其次通過復制粘貼小對象來增強每一張圖像。如圖3 所示,在將目標于圖像中進行粘貼之前,選擇對其進行隨機變化,將目標的尺寸放大縮小的范圍定位在±20%的范圍,旋轉的尺寸規定在±15%的范圍。在自制的數據集中,如圖4 所示,若拍到的同種類型目標比較多,便不再做類似的樣本處理,如此操作可以增強樣本中小目標的多樣性。

圖3 VOC 數據集樣本Fig.3 VOC dataset sample

圖4 自制航拍數據集樣本Fig.4 Self-made aerial dataset sample
在粘貼樣本中的小目標時,需要著重考慮兩點:首先,必須確定目標是否可以與其他被檢測目標可以重疊,通過對訓練好的模型進行檢測觀察是否會影響被遮擋物體的訓練精度;其次,選擇高斯濾波器對樣本進行噪聲處理,使得樣本中的小目標的邊緣更加平滑。
為了解決層間信息傳遞導致的部分特征細節的損失,提出了基于SENet 改進的自適應個鄰域的信道交互機制。
在SENet 中的特征變化是通過先壓縮后擴張來達到通道數不變的效果,壓縮帶來的降維不可避免地會給注意力預測帶來副作用,導致捕獲通道間的依賴低效,如圖5 所示。避免降維對于學習通道注意力非常重要,適當跨信道可以在顯著降低模型復雜度的同時保持網絡的性能。此外,由于用的是兩個全連接層進行的信道交互,會不可避免導致參數量增加,利用個信道信息的融合可以達到參數量不變的目的。

圖5 SENet信道交互圖Fig.5 SENet channel interaction
在平均池化階段,將需要的大小為的一維卷積給與適當的padding(間隔)值,便會阻止池化階段降低維數,同時對于池化后得到的一維參數選擇個相鄰參數來捕獲局部跨通道交互信息,這個相鄰參數同時代表了局部跨信道交互的覆蓋率。針對=3,5,7 分別進行實驗,發現=3 時,個鄰域間的信道交互達到了良好的實驗結果,如圖6 所示。

圖6 k 鄰域跨信道交互圖Fig.6 k-neighbour cross-channel interaction
在SENet的局部通信塊中,其信道權重表達式為:



由式(1)、式(2)可得()=ReLU(),證明這是一個可預測的線性模型。
在本文中,令=(),可得=()。此時針對某個參數y和它個相鄰參數的信息交互如式(3)所示。

因為需要統一參數,所以可以令所有參數和各自的個相鄰參數信息交互,可得式(4):

整體計算的空間復雜度因為個信道的交互而大幅度降低,付出的代價是增加了部分時間復雜度。
當下的檢測器中,區域加權對于基于區域的目標檢測器也十分重要。相較于以往優化函數的過分關注困難樣本,針對樣本的區域加權應該與數據集以及需要檢測的目標相關。
因此設計了一種針對one-stage 算法的損失函數來針對目標檢測器,并以這個損失函數為基礎,提出一個基于樣本的加權網絡來預測樣本的任務權重。
它的優點在于可以在學習分類的同時學習回歸任務的樣本權重。這是一個數據驅動的模型,與人為調整參數無任何聯系,減少了人為的干擾。此外針對多類檢測器都比較適用。相較于過去的方法,在性能以及多樣性上有著顯著的提升。
在多任務問題中,由于每個樣本間的不確定性相對較大,導致采樣加權的過程較為復雜。因此不應該將聯系寄托于樣本之間的關系,而是應該將注意力轉至樣本和任務以及任務之間的平衡。因為樣本的權重首先應該是取決于樣本的內部屬性。其次,小目標是個多任務問題,樣本的權重應該是在不同任務間尋求一個平衡,而不單單依賴于樣本之間的聯系。因此,提出的動態加權網絡是基于分類和回歸之間取得平衡的一種網絡。
對于給定的一組錨點α∈,多任務的目標檢測訓練表達式為:

其中,表示回歸損失,表示采樣的錨點,與分別為訓練樣本和預測樣本,增加S作為損失權重后,損失函數將轉化為:

當下的損失函數的設計僅僅側重單方面,并沒有做到分類與回歸的均衡。針對損失函數的設計,在注重硬樣本的同時,也需要注重那些簡單樣本,做到分類與回歸的平衡。
因為多任務學習的過程充滿了不確定性,所以采用概率格式重新定制了樣本加權的問題,使得每個樣本特征可以有效地自動調整自身的樣本權重。這里采用了令

由式(6)、式(7)可得:



設計的樣本權重網絡(sample weight network)由兩層感知網絡MLP(multiple layer perception)組成,MLP 的輸入由分類損失、回歸損失、IOU 以及置信度組成。倘若樣本為負樣本,則其IOU 以及置信度為0。其中分類損失以及回歸損失在一定程度上可以反映預測的不確定性。如此便可以將每一維度的損失映射到更高維度的特征。這里使用函數將MLP的輸入進行整合。

其中,、、、將四個輸入轉化為更有意義的表征,d為拼接后的特征,從樣本的拼接特征中學習用于分類損失和回歸損失的自適應權重。最后進行反向傳播,反向傳播過程中所有的樣本損失進行了平均梯度下降并且反向傳播利用了檢測網絡和樣本加權網絡來優化模型參數。
算法的整體框架依然采用的是SSD 的整體結構,沿用了STRFB 中的部分特征提取模塊的替換,在兼顧速度的同時通過模擬人類視覺的感受野來增強網絡對于細微特征的提取能力。其中在Conv4_3、Conv7_fc、Conv7_2雙線性插值改變尺度后對其concat的結果插入信道交互機制,并將其傳入Conv7_2 后的RFB(receptive field block)模塊。這里不選擇對Conv3 進行尺度變化融合是因為在實驗中發現是否融入Conv3,mAP 沒有多少變化,但是融入Conv3 會增加網絡的計算量,故在最終的實驗中未融入變化的Conv3 特征。中間的BN(batch normalization)層仍然保留,用以確保模型的收斂性,防止梯度爆炸的現象出現。此外,將網絡中間的特征相互連接起來并加入信道交互機制。
信道交互模塊其結構原理圖如圖7,其次需要將信道交互模塊融入特征提取模塊中。整體的算法結構如圖8 所示。

圖7 信道交互圖Fig.7 Channel interaction

圖8 整體算法結構圖Fig.8 Block diagram of algorithm
本文算法整體上仍然屬于輕量級的層次。首先,在網絡層方面,僅僅只有16 層,相對于ResNet 的50 層、100 層或者是DenseNet上百層的網絡少了很多層,降低了大量的計算復雜度。其次,在網絡的修改方面,僅僅是對淺層特征進行了融合,并未加大計算量融合所有層特征,越深的卷積層,提取到的體征越少,對于整體的融合效果微乎其微反而會增加計算量。最后,相對于更輕量級的MobileNet 框架,精度有著大幅度的提升,因為MobileNet 算法框架面向的目標是移動端設備,所以在大幅度降低模型復雜度的同時也降低了精度。
本次實驗選擇了Pascal VOC 官方數據集以及自制的航拍數據集。VOC 數據集分為交通工具、房屋、動物、人共計20 小類(另加背景21 類)。自制航拍數據集分為交通工具、油罐、操場、十字路口共計12 小類(另加背景13 類)。因為訓練所用的GPU 為12 GB顯存,所以訓練的batch-size 選擇為32,這里訓練的總輪數為所用的數據集圖片張數除以所訓練的batchsize,總迭代次數為250~300 間的隨機數乘以訓練的總輪數。初始學習率設置為0.01,學習衰減系數gamma 設置為0.1。因為本文的模型并沒有選用預訓練模型,為了避免損失率在訓練開始就出現Nan的狀況,選擇將前1 000 次迭代選擇作為預熱階段,同時在50 000、100 000、150 000、200 000 次迭代處分別設置了4 個學習率衰減點用以保證學習率的穩定下降。
本文提出的基于加權網絡的算法在VOC2007+2012 的官方數據集上mAP 為81.2%,相比SSD 算法有4.0 個百分點的提升,相比FSSD 有0.4 個百分點的提升。在自制的航拍數據集中mAP 為82.3%。綜合性能相較于SSD 系列的FSSD 以及DSSD,SENet 等有著綜合性方面的進步。
首先比較的是不同值下,樣本是否采取數據增強后的結果。因此分別令=3,5,7 進行實驗,選取奇數的原因是需要padding 將全局池化的核撐開,故需要奇數的值,若值過大也有可能導致全局池化后得到的樣本特征不足,得到了如表1 所示的結果。

表1 不同k 值在VOC2007+2012 下檢測結果Table 1 Test results of different k under VOC2007+2012
對比表1 中的實驗1 與實驗2 可以發現,特征融合選用ele-sum 顯然更加合適,對比表1 中的實驗2 與實驗3,發現在實驗中倘若對所有卷積層加上信道交互模塊,會導致網絡臃腫,造成檢測率下降的狀況,因此最終僅選擇在融合后的層中加上信道交互模塊。對比不同值以及是否對樣本采用數據增強,發現當且僅當=3 時,最終的結果為最優結果。檢測精度雖然略微下降,但是在檢測速度上有了較小的提升,綜合性能略有進步。
接下來需要對比的是不同損失函數下算法UWN(unified weighted network)的檢測結果,如表2 所示。首先可以直觀地發現,平均精度有了小幅的提升。除此之外,從表3 中可以看出在平均精度提升的同時,FPS 僅有略微下降,綜合性能仍然是較好的。

表2 不同損失函數在VOC2007+2012 下檢測結果Table 2 Test results of different methods under VOC2007+2012

表3 不同檢測算法在VOC2007+2012 下檢測結果Table 3 Test results of different methods under VOC2007+2012
最后需要對比的是樣本數據在不同增強方式下的檢測精度,如表4 所示,扭曲長寬、翻轉以及相關組合方案的平均精度均不如本文所提出的樣本數據增強方式。

表4 樣本數據在不同增強方式下的檢測結果Table 4 Test results of sample data under different enhancement
實際應用中,選取了PASCAL VOC2007+2012 官方數據集以及自制的航拍數據集分別進行了模型的訓練以及測試。從表3 最后兩行可以看出,平均精度有小幅度提升的同時速度并沒有下降太多。從圖9官方數據集的檢測結果以及圖10 自制數據集的檢測結果中可以發現,相比改進之前的算法,本文算法能夠檢測到的小目標個數以及檢測框的精確度都有著明顯的提升。

圖9 不同算法在VOC 數據集上的對比結果Fig.9 Comparison results of different algorithms on VOC dataset

圖10 不同算法在航拍數據集上的對比結果Fig.10 Comparison results of different algorithms on Aerial photography dataset
本文提出的是一種可以快速檢測的輕量級目標檢測算法,依然沿用了輕量級的VGG16 作為主體的backbone 并進行了部分特征提取層的替換。除此之外,對樣本采取了不同于傳統處理方法的樣本增強操作。此外,對損失函數也采用了加權損失函數來同時兼顧難易樣本,達到了在學習分類的同時學習回歸任務的樣本權重。在使用感受野模塊加強特征提取的前提下采用了信道融合的方法,增加了檢測精度且僅損失部分速度。在PASCAL VOC 數據集以及自制的航拍數據集中均有良好的表現,相較單一的特征融合系列FSSD 以及SENet有不少提升。