肖貴明,丁德銳,梁 偉,魏國亮
(上海理工大學 光電信息與計算機工程學院,上海 200093)
在計算機視覺中,目標檢測一直是最基本也是最重要的研究方向之一。2012年,深度學習開始快速發(fā)展,目標檢測也隨之迎來了快速發(fā)展期?,F今,對目標檢測可分為一階段網絡構架和二階段網絡構架。一階段網絡具有參數小、速度快的特性;二階段網絡相比一階段網絡具有高精度,參數大、速度慢的特性。YOLO V1作為早期目標檢測一階段網絡框架,具有良好的速度和不錯的檢測性能,但隨著時間發(fā)展其檢測精度稍有不足。2016年,SSD橫空出世,其同時擁有高速度和高檢測精度。但是SSD也存在問題:
(1)特征提取不充分,低層級特征冗余、語義信息不高。
(2)多個輸出層的定位分支和分類分支特征共享,而定位偏向于邊緣特征,分類偏向區(qū)域局部特征。
(3)網絡維持高精度的同時無法很好的做到實時性。
針對以上幾個問題,多種對SSD的改進及其變種出現,主要集中在以下兩方面:
(1)增加檢測速度。文獻[4]通過更改主干網絡,提出MobileNet v1,使用輕量型網絡提升速度;文獻[5]在其基礎上進一步對網絡構架進行修改,提出MobileNet v2,網絡構架更小,參數量更少,速度更快;文獻[6]提出了新的輕量型網絡PeleeNet,相比MobileNet具有更少的參數量。但是提出的這些輕量型網絡通常會使得檢測精度下降。
(2)增加檢測精度:文獻[7]在SSD的網絡基礎上增加FPN塊,用于增強特征融合,提升網絡性能;文獻[8]通過將淺層特征應用到深層特征中,進一步增強網絡性能;文獻[9]通過引入注意力機制,提升網絡性能。值得指出的是,這些網絡改進在增加SSD網絡性能的同時,通常也增加了大量參數,使得網絡速度變慢。
綜上所述,本文致力于建立一種更輕、更快、更準的一階段網絡構架,同時兼顧速度、精度和參數量3方面需求,獲得的創(chuàng)新點主要包括如下兩個方面:
(1)針對速度和精度不能同時顧及的問題,本文在原有SSD的網絡上進行了改進,提出了LSSD網絡構架,在降低參數量,提升速度的同時,增加了檢測精度。
(2)在提出LSSD網絡構架的基礎上進一步對網絡頭部進行了改進,提出了SMHM模塊。在SMHM模塊中將分類頭部和定位頭部分開訓練,同時在分類頭部中使用了注意力機制、雙頭機制、權重自適應、進行了參數共享,進一步降低參數量,提高檢測精度。
相比于SSD網絡構架,LSSD主要在VGG的拓展層Conv6后面的網絡層上進行了改進,如圖1所示。
圖1 從SSD到LSSD的網絡結構變化圖Fig.1 Diagram of network structure change from SSD to LSSD
SSD網絡的通道數是先增加后減少,其中在Conv6后面的網絡層次為拓展層。SSD共有6層輸出,分別為:Conv4-3:38*38*512、Conv7:19*19*1024、Conv8-2:10*10*512、Conv9-2:5*5*256、Conv10-2:3*3*256、Conv11-2:1*1*256;在拓展層的每層輸出前,都會使用Conv:1*1*C的卷積層,減少網絡參數量;在Conv7~Conv8-2之間使用Conv:1*1*256;Conv8-2~Conv9-2之間使用Conv:1*1*128;Conv9-2~Conv10-2之間使用Conv:1*1*128;Conv10-2~Conv11-2之間使用Conv:1*1*128。
SSD輸出層以及輸出層間的卷積層的網絡設計存在兩個問題:
(1)過大的輸出層,將會帶來大量的參數,造成特征冗余,同時網絡進行分類和定位時,提取過多的特征不具有表征性。
(2)輸出層間的卷積層使用Conv:1*1*C,使通道數下降,在Conv7到Conv9-2中下降4倍,在Conv9-2~Conv11-2中下降2倍;再通過Conv:3*3*C-S恢復輸出層的通道數。雖然這在一定程度上減少了參數量,但是相鄰層級間參數的減少過多,必然會損失一定的細節(jié)。
針對上述兩個問題,本文提出了一種新的LSSD網絡構架。
針對輸出層,相比于SSD,提出的LSSD的變化主要體現在Conv6及后面的拓展層上。具體地,在SSD網絡構架中,Conv6~Conv7時使用Conv:1*1*1024對增強特征的語義并沒有什么影響,得到的Conv7:19*19*1 024中具有較多的低級特征。即Conv6的網絡通道數已經達到最高,但是此時的層級仍然不是很高,特征的表征性不夠好。為此,在本文提出的LSSD網絡構架中,采用了Conv:1*1*512,得到Conv7:19*19*512,從而減少低級語義特征的冗余。隨著層次的加深,語義信息逐漸增強,同時由于每張圖片中的物體數量有限,需要的輸出特征也并不會過多。因此,在本文構建的LSSD網絡中,Conv7之后的相鄰輸出層的通道數均相差2倍,分別為:Conv8-2:10*10*256、Conv9-2:5*5*128、Conv10-2:3*3*64、Conv11-2:1*1*32,進一步去除冗余特征,使得到的特征更具表征性。
針對輸出層間的卷積層,輸出層間的卷積層保留原有構架,并且卷積層Conv:1*1*C不對輸出層進行通道下降,卷積層Conv:3*3*C-S通道數和Conv:1*1*C的通道數保持兩倍下降。具體地,在Conv7~Conv8-2之間使用Conv:1*1*512、Conv:3*3*256-;在Conv8-2~Conv9-2之間,使用Conv:1*1*256、Conv:3*3*128-;在Conv9-2~Conv10-2之間,使用Conv:1*1*128、Conv:3*3*64;在Conv10-2~Conv11-2之間,使用Conv:1*1*64、Conv:3*3*32-。這些改進的網絡構架,使得相鄰輸出層間的特征傳遞得到良好的保留。
為了在網絡分類頭部提取出更為有效的特征,在分類頭部網絡中增加了BAM模塊,如圖2所示,這是一種注意力機制,在該模塊中,輸入特征經過Maxpool和AvgPool后,得到1*1*C的特征,然后通過Conv、Relu、Conv后再次得到1*1*C的特征,這兩次Conv主要是為了降低參數量,將得到的特征進行相加,通過Sigmoid得到最終的輸出特征。由于SMHM-LSSD網絡頭部中的通道數為128,通道數量并不多,所以本文在Conv的通道數上并未按BAM通用設置除以16,而是除以8,從而使得在參數下降的同時,保留更多的細節(jié)特征。
圖2 改進的BAM模塊Fig.2 Improved BAM module
在SSD網絡構架中,針對6個輸出層,有6個網絡頭部,其中每個網絡頭部的分類和定位層共享特征參數,同時6個網絡頭部的anchor數量有所不同,分別為4和6。在檢測中,分類和定位是兩個不同的任務,對特征的要求不同,其中分類更偏向于對特定區(qū)域敏感,而定位偏向于對物體邊界更加敏感。如果將分類和定位分支分開,分別進行訓練,這無疑會增加參數量。可能的嘗試是將SSD的6個網絡頭部合并成一個網絡頭部使得參數量減少,合并成一個網絡頭部后,如果統(tǒng)一取4個anchor,必然會影響SSD中原本6個anchor的網絡頭部的特征提??;如果統(tǒng)一取6個anchor,會使得低級特征的anchor數量過多,提取得到過多的不必要特征,從而影響檢測性能。
本文針對以上的兩個問題,提出了一種新穎的SMHM模塊,如圖3所示。在該模塊中,首先使用一個Conv:128*1*1的卷積層B統(tǒng)一通道數,使得各輸出層的輸出通道為128;將網絡頭部中分類分支和定位分支分開,分別提取特征,從而滿足分類和定位的特性需求。在這一過程中,為了解決將6個網絡頭部變?yōu)橐粋€網絡頭部帶來的特征提取問題,本文提出了以下3個策略:
圖3 SMHM模塊Fig.3 SMHM module
(1)使用BAM模塊,增強特征提取。
(2)使用了兩個分類頭部(即B0對應的頭部,B1對應的頭部),第一個分類頭部使用了一個BAM模塊進行特征的提取,第二個分類頭部使用了兩個BAM模塊進行特征提取,從而使得這兩個頭部能夠提取到具有不同表征性的特征。
(3)使用了自適應權重,通過將兩個網絡頭部進行平均池化后得到的數值作為該網絡頭部的權重,將兩個網絡頭部進行加權和,以提取得到最適合的特征。
另一方面,為了進一步降低參數量,本文在SMHM模塊中的B0、B1、B2實施共享參數。最后,在定位分支中,使用了4個Conv:128*3*3的卷積層。
本文采用PASCAL VOC數據集驗證提出的基于共享多頭模塊的輕量型一階段網絡的有效性。該數據庫包含20個類別以及一個背景類別,共計21個類別。更為具體地,VOC2007一共包含了9 963張圖片,5 011張為訓練圖片,4 952張為測試圖片;VOC2012一共包含了11 540張訓練圖片。本次實驗聯合VOC2007和VOC2012訓練集進行訓練,在VOC2007測試集上進行測試。采用了VOC2007的評價指標,即采用均值平均精度作為評價標準。
本實驗基于Ubuntu18.04平臺,使用PyTorch深度學習框架以及一塊GeForce GTX 1080GPU進行訓練。具體地,主干網絡為VGG16,輸入圖片的大小為300×300,每個batch大小為8張圖片。使用SGD進行優(yōu)化,初始學習率為0.001,總共運行了24個epoch,其中在運行第16個和第20個epoch時,下降了訓練的學習率,且下降后的學習率分別為0.000 1和0.000 01。
實驗結果見表1~表2,損失對比如圖4~圖6所示。表1為當前流行的網絡構架的實驗結果,可以看出本文提出的LSSD以及SMHM-LSSD網絡構架(表中簡寫為SLSSD)有著較高的性能,超過了當前大部分的檢測算法;LSSD300相比于SSD300性能增加0.2%;SLSSD300(4)相比于SSD300性能增加0.1%;SLSSD300(6)相比于SSD300性能增加0.6%。
圖4 分類損失圖Fig.4 Classification loss graph
圖6 總損失圖Fig.6 Total loss graph
表1 Pascal VOC2007測試結果Tab.1 Pascal VOC2007 test results
表2 每個分類器網絡的框數和總框數以及參數和測試速度Tab.2 The number of frames and the total number of frames of each classifier network,as well as the parameters and test speed
表2為SSD、LSSD以及SMHM-LSSD的anchor數量、測試速度、參數量的對比,可以看出LSSD300相比于SSD300參數量減少23.1 M,速度提升5 fps/s;SLSSD300(4)相比于SSD300參數量減少28.7 M,anchor的數量減少了,速度增加8 fps/s;SLSSD300(6)參數量減少28.3 M,但由于anchor數量的增加,使得在速度上減少2 fps/s。
圖4~圖6為SSD和SMHM-LSSD(6)的損失對比圖。圖4為分類損失圖,可以看出兩者的分類損失值基本上重合,但是相比于SSD,SMHM-LSSD(6)的分類損失更加的穩(wěn)定,究其原因是由于雙頭網絡和BAM模塊的使用使得提取得到的特征更加準確;圖5為定位損失圖,可以明顯的看出將分類分支和定位分支進行分開訓練,分支各自擁有參數后,定位分支能夠得到更好的收斂;圖6為總的損失值,可知SMHM-LSSD(6)的收斂性相比于SSD更好。
圖5 定位損失圖Fig.5 Location loss graph
本文針對經典單階段網絡構架SSD在拓展層上輸出層參數量過多,輸出層間特征減少過多的問題,提出了LSSD網絡構架;針對分類定位卷積層共享特征的問題,在減少參數量的基礎上,使用了頭部共享SMHM,提出了兩個分類頭部、運用了BAM模塊以及使用參數共享和自適應權重的策略,同時解決了由頭部共享后anchor數量變動導致特征提取性能下降的問題;本文提出的SMHM-LSSD相比于SSD,在性能、速度、參數量上都得到了改善,并且相比于別的經典網絡構架在性能上還是非常的優(yōu)異。