ACNet: Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution Blocks! |
文章目錄
- 本文文章來自ICCV2019: 通過非對稱卷積塊增強CNN的核骨架。論文地址:https://arxiv.org/abs/1908.03930v1
- 代碼開源在:https://github.com/ShawnDing1994/ACN
- 本文主要內容來自:3×3卷積+1×3卷積+3×1卷積=白給的精度提升!
一. 摘要
由於在給定的應用環境中設計合適的卷積神經網絡(CNN)結構需要大量的人工工作或大量的GPU資源消耗,研究界正在尋找網絡結構無關的CNN結構,這種結構可以很容易地插入到多個成熟的體系結構中,以提高我們實際應用程序的性能。我們提出了非對稱卷積塊(ACB)作爲CNN的構造塊,它使用一維非對稱卷積核來增強方形卷積核,我們用ACBs代替標準的方形卷積核來構造一個非堆成卷積網絡ACNet,該網絡可以訓練到更高的精度。訓練後,我們等價地將ACNet轉換爲相同的原始架構,因此將不需要額外的計算。實驗證明,ACNet可以CIFAR和ImageNet上顯著提高各種經典模型的性能。
二. 研究背景
卷積神經網絡在視覺理解方面取得了巨大的成功,這使得其可以應用在安全系統,移動電話,汽車等各種應用中。由於前端設備通常受限於計算資源,就要求網絡在保證精度的條件下要儘可能輕量。另一方面,隨着CNN架構設計的相關研究增多,模型的性能得到了顯著改善,但當前現有的模型不能滿足我們的特定需求時,要定製一種新的架構需要花費極高的成本。最近,研究者們正在尋求與架構無關的新型CNN結構,例如SE塊和準六邊形內核,它們可以直接和各種網絡結構結合使用,以提高它們的性能。最近對CNN結構的研究主要集中在1)層之間是如何相互連接的,例如簡單的堆疊在一起,恆等映射,密集連接等;2)如何組合不同層的輸出以提高學習表示的質量;本文提出了非對稱卷積塊(ACB),它是用三個並行的核來代替原始的核, 它是用三個並行的 and 核來代替原始的 核,如圖Figure1所示:如圖Figure1所示:
給定一個網絡,我們通過將每個方形卷積核替換爲ACB模塊並訓練網絡到收斂。之後我們將每個ACB中非對稱核的權值加到方形核的對應位置,將ACNet轉換爲和原始網絡等效的結構。ACNet可以提高基準模型的性能,在CIFAR和ImageNet上優勢明顯。更好的是,ACNet引入了0參數,因此無需仔細調參就能將其與不同的CNN結構結合起來,並且易於在主流CNN框架上實現以及不需要額外的推理時間開銷。
三. 相關工作
3.1. 非對稱卷積
非對稱卷積通常用於逼近現有的正方形卷積以進行模型壓縮和加速,先前的一些工作表明,可以將標準的 卷積分解爲 和 卷積,以減少參數量。其背後的理論相當簡單:如果二維卷積核的秩爲1,則運算可等價地轉換爲一系列一維卷積。然而,由於深度網絡中下學習到的核具有分佈特徵值,其內在秩比實際中的高,因此直接將變換應用於核會導致顯著的信息損失。Denton等人基於SVD分解找到一個低秩逼近,然後對上層進行精細化以恢復性能。Jaderberg等人通過最小化重構誤差,成功學習了水平核和垂直核。Jin等人應用結構約束使二維卷積可分離,在獲得相當精度的條件下時間加速了2倍。另一方面,非堆成卷積也被廣泛的用來做網絡結構設計,例如Inception-v3中, 卷積被 卷積和 卷積代替。語義分割ENet網絡也採用這種方法來設計高效的語義分割網絡,雖然精度略有下降,但降低了33%的參數量。
3.2. CNN架構中的中性結構
我們不打算修改CNN架構,而是使用一些與架構無關的結構來增強現有的模型。因此,我們的方法對任何網絡都是有效的。例如,SE塊可以附加到卷積層後,使用學習到的權重重新縮放特徵圖通道數,從而在合理的附加參數量和計算代價下顯著提高精度。作爲另一個示例,可以將輔助分類器插入模型中以幫助監督學習過程,這確實可以提高性能,但是需要額外的人爲調整超參數。相比之下,ACNet在訓練中不會引入任何超參數,並且在推理過程中不需要額外的參數和計算。因此,在實際應用中,開發人員可以使用ACNet來增強各種模型,而無需進行詳細的參數調整,並且最終用戶可以享受性能提升而又不會減慢推理速度。
四. 本文方法
4.1. 公式
對於一個尺寸爲 通道數爲 的卷積核,以通道數爲 的特徵圖作爲輸入,我們使用 表示卷積核, 表示輸入,這是一個尺寸爲 通道數爲 的特徵圖, 代表輸出特徵圖。對於這個層的第 個卷積核,相應的輸出特徵映射通道是:
其中: 是二維卷積算子。 是 的第 個通道的尺寸爲 的特徵圖, 代表 的第 個通道的尺寸爲 的特徵圖。在現代CNN體系結構中,批量歸一化(BN)被廣泛使用,以減少過度擬合,加快訓練過程。通常情況下,批量歸一化層之後通常會接一個線性變化,以增強表示能力。和公式1相比,輸入變成:
其中: 和 是批標準化的通道平均值和標準差, 和 是縮放係數和偏移量。
4.2. 利用卷積的可加性
我們試圖以不對稱卷積可以等效地融合到標準方形核層中的方式來使用,這樣就不會引入額外的推理時間計算負擔。我們注意到卷積的一個有用性質:如果幾個大小兼容的二維核在相同的輸入上以相同的步幅操作以產生相同分辨率的輸出,並且它們的輸出被求和,我們可以將這些核在相應的位置相加,從而得到一個產生相同輸出的等效核。也就是說,二維卷積的可加性可以成立,即使核大小不同。
其中: 是一個矩陣, 和 是具有兼容尺寸的兩個2D核, 是在對應位置的求和操作。注意 可能會被裁剪或者執行Padding操作。這裏“兼容”意味着我們可以把較小的內核“修補”到較大的內核上。在形式下, 層和 的下面這種轉換是可行的:
例如, 和 是和 兼容的。通過研究滑動窗口形式的卷積計算,可以很容易地驗證這一點,如圖Figure2所示:
對於一個特定的卷積核 ,一個指定的點 ,則輸出 可以使用下式計算:
其中, 是輸入 上相應的滑動窗口。顯然,當我們將兩個濾波器產生的輸出通道相加時,如果一個通道上的每個 ,其在另一個通道上的對應點共享相同的滑動窗口,則其相加性質(等式3)成立。
4.3. ACB不增加任何推理時間開銷
在本文中,我們關注 卷積,這在現代CNN體系結構中大量使用。在給定的體系結構下,我們通過簡單地將每個 卷積層替換爲ACB來構建ACNet,該ACB模塊包含三個並行層,內核大小分別爲 , ,和 。和標準CNN的常規做法類似,在三層中的每一層之後都進行批量歸一化,這被成爲分子,並將三個分支的輸出綜合作爲ACB的輸出。請注意,我們可以使用與原始模型相同的配置來訓練ACNet,而無需調整任何額外的超參數。如4.1和4.2節中所示,我們可以訓練ACNet達到更高的精度。訓練完成後,我們嘗試將每個ACB轉換爲產生相同輸出的標準卷積層這樣,與經過常規訓練的對等方相比,我們可以獲得不需要任何額外計算的功能更強大的網絡。該轉換通過兩個步驟完成,即BN融合和分支融合。
BN融合: 卷積的同質性使得後續的BN和線性變換可以等價的融合到具有附加偏置的卷積層中。從公式2可以看出,對於每個分支,如果我們構造一個新的內核 然後加上偏置 ,我們可以產生相同的輸出。
分支融合: 我們通過在平方核的相應位置加入非對稱核,將三個BN融合分支合併成標準卷積層。在實際應用中,這種轉換是通過建立一個原始結構的網絡並使用融合的權值進行初始化來實現的,這樣我們就可以在與原始結構相同的計算預算下產生與ACNet相同的輸出。更正式地,對於第 個卷積核, 表示融合後的卷積核, 代表偏置, 和 分別代表 和 卷積核的輸出,融合後的結果可以表示爲:
然後我們可以很容易地驗證對於任意濾波器
其中 代表原始 and 三個分支的輸出。Figure3展示了這個過程。
值得注意的是,儘管可以將ACB等價地轉換爲標準層,但是等效值僅在推理時才成立,因爲訓練動態是不同的,從而導致不同的性能。訓練過程的不等價性是由於內核權重的隨機初始化,以及由它們參與的不同計算流得出的梯度
五. 實驗部分
4.1節和4.2節,論文在CIFAR10和CIFAR100數據集,ImageNet數據集進行對比測試,結果如Table1,Table2,Table3所示:
六. 代碼實現
待更新~~~~~~~
參考文獻
本文主要參考了下面作者,這裏表示感謝!