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