3*3卷積+1*3卷積+3*1卷積=白給的精度提升
點擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時間送達

作者 | BBuf
ICCV2019: 通過非對稱卷積塊增強CNN的核骨架
下面要介紹的論文發(fā)于ICCV2019,題為「ACNet:Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric ConvolutionBlocks」,axriv地址為:https://arxiv.org/abs/1908.03930v1。

由于在給定的應(yīng)用環(huán)境中設(shè)計合適的卷積神經(jīng)網(wǎng)絡(luò)(CNN)結(jié)構(gòu)需要大量的人工工作或大量的GPU資源消耗,研究界正在尋找網(wǎng)絡(luò)結(jié)構(gòu)無關(guān)的CNN結(jié)構(gòu),這種結(jié)構(gòu)可以很容易地插入到多個成熟的體系結(jié)構(gòu)中,以提高我們實際應(yīng)用程序的性能。我們提出了非對稱卷積塊(ACB)作為CNN的構(gòu)造塊,它使用一維非對稱卷積核來增強方形卷積核,我們用ACBs代替標(biāo)準(zhǔn)的方形卷積核來構(gòu)造一個非堆成卷積網(wǎng)絡(luò)ACNet,該網(wǎng)絡(luò)可以訓(xùn)練到更高的精度。訓(xùn)練后,我們等價地將ACNet轉(zhuǎn)換為相同的原始架構(gòu),因此將不需要額外的計算。實驗證明,ACNet可以CIFAR和ImageNet上顯著提高各種經(jīng)典模型的性能。
1. 研究背景
卷積神經(jīng)網(wǎng)絡(luò)在視覺理解方面取得了巨大的成功,這使得其可以應(yīng)用在安全系統(tǒng),移動電話,汽車等各種應(yīng)用中。由于前端設(shè)備通常受限于計算資源,就要求網(wǎng)絡(luò)在保證精度的條件下要盡可能輕量。另一方面,隨著CNN架構(gòu)設(shè)計的相關(guān)研究增多,模型的性能得到了顯著改善,但當(dāng)現(xiàn)有的模型不能滿足我們的特定需求時,要定制一種新的架構(gòu)需要花費極高的成本。最近,研究者們正在尋求與架構(gòu)無關(guān)的新型CNN結(jié)構(gòu),例如SE塊和準(zhǔn)六邊形內(nèi)核,它們可以直接和各種網(wǎng)絡(luò)結(jié)構(gòu)結(jié)合使用,以提高它們的性能。最近對CNN結(jié)構(gòu)的研究主要集中在1)層之間是如何相互連接的,例如簡單的堆疊在一起,恒等映射,密集連接等;2)如何組合不同層的輸出以提高學(xué)習(xí)表示的質(zhì)量;本文提出了非對稱卷積塊(ACB),它是用三個并行的
核來代替原始的核,如圖Figure1所示:

Figure 1
給定一個網(wǎng)絡(luò),我們通過將每個方形卷積核替換為ACB模塊并訓(xùn)練網(wǎng)絡(luò)到收斂。之后我們將每個ACB中非對稱核的權(quán)值加到方形核的對應(yīng)位置,將ACNet轉(zhuǎn)換為和原始網(wǎng)絡(luò)等效的結(jié)構(gòu)。ACNet可以提高基準(zhǔn)模型的性能,在CIFAR和ImageNet上優(yōu)勢明顯。更好的是,ACNet引入了0參數(shù),因此無需仔細調(diào)參就能將其與不同的CNN結(jié)構(gòu)結(jié)合起來,并且易于在主流CNN框架上實現(xiàn)以及不需要額外的推理時間開銷。
代碼開源在:https://github.com/ShawnDing1994/ACN。
2. 相關(guān)工作
2.1 非對稱卷積
非對稱卷積通常用于逼近現(xiàn)有的正方形卷積以進行模型壓縮和加速,先前的一些工作表明,可以將標(biāo)準(zhǔn)的卷積分解為
和
卷積,以減少參數(shù)量。其背后的理論相當(dāng)簡單:如果二維卷積核的秩為1,則運算可等價地轉(zhuǎn)換為一系列一維卷積。然而,由于深度網(wǎng)絡(luò)中下學(xué)習(xí)到的核具有分布特征值,其內(nèi)在秩比實際中的高,因此直接將變換應(yīng)用于核會導(dǎo)致顯著的信息損失。Denton等人基于SVD分解找到一個低秩逼近,然后對上層進行精細化以恢復(fù)性能。Jaderberg等人通過最小化重構(gòu)誤差,成功學(xué)習(xí)了水平核和垂直核。Jin等人應(yīng)用結(jié)構(gòu)約束使二維卷積可分離,在獲得相當(dāng)精度的條件下時間加速了2倍。另一方面,非堆成卷積也被廣泛的用來做網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計,例如Inception-v3中,7*7卷積被1*7卷積和7*1卷積代替。語義分割ENet網(wǎng)絡(luò)也采用這種方法來設(shè)計高效的語義分割網(wǎng)絡(luò),雖然精度略有下降,但降低了33%的參數(shù)量。
2.2 CNN架構(gòu)中的中性結(jié)構(gòu)
我們不打算修改CNN架構(gòu),而是使用一些與架構(gòu)無關(guān)的結(jié)構(gòu)來增強現(xiàn)有的模型。因此,我們的方法對任何網(wǎng)絡(luò)都是有效的。例如,SE塊可以附加到卷積層后,使用學(xué)習(xí)到的權(quán)重重新縮放特征圖通道數(shù),從而在合理的附加參數(shù)量和計算代價下顯著提高精度。作為另一個示例,可以將輔助分類器插入模型中以幫助監(jiān)督學(xué)習(xí)過程,這確實可以提高性能,但是需要額外的人為調(diào)整超參數(shù)。相比之下,ACNet在訓(xùn)練中不會引入任何超參數(shù),并且在推理過程中不需要額外的參數(shù)和計算。因此,在實際應(yīng)用中,開發(fā)人員可以使用ACNet來增強各種模型,而無需進行詳細的參數(shù)調(diào)整,并且最終用戶可以享受性能提升而又不會減慢推理速度。
3. 方法
3.1 公式
對于一個尺寸為
通道數(shù)為D的卷積核,以通道數(shù)為C的特征圖作為輸入,我們使用
表示卷積核,
表示輸入,這是一個尺寸為UxV通道數(shù)為C的特征圖,
代表輸出特征圖。對于這個層的第j個卷積核,相應(yīng)的輸出特征映射通道是:

其中*是二維卷積算子。
是M的第k個通道的尺寸為UxV的特征圖,
代表
的第k個通道的尺寸為HxW的特征圖。在現(xiàn)代CNN體系結(jié)構(gòu)中,批量歸一化(BN)被廣泛使用,以減少過度擬合,加快訓(xùn)練過程。通常情況下,批量歸一化層之后通常會接一個線性變化,以增強表示能力。和公式1相比,輸入變成:

其中,
和
是批標(biāo)準(zhǔn)化的通道平均值和標(biāo)準(zhǔn)差,
和
是縮放系數(shù)和偏移量。
3.2 利用卷積的可加性
我們試圖以不對稱卷積可以等效地融合到標(biāo)準(zhǔn)方形核層中的方式來使用,這樣就不會引入額外的推理時間計算負擔(dān)。我們注意到卷積的一個有用性質(zhì):如果幾個大小兼容的二維核在相同的輸入上以相同的步幅操作以產(chǎn)生相同分辨率的輸出,并且它們的輸出被求和,我們可以將這些核在相應(yīng)的位置相加,從而得到一個產(chǎn)生相同輸出的等效核。也就是說,二維卷積的可加性可以成立,即使核大小不同,

其中
是一個矩陣,
和
是具有兼容尺寸的兩個2D核,
是在對應(yīng)位置的求和操作。注意
可能會被裁剪或者執(zhí)行Padding操作。這里,“兼容”意味著我們可以把較小的內(nèi)核“修補”到較大的內(nèi)核上。在形式下,p層和q的下面這種轉(zhuǎn)換是可行的:

例如,3x1和1x3是和3x3兼容的。通過研究滑動窗口形式的卷積計算,可以很容易地驗證這一點,如圖Figure2所示:

Figure 2
對于一個特定的卷積核
,一個指定的點y,則輸出
可以使用下式計算:

其中,X是輸入M上相應(yīng)的滑動窗口。顯然,當(dāng)我們將兩個濾波器產(chǎn)生的輸出通道相加時,如果一個通道上的每個y,其在另一個通道上的對應(yīng)點共享相同的滑動窗口,則其相加性質(zhì)(等式3)成立。
3.3 ACB不增加任何推理時間開銷
在本文中,我們關(guān)注3x3卷積,這在現(xiàn)代CNN體系結(jié)構(gòu)中大量使用。在給定的體系結(jié)構(gòu)下,我們通過簡單地將每個3x3卷積層替換為ACB來構(gòu)建ACNet,該ACB模塊包含三個并行層,內(nèi)核大小分別為3x3,1x3,和3x1。和標(biāo)準(zhǔn)CNN的常規(guī)做法類似,在三層中的每一層之后都進行批量歸一化,這被成為分子,并將三個分支的輸出綜合作為ACB的輸出。請注意,我們可以使用與原始模型相同的配置來訓(xùn)練ACNet,而無需調(diào)整任何額外的超參數(shù)。如4.1和4.2節(jié)中所示,我們可以訓(xùn)練ACNet達到更高的精度。訓(xùn)練完成后,我們嘗試將每個ACB轉(zhuǎn)換為產(chǎn)生相同輸出的標(biāo)準(zhǔn)卷積層這樣,與經(jīng)過常規(guī)訓(xùn)練的對等方相比,我們可以獲得不需要任何額外計算的功能更強大的網(wǎng)絡(luò)。該轉(zhuǎn)換通過兩個步驟完成,即BN融合和分支融合。
BN融合 卷積的同質(zhì)性使得后續(xù)的BN和線性變換可以等價的融合到具有附加偏置的卷積層中。從公式2可以看出,對于每個分支,如果我們構(gòu)造一個新的內(nèi)核
然后加上偏置
,我們可以產(chǎn)生相同的輸出。
分支融合 我們通過在平方核的相應(yīng)位置加入非對稱核,將三個BN融合分支合并成標(biāo)準(zhǔn)卷積層。在實際應(yīng)用中,這種轉(zhuǎn)換是通過建立一個原始結(jié)構(gòu)的網(wǎng)絡(luò)并使用融合的權(quán)值進行初始化來實現(xiàn)的,這樣我們就可以在與原始結(jié)構(gòu)相同的計算預(yù)算下產(chǎn)生與ACNet相同的輸出。更正式地,對于第j個卷積核,
表示融合后的卷積核,
代表偏置,
和
分別代表1x3和3x1卷積核的輸出,融合后的結(jié)果可以表示為:
然后我們可以很容易地驗證對于任意濾波器j,

其中,
代表原始
三個分支的輸出。Figure3展示了這個過程。

Figure 3
值得注意的是,盡管可以將ACB等價地轉(zhuǎn)換為標(biāo)準(zhǔn)層,但是等效值僅在推理時才成立,因為訓(xùn)練動態(tài)是不同的,從而導(dǎo)致不同的性能。訓(xùn)練過程的不等價性是由于內(nèi)核權(quán)重的隨機初始化,以及由它們參與的不同計算流得出的梯度
4. 實驗
4.1節(jié)和4.2節(jié),論文在CIFAR10和CIFAR100數(shù)據(jù)集,ImageNet數(shù)據(jù)集進行對比測試,結(jié)果如Table1,Table2,Table3所示:


4.3節(jié)還展示了消融研究,也就是對AlexNet和ResNet在ImageNet圖像上進行測試,采用控制變量法控制ACB的三個關(guān)鍵影響因素,同時對比了將圖片旋轉(zhuǎn)的測試效果,最終使用了ACB模塊全部技巧的網(wǎng)絡(luò)模型獲得了幾乎所有測試情況的新SOAT結(jié)果,證明了ACB模塊能夠增加對數(shù)據(jù)旋轉(zhuǎn)的適應(yīng)能力。
4.4 節(jié)用以說明ACB增強了方形卷積核的骨架信息。論文在訓(xùn)練過程中通過隨機丟棄網(wǎng)絡(luò)中3*3卷積核的骨架權(quán)重和邊角權(quán)重,所謂骨架權(quán)重和邊角權(quán)重的定義如Figure6所示,骨架權(quán)重就是和中間位置直接相連的4個位置加上自身,剩下的就是邊角部分了。

Figure 6
然后,畫出不同丟棄比例下的測試集準(zhǔn)確率圖,如Figure5所示:

Figure 5
通過對比圖Figure5(a)和Figure5(b)發(fā)現(xiàn),丟棄骨架部分的權(quán)重會降低準(zhǔn)確率,而丟棄邊角部分的權(quán)重卻能獲得更好的精度。然后,我們通過研究卷積核的數(shù)值來研究上敘述現(xiàn)象發(fā)生的原因。我們使用幅度(即絕對值)作為衡量參數(shù)重要性的指標(biāo),許多先前的CNN加速工作都采用了該指標(biāo)。具體來說,我們將一個卷積層中所有融合的2D卷積核都加起來,通過最大值進行逐層歸一化,最后獲得所有層的歸一化核的平均值。更正式地,我們讓
表示第i個3x3卷積層的第j個核,L代表3x3卷積層的個數(shù),max和abs代表逐像素的求最大值和取絕對值操作,所以平均核矩陣可以計算為:

其中,

我們在Figure6(a)和Figure6(b)上給出了經(jīng)過正常訓(xùn)練的ResNet56和融合了ACNet的A值。某個網(wǎng)格的數(shù)值和顏色表示該參數(shù)在所有位置上平均重要性。從Figure5(a)看出正常訓(xùn)練的ResNet56參數(shù)分布是不平衡的,即中心點的A值最大,而四個角點的A值最小。Figure5(b)顯示ACNet加劇了這種不平衡,因為四個角點的A值減小到了0.4以下,并且骨架中心點的A值為1.0,這意味著該位置在每個3*3層中始終占據(jù)主導(dǎo)地位。值得注意的是,方向,水平,垂直核的相應(yīng)位置上的權(quán)重可能會在符號上相反,因此它們將它們相加可能會產(chǎn)生更大或者更小的幅度。但我們觀察到一個一致的現(xiàn)象,即模型學(xué)會了在每一層增強骨骼部位的權(quán)重。我們繼續(xù)研究如果將非對稱核加到其他位置而不是中心骨架時模型的行為。具體來說,我們使用和以前相同的訓(xùn)練配置來訓(xùn)練Resnet56的ACNet對應(yīng)網(wǎng)絡(luò),但是將水平卷積核向下平移一個像素,垂直卷積核向右平移一個像素。因此,在分支融合時,我們得到Figure6(c)的結(jié)果。我們觀察到, 這樣的ACB網(wǎng)絡(luò)還可以增強邊界,但是強度不如常規(guī)ACB對骨骼的增強。該模型的準(zhǔn)確度為94.67%,比常規(guī)的ACNet低0.42%(Table1)。此外我們對模型融合進行了類似的消融實驗,可以看到丟棄邊角部分的參數(shù)仍然獲得了最高的精度,丟棄增強的右下角邊界不會比丟棄左上角2*2方形的權(quán)重得到更好的結(jié)果。
總結(jié)一下,1)3*3卷積核的骨架部分比邊角部分更加重要;2)ACB可以增強卷積核的骨架部分,從而提高性能;3)和常規(guī)的ACB相比,將水平和垂直核添加到邊界會降低模型的性能;4)這樣做也可以增加邊界的重要性,但是不能削弱其它部分的重要性。因此,我們將ACNet的有效性部分歸因于它進一步增強卷積核骨架的能力。
5. 結(jié)論
為了提高各種CNN架構(gòu)的性能,我們提出了非對稱卷積塊(ACB),該算法將三個分別具有正方形,水平和垂直核的卷積分支的輸出求和。我們通過使用ACB替換成熟體系結(jié)構(gòu)中的方形核卷積層來構(gòu)建非對稱卷積網(wǎng)絡(luò)(ACNet),并在訓(xùn)練后將其轉(zhuǎn)換為原始網(wǎng)絡(luò)結(jié)構(gòu)。在CIFAR和ImageNet數(shù)據(jù)集上,通過在經(jīng)典網(wǎng)絡(luò)上使用ACNet評估我們的性能,取得了SOTA結(jié)果。我們已經(jīng)表明,ACNet可以以可觀察的幅度增強模型對旋轉(zhuǎn)失真的魯棒性,并顯著增強方形卷積核的骨骼部分。并且ACNet也易于使用主流框架實現(xiàn),方便研究者follow這項工作。
好消息!
小白學(xué)視覺知識星球
開始面向外開放啦??????
下載1:OpenCV-Contrib擴展模塊中文版教程 在「小白學(xué)視覺」公眾號后臺回復(fù):擴展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。 下載2:Python視覺實戰(zhàn)項目52講 在「小白學(xué)視覺」公眾號后臺回復(fù):Python視覺實戰(zhàn)項目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學(xué)校計算機視覺。 下載3:OpenCV實戰(zhàn)項目20講 在「小白學(xué)視覺」公眾號后臺回復(fù):OpenCV實戰(zhàn)項目20講,即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學(xué)習(xí)進階。 交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~
