rep论文阅读1:ACNet_Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution Blocks
ACNet:通過非對稱卷積模塊增強CNN的卷積核骨架
paper:https://arxiv.org/abs/1908.03930
code:https://github.com/DingXiaoH/ACNet
?Abstract
????????為特定的應(yīng)用設(shè)計合適的CNN架構(gòu)本身涉及到繁重的手動工作或者需要高昂的GPU訓(xùn)練時間,業(yè)界也正在尋求一些CNN結(jié)構(gòu)可以方便的集成到其他成熟架構(gòu)中,進一步提升應(yīng)用到實際任務(wù)中的性能。本文提出了非對稱卷積模塊(Asymmetric Convolution Block,ACB)這樣一種結(jié)構(gòu)無關(guān)的卷積模塊,使用一維非對稱卷積來代替卷積網(wǎng)絡(luò)中的常規(guī)卷積層,這樣構(gòu)建出的網(wǎng)絡(luò)稱之為ACNet(Asymmetric Convolutional Network),可以進一步提升網(wǎng)絡(luò)精度;并且沒有增加任何額外的開銷。本文已經(jīng)在CIFAR和ImageNet數(shù)據(jù)集上基于不同網(wǎng)絡(luò)都驗證了ACNet的有效性。通過實驗本文將ACB的有效性歸因于對旋轉(zhuǎn)變形的魯棒性以及增強了卷積核的中心骨架部分的能力。
?1. Introduction
????????卷積神經(jīng)網(wǎng)絡(luò)已經(jīng)在計算機視覺領(lǐng)域取得巨大成功,適用于可穿戴設(shè)備、安防系統(tǒng)、移動終端以及汽車等多種應(yīng)用。由于這些終端設(shè)備常常受限于有限的計算資源,對推理的實時性也有要求,因此需要CNN網(wǎng)絡(luò)在有限的算力支持下達(dá)到較高精度。這樣簡單的通過增加更多可訓(xùn)練的參數(shù)或者使用更多的連接來增強模型性能是不實際的。
????????因此本文認(rèn)為更切實際的是在不增加額外的推理時間、內(nèi)存或能耗的前提下進一步提升CNN性能。?另一方便對CNN結(jié)構(gòu)的改進使得目前的模型精度已經(jīng)顯著提高。但是現(xiàn)有的模型依舊不能滿足特定的需求,而設(shè)計新的結(jié)構(gòu)又要消耗大量人工成本以及GPU訓(xùn)練時間。
?????????近期學(xué)術(shù)界正關(guān)注于結(jié)構(gòu)中立的CNN結(jié)構(gòu),如SE block以及quasi-hexagonal kernels,他們就可以直接應(yīng)用到當(dāng)前的結(jié)構(gòu)中,來提升應(yīng)用到具體應(yīng)用上的性能。?
?????????近期關(guān)于CNN結(jié)構(gòu)的研究主要聚焦于:?
?????????(1)各層之間如何互相連接。是簡單堆疊在一起,還是一一映射亦或是密集連接;?
?????????(2)不同層的輸出如何結(jié)合,從而提升學(xué)習(xí)到的特征表征的能力。
??????????考慮到這一點,本文就是為了尋求這樣一種結(jié)構(gòu)中立的CNN模塊可以與許多其他結(jié)構(gòu)直接結(jié)合。本文通過探究這一方面來增強常規(guī)卷積層:權(quán)重與其在kernel中空間位置的關(guān)系。?因此本文提出了非對稱卷積模塊(ACB)來代替常規(guī)的卷積層。對于原來dxd卷積,拆分為dxd,1xd,dx1三路卷積。由于1xd和dx1的卷積核并不是方形的因此將其稱之為非對稱卷積層。通過將ACB替換掉常規(guī)網(wǎng)絡(luò)中的方形卷積核,訓(xùn)練直至網(wǎng)絡(luò)收斂就得到了ACNet。?具體參見Fig 1.
?????????以3x3卷積為例,將常規(guī)的3x3卷積拆分為3x3,1x3,3x1三路卷積,并將最后的結(jié)果相加。這種在卷積核不同骨架上非對稱卷積的結(jié)果相加等效于原始的方形卷積效果,這種等效變換是通過構(gòu)建一個具有原始結(jié)構(gòu)的新模型并使用ACNet學(xué)習(xí)到的參數(shù)來初始化它達(dá)到的。
????????可以看到ACNet分為訓(xùn)練和推理階段,
????????訓(xùn)練階段:強化了skeleton位置的權(quán)重,達(dá)到更好的特征提取效果;
? ? ? ? ? ? ? ? ? ? ? ? ? 因為3 x 3卷積是大多數(shù)網(wǎng)絡(luò)的基礎(chǔ)組件,因此ACNet的實驗都是針對3 x 3卷積進行的。訓(xùn)練階段就是將現(xiàn)有網(wǎng)絡(luò)中的每一個3 x 3卷積換成3 x 1卷積 + 1?x 3卷積 +?3 x 3卷積共三個卷積層,最終將這三個卷積層的計算結(jié)果進行融合獲得卷積層的輸出。
????????測試階段:通過BN融合和分支融合,沒有增加額外的計算量。類似Tensorflow中進行fake quantization的實現(xiàn)?將BN后的權(quán)重系數(shù)和偏置作為新的權(quán)重系數(shù)和偏置項進行計算。
? ? ? ? ? ? ? ? ? ? ? ? ? 如圖1右圖所示,這部分主要對三個卷積核進行融合。這部分在實現(xiàn)過程中就是使用融合后的卷積核參數(shù)來初始化現(xiàn)有的網(wǎng)絡(luò),因此在推理階段,網(wǎng)絡(luò)結(jié)構(gòu)和原始網(wǎng)絡(luò)是完全一樣的了,只不過網(wǎng)絡(luò)參數(shù)采用了特征提取能力更強的參數(shù)即融合后的卷積核參數(shù),因此在推理階段不會增加計算量。
?????????更好的地方在于:?
????????(1)ACNet沒有引入更多的超參數(shù),從而更加方便的與其他結(jié)構(gòu)結(jié)合而無需微調(diào);?
????????(2)可以很方便的在主流框架TF 和 pytorch上實現(xiàn);?
????????(3)沒有增加額外的推斷時間,也沒有增加額外的計算開銷。
?????????通過實驗本文部分解釋了ACNet的有效性。本文觀察到在方形卷積核中所學(xué)到的知識是不均勻的,與四周邊角相比,在中間有交叉的骨架部分(skeleton)上學(xué)習(xí)的權(quán)重更大;如果移除骨架上的這些部分對精度影響更大。在ACB中在skeleton上又額外增加了水平和垂直的兩條卷積核從而顯示的增強skeleton。有趣的地方在于在方形和水平、垂直卷積核上的權(quán)重都是隨機初始化的,很容易之間符號是相反的,因此把他們加起來可以獲得更強或更弱的skeleton。但是通過實驗本文發(fā)現(xiàn)總是朝著增強每一層skeleton的方向發(fā)展的。這種一致性增強的現(xiàn)象有助于啟發(fā)關(guān)于不同空間位置權(quán)重之間關(guān)系的進一步研究。
??????????本文的工作總結(jié)如下:?
??????????(1)本文提出非對稱卷積模塊代替常規(guī)卷積,顯式增強標(biāo)準(zhǔn)卷積核的表征能力;并且可以有效結(jié)合到已有模型中,不引入額外的參數(shù)和計算成本,不增加額外的推理時間;?
??????????(2)不同模型在CIFAR-10,CIFAR-100以及ImageNet上的訓(xùn)練精度均有明顯提升;?
??????????(3)驗證了在方形卷積核中skeleton的重要性,以及ACNet在增強skeleton方面的有效性;
???????????(4)驗證了ACNet可以增強模型對旋轉(zhuǎn)變形的魯棒性,有助于對旋轉(zhuǎn)不變性問題的進一步研究。
2. Related work
?2.1. Asymmetric convolutions非對稱卷積
???????????非對稱卷積常用于近似常規(guī)的方形卷積用于壓縮和壓縮。已有一些前期工作[4, 17]表明常規(guī)的dxd卷積可以拆分為一個dx1卷積和一個1xd卷積,拆分后可以減少網(wǎng)絡(luò)參量以及所需的計算。背后的原理很簡單:如果一個2D的卷積核秩為1,就可以等效為一系列1D卷積。但是由于深度神經(jīng)網(wǎng)絡(luò)中卷積核的分布,實際其本征的秩往往大于1,此時對卷積核直接進行變換會導(dǎo)致明顯的信息丟失。Denton等人通過奇異值分解進行低秩近似解決這一問題,還有通過最小化l2距離學(xué)習(xí)垂直和水平卷積核。????另一方面,非對稱卷積也廣泛用作體系結(jié)構(gòu)設(shè)計元素用來保存參數(shù)和計算.比如在Inception V3中就將7x7卷積替換為了一系列1x7和7x1的卷積,但是這篇文章的作者也發(fā)現(xiàn)這種替換在較低層次的卷積中并不等效;ENet也用這種等效替代的方法將5x5的卷積進行精簡設(shè)計更高效的語義分割網(wǎng)絡(luò),在增加少量計算成本的基礎(chǔ)上增加了感受野。在EDANet中也是用相似的idea將3x3卷積進行分解,在基本保持精度的前提下減少了33%的網(wǎng)絡(luò)參量。?而本文正相反,不是將每一層卷積進行分解,而是在訓(xùn)練過程中豐富特征空間,將他們學(xué)習(xí)到的知識融合到方形卷積核中。
2.2. Architecture-neutral CNN structures體系結(jié)構(gòu)中立的CNN結(jié)構(gòu)
????????????本文希望不改變原有CNN結(jié)構(gòu)的前提下使用一些結(jié)構(gòu)中立的模塊進一步提升目前SOTA模型的性能。這種方法有效的補充了僅在網(wǎng)絡(luò)體系結(jié)構(gòu)方面取得的創(chuàng)新。
?????????????如果一個CNN結(jié)構(gòu)滿足以下條件就稱之為結(jié)構(gòu)中立的:?
?????????????(1)無需任何假設(shè)前提,可用于任何模型;?
?????????????(2)有通用的提升。?
?????????????比如SE block就是一個結(jié)構(gòu)中立的模塊,通過學(xué)習(xí)到的權(quán)重重新規(guī)劃channel的權(quán)重;另一個例子是auxiliary classifier可以插入到模型中監(jiān)督模型的訓(xùn)練,確實可以大幅度提升性能,雖然需要人工微調(diào)一些超參數(shù)。?
?????????????而本文的ACNet在訓(xùn)練過程中沒有引入任何超參數(shù),在推理階段也沒有增加任何參數(shù)或計算成本。因此在實際應(yīng)用中開發(fā)者可以使用ACNet來增強各種模型,而用戶也可以在不影響推理過程的前提下享受性能的提升。
3. Asymmetric Convolutional Network非對稱卷積網(wǎng)絡(luò)
?3.1. Formulation公式
??????????????對于D個大小為HxW的卷積核(F),輸入C通道的特征圖(M),輸出的特征圖表述為:
?????????其中x表示為二維卷積。而CNN中為了克服過擬合以及加速訓(xùn)練過程廣泛使用,經(jīng)常放在線性變換之后用來增強模型的特征表述能力,經(jīng)過BN處理后,輸出變?yōu)?#xff1a;
?????????其中 μ j 和σ j 分別對應(yīng)逐通道的均值和方差,gamma和beta分別學(xué)習(xí)的是縮放因子和偏置項。
3.2. Exploiting the additivity of convolution?利用卷積的可加性
???????????本文致力于尋找一種不增加推理計算成本的方式將非對稱卷積引入到常規(guī)的卷積中。本文發(fā)現(xiàn)了卷積的一種特性:?如果多個大小兼容的二維卷積以相同的步長對同樣的輸入進行操作,從而產(chǎn)生相同分辨率的輸出,并將它們的結(jié)果相加;那么將這些卷積核在對應(yīng)位置上相加,獲得的卷積核是等效的,會產(chǎn)生同樣的輸出。
????????比如分別對同樣的輸入進行3x3,1x3,3x1的卷積操作,可以看到這三個卷積核對應(yīng)的滑窗是一樣的,因此通過將這三路的輸出相加在數(shù)學(xué)上與,現(xiàn)將1x3,3x1的卷積核加到3x3卷積核得到新的卷積核,最后得到的輸出是一樣的。
????????也就是利用卷積的可加性特性,有:
?
?
????????其中+表示的是將兩個卷積核對應(yīng)位置進行element-wise addition。需要注意的是I可以進行一定的裁剪或者填充。?而compatiable兼容的意思指的是可以將較小的卷積核patch(貼?)到較大的卷積核上,比如1x3和3x1的卷積核就是3x3兼容的。 ?
????????通過卷積的滑動計算就可以證明.
3.3. ACB for free inference-time improvements
?????????本文聚焦于在CNN中廣泛使用的3x3卷積。對于任意CNN架構(gòu),本文將每一個3x3卷積層替換為本文的ACB,也就是分別包含3x3,1x3,3x1三路卷積,每一路卷積后都經(jīng)過BN作為一個分支,而且沒有任何超參數(shù)要調(diào)整。?而使用ACNet可以獲得更高的精度,在訓(xùn)練完成后本文會將每個ACB的輸出轉(zhuǎn)換為產(chǎn)生相同輸出的標(biāo)準(zhǔn)卷積層,這樣可以獲得性能更好的網(wǎng)絡(luò)而沒有增加任何額外的計算,而這種轉(zhuǎn)換是通過以下兩步實現(xiàn)的:BN融合和分支融合。
????????Fig 3展示了BN與分支融合。假設(shè)I是特征圖譜的任意通道輸入,對于每個分支會先等價的將BN的參數(shù)融合到卷積核與偏置項中,然后將融合后的結(jié)果進行相加。
????????BN fusion:
????????卷積的同質(zhì)性允許將BN和線性縮放變換等價的融合到具有偏置的卷積層中。也就是對每一個分支 ,計算出新的偏置項,就可以產(chǎn)生與原始卷積同樣的輸出。?
????????Branch fusion:
????????通過將不對稱卷積核添加到方形卷積核對應(yīng)的位置上,完成將三個BN分支合并成一個標(biāo)準(zhǔn)卷積。實際應(yīng)用中這種變換是通過在原始網(wǎng)絡(luò)結(jié)構(gòu)中使用融合后的權(quán)重進行初始化完成的,從而可以產(chǎn)生與ACNet相同的輸出。
????????對于每一個卷積核j,F’是融合后的三維卷積核,bj是偏置項,Fbar和F^分別對應(yīng)1x3和3x1卷積層,因此融合后的輸出表述為:?
?
????????需要注意的是,雖然ACB可以等效的轉(zhuǎn)換為標(biāo)準(zhǔn)層,但是只在推理時是等效的,因為訓(xùn)練過程中權(quán)重是隨機初始化,基于此計算出來的梯度也不同因此在訓(xùn)練過程中是不等價的。
4. Experiments
略
5. Conclusion
????????為了提升各種CNN結(jié)構(gòu)的性能,本文提出了非對稱卷積模塊,其結(jié)果是三路卷積(水平核、垂直核、卷積核)的加和輸出。通過將CNN中常規(guī)卷積替換為非對稱卷積可以搭建非對稱卷積網(wǎng)絡(luò)ACNet,并且在訓(xùn)練之后可以將其轉(zhuǎn)換回原始的結(jié)構(gòu)。
???????????通過在CIFAR數(shù)據(jù)集和ImageNet數(shù)據(jù)集上基于費對稱卷積搭建多種網(wǎng)絡(luò)模型(殘差網(wǎng)絡(luò)、密集連接網(wǎng)絡(luò)等)都顯示出ACNet可以增強模型對于旋轉(zhuǎn)變形的魯棒性,部分原因是ACNet會顯式增強卷積核中骨架部分skeleton的重要性。
????????????值得關(guān)注的一點是,ACNet沒有引入額外的超參數(shù)或者增加任何推斷時間,非常容易就可以整合進主流的模型框架中。
總結(jié)
以上是生活随笔為你收集整理的rep论文阅读1:ACNet_Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution Blocks的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 原生JS的插件库jQuery
- 下一篇: 键盘录入、提高成绩(金山打字通)