CNN 為什麼要用 3x3 卷積?偶數卷積核其實表現更強!

2021-02-15 AI有道

點擊上方「AI有道」,選擇「星標」公眾號

重磅乾貨,第一時間送達

作者 | BBuf
編輯 | 唐裡

下面要介紹的論文發於NeurlPS2019,題為「Convolution with even-sized kernels and symmetric padding」,axriv地址為:https://arxiv.org/abs/1903.08385。 

當前緊湊的卷積神經網絡主要通道深度可分離卷積,擴張通道和複雜的拓撲結構來提高效率,但這也反過來加重了訓練過程。此外,在這些模型中3*3卷積核佔主要地位,而偶數大小的卷積核(2*2,4*4)很少被採用。

這篇論文通過信息侵蝕假設來量化偶數大小的卷積核在訓練和測試時發生的特徵漂移問題,並通過在特徵圖的四個側面上應用對稱填充來消除它(C2sp,C4sp)。

對稱填充以很少的計算成本釋放了偶數大小卷積核的泛化能力,使得其在圖像分類和生成任務方面優於3*3內核。此外,C2sp獲得了和最新緊湊型CNN相當的精度,而訓練期間的內存和時間消耗卻少得多。對稱填充和偶數大小的卷積可以很好的實現到現有框架中,為卷積體系結構提供有效的設計元素,尤其是在強調訓練在線和持續學習的場景。

 

1. 研究背景

深度卷積神經網絡(CNN)在許多計算機視覺任務中都取得了重大成功,例如圖像分類,語義分割,圖像生成等。除了特定領域的應用外,還設計了各種CNN體系結構來提高性能,其中特徵提取和表示功能主要通過增加網絡的寬度和深度來增強。

因此,內存開銷和計算複雜性極大的阻礙了它們在嵌入式AI系統中的部署。這激發了深度學習社區設計減少計算資源的緊湊型CNN,同時保持令人滿意的精度。

殘差連接和密集連接解決了網絡過深梯度消失的問題。分支拓撲,組卷積,通道混洗以網絡碎片為代價保證了準確性。還有深度可分離卷積也在設計緊湊的CNN時發揮了重要作用。同時最新的神經網絡結構搜索NAS還通過強化學習,演化學習算法等來優化結構。

當代的卷積神經網絡都以3*3卷積為主,並且偶數卷積核被普遍認為不如奇數卷積核,因此很少被用作CNN的基本構建模塊。

並且當前對模型的優化工作主要集中在前向推理階段,而模型訓練因為複雜的拓撲,擴展通道,額外的變換變得更加困難。因此這引發了人們開始對卷積核背後的數學原理重新思考。

在這篇論文中,探索了偶數大小的卷積核的泛化能力(2*2, 4*4),如果將這些卷積核直接用在分類和生成任務中性能都會下降。

論文提出通過信息侵蝕假設對這種線性進行量化:偶數卷積核具有不對稱的感受野導致在生成的特徵圖中產生像素偏移。當堆疊多個卷積時,位置偏移會累積,從而嚴重的侵蝕空間信息。

為了解決這一問題,論文提出使用偶數大小的卷積核的同時在特徵圖的每一層使用對稱填充(C2sp,C4sp)。對稱填充不僅很好的消除了移位問題,而且擴展了偶數偶數卷積核的感受野。

各種實驗表明 C2sp 是對 C3 的有效分解,並可節省 30%-50% 的參數和 FLOPs。另外,和緊湊的 CNN 模塊 (如 DWConv, ShiftNet, 倒瓶頸結構 (MobileNetv2 引入)) 相比,C2sp 在訓練過程中具有 20% 的加速比和 35% 的內存節省,並且達到和他們類似的精度。在生成對抗網絡中,C2sp 和 C4sp 都獲得了改進圖像質量和收斂更加穩定的效果。

 

2. 相關工作

當代大多數網絡模型壓縮方法都嘗試從預先訓練的參數網絡塊中刪減權重,或者量化權重。最近還有一些工作可以在初始化階段修剪網絡和在訓練期間量化模型。模型壓縮方法和設計緊湊型結構的CNN可以共同作用進一步減少內存消耗和計算複雜度。

偶數大小卷積核 

偶數大小卷積核一般和步幅為2一起應用以調整圖像大小。例如,一些GAN模型在生成器和判別器中應用4*4的偶數卷積核,並設置步長為2完成下採樣和上採樣,這樣可以避免棋盤效應。但是,當涉及到深層和大規模GAN網絡時,3*3卷積核仍是首選。在關係強化學習中,採用兩個C2層來實現4個像素表示的對象的推理和計劃。

擴張卷積 

擴張卷積支持感受野的指數級擴展且不會降低特徵圖解析度,這特別適合用於密集預測任務,例如語義分割。可變形卷積通過附加2D偏移量和直接從目標數據集中學習偏移量來增加卷積核的空間採樣位置。ShiftNet使用不包含參數或FLOP的移位核來迴避空間卷積,但它需要大的通道擴展才能取得令人滿意的性能。

3. 方法3.1 移位問題

本文從標準卷積核的空間相關性開始。自覺來看,用兩個C2替換C3不僅可以使性能提高,而且還可以減少11%的開銷,這是受到C5可以分解為兩個C3的啟發。但Figure3(見後文) 中的實驗證明C2的分類準確率低於C3,並且隨著網絡的加深飽和速度更快。

此外,即使將3*3卷積核視為4*4卷積核的子集(包含更多的參數和FLOPs),將每個C3替換為C4也會降低準確性。為了解決這個問題,Figure1 中展示了訓練好的使用C2核的ResNet-56的激活圖。

Figure 1

圖中共有32*32,16*16,8*8三種空間尺度的特徵激活圖被展示出來。其中第一行是使用2*2卷積核(C2),第二行是使用2*2卷積同時使用論文提出的對稱填充(C2sp)方法。可以看到C2中的激活特徵逐漸偏移到空間位置的左上角。這些壓縮和扭曲的特徵已經不適合用於分類,更不用說其它基於像素的任務了,例如目標檢測和語義分割。

論文將這一問題表述為偶數卷積核的移位問題。對於一個有個輸入通道,個輸出通道的特徵圖和一個大小為的正方形卷積核,卷積操作表示為:

其中,枚舉了大小的特徵圖上的感受野。特別地,當k是奇數例如3時,感受野被定義為:

其中,k表示從四個邊界到原點的最大像素個數。表示向下取整函數。因為是對稱的,所以有。當k是一個偶數例如2或4時,因為沒有中心點,所以的卷積操作變成了非對稱的。在大多數深度學習框架中,它很少引起注意,並被預定義的偏移量所掩蓋。例如,Tensorflow選取左上角方向最近的像素點作為原點,這給出了不對稱的感受野

發生在所有空間位置上的偏移等於卷積之前在特徵圖的底部和右側再填充一圈0。對於Caffe是在左側和頂部填充一圈0。Pytorch默認僅支持對稱填充,如果需要,用戶需要自己定義填充方式。 

 

3.2 信息侵蝕假設

如上所述,偶數大小的卷積核使零填充不對稱於1個像素,並且平均(兩個相反方向之間)導致生成的特徵圖偏移0.5個像素。當堆疊多層偶數大小的卷積核時,偏移位置會累積,最終會將將像素擠壓或扭曲到特徵圖空間位置上的某個角。

理想情況下,如果這種非對稱填充卷積以Tensorflow樣式執行了n次,那麼現在的特徵圖相比於原圖對應方式變成:

由於特徵圖的大小為h*w,並且通常會下採樣以進行高級特徵表示,因此邊緣影響不可忽略,因為邊緣的0填充會扭曲特徵圖的有效值,特別是在深層網絡和尺寸小的特徵圖中。

我們假設信息量等於特徵圖的平均L1範數,然後用0填充進行連續卷積以保持特徵圖大小將逐漸侵蝕信息:

信息侵蝕是遞歸發生的,並且難以被公式化,我們直接從包含各種內核大小的深層網絡中獲取特徵圖。在Figure2中,將尺寸為32*32的10k張圖像饋送到未訓練的ResNet-56模型中,其中瓶頸結構和BN層被刪除了。

Figure 2

在較大的卷積核和尺寸較小的特徵圖中逐漸減少且速度更快。此外,偶數大小的卷積核(C2,C4)中的不對稱填充顯著加快了信息侵蝕速度,這和Figure1中的網絡結果一致。可以將特徵圖看作是在水中融化的矩形冰塊,只是它只能在其4個邊緣進行熱交換。冰越小,融化過程越快。

對稱填充均勻地分布了熱梯度,從而減慢了交換速度。而不對稱的填充會在某些角上產生較大的熱梯度,從而使其加速。這個假設也為相關文獻中的一些實驗提供了解釋。

(1)退化問題發生在非常深的網絡中:儘管梯度消失/爆炸的正向激活和反向梯度已經通過初始化和中間歸一化解決,但多次卷積後的空間信息卻被邊緣侵蝕了。

(2)根據報導,在GAN中將網絡深度加倍會阻礙訓練,並將內核大小增加到7或5會導致性能下降或改進。這些表明GAN需要信息增強並且對信息侵蝕更加敏感。

3.3 解決方案

對於等式(3)中的偶數卷積核,不可避免的是不對稱的,因為很難在單個特徵圖中引入對稱性。因此,論文從輸入和卷積核進行卷積操作後的輸出入手。簡單來說,讓表示選擇左上角的最近像素作為原點移位後的感受野。同理選擇其它3個方向就可以得到一個移位後的集合

包括4個方向:左上,右上,左下,右下。讓表示輸入通道索引到移位後的感受野的映射。調整四個移位後的感受野的比例,我們可以得到:

在單個卷積中混合四個移位的後,偶數大小的卷積核會部分擴展。例如。如果是4的倍數(大多數都是),通過按順序分配,在單個卷積層內是嚴格滿足對稱性的。

如上所述,偏移的等效於在特徵圖的某個角填充0。因此,可以通過分組填充策略很好的實現對稱性,Figure2為C2sp的示例,總之,具有偶數大小卷積核和對稱填充策略的2D卷積包含3個步驟。

(1)將輸入特徵圖分成4組。

(2)根據該組中定義的方向填充特徵圖。

(3)執行標準卷積操作。

 

4. 實驗

在這一節,對稱填充的有效性在CIFAR10/100和ImageNet分類任務以及CIFAR10,LSUN,和CelebA-HQ生成任務中得到了驗證。首先,論文證明了移位問題已經通道對稱填充消除。

在Figure1的對稱情況下,特徵圖沒有出現特徵漂移現象,顯示出了合理的幅值和形狀。在Figure2中,就信息量Q而言,C2sp個C4sp的衰減率和C4sp的衰減率比C2和C4低很多。此外,C2sp具有比C3更大的Q。

4.1 探索各種卷積核大小

為了探索各種卷積核的泛化能力,這裡選擇沒有瓶頸層的ResNet作為主幹網絡。並且將所有其它組件和訓練超參數保持相同,僅僅將每個C3替換為C4,C2,C2sp。在CIFAR10上訓練深度為6n + 2,n∈{3,6,...,24}的網絡。參數精度曲線如Figure3左圖所示:

Figure 3

原始的偶數大小的4×4、2×2核的性能較差,並且隨著網絡的加深,飽和度會更快。與C3相比,C2sp僅使用60%-70%的參數以及線性相關的FLOPs即可達到相似的精度。實驗還發現,對稱填充只會稍微提高C4sp的準確性。

在這樣的網絡深度中,邊緣效應可能會主導4×4內核的信息侵蝕,而不是特徵移位問題,這與Figure2中的衰減曲線一致。基於ResNets在CIFAR10上的結果,進一步評估了CIFAR100的C2sp和C3。此時,具有多個深度6n+ 4,n∈{3,6,...,18}的DenseNet是主幹網絡,結果如Figure3中圖所示。

隨著網絡深度的加深,相同深度下C2sp的精度和C3相當。訓練損失表明C2sp比C3具有更好的泛化性能和過擬合。在相似精度的標準下,C2sp模型在CIFAR評估中節省30%-50%的參數和FLOPs。因此,本文推薦在分類任務中使用C2sp作為C3的更好替代品。

4.2 和緊湊的CNN模塊對比

這一節和當前在模型結構方面設計的一些高效CNN模塊如Shift Net, 深度可以分離卷積,反瓶頸結構(Mobilenetv2引入)進行對比。主要對比了錯誤率,參數量,FLOPs,通道擴展速率,內存,速度等指標。具體的測試結果如Table1所示。

同時論文對比了C2sp和當前的一些NAS網絡模型:NASNet,PNASNet和AmoebaNet等。論文應用Wide-DenseNet並調整深度和寬度(K=48,L=50)以具有大約3.3M參數。和SOAT的自動生成模型相比,C2sp的準確率損失了不到0.2%,並且使用cutout和數據增強策略後模型的準確率相比SOAT精度還可以提升0.21%。

雖然NAS模型使用分離的運算符如池化,組卷積,深度可分離卷積來提高相同參數量模型的準確率,但標準的Wide-DenseNet具有更好的內存和運行時的計算效率。作者在TitanXP上針對NASNet-A和Wide-DenseNet的訓練速度分別是200和400sps。具體測試結果如Table2所示。


4.3 ImageNet圖像分類任務

這一節沒什麼的好解釋的了,論文對比了Resnet-50,DenseNet-121,MobileNet v1, MobileNet V2在ImageNet圖像分類數據集上的表現。注意在Table3中網絡後面接的0.5x表示通道數是原始網絡的0.5倍,其他數字類推。具體測試結果如Tabel3所示。


4.4 圖像生成任務

對稱填充的有效性進一步在GAN中得到了驗證。Table4展示了使用不同類型的卷積核在CIFAR10,LSUN和CelebA上的測試結果。

然後論文還給出了由不同卷積核構成的GAN的可視化生成結果,如Figure4所示。

論文還出了分類實驗和GAN生成實驗的一些超參數設置,具體細節見原論文。  

  

5. 結論

這篇論文探索了偶數大小卷積核的(2×2、4×4)的泛化能力,並通過信息腐蝕假設量化了特徵漂移問題。然後,論文引入了對稱填充以在單個卷積層內優雅的實現對稱性。

在分類任務中,和CIFAR10/100的C3相比,C2sp節省了30%-50%的參數和FLOPs,並且在ImageNet上將C2的準確率提升了2.5%。和現有的緊湊的CNN結構相比,C2sp以更少的通道和更簡單的架構實現了具有競爭力的精度結果,減少了>35%的內存消耗並加快了>20%的訓練速度。

在圖像生成任務中,C2sp和C4sp都可以提高圖像質量並穩定收斂。具有對稱填充的偶數大小的卷積核為強調在線和持續學習的CNN體系結構設計提供了更有效的結構單元。

 

參考文獻:

[28] TakeruMiyato, Toshiki Kataoka, Masanori Koyama, and Yuichi Yoshida. Spectralnormalizationfor generative adversarial networks. InInternational Conference onLearning Representations,2018.

重磅!

林軒田機器學習完整視頻和博主筆記來啦!

掃描下方二維碼,添加 AI有道小助手微信,可申請入群,並獲得林軒田機器學習完整視頻 + 博主紅色石頭的精煉筆記(一定要備註:入群 + 地點 + 學校/公司。例如:入群+上海+復旦。 

長按掃碼,申請入群

(添加人數較多,請耐心等待)

 

最新 AI 乾貨,我在看 

相關焦點

  • 為什麼要用3x3卷積?偶數卷積核其實表現更強
    這篇論文通過信息侵蝕假設來量化偶數大小的卷積核在訓練和測試時發生的特徵漂移問題,並通過在特徵圖的四個側面上應用對稱填充來消除它(C2sp,C4sp)。對稱填充以很少的計算成本釋放了偶數大小卷積核的泛化能力,使得其在圖像分類和生成任務方面優於3*3內核。此外,C2sp獲得了和最新緊湊型CNN相當的精度,而訓練期間的內存和時間消耗卻少得多。
  • 卷積核半徑都是奇數是什麼原因?這裡有答案
    點擊上方「AITop100」,選擇「星標」公眾號重磅乾貨,第一時間送達學過cnn
  • 【CNN】很細的講解什麼以及為什麼是卷積(Convolution)!
    教科書上通常會給出定義,給出很多性質,也會用實例和圖形進行解釋,但究竟為什麼要這麼設計,這麼計算,背後的意義是什麼,往往語焉不詳。作為一個學物理出身的人,一個公式倘若倘若給不出結合實際的直觀的通俗的解釋(也就是背後的「物理」意義),就覺得少了點什麼,覺得不是真的懂了。
  • 【CNN】很詳細的講解什麼以及為什麼是卷積(Convolution)
    教科書上通常會給出定義,給出很多性質,也會用實例和圖形進行解釋,但究竟為什麼要這麼設計,這麼計算,背後的意義是什麼,往往語焉不詳。作為一個學物理出身的人,一個公式倘若倘若給不出結合實際的直觀的通俗的解釋(也就是背後的「物理」意義),就覺得少了點什麼,覺得不是真的懂了。
  • 卷積與反卷積的實現
    在圖像處理和語音識別領域,利用數據的內部結構是非常有益的,所以這就是為什麼要利用卷積的原因。卷積是一種考慮到特徵序關係的線性變換:稀疏;權值共享1.       卷積操作卷積操作是指卷積核按照一定的stride值在input featuremap上進行滑動,在每一位置,計算卷積核和覆蓋的inputfeature map對應位置的元素乘積再求和,作為該處的output featuremap的值。該值是完成了對input feature map上局部區域(卷積核尺寸)的加權和,如右圖。
  • CNN 真的需要下採樣(上採樣)嗎?
    小卷積核的嘗試我們知道,大卷積核的感受野通常可以通過疊加多個小卷積核得到,vggnet首先發現5x5卷積可以用兩個3x3卷積代替,極大減少了參數量。兩個3x3卷積的感受野和一個5x5卷積相同,但是參數少一半同樣的7x7卷積可以用三個3x3卷積級聯,9x9可以用四個3x3卷積級聯。
  • 流形上的卷積
    如果有辦法定義旋轉不變(或旋轉等變)的卷積核,將會大大減少卷積核的個數,以及由這些冗餘的卷積核引入的參數。Taco Cohen 的群等變卷積,steerable 卷積,都是試圖在卷積中加入對稱性,在不增加計算負擔的條件下,帶來比傳統卷積更強的權重共享和模型表達能力。
  • 更靈活、有個性的卷積——可變形卷積(Deformable Conv)
    可變形卷積示意圖Deformable Conv boy給出了可變形卷積操作的簡單示意圖,可以看到offsets是額外使用一個卷積來生成的,與最終要做卷積操作那個卷積不是同一個。conv則是最終實際要進行的卷積操作,注意這裡步長設置為卷積核大小,因為與該卷積核進行卷積操作的特徵圖是由輸出特徵圖中每個點擴展為其對應卷積核那麼多個點後生成的。比如conv是3x3卷積,輸出特徵圖尺寸2x3(hxw),那麼其每個點都被擴展為9(3x3)個點,對應卷積核的每個位置。
  • TensorFlow 卷積 padding 策略詳解
    我們先看一個例子:假設輸入圖片尺寸為 5x5,卷積核尺寸為 3x3,做二維卷積時動圖如下:而 'VALID' padding 則非常守規矩,卷積核只在「有效的」輸入像素點範圍內滑動。= input_w - kernel_w + 1下圖為一個 'VALID' padding 例子,輸入圖片尺寸為 4x4,卷積核尺寸為 3x3,輸出尺寸為 2x2。
  • 卷積為什麼如此強大?理解深度學習中的卷積
    我的同事Jannek Thomas通過索貝爾邊緣檢測濾波器(與上上一幅圖類似)去掉了圖像中除了邊緣之外的所有信息——這也是為什麼卷積應用經常被稱作濾波而卷積核經常被稱作濾波器(更準確的定義在下面)的原因。由邊緣檢測濾波器生成的feature map對區分衣服類型非常有用,因為只有外形信息被保留下來。
  • 如何通俗易懂地解釋卷積?
    教科書上通常會給出定義,給出很多性質,也會用實例和圖形進行解釋,但究竟為什麼要這麼設計,這麼計算,背後的意義是什麼,往往語焉不詳。作為一個學物理出身的人,一個公式倘若倘若給不出結合實際的直觀的通俗的解釋(也就是背後的「物理」意義),就覺得少了點什麼,覺得不是真的懂了。
  • 從全卷積網絡到大型卷積核:深度學習的語義分割全指南
    本文由淺層模型到深度模型,簡要介紹了語義分割各種技術,雖然本文並沒有深入講解語義分割的具體實現,但本文簡要地概述了每一篇重要論文的精要和亮點,希望能給讀者一些指南。  什麼是語義分割?  語義分割指像素級地識別圖像,即標註出圖像中每個像素所屬的對象類別。
  • CNN 可視化技術總結(二):卷積核可視化
    上篇文章我們介紹了特徵圖可視化方法,對於特徵圖可視化的方法(或者說原理)比較容易理解,即把feature map從特徵空間通過反卷積網絡映射回像素空間。    那捲積核怎樣可視化呢,基於什麼原理來可視化?卷積核的尺寸一般只有3x3, 5x5大小,如何可視化?本文將介紹這個兩個內容。
  • 2D卷積網絡模型
    每層卷積參數輸出C1卷積層6個5×5的卷積核6組28×28的特徵映射S2層為匯聚層採樣窗口為 2 × 2,avg6 × 14 × 14C3層為卷積層60 個 5 × 5 的卷積核16 組10 × 10 的特徵映射S4層是匯聚層
  • 用 Pytorch 理解卷積網絡
    最後,我們用包含10個類的輸出層結束這組層。具有最高值的此類將是模型預測結果。這是定義所有層之後的網絡多層外觀。這種多層感知器的一個缺點是全連接的以供網絡學習,這需要更多的時間和空間。MLP僅接受向量作為輸入。
  • CNN卷積方法一覽
    目前大多數深度學習教程很少對卷積的含義進行細述,大部分只是對圖像的卷積操作進行了闡述。以至於卷積的數學意義和物理意義很多人並不是很清楚,究竟為什麼要這樣設計,這麼設計的原因如何。     追本溯源,我們先回到數學教科書中來看卷積。在泛函分析中,卷積也叫旋積或者褶積,是一種通過兩個函數x(t)和h(t)生成的數學算子。
  • CNN 卷積方法一覽
    目前大多數深度學習教程很少對卷積的含義進行細述,大部分只是對圖像的卷積操作進行了闡述。以至於卷積的數學意義和物理意義很多人並不是很清楚,究竟為什麼要這樣設計,這麼設計的原因如何。     追本溯源,我們先回到數學教科書中來看卷積。在泛函分析中,卷積也叫旋積或者褶積,是一種通過兩個函數x(t)和h(t)生成的數學算子。其計算公式如下:連續形式:
  • 為什麼卷積神經網絡中的「卷積」不是卷積運算?
    也就是說,將卷積核上下,左右翻轉180度,再相乘求和才是卷積計算。那麼這裡面為什麼可以用互相關代替卷積呢?其實二維卷積的核心計算就是二維互相關運算,使用互相關代替卷積是不影響模型預測結果的,具體的我們通過一個conv模型訓練的實例來解釋:這裡我們藉助MXNet中的autograd模塊來實現自動求導,以及通過gluon中的nn模塊,繼承Block類來構造模型。
  • 原來卷積是這麼計算的
    2 什麼是多卷積核2.1 卷積從本質上講,卷積的計算過程其實同全連接一樣,也是各個神經元之間的線性組合。只是卷積操作在進行線性組合時選擇的是特定位置上的神經元。下面我們首先通過一張動圖來直觀感受一下卷積的過程。圖 1.
  • 一文讀懂CNN中卷積層與轉置卷積層的關係
    卷積層和全連接層在CNN提出之前,我們所提到的人工神經網絡應該多數情況下都是前饋神經網絡,兩者區別主要在於CNN使用了卷積層,而前饋神經網絡用的都是全連接層,而這兩個layer的區別又在於全連接層認為上一層的所有節點下一層都是需要的,通過與權重矩陣相乘層層傳遞,而卷積層則認為上一層的有些節點下一層其實是不需要的,所以提出了卷積核矩陣的概念,如果卷積核的大小是n*m,那麼意味著該卷積核認為上一層節點每次映射到下一層節點都只有