转载系列 |ICCV2019:ACNet:Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution
論文:ACNet: Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric
Convolution Blocks
論文鏈接:https://arxiv.org/abs/1908.03930
代碼鏈接:https://github.com/DingXiaoH/ACNet
ACNet,全稱是Asymmetric Convolution Net,翻譯過來就是非對稱卷積網(wǎng)絡(luò)。這篇論文也是從更好的特征表達(dá)角度切入實(shí)現(xiàn)效果提升,不過更重要的是:沒有帶來額外的超參數(shù),而且在推理(或者叫驗(yàn)證、部署,本質(zhì)上都是只執(zhí)行前向計(jì)算)階段沒有增加計(jì)算量,在我看來后者更有吸引力。
在開始介紹ACNet之前,先來看一個(gè)關(guān)于卷積計(jì)算的式子,式子中I表示一個(gè)二維矩陣,可以看做是卷積層的輸入,也就是輸入特征圖,K(1)和K(2)分別表示2個(gè)二維卷積核,這2個(gè)卷積核的寬和高是一樣的,那么下面這個(gè)式子的意思就是:先進(jìn)行K(1)和I卷積,K(2)和I卷積后再對結(jié)果進(jìn)行相加,與先進(jìn)行K(1)和K(2)的逐點(diǎn)相加后再和I進(jìn)行卷積得到的結(jié)果是一致的。這是ACNet能夠在推理階段不增加任何計(jì)算量的原因。
接下來直接通過Figure1來看ACNet的思想。整體上ACNet的思想分為訓(xùn)練和推理階段,訓(xùn)練階段重點(diǎn)在于強(qiáng)化特征提取,實(shí)現(xiàn)效果提升;推理階段重點(diǎn)在于卷積核融合,實(shí)現(xiàn)0計(jì)算量增加。
訓(xùn)練階段:因?yàn)? ××× 3尺寸的卷積核是目前大部分網(wǎng)絡(luò)的標(biāo)配,所以這篇論文的實(shí)驗(yàn)都是針對3 ××× 3尺寸進(jìn)行的。訓(xùn)練階段簡單來說就是將現(xiàn)有網(wǎng)絡(luò)(假設(shè)用Net_origin表示,比如ResNet)中每一個(gè)3 ××× 3卷積層替換成3 ××× 3+1 ××× 3+3 ××× 1共3個(gè)卷積層,如Figure1左圖所示,最后將這3個(gè)卷積層的計(jì)算結(jié)果進(jìn)行融合得到卷積層輸出。因?yàn)橐氲? ××× 3和3 ××× 1卷積核尺寸是非對稱的,所以取名Asymmetric Convolution。
推理階段:這部分主要就是做3個(gè)卷積核的融合。依據(jù)就是前面我們介紹的公式:先分別對輸入進(jìn)行卷積后融合結(jié)果,與先融合卷積核再對輸入進(jìn)行卷積,結(jié)果是一樣的。這部分在實(shí)現(xiàn)上是用融合后的卷積核參數(shù)初始化現(xiàn)有網(wǎng)絡(luò):Net_origin,因此在推理階段,網(wǎng)絡(luò)結(jié)構(gòu)和原始網(wǎng)絡(luò)是一模一樣的(沒有1 ××× 3和3 ××× 1卷積層了),只不過網(wǎng)絡(luò)參數(shù)采用特征提取能力更強(qiáng)的參數(shù)(融合后的卷積核參數(shù)),因此在推理階段不會增加計(jì)算量。
到此其實(shí)ACNet的內(nèi)容就基本介紹完了,總結(jié)下來就是訓(xùn)練階段強(qiáng)化特征提取能力,推理階段融合卷積核達(dá)到不增加計(jì)算量的目的,雖然訓(xùn)練時(shí)間會增加一些,但推理階段不費(fèi)一兵一卒就能提升效果,方便且適用于現(xiàn)有的分類網(wǎng)絡(luò),何樂而不為。
當(dāng)然,我覺得這篇論文的精彩之處不僅僅是以上這些思想,論文中關(guān)于訓(xùn)練階段將1個(gè)3 ××× 3卷積層替換成3 ××× 3、1 ××× 3和3 ××× 1這3個(gè)卷積層的組合可以提升效果的討論依然言之有理。
在公開數(shù)據(jù)集上其實(shí)ACNet并沒有非常明顯的效果提升,比如Table3,對于常用的ResNet和DenseNet而言,提升不到1個(gè)百分點(diǎn),只不過至少是白賺的:
但正如論文中所述,ACNet有一個(gè)特點(diǎn)在于提升了模型對圖像翻轉(zhuǎn)和旋轉(zhuǎn)的魯棒性。
Figure4從理論上解釋這種魯棒性,當(dāng)在訓(xùn)練階段引入1 ××× 3卷積核時(shí),即便在驗(yàn)證階段將輸入圖像進(jìn)行上下翻轉(zhuǎn),這個(gè)訓(xùn)練好的1 ××× 3卷積核仍然能夠提取正確的特征(如Figure4左圖所示,2個(gè)紅色矩形框就是圖像翻轉(zhuǎn)前后的特征提取操作,在輸入圖像的相同位置處提取出來的特征還是一樣的)。
假如訓(xùn)練階段只有3 ××× 3卷積核,那么當(dāng)圖像上下翻轉(zhuǎn)后,(如Figure4右圖所示,2個(gè)紅色矩形框就是圖像翻轉(zhuǎn)前后的特征提取操作,在輸入圖像的相同位置處提取出來的特征是不一樣的)。
因此,引入類似1 ××× 3這樣的水平卷積核可以提升模型對圖像上下翻轉(zhuǎn)的魯棒性,豎直方向卷積核同理。
Table4從實(shí)驗(yàn)上解釋這種魯棒性。需要注意的是rotate 180°和左右翻轉(zhuǎn)是不一樣的,rotate 180°實(shí)際上是上下翻轉(zhuǎn)+左右翻轉(zhuǎn),所以個(gè)人認(rèn)為Table4中加上上下翻轉(zhuǎn)的實(shí)驗(yàn)會更完整一些。
有一個(gè)點(diǎn)比較有意思,在論文中提到具體的融合操作是和BN層一起的,如Figure3所示,注意融合操作是在BN之后。但假其實(shí)也可以把融合操作放在BN之前,也就是3個(gè)卷積層計(jì)算完之后就進(jìn)行融合。論文中關(guān)于這二者的實(shí)驗(yàn)可以參考Table4,在Table4中BN in branch這一列有√的話表示融合是在BN之后,可以看到效果上確實(shí)是在BN之后融合要更好一些(AlexNet的56.18% vs 57.44%,ResNet-18的70.82% vs 71.14%)。
不過論文中沒有看到這部分的原理討論,個(gè)人理解這部分效果的差異是因?yàn)樵黾恿瞬煌叽缇矸e核的權(quán)重導(dǎo)致的,統(tǒng)一的BN層沒有更細(xì)化的針對每個(gè)特征圖的BN來得極致。
另外即便融合操作放在BN層之前,相比原始網(wǎng)絡(luò)仍有一定提升(AlexNet的56.18% vs 55.92%,ResNet-18的70.82% vs 70.36%%),這部分的原因個(gè)人理解是來自梯度差異化,原來只有一個(gè)3 ××× 3卷積層,梯度可以看出一份,而添加了1 ××× 3和3 ××× 1卷積層后,部分位置的梯度變?yōu)?份和3份,也是更加細(xì)化了。而且理論上可以融合無數(shù)個(gè)卷積層不斷逼近現(xiàn)有網(wǎng)絡(luò)的效果極限,融合方式不限于相加(訓(xùn)練和推理階段一致即可),融合的卷積層也不限于1 ××× 3或3 ××× 1尺寸。
整體上ACNet的創(chuàng)新點(diǎn)還是很棒的,相信對很多領(lǐng)域都會有啟發(fā)意義,期待后面更多意思的工作。
總結(jié)
以上是生活随笔為你收集整理的转载系列 |ICCV2019:ACNet:Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pycharm成功但是cmd报错找不到m
- 下一篇: 解决webupload在同一页面实现多个