尹震宇,樊 超1,,趙志浩1,,黃 哲1,,張飛青1,
1(中國科學院大學,北京 100049) 2(中國科學院 沈陽計算技術研究所,沈陽 110168)
目前,目標檢測在行人檢測[1]、智能機器人[2,3]、視頻監(jiān)控[4,5]等多方面廣泛應用.目標檢測已經(jīng)成為計算機視覺領域中重要的研究方向之一.目標檢測需要識別圖像中指定類別范圍的目標,并預測出目標的具體類別和相應位置.近年來,如何提升目標檢測方法的性能已經(jīng)成為該領域的研究熱點.早期傳統(tǒng)的目標檢測方法大多采用特定的特征提取方式和分類器分類的方法進行目標檢測,但是多數(shù)方法的魯棒性和實時性都比較差.隨著2012年AlexNet[6]的嶄露頭角,基于深度學習的目標檢測方法開始迅速發(fā)展,并展現(xiàn)出了良好的魯棒性和實時性.
基于深度學習的目標檢測算法包括雙階段檢測算法和單階段檢測算法兩類.雙階段檢測算法需要生成候選區(qū)域后,再進行目標分類和定位.由于雙階段檢測算法生成了精度較高的候選區(qū)域,使得雙階段檢測算法的檢測精度較高,然而隨著模型復雜度的增加,算法的實時性也有一定程度地降低.典型的雙階段檢測算法包括RCNN[7],F(xiàn)ast-RCNN[8],F(xiàn)aster-RCNN[9],Mask-RCNN[10]、R-FCN[11]等.單階段檢測算法直接通過回歸的方式實現(xiàn)目標檢測.典型的單階段檢測算法主要包括SSD[12]系列算法和YOLO[13]系列算法.為進一步提高SSD算法的檢測能力,Liu W等于2017年提出了檢測精度更高的DSSD[14]算法,但是檢測速度卻有所下降.隨后RSSD[15]、FSSD[16]和DSOD[17]也對SSD進行了相應的改進,一定程度上提升了檢測效果.2018年RetinaNet[18]算法在特征金字塔網(wǎng)絡[19](Feature Pyramid Network,F(xiàn)PN)的基礎上,通過采用新型的損失函數(shù)大幅提高了算法的檢測精度.
本文通過對SSD算法中的多尺度特征圖進行分類再提取,提升SSD算法檢測目標的能力.分類后的原始特征金字塔包括低層特征圖和高層特征圖兩類.在低層特征圖中設計了新的特征提取模型,增加了網(wǎng)絡深度;在高層特征圖中采用兩段反卷積的方式融合語義信息進行特征提取.實驗結果表明,本文算法相比經(jīng)典的單階段檢測算法,在檢測速度有所保證的前提下,也具有較高的檢測精度.
SSD采用VGG16作為主干網(wǎng)絡,利用不同尺度特征圖進行不同大小目標的檢測,是一種單階段目標檢測算法.不同卷積層對應的不同 尺度特征圖形成了SSD特征金字塔,金字塔中靠近底部的特征圖用于檢測小目標,中部的特征圖用于檢測中等目標,靠近頂部的特征圖用于檢測大目標.用于檢測目標的特征金字塔最底部的特征圖是原VGG16中的Conv4_3層,緊接著是VGG16中全連接層fc7層轉換成的Conv7層,后續(xù)通過相應尺寸的卷積核和相應的步長進行卷積,分別得到Conv8_2,Conv9_2,Conv10_2,Conv11_2層.上述6個不同尺寸的特征圖構成了SSD特征金字塔.
SSD算法通過對特征金字塔中的不同特征圖選取不同尺度的候選框,采用回歸的方法得到目標所屬各個類別的置信度和候選框與真實區(qū)域之間的方差.SSD特征金字塔中,靠近頂部的特征圖語義信息豐富、邊緣信息不足、分辨率低;而靠近底部的特征圖語義信息較弱,邊緣信息豐富、分辨率高.因此,SSD算法采用多尺度檢測即從底部到頂部檢測的目標大小逐漸變大的方式能夠有效避免特征圖的缺陷.然而,在SSD模型中,真正檢測小目標的特征圖只有最底部的Conv4_3層,且由于該層處于卷積網(wǎng)絡中的淺層導致其特征非線性程度不夠,因此SSD模型檢測小目標的精確度較差.同時檢測中等目標和大目標的特征圖由于分辨率的降低,導致一定程度上的特征丟失,容易出現(xiàn)漏檢的情況.本文通過分析SSD模型中的不足,提出了針對SSD多尺度特征圖進行分類再提取的目標檢測算法.
反卷積也叫轉置卷積,是一種特殊的正向卷積.首先按照一定比例通過補零來擴大輸入圖像的尺寸,接著旋轉卷積核,再進行正向卷積.通過對特征圖進行反卷積可以獲得更高分辨率的特征圖.然而反卷積后的特征圖并不能恢復卷積過程中丟失的特征信息,即反卷積后的特征圖與卷積前的特征圖并不完全相同.反卷積類似于其他上采樣,比如雙線性插值、最近鄰插值等方式,實現(xiàn)了圖像分辨率的提高.因此,對于SSD特征金字塔中靠近頂部的特征圖,采用反卷積的方式能夠生成分辨率更高的特征圖,將其與尺寸一致的相應原始特征圖進行融合,會使SSD特征金字塔中的原始特征圖融入更深層的語義信息.
結合反卷積的實現(xiàn)過程,不難發(fā)現(xiàn)當反卷積次數(shù)過多時,累積的噪聲信息會越來越多.當噪聲信息過多時,通過反卷積的方式生成的特征圖將不再有效.為了避免反卷積次數(shù)過多引發(fā)的噪聲信息累積過大的問題,本文提出了一種兩段反卷積的方式.
盡管反卷積實現(xiàn)了圖像分辨率的提高,但是很容易出現(xiàn)不均勻重疊的現(xiàn)象.當反卷積過程中的卷積核邊長無法被卷積步長整除時,就會出現(xiàn)這種現(xiàn)象.實踐中,這種現(xiàn)象在神經(jīng)網(wǎng)絡中很難通過權值的學習來避免.這種重疊現(xiàn)象在二維結構中就會形成許多棋盤狀的圖案,稱之為棋盤格效應.棋盤格效應是一種典型的人造物現(xiàn)象,為了有效地抑制這種現(xiàn)象,本文提出了一種回流式反卷積的方式.
SENet[20]首先對輸入特征圖進行全局平均池化(Global Average Pooling,GAP),得到1×1×C的特征圖,其中C為通道數(shù)目;然后經(jīng)過全連接層(Fully Connected layers,F(xiàn)C)得到1×1×(C/16),將通道數(shù)進行壓縮,減少計算量,全連接層后緊跟BN層和ReLU層;隨后繼續(xù)進行全連接層恢復1×1×C的特征圖,并緊跟BN層和Sigmoid層,此時特征圖包含的C個參數(shù),可以作為原始輸入特征圖各個通道的重要性權重;最后通過乘法逐通道加權到初始特征上,完成在通道維度上對原始特征的重新標定.
3.1.1 添加Conv3_3
SSD特征金字塔中包含6個不同尺度的特征圖,通過先驗框的設計分別用來檢測不同尺度大小的目標.多尺度特征圖先驗框的設置包括檢測尺度、長寬比和數(shù)目.Conv4_3的先驗框尺度是單獨設置的,其他特征圖的先驗框尺度設置遵循線性遞增的規(guī)則:
(1)
min_sizek=sk×input_size
(2)
max_sizek=sk+1×input_size
(3)
為了提高對小目標的檢測能力,本文考慮添加新的卷積層.由于Conv3_3與檢測小目標的Conv4_3最接近,且所檢測的目標比Conv4_3更小,而Conv2_3相比Conv3_3距離Conv4_3較遠,且由于處在更低層,特征表示不如Conv3_3.因此,本文特征金字塔中添加了Conv3_3作為最底部的特征圖,用來檢測更小尺度的目標.添加Conv3_3后的特征金字塔中各層先驗框的設置如表1所示.本文SSD模型的圖片輸入尺寸為300×300.
3.1.2 特征圖分類
添加新的特征層Conv3_3后,對7個多尺度特征圖進行分類,分類后的的特征金字塔如圖1所示.Conv3_3和Conv4_3被歸為一類,即低層特征圖.低層特征圖處在整個神經(jīng)網(wǎng)絡較淺層,非線性程度不夠,特征表示不足,且缺乏語義信息.
表1 多尺度特征圖先驗框Table 1 Multiscale feature map prior box
然而低層特征圖邊緣信息豐富,且分辨率較高,能夠較好地保存小目標的信息.因此低層特征圖通過適當?shù)靥卣魈崛『竽軌蛴行z測小目標.Conv7,Conv8_2,Conv9_2,Conv10_2和Conv11_2被歸為一類,即高層特征圖.高層特征圖處于整個神經(jīng)網(wǎng)路的中部和末端,邊緣信息缺乏,分辨率較低.然而高層特征圖非線性程度較高,語義信息豐富,能夠有效表示中等目標和大目標.因此高層特征圖經(jīng)過適當上采樣提高分辨率并融合語義信息,能夠有效地檢測中等目標和大目標.
圖1 多尺度特征圖分類Fig.1 Multi-scale feature maps classification
為了提高低層特征圖的非線性程度,加強特征表示,進而有效檢測出小目標,本文設計了SFE模塊.SFE模塊的具體結構圖如圖2所示.SFE模塊主要包含兩部分內(nèi)容:第1部分
圖2 SFE模塊Fig.2 SFE module
是采用不同感受野的空洞卷積進行特征提取和特征融合;第2部分是采用SENet對不同感受野提取并融合出的新特征建立通道之間的相互依賴關系.其中,第1部分的輸出是第2部分的輸入.兩部分連接在一起組成了SFE模塊.
SFE模塊的第1部分首先對輸入的特征圖進行1×1卷積,將通道數(shù)轉換為初始的四分之一,目的是為了減少參數(shù)量,提升模型訓練及測試的速度.卷積完成后需要進行BN和PReLU,獲得壓縮通道數(shù)后的特征圖.然后對壓縮通道數(shù)后的特征圖分別進行4個不同感受野大小的空洞卷積,卷積核的有效計算參數(shù)均為3×3,stride=1,膨脹系數(shù)dilation分別設置為1,2,4,6,對應的pad也分別設置為1,2,4,6.將空洞卷積得到的四組特征圖分別進行BN和PReLU之后,采用級聯(lián)(Concatenate)的方式進行特征融合,得到與初始特征圖通道數(shù)相同的新的特征圖.為彌補空洞卷積帶來的網(wǎng)格效應,將新的特征圖與初始特征圖進行各元素求和(element-wise sum)的方式進行特征融合,得到了多個感受野下的特征提取和融合后的初步結果,并作為第2部分的輸入特征圖.SFE模塊的第2部分通過SENet完成在通道維度上對輸入特征的重新標定,最終獲得多個感受野下的特征融合結果.
本文將低層特征圖中Conv3_3和Conv4_3,分別輸入至兩個SFE模塊,輸出得到加強特征表示后的特征圖,作為最終進行檢測的特征圖.
為了提高高層特征圖的分辨率并融合更深層的語義信息,本文采用了兩段反卷積的方式進行上采樣,并采用回流式反卷積的方法減弱反卷積過程中可能存在的棋盤格效應.具體的實現(xiàn)結構圖如圖3所示.
圖3 兩段反卷積Fig.3 Deconvolution with two sections
兩段反卷積分別從Conv11_2和Conv9_2開始,分別與其低兩層的特征圖進行融合,使得融合后的特征圖添加了來自更深層的語義信息.反卷積采用兩段而不是單獨一段,可以避免因為反卷積次數(shù)過多而導致的噪聲信息過多的問題.進行特征融合前,尺度小的特征層經(jīng)過反卷積將特征圖分辨率與待融合特征圖分辨率保持一致.特征融合首先采用級聯(lián)融合的方式,并在級聯(lián)融合后進行1×1卷積,恢復融合前的通道數(shù)目.反卷積操作的計算公式如下:
d=s×(i-1)+k
(4)
其中,s代表步長,k代表卷積核尺寸,i為輸入特征圖尺寸,d為反卷積輸出特征圖尺寸.根據(jù)反卷積操作計算公式,設計的反卷積操作參數(shù)如表2所示.
第1段反卷積中,Conv11_2直接作為檢測特征層,并進行反卷積得到Deconv11;Comb_conv10_2是由Conv10_2和Deconv11融合得到的檢測特征層,并對其反卷積得到Deconv10;Comb_conv9_2是由Conv9_2和Deconv10融合得到的檢測特征層.
第2段反卷積中,首先對Conv9_2進行了連續(xù)的3次反卷積,最終獲得Deconv9并與Conv8_2融合得到Comb_conv8_2作為檢測特征層;從Comb_conv8_2進行反卷積后需要獲得尺寸為19×19的特征圖,直接進行反卷積計算得到的參數(shù)中,卷積核尺寸k不能被步長s整除(其中k=3,p=1,s=2),因此會產(chǎn)生棋盤格效應.為了減弱棋盤格效應,此處先將Comb_conv8_2進行反卷積獲得尺寸為20×20的特征圖Deconv8_1,再進行卷積獲得尺寸為19×19的特征圖Deconv8,將Deconv8與Conv7進行特征融合得到Comb_conv7作為檢測特征層.
表2 反卷積參數(shù)Table 2 Deconvolution parameters
特征圖Deconv8的獲取過程中,先通過反卷積獲取比目標尺寸更大的特征圖,再通過卷積進行下采樣得到與目標尺寸相同的特征圖的過程稱之為回流式反卷積.這種反卷積的方式與傳統(tǒng)直接采用反卷積的方式相比,有效減弱了棋盤格效應.同時與采用雙線性插值或最近鄰插值等方式先進行上采樣,再進行卷積實現(xiàn)下采樣的方式相比,回流式反卷積的方式計算量更少,網(wǎng)絡速度更快.
本文設計了多尺度特征圖分類再提取的網(wǎng)絡結構,其融合了上述SFE模塊和反卷積結構.如圖4所示,本文模型改進了了SSD模型中的多尺度特征圖結構,并保留VGG16作為主干網(wǎng)絡.對SSD特征金字塔中的特征圖進行分類后,在低層特征圖中嵌入了SFE模塊,加強了低層特征圖的特征表示;在高層特征圖中嵌入了兩段反卷積來融合語義信息,并在第2段反卷積中采用了回流式反卷積的方式減弱棋盤格效應.
圖4 多尺度特征圖分類再提取模型Fig.4 Module based on the multi-scale feature maps classification and feature extraction
本文實驗硬件配置為Intel Xeon(R) CPU E5-1603 v4@2.8GHz CPU,32G運行內(nèi)存,NVIDIA GeForce GTX 1080Ti 顯卡;實驗的軟件環(huán)境為ubuntu18.04系統(tǒng),采用Caffe深度學習框架,開發(fā)語言為Python.本文實驗所用數(shù)據(jù)集為PASCAL VOC 數(shù)據(jù)集.使用 VOC2007 和 VOC2012 數(shù)據(jù)集進行訓練,數(shù)據(jù)集共包括20個類別.測試集為VOC2007數(shù)據(jù)集中的測試數(shù)據(jù).
實驗設置模型的輸入圖像分辨率為300×300,Batch size設為32.模型訓練策略基本采用了SSD的策略,包括數(shù)據(jù)增強、難例挖掘、先驗框尺度及比例設置以及損失函數(shù)等.優(yōu)化算法采用了隨機梯度下降法SGD(Stochastic Gradient Descent).針對訓練過程中的學習率大小,訓練過程經(jīng)過多次調(diào)整,得到了最優(yōu)的學習率變化方案.以PASCAL VOC 數(shù)據(jù)集進行訓練和測試的模型,基本都以mAP(mean average precision)作為衡量精度的指標,并且IoU(Intersection over Union)閾值統(tǒng)一設為0.5.實驗共生成了兩種IoU閾值下的模型.第1種是將IoU閾值設為0.4,以VGG作為預訓練模型,得到了mAP值為82.1的模型;第2種以第1種生成的模型作為預訓練模型,并修改IoU閾值為0.5,得到了mAP值為79.6的模型.設置的初始學習率為2.5×10-3,初始學習率衰減因子為0.2,分別在10000次、25000次和35000次進行學習率調(diào)整,其對應的學習率分別為5×10-4、1×10-4和2×10-5.隨后調(diào)整學習率衰減,在50000次和60000次分別以1×10-5和1×10-6的學習率進行訓練.最終總共迭代65000次.將本文模型與傳統(tǒng)的SSD算法和DSSD算法進行對比,得到的mAP值及各類對應的AP值的結果如表3所示.其中SSD300*是SSD300經(jīng)過數(shù)據(jù)增強后更新的結果.
從檢測結果的對比情況,可以看出本文提出的算法相比SSD算法,所有類別的AP值均有提升;相比DSSD算法,大多數(shù)類別的AP值也獲得了提升.本文算法的mAP值也是3個算法中的最優(yōu)結果,相比傳統(tǒng)的SSD算法,提升了2.4%.
表3 不同算法各個類別目標檢測精度對比結果Table 3 Comparison results of object detection accuracy in different categories of different algorithms
此外,為了更準確地衡量本文算法模型的整體性能,增加了FPS(frames per second)作為新的衡量指標,用于衡量模型的檢測速率.同時選取了一些與本文算法輸入尺度差別不大且均在VOC2007 測試集上測試結果較好的單階段目標檢測算法作為對比對象.對比結果如表4所示.
圖5是目前具有代表性的單階段目標檢測算法檢測性能對比圖.這些算法的訓練數(shù)據(jù)集與本文算法相同,均是VOC2007和VOC2012數(shù)據(jù)集,測試集也均采用了VOC2007數(shù)據(jù)集.圖中橫坐標是FPS,代表每秒鐘檢測的圖片數(shù)目.FPS值反映了當前算法在本文實驗環(huán)境下的檢測速度.圖中縱坐標是mAP,代表了算法的檢測精度.根據(jù)圖5可以得到,本文算法相比SSD算法,由于模型參數(shù)變多,結構更為復雜,導致
表4 在VOC2007測試集上的測試結果Table 4 Test results on VOC2007 test dataset
圖5 算法速度精度對比圖Fig.5 Algorithm FPS and mAP comparison chart
圖6 檢測結果對比Fig.6 Comparison of test results
檢測速度有所下降,但是模型的檢測精度卻提升了2.4%;同時本文算法相比其他算法,精度僅低于Retinanet500,然而檢測速度卻比Retinanet500快不少,且Retinanet的輸入圖片尺寸明顯更大,一定程度上也使得mAP值更大.本文算法與YOLOv3-320算法相比,檢測速度略慢,檢測精度相同.然而YOLOv3-320輸入圖片尺寸更大,導致目標尤其是小目標分辨率更高,更易于檢測.當輸入圖片尺寸下降到與本文算法一致時,理論上其mAP值也會有所下降,即本文算法的檢測精度略優(yōu).
為了更為直觀地展示本文算法相比SSD算法的性能提升,圖6給出了兩種算法在3張測試集圖片上的檢測效果圖.其中左側為SSD算法的識別結果,右側為本文算法的識別結果.圖6(a)中可以看出,本文算法可以識別出SSD算法漏檢的部分目標;圖6(b)中可以看出,對于有遮擋的目標和部分小目標,本文算法比SSD算法識別效果更好;圖6(c)中可以看出,本文算法不僅可以識別出SSD漏檢的部分目標,同時也能修正SSD誤檢的部分目標,獲得正確的目標類別.總之,本文算法相比SSD算法,對于目標類別的識別更為精確,且對目標給出了準確的定位,同時在部分復雜場景下,避免了SSD算法出現(xiàn)的漏檢和誤檢問題.
為提高傳統(tǒng)SSD算法目標檢測的性能,提出了一種對多尺度特征圖進行分類再提取的目標檢測算法.算法將多尺度特征圖分為低層和高層兩類特征圖.低層特征圖中采用設計的SFE模塊進一步提取特征;高層特征圖中采用設計的兩段反卷積進行語義信息融合,并采用設計的回流式反卷積減弱棋盤格效應.實驗結果表明,本文算法相比經(jīng)典的SSD系列算法,精度優(yōu)勢明顯;相比YOLO系列算法,性能與目前最新的YOLOv3相比,檢測精度也略有優(yōu)勢.同時本文提出的SFE特征提取模塊和回流式反卷積的方法有較好的移植性,可以在一定程度上提升其他算法的性能.下一步將針對算法中部分模塊的移植性進行研究,將其應用于更多的算法上;同時將進行算法模型的進一步簡化,特別是SFE模塊中參數(shù)量的進一步減少,從而提升算法的檢測速度.