席 磊,劉增力
(1.昆明理工大學(xué) 信息工程與自動化學(xué)院,云南 昆明 650500;2.昆明理工大學(xué) 云南省人工智能重點實驗室,云南 昆明 650500)
基于近年來卷積神經(jīng)網(wǎng)絡(luò)、深度學(xué)習(xí)技術(shù)以及計算機技術(shù)的進步,以神經(jīng)網(wǎng)絡(luò)為代表的目標檢測技術(shù)日益凸顯出其卓越的性能和巨大的潛力。自AlexNet[1]誕生后,神經(jīng)網(wǎng)絡(luò)用來進行目標檢測的工作逐漸增多。各種目標檢測模型層出不窮,同時檢測性能不斷提升。目前,目標檢測模型主要分為兩類,一類是以RCNN[2]為代表的雙階目標檢測器,另一類是以 SSD[3]和 YOLO[4]為代表的單階目標檢測器。SSD是最早出現(xiàn)的單階檢測器之一,不僅達到了實時檢測要求,而且在精度上取得了較好的效果。但是,SSD本身的結(jié)構(gòu)并不完善。隨著技術(shù)的更迭,SSD的改進版不斷出現(xiàn)。DSSD[5]利用性能更好的殘差網(wǎng)絡(luò)替代VGG。殘差網(wǎng)絡(luò)相對于VGG有著更好的特征提取能力,結(jié)合反卷積進行特征融合后實現(xiàn)了更高的精度,特別是對小目標的檢測,取得了更好的效果。但是,由于殘差網(wǎng)絡(luò)計算量的增加,它的檢測速度稍慢。FSSD[6]同樣采用特征融合策略將低層的特征圖拼接融合,將得到的新的尺寸為38×38的低層特征作為基礎(chǔ)進行后續(xù)的特征提取工作,提高了低層特征信息的提取能力。DenseSSD[7]在結(jié)構(gòu)中設(shè)計了DenseSkip模塊,模塊內(nèi)部采用類似瓶頸結(jié)構(gòu),進行多次1×1+3×3的卷積。它的特征復(fù)用類似DenseNet,且使用特征金字塔方式進行特征融合。RFBNet[8]則從感受野大小差異帶來的信息差異出發(fā),設(shè)計了易于遷移使用的RFB模塊,利用大小不同的感受野的卷積核進行特征提取。
本文提出一種改進的目標檢測模型MSSD,結(jié)合深度可分離卷積的優(yōu)勢,采用新的特征融合方式,進一步挖掘了模型本身的結(jié)構(gòu)優(yōu)勢,有效提高了模型的檢測性能。
SSD 的骨干網(wǎng)絡(luò)為 VGG16[9]。VGG 憑借其卓越的性能獲得了ImageNet 2014挑戰(zhàn)賽分類的亞軍和定位的冠軍。VGG16包含13個卷積層、5個池化層以及3個全連接層。筆者將VGG16加以改動,去掉VGG16的全連接層后,添加卷積層conv6和conv7,13個卷積層不變,將原作的第5個池化層的尺寸從2×2變?yōu)?×3。此外,新增的conv6采用膨脹卷積的思想,在conv7后添加額外的卷積處理。
SSD可接受的輸入尺寸有300×300和512×512兩種。SSD300 由 conv4-3、conv7、conv8-2、conv9-2、conv10-2及conv11-2輸出的特征圖做預(yù)測,大小分別為38、19、10、5、3、1。在每個特征圖上依次設(shè)置不同尺寸的預(yù)選框,共計有8 732個預(yù)選框。每個待預(yù)測特征圖會通過各自的分類和位置回歸網(wǎng)絡(luò),即如圖1所示的cls和loc。檢測框經(jīng)過NMS篩選、剔除,得到最終的目標輸出。
深度可分離卷積(Depthwise Separable Convolution)最早由 Sifre[10]提出。這種思想成為 Xception[11]和MobileNets[12]的核心。深度可分離卷積與普通卷積的不同在于卷積過程。若輸入特征圖尺寸為C×H×W,卷積核尺寸為k×k,C表為輸入通道數(shù),H和W分別為高和寬,O為輸出通道數(shù),則對于普通卷積可得到其參數(shù)量為k×k×O×C。
對于深度可分離卷積,可以分為兩步進行。第一步進行卷結(jié)核為k×k的深度卷積。該卷積在通道空間上實現(xiàn),即針對輸入的C個通道分別進行k×k的卷積,輸出通道數(shù)不變。該過程的參數(shù)量為k×k×C。第二步是對上述結(jié)果進行逐點卷積(Pointwise Convolution),即1×1的卷積,輸出通道數(shù)為O,則參數(shù)量為1×1×C×O,總參數(shù)量為k×k×C+C×O,過程如圖2所示。
圖1 SSD結(jié)構(gòu)
圖2 深度可分離卷積
以conv7的輸出特征圖1 024×19×19為例,當(dāng)卷積核為3×3、輸出通道數(shù)512時,可以計算出深度可分離卷積的參數(shù)量只有普通卷積的參數(shù)量1/9左右。雖然深度可分離卷積的參數(shù)量有所減少,但是仍然能夠保證特征提取信息的質(zhì)量。
本文設(shè)計的MSSD(Modified SSD)模型結(jié)構(gòu)如圖3所示。其中,MDSC表示改進的深度可分離卷積模塊,作為特征提取基礎(chǔ)單元,扮演的是原始SSD中額外層的角色。同時,MSSD使用相鄰層特征融合的方式加強了特征的復(fù)用,使得獲取的新特征在信息表達層面更進一步。
借鑒深度可分離卷積的思想,本文設(shè)計了一種改進的深度可分離卷積模塊MDSC(Modified Depthwise Separable Convolution),結(jié)構(gòu)如圖4所示。圖4中的3×3表示深度卷積,1×1為逐點卷積,經(jīng)過批歸一化層(Batch Normalization,BN)和激活層(Rectified Linear Unit,ReLU)后緊跟另一個深度卷積和逐點卷積。雖然單純的兩次深度可分離卷積對參數(shù)量的減少有幫助,但不足以提高特征的表達。為了獲得更多有用的信息,在此基礎(chǔ)上增加兩個恒等映射連接進行兩次信息融合。一次是在兩次深度可分離卷積后,另一次是在最大池化后。
圖3 MSSD結(jié)構(gòu)
圖4 MDSC模塊
特征圖融合一般有兩種方式。第一種是通道合并,待融合特征圖的通道數(shù)可以不同,相當(dāng)于拓寬了特征圖的通道數(shù)。第二種是元素相加,要求合并前特征圖的通道數(shù)相同,合并后特征圖通道數(shù)不發(fā)生改變。本模型所有的融合方式均采用第二種方式。
SSD輸出6個特征圖預(yù)測,相互之間并無交流。由于眾多模型已經(jīng)證明,不同特征圖之間的有效融合可以在一定程度上提高模型的性能,因此本文也將使用特征融合的方法對不同輸出層的特征圖進行融合,期望得到更豐富的信息。
較為流行的對特征融合的處理方式是特征金字塔 FPN[13],如圖 5(a)所示。通過對高層特征上采樣、逆向和低層特征融合以及高層語義信息和低層細節(jié)信息互補,得到新的特征輸出,有效地將高低層特征的優(yōu)勢結(jié)合在一起。考慮到對于一系列尺寸逐漸減小的特征圖,相鄰尺寸特征圖之間的信息表達更加接近,相互之間的聯(lián)系更為緊密,因此對相鄰特征圖進行單獨處理。FPN這種融合方式聯(lián)合了多層特征,在得到融合調(diào)整后不斷進行上采樣,會帶來較多的冗余信息。因此,本文采用一種新的特征融合方式,即緊鄰特征圖融合(Adjacent Features Fusion,AFF),結(jié)構(gòu)如圖5(b)所示,其中紅色表示上采樣,綠色表示下采樣。第i層特征fi緊鄰上下兩層的特征分別為fi-1和fi+1,將i-1層進行下采樣操作D,將i+1層進行上采樣操作U,之后和fi融合得到新的特征輸出Fi,即:
上采樣通過反卷積實現(xiàn),下采樣通過最大池化實現(xiàn)。所有添加的卷積層后緊跟BN層,達到加速模型訓(xùn)練和避免過擬合的目的。待融合特征圖通道數(shù)不同時,則通過1×1卷積完成變換。
圖5 兩種特征融合方式
本次實驗平臺為Ubuntu 18。在GPU上加速訓(xùn)練,GPU版本為GTX 1080Ti。深度學(xué)習(xí)框架為Pytorch。模型在PASCAL VOC 2007和VOC 2012訓(xùn)練集上訓(xùn)練,在VOC 2007測試集上測試。
首先,訓(xùn)練SSD+MDSC的模型,即利用MDSC替換原始額外層。訓(xùn)練時,設(shè)置batch_size為32,使用隨機梯度下降優(yōu)化算法,動量設(shè)置為0.9。采用預(yù)熱訓(xùn)練策略進行500次預(yù)熱訓(xùn)練后,學(xué)習(xí)率從0逐漸增大至0.001,之后開始穩(wěn)定訓(xùn)練。隨后在80 000次和100 000次迭代時,學(xué)習(xí)率依次衰減為0.1,共進行120 000次訓(xùn)練。它的模型精度為78.3%,提升了1.1%,證明了所采用的MDSC模塊的有效性。
其次,在SSD+MDSC的基礎(chǔ)上采用AFF融合方式進行訓(xùn)練,即對本文提出的MSSD進行訓(xùn)練。學(xué)習(xí)率衰減發(fā)生在90 000次和110 000次??紤]到模型復(fù)雜度的提升,調(diào)整訓(xùn)練次數(shù),共進行130 000次訓(xùn)練。實驗發(fā)現(xiàn),當(dāng)去掉3×3特征圖的下采樣,且1×1特征圖不參與融合而獨立輸出預(yù)測時,模型的檢測精度并未受到影響。為了減少模型計算量,最終采用的模型為去掉3×3下采樣的模型結(jié)構(gòu)。可以發(fā)現(xiàn),在測試集上的精度由78.3%增長至79.1%,性能提升0.8%。
再次,為驗證AFF的有效性,對特征金字塔融合方式進行對比,即采用SSD+MDSC+FPN的模型進行訓(xùn)練。該模型在測試集上的mAP為78.7%,與AFF的融合方式有0.4%的差距,表明所采用的緊鄰特征圖融合方法更有效。
最后,對輸入尺寸為512×512的圖片進行訓(xùn)練,batch_size設(shè)置為16,同樣進行預(yù)熱訓(xùn)練,學(xué)習(xí)率0.001在90 000次和110 000次時依次減為原來的0.1,總計訓(xùn)練135 000次,測試集上其mAP達到81.8%。
5種模型在VOC 2007測試集的訓(xùn)練結(jié)果,如表1所示。
表1 VOC 2007測試集結(jié)果
MSSD300和SSD300在各類檢測中的性能對比,如表2所示。
表2 MSSD和SSD對VOC2007測試集各類別目標的檢測精度mAP
可以看出,除了對boat和cat兩類目標的檢測精度有所下降外,本文提出的MSSD在各個類別目標的檢測精度都有所提升,尤其是對bottle和plant的檢測精度,分別提升了7.10%和3.31%。
MSSD與其他模型的檢測精度對比如表3所示。表3中的模型均在VOC 2007和VOC 2012訓(xùn)練集上訓(xùn)練,并且在VOC 2007測試集上測試,測試所采用的backbone也經(jīng)過預(yù)訓(xùn)練。對比本文提出的MSSD與SSD的各種代表性變體可以發(fā)現(xiàn),其檢測精度優(yōu)于SSD的眾多變體,且速度也占有優(yōu)勢。SSD樣本檢測結(jié)果如圖6所示,MSSD樣本檢測結(jié)果如圖7所示。
表3 各種檢測模型的檢測精度對比
圖6 SSD樣本檢測結(jié)果
圖7 MSSD樣本檢測結(jié)果
本文提出了一種結(jié)合深度可分離卷積和新型特征融合方法的目標檢測模型MSSD。采用改進的深度可分離卷積模塊代替SSD中的部分卷積層,既提高了精度,又在一定程度上節(jié)省了參數(shù),并在此基礎(chǔ)上使用緊鄰特征圖融合的方法對輸出特征進行重復(fù)利用,效果略優(yōu)于特征金字塔式的融合方式。最終得到的改進模型MSSD在速度和精度上取得了很好的平衡,其綜合性能優(yōu)于一些SSD的變體。下一步將對MSSD進行優(yōu)化,對MDSC模塊做進一步完善,對融合過程的采樣做優(yōu)化處理。