2019-11-28 04:33:41
作者 | BBuf
編輯 | 唐裡
ICCV2019: 通過非對稱卷積塊增強CNN的核骨架
下面要介紹的論文發于ICCV2019,題為「ACNet:Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric ConvolutionBlocks」,axriv位址為:https://arxiv.org/abs/1908.03930v1。
由于在給定的應用環境中設計合适的卷積神經網絡(CNN)結構需要大量的人工工作或大量的GPU資源消耗,研究界正在尋找網絡結構無關的CNN結構,這種結構可以很容易地插入到多個成熟的體系結構中,以提高我們實際應用程式的性能。我們提出了非對稱卷積塊(ACB)作為CNN的構造塊,它使用一維非對稱卷積核來增強方形卷積核,我們用ACBs代替标準的方形卷積核來構造一個非堆成卷積網絡ACNet,該網絡可以訓練到更高的精度。訓練後,我們等價地将ACNet轉換為相同的原始架構,是以将不需要額外的計算。實驗證明,ACNet可以CIFAR和ImageNet上顯著提高各種經典模型的性能。
1. 研究背景
卷積神經網絡在視覺了解方面取得了巨大的成功,這使得其可以應用在安全系統,行動電話,汽車等各種應用中。由于前端裝置通常受限于計算資源,就要求網絡在保證精度的條件下要盡可能輕量。另一方面,随着CNN架構設計的相關研究增多,模型的性能得到了顯著改善,但當現有的模型不能滿足我們的特定需求時,要定制一種新的架構需要花費極高的成本。最近,研究者們正在尋求與架構無關的新型CNN結構,例如SE塊和準六邊形核心,它們可以直接和各種網絡結構結合使用,以提高它們的性能。最近對CNN結構的研究主要集中在1)層之間是如何互相連接配接的,例如簡單的堆疊在一起,恒等映射,密集連接配接等;2)如何組合不同層的輸出以提高學習表示的品質;本文提出了非對稱卷積塊(ACB),它是用三個并行的
核來代替原始的
核,如圖Figure1所示:
Figure 1
給定一個網絡,我們通過将每個方形卷積核替換為ACB子產品并訓練網絡到收斂。之後我們将每個ACB中非對稱核的權值加到方形核的對應位置,将ACNet轉換為和原始網絡等效的結構。ACNet可以提高基準模型的性能,在CIFAR和ImageNet上優勢明顯。更好的是,ACNet引入了0參數,是以無需仔細調參就能将其與不同的CNN結構結合起來,并且易于在主流CNN架構上實作以及不需要額外的推理時間開銷。
代碼開源在:https://github.com/ShawnDing1994/ACN。
2. 相關工作
2.1 非對稱卷積
非對稱卷積通常用于逼近現有的正方形卷積以進行模型壓縮和加速,先前的一些工作表明,可以将标準的卷積分解為
和
卷積,以減少參數量。其背後的理論相當簡單:如果二維卷積核的秩為1,則運算可等價地轉換為一系列一維卷積。然而,由于深度網絡中下學習到的核具有分布特征值,其内在秩比實際中的高,是以直接将變換應用于核會導緻顯著的資訊損失。Denton等人基于SVD分解找到一個低秩逼近,然後對上層進行精細化以恢複性能。Jaderberg等人通過最小化重構誤差,成功學習了水準核和垂直核。Jin等人應用結構限制使二維卷積可分離,在獲得相當精度的條件下時間加速了2倍。另一方面,非堆成卷積也被廣泛的用來做網絡結構設計,例如Inception-v3中,7*7卷積被1*7卷積和7*1卷積代替。語義分割ENet網絡也采用這種方法來設計高效的語義分割網絡,雖然精度略有下降,但降低了33%的參數量。
2.2 CNN架構中的中性結構
我們不打算修改CNN架構,而是使用一些與架構無關的結構來增強現有的模型。是以,我們的方法對任何網絡都是有效的。例如,SE塊可以附加到卷積層後,使用學習到的權重重新縮放特征圖通道數,進而在合理的附加參數量和計算代價下顯著提高精度。作為另一個示例,可以将輔助分類器插入模型中以幫助監督學習過程,這确實可以提高性能,但是需要額外的人為調整超參數。相比之下,ACNet在訓練中不會引入任何超參數,并且在推理過程中不需要額外的參數和計算。是以,在實際應用中,開發人員可以使用ACNet來增強各種模型,而無需進行詳細的參數調整,并且最終使用者可以享受性能提升而又不會減慢推理速度。
3. 方法
3.1 公式
對于一個尺寸為
通道數為D的卷積核,以通道數為C的特征圖作為輸入,我們使用
表示卷積核,
表示輸入,這是一個尺寸為UxV通道數為C的特征圖,
代表輸出特征圖。對于這個層的第j個卷積核,相應的輸出特征映射通道是:
其中*是二維卷積算子。
是M的第k個通道的尺寸為UxV的特征圖,
代表
的第k個通道的尺寸為HxW的特征圖。在現代CNN體系結構中,批量歸一化(BN)被廣泛使用,以減少過度拟合,加快訓練過程。通常情況下,批量歸一化層之後通常會接一個線性變化,以增強表示能力。和公式1相比,輸入變成:
其中,
和
是批标準化的通道平均值和标準差,
和
是縮放系數和偏移量。
3.2 利用卷積的可加性
我們試圖以不對稱卷積可以等效地融合到标準方形核層中的方式來使用,這樣就不會引入額外的推理時間計算負擔。我們注意到卷積的一個有用性質:如果幾個大小相容的二維核在相同的輸入上以相同的步幅操作以産生相同分辨率的輸出,并且它們的輸出被求和,我們可以将這些核在相應的位置相加,進而得到一個産生相同輸出的等效核。也就是說,二維卷積的可加性可以成立,即使核大小不同,
其中
是一個矩陣,
和
是具有相容尺寸的兩個2D核,
是在對應位置的求和操作。注意可能會被裁剪或者執行Padding操作。這裡,“相容”意味着我們可以把較小的核心“修補”到較大的核心上。在形式下,p層和q的下面這種轉換是可行的:
例如,3x1和1x3是和3x3相容的。通過研究滑動視窗形式的卷積計算,可以很容易地驗證這一點,如圖Figure2所示:
Figure 2
對于一個特定的卷積核,一個指定的點y,則輸出
可以使用下式計算:
其中,X是輸入M上相應的滑動視窗。顯然,當我們将兩個濾波器産生的輸出通道相加時,如果一個通道上的每個y,其在另一個通道上的對應點共享相同的滑動視窗,則其相加性質(等式3)成立。
3.3 ACB不增加任何推理時間開銷
在本文中,我們關注3x3卷積,這在現代CNN體系結構中大量使用。在給定的體系結構下,我們通過簡單地将每個3x3卷積層替換為ACB來建構ACNet,該ACB子產品包含三個并行層,核心大小分别為3x3,1x3,和3x1。和标準CNN的正常做法類似,在三層中的每一層之後都進行批量歸一化,這被成為分子,并将三個分支的輸出綜合作為ACB的輸出。請注意,我們可以使用與原始模型相同的配置來訓練ACNet,而無需調整任何額外的超參數。如4.1和4.2節中所示,我們可以訓練ACNet達到更高的精度。訓練完成後,我們嘗試将每個ACB轉換為産生相同輸出的标準卷積層這樣,與經過正常訓練的對等方相比,我們可以獲得不需要任何額外計算的功能更強大的網絡。該轉換通過兩個步驟完成,即BN融合和分支融合。
BN融合 卷積的同質性使得後續的BN和線性變換可以等價的融合到具有附加偏置的卷積層中。從公式2可以看出,對于每個分支,如果我們構造一個新的核心
然後加上偏置
,我們可以産生相同的輸出。
分支融合 我們通過在平方核的相應位置加入非對稱核,将三個BN融合分支合并成标準卷積層。在實際應用中,這種轉換是通過建立一個原始結構的網絡并使用融合的權值進行初始化來實作的,這樣我們就可以在與原始結構相同的計算預算下産生與ACNet相同的輸出。更正式地,對于第j個卷積核,
表示融合後的卷積核,
代表偏置,
和
分别代表1x3和3x1卷積核的輸出,融合後的結果可以表示為:
然後我們可以很容易地驗證對于任意濾波器j,
其中,
代表原始
三個分支的輸出。Figure3展示了這個過程。
Figure 3
值得注意的是,盡管可以将ACB等價地轉換為标準層,但是等效值僅在推理時才成立,因為訓練動态是不同的,進而導緻不同的性能。訓練過程的不等價性是由于核心權重的随機初始化,以及由它們參與的不同計算流得出的梯度
4. 實驗
4.1節和4.2節,論文在CIFAR10和CIFAR100資料集,ImageNet資料集進行對比測試,結果如Table1,Table2,Table3所示:
4.3節還展示了消融研究,也就是對AlexNet和ResNet在ImageNet圖像上進行測試,采用控制變量法控制ACB的三個關鍵影響因素,同時對比了将圖檔旋轉的測試效果,最終使用了ACB子產品全部技巧的網絡模型獲得了幾乎所有測試情況的新SOAT結果,證明了ACB子產品能夠增加對資料旋轉的适應能力。
4.4 節用以說明ACB增強了方形卷積核的骨架資訊。論文在訓練過程中通過随機丢棄網絡中3*3卷積核的骨架權重和邊角權重,所謂骨架權重和邊角權重的定義如Figure6所示,骨架權重就是和中間位置直接相連的4個位置加上自身,剩下的就是邊角部分了。
Figure 6
然後,畫出不同丢棄比例下的測試集準确率圖,如Figure5所示:
Figure 5
通過對比圖Figure5(a)和Figure5(b)發現,丢棄骨架部分的權重會降低準确率,而丢棄邊角部分的權重卻能獲得更好的精度。然後,我們通過研究卷積核的數值來研究上叙述現象發生的原因。我們使用幅度(即絕對值)作為衡量參數重要性的名額,許多先前的CNN加速工作都采用了該名額。具體來說,我們将一個卷積層中所有融合的2D卷積核都加起來,通過最大值進行逐層歸一化,最後獲得所有層的歸一化核的平均值。更正式地,我們讓
表示第i個3x3卷積層的第j個核,L代表3x3卷積層的個數,max和abs代表逐像素的求最大值和取絕對值操作,是以平均核矩陣可以計算為:
其中,
我們在Figure6(a)和Figure6(b)上給出了經過正常訓練的ResNet56和融合了ACNet的A值。某個網格的數值和顔色表示該參數在所有位置上平均重要性。從Figure5(a)看出正常訓練的ResNet56參數分布是不平衡的,即中心點的A值最大,而四個角點的A值最小。Figure5(b)顯示ACNet加劇了這種不平衡,因為四個角點的A值減小到了0.4以下,并且骨架中心點的A值為1.0,這意味着該位置在每個3*3層中始終占據主導地位。值得注意的是,方向,水準,垂直核的相應位置上的權重可能會在符号上相反,是以它們将它們相加可能會産生更大或者更小的幅度。但我們觀察到一個一緻的現象,即模型學會了在每一層增強骨骼部位的權重。我們繼續研究如果将非對稱核加到其他位置而不是中心骨架時模型的行為。具體來說,我們使用和以前相同的訓練配置來訓練Resnet56的ACNet對應網絡,但是将水準卷積核向下平移一個像素,垂直卷積核向右平移一個像素。是以,在分支融合時,我們得到Figure6(c)的結果。我們觀察到, 這樣的ACB網絡還可以增強邊界,但是強度不如正常ACB對骨骼的增強。該模型的準确度為94.67%,比正常的ACNet低0.42%(Table1)。此外我們對模型融合進行了類似的消融實驗,可以看到丢棄邊角部分的參數仍然獲得了最高的精度,丢棄增強的右下角邊界不會比丢棄左上角2*2方形的權重得到更好的結果。
總結一下,1)3*3卷積核的骨架部分比邊角部分更加重要;2)ACB可以增強卷積核的骨架部分,進而提高性能;3)和正常的ACB相比,将水準和垂直核添加到邊界會降低模型的性能;4)這樣做也可以增加邊界的重要性,但是不能削弱其它部分的重要性。是以,我們将ACNet的有效性部分歸因于它進一步增強卷積核骨架的能力。
5. 結論
為了提高各種CNN架構的性能,我們提出了非對稱卷積塊(ACB),該算法将三個分别具有正方形,水準和垂直核的卷積分支的輸出求和。我們通過使用ACB替換成熟體系結構中的方形核卷積層來建構非對稱卷積網絡(ACNet),并在訓練後将其轉換為原始網絡結構。在CIFAR和ImageNet資料集上,通過在經典網絡上使用ACNet評估我們的性能,取得了SOTA結果。我們已經表明,ACNet可以以可觀察的幅度增強模型對旋轉失真的魯棒性,并顯著增強方形卷積核的骨骼部分。并且ACNet也易于使用主流架構實作,友善研究者follow這項工作。