趙 錁,賈 可(通信作者),李 航,周錄慶
(成都信息工程大學(xué)計(jì)算機(jī)學(xué)院 四川 成都 610225)
目前,基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法包括兩階段目標(biāo)檢測(cè)算法和單階段目標(biāo)檢測(cè)算法兩大類。兩階段目標(biāo)檢測(cè)算法首先對(duì)輸入的圖像進(jìn)行候選區(qū)域的選擇,然后對(duì)候選區(qū)域進(jìn)行分類和定位。典型的兩階段目標(biāo)檢測(cè)算法有:R-CNN、Fast R-CNN、Mask R-CNN等。而單階段目標(biāo)檢測(cè)算法沒(méi)有候選區(qū)域選擇這一階段。典型的單階段目標(biāo)檢算法有:YOLOv1、YOLOv2、SSD等。隨著科技的發(fā)展,目標(biāo)檢測(cè)技術(shù)在生活中被廣泛使用[1-2]。然而卷積神經(jīng)網(wǎng)絡(luò)由于其構(gòu)建模塊固定的幾何結(jié)構(gòu)天然地局限于建模的幾何變換,導(dǎo)致檢測(cè)效果不理想,而可形變卷積可以提高模型對(duì)發(fā)生形變物體的建模能力。黃鳳琪等[3]提出一種基于可形變卷積的YOLO檢測(cè)算法。張善文等[4]在VGG的基礎(chǔ)上提出一種可形變VGG模型,應(yīng)用于害蟲檢測(cè)。
雖然可形變卷積網(wǎng)絡(luò)在檢測(cè)精度上相較于普通卷積網(wǎng)絡(luò)有很大提升,但是可形變卷積會(huì)產(chǎn)生巨大的計(jì)算開銷,導(dǎo)致檢測(cè)速度降低。本文提出了一種方法:采用可形變逐點(diǎn)卷積來(lái)提升檢測(cè)速度。通過(guò)實(shí)驗(yàn)證明,可形變逐點(diǎn)卷積同樣能夠增強(qiáng)卷積核對(duì)感受野的適應(yīng)能力,來(lái)適應(yīng)不同形狀和大小的幾何形變。除此之外,結(jié)合使用深度卷積和可形變逐點(diǎn)卷積所帶來(lái)的計(jì)算量相對(duì)較少,從而降低計(jì)算開銷,提升檢測(cè)速度。
普通的卷積操作使用固定的卷積核,感受野范圍也相對(duì)固定,因此難以適應(yīng)目標(biāo)的非規(guī)則幾何形變??尚巫兙矸e通過(guò)引入可學(xué)習(xí)的像素偏移量,使得卷積核不受固定位置的限制,可以進(jìn)行伸縮變化,尋找最合適的感受野。但與普通卷積相比,可形變卷積引入了較高的額外計(jì)算量,主要用于其中所需的形變插值計(jì)算。針對(duì)以上問(wèn)題,本文提出可形變逐點(diǎn)卷積,能有效地縮減計(jì)算量,降低計(jì)算消耗,在保持非規(guī)則感受野特性并獲得精度提升的同時(shí),有效提高檢測(cè)速度。
在普通卷積中,設(shè)輸入特征圖為x,卷積核為w,x上任意一點(diǎn)P0的一個(gè)3×3采樣區(qū)R={(-1,-1),(-1,0),…,(0,1),(1,1)},則P0點(diǎn)對(duì)應(yīng)輸出特征圖y上的操作如式(1)所示:
其中Pn枚舉了R中的每一個(gè)位置,最后對(duì)采樣點(diǎn)進(jìn)行加權(quán)運(yùn)算。
在可形變卷積中,引入偏移量{ΔPn|n=1,2,…,N},N=|R|,將經(jīng)過(guò)卷積計(jì)算得出的像素偏移量與原始像素位置相加后得到偏移后的位置,同時(shí)引入權(quán)重Δmn,那么同樣位置P0點(diǎn)的操作變?yōu)槿缡剑?)所示:
其中偏移量一般是小數(shù),因此可形變卷積是針對(duì)不規(guī)則區(qū)域進(jìn)行卷積計(jì)算,需要進(jìn)行如式(3)所示的雙線性插值:
其中p=P0+Pn+ΔPn代表位置,q列舉了輸入特征圖x中的點(diǎn),G為二維雙線性插值的核函數(shù),可以被分為兩個(gè)一維線性插值核函數(shù)如式(4)所示:
其中g(shù)(a,b)= max(0,1-|a-b|)。
與普通卷積式(1)相比,可形變卷積引入了較多的額外計(jì)算量,主要來(lái)自于式(2)中所含的雙線性插值計(jì)算。對(duì)于典型的ResNet-101主干網(wǎng)絡(luò)而言(如圖1(a)所示),常見的方式是將多個(gè)殘差塊中的3×3卷積替換為可形變卷積,即圖1(b)所示的結(jié)構(gòu)。在此情況下,對(duì)每一次卷積滑窗的計(jì)算而言,3×3可形變卷積會(huì)進(jìn)行3×3×C次雙線性插值,其中C為該特征圖的通道數(shù),而每一次插值計(jì)算會(huì)進(jìn)行4次乘加運(yùn)算,那么總共會(huì)額外進(jìn)行3×3×C×4次乘加運(yùn)算,帶來(lái)顯著的速度損失。
由于可形變卷積引入的額外計(jì)算主要來(lái)自于對(duì)特征圖進(jìn)行插值,且計(jì)算量與卷積核大小呈二次方關(guān)系,因此在可形變逐點(diǎn)卷積中,將形變計(jì)算移動(dòng)至殘差塊中的最后一個(gè)1×1卷積上進(jìn)行,即如圖1(c)所示。將其放置于殘差塊中的第一個(gè)1×1卷積之上也可以達(dá)到類似的效果,但研究人員實(shí)驗(yàn)證明放在最后效果會(huì)稍好。在可形變逐點(diǎn)卷積中,由于每次滑窗只需要對(duì)一個(gè)特征點(diǎn)進(jìn)行采樣插值,其產(chǎn)生的偏移量和進(jìn)行雙線性插值的次數(shù)更少,只會(huì)進(jìn)行1×1×C次插值運(yùn)算,總共進(jìn)行1×1×C×4次乘加運(yùn)算,因此其引入的額外計(jì)算量?jī)H僅只有傳統(tǒng)可形變卷積的1/9。此外1×1卷積核在特征圖上進(jìn)行滑窗卷積時(shí)不會(huì)因?yàn)樘卣鞅恢貜?fù)使用而產(chǎn)生額外的計(jì)算量。
圖1 不同類型殘差塊
將可形變卷積作用于1×1卷積,帶來(lái)的問(wèn)題在于每次只表達(dá)了一個(gè)特征點(diǎn)的整體偏移,是否能夠帶來(lái)足夠的形變適應(yīng)性。對(duì)此,研究人員認(rèn)為,在可形變卷積網(wǎng)絡(luò)中,可形變卷積一般并不是只用一次,而是在每一個(gè)殘差塊,或是每一尺度的卷積網(wǎng)絡(luò)階段中都會(huì)引入一個(gè)可形變卷積層。雖然每次的形變計(jì)算只作用于一個(gè)特征點(diǎn)上,但經(jīng)過(guò)前后多次的偏移變換后,這些偏移量幾乎不會(huì)重復(fù)或呈簡(jiǎn)單線性關(guān)系,因此仍然具有足夠的形變適應(yīng)性,能夠計(jì)算出足夠復(fù)雜的變形感受野,并因此獲得比普通卷積更高的檢測(cè)精度,研究人員的實(shí)驗(yàn)結(jié)果也證明了這一方式的有效性。
深度可分離卷積是一種常用的輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),其主要特點(diǎn)是將普通卷積分解成深度卷積和逐點(diǎn)卷積。相對(duì)于普通卷積,這種方式可以在精度損失有限的情況下,減少計(jì)算量和參數(shù)量,從而提升檢測(cè)速度。深度可分離卷積的矩陣分解優(yōu)化方式,與本文所提出的可形變逐點(diǎn)卷積具有天然良好的結(jié)合性。通過(guò)將深度可分離卷積中的逐點(diǎn)卷積替換為可形變逐點(diǎn)卷積的方式,不僅可以有效保持輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò)快速敏捷的優(yōu)點(diǎn),同時(shí)又能改善其性能并提高檢測(cè)精度。
設(shè)定輸入特征圖為C×H×W,與N個(gè)C×k×k大小的卷積核進(jìn)行卷積得到的輸出特征大小為H×W×N,所產(chǎn)生的計(jì)算量為C×H×W×k×k。經(jīng)過(guò)深度卷積的輸出大小為C×H×W,產(chǎn)生的計(jì)算量為C×H×W×k×k。而經(jīng)過(guò)逐點(diǎn)卷積產(chǎn)生的計(jì)算量為C×H×W×N。那么總體來(lái)說(shuō)深度可分離卷積和普通卷積的總計(jì)算量之比如式(5)所示:
由于一般情況下N取值較大,如果采用3×3卷積,由式(5)可以得出深度可分離卷積相較于普通卷積可以降低大約9倍的計(jì)算量。
由于逐點(diǎn)卷積實(shí)際上就是卷積核大小為1×1的普通卷積,而可形變逐點(diǎn)卷積同樣可以有效適應(yīng)不規(guī)則物體,讓感受野發(fā)生形變使得檢測(cè)的精度得到提升。因此研究人員在深度可分離卷積中引入可形變逐點(diǎn)卷積替代普通的逐點(diǎn)卷積。通過(guò)實(shí)驗(yàn)證明,在速度損失有限的情況下,精度得到了進(jìn)一步的提升。
本文實(shí)驗(yàn)基于Pytorch深度學(xué)習(xí)框架,測(cè)試平臺(tái)GPU型號(hào)為Nvidia GeForce RTX 2080 Ti,CPU型號(hào)為Intel Xeon E5-2678 v3。本文實(shí)驗(yàn)采用COCO數(shù)據(jù)集,包含91種類別、32.8萬(wàn)張圖像和250萬(wàn)個(gè)標(biāo)注[5]。
本文實(shí)驗(yàn)主要使用平均精度(average precision,AP)和幀率(frames per second, FPS)來(lái)評(píng)價(jià)模型的有效性。另外FLOPs是指浮點(diǎn)運(yùn)算數(shù),param表示模型的參數(shù)量。
表1展示了選取Mask-RCNN作為基本檢測(cè)框架,ResNet-50和ResNet-101分別作為主干網(wǎng)絡(luò),常規(guī)卷積神經(jīng)網(wǎng)絡(luò)、DCNv2以及本文提出的DPCNs在COCO數(shù)據(jù)集上的性能表現(xiàn)情況。
表1 三種方法檢測(cè)性能對(duì)比
可以看出,以ResNet-101作為主干網(wǎng)絡(luò),使用可形變逐點(diǎn)卷積,雖然精度相比3×3可形變卷積有所下降,但是仍然高于普通3×3卷積1.7%,這在數(shù)值上說(shuō)明使用可形變逐點(diǎn)卷積可以通過(guò)改變感受野的形狀提升檢測(cè)精度??尚巫冎瘘c(diǎn)卷積在FPS上比3×3可形變卷積有所提升,這從數(shù)值上表明可形變逐點(diǎn)卷積能有效地提升檢測(cè)速度。由于整個(gè)計(jì)算過(guò)程除了插值計(jì)算還有其他卷積計(jì)算,所以可形變逐點(diǎn)卷積達(dá)不到減少大約9倍的計(jì)算量。在參數(shù)量上,可形變卷積最多,其余兩個(gè)相對(duì)較少。圖2(a)(b)則分別展示3×3可形變卷積和可形變逐點(diǎn)卷積的特征點(diǎn)感受野,可以看出可形變逐點(diǎn)卷積同樣可以自適應(yīng)的學(xué)習(xí)感受野的采樣位置來(lái)符合物體的形狀和大小,從而更有效的提取特征。
圖2 特征點(diǎn)感受野
表2展示了選取Mask-RCNN作為基本檢測(cè)框架,MobileNetv2和本文提出的dw-DPCNs在COCO數(shù)據(jù)集上的性能表現(xiàn)??梢钥闯觯褂帽疚奶岢錾疃染矸e結(jié)合可形變逐點(diǎn)卷積倒殘差塊的dw-DPCNs的精度達(dá)到了35.6%,相較于使用普通深度可分離卷積倒殘差塊的MobileNetv2的精度提升了1.3%。此外dw-DPCNs的FPS略微下降,F(xiàn)LOPs則略微上升。這是由于可形變逐點(diǎn)卷積需要進(jìn)行插值計(jì)算,增加了額外的計(jì)算量,從而導(dǎo)致檢測(cè)速度的下降。而這兩種模型的參數(shù)量一致,能體現(xiàn)出本文提出的dw-DPCNs與MobileNetv2有相同輕量化的優(yōu)點(diǎn)。
表2 兩種方法檢測(cè)性能對(duì)比
本文針對(duì)使用3×3可形變卷積計(jì)算開銷過(guò)大而導(dǎo)致檢測(cè)速度變慢的問(wèn)題,提出一種輕量級(jí)可形變卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),使得模型在檢測(cè)的速度上有所提升。通過(guò)實(shí)驗(yàn)證明,可形變逐點(diǎn)卷積相較于3×3可形變卷積同樣可以自適應(yīng)的學(xué)習(xí)感受野的采樣位置來(lái)符合物體的形狀和大小,從而更有效的提取特征,并且所產(chǎn)生的計(jì)算量更少,提高了檢測(cè)的速度。尋找其他方法來(lái)減少可形變卷積的計(jì)算消耗是下一步繼續(xù)研究的方向。