真正的最強ResNet改進,高性能"即插即用"金字塔卷積


編輯:Happy
首發:AIWalker公眾號
鏈接:真正的最強ResNet改進,高性能"即插即用"金字塔卷積
日期:2020-06-24

標題&作者團隊標題&作者團隊

【Happy導語】該文參考SIFT的多尺度特征提取思路設計了一種新穎的金字塔卷積,它不用於其他類似方法的關鍵點在於:卷積核的多尺度。同時為了盡可能的降低整體計算復雜度,在每個group內再一次進行組卷積,以確保金字塔卷積的計算量與標准卷積的計算量相當。筆者認為這篇論文思想簡單,易於實現,效果驚人。推薦各位稍微花點時間了解一下這篇文章(注:亮點在Appendix部分),文末附文章、code以及預訓練模型的下載方式。

Abstract

​ 該文提出一種金字塔卷積(Pyramidal Convolution, PyConv),它可以在多個濾波器尺度對輸入進行處理。PyConv包含一個核金字塔,每一層包含不同類型的濾波器(濾波器的大小與深度可變,因此可以提取不同尺度的細節信息)。除了上述提到的可以提取多尺度信息外,相比標准卷積,PyConv實現高效,即不會提升額外的計算量與參數量。更進一步,它更為靈活並具有可擴展性,為不同的應用提升了更大的架構設計空間。

​ PyConv幾乎可以對每個CV任務都有正面影響,作者基於PyConv對四大主流任務(圖像分類、視頻分類、目標檢測以及語義分割)進行了架構設計。相比baseline,所提方法取得了一致性的性能提升。比如在圖像分類任務上,所提50層模型優於ResNet152,同時具有更少的參數量(2.39x-fewer)、計算復雜度(2.52x-fewer)以及更少的層數和;在語義分割任務上,它在ADE20K數據集上指標達到SOTA(注:好像並不如ResNeSt的指標)。

Introduction

​ 首先,我們先來說明一下已有CNN網絡架構在感受野擀面存在的兩個問題:

  • 盡管當前主流CNN網絡架構理論具有非常大的感受野(包含輸入的大部分、甚至全含整個輸入),但是有研究表明:實際CNN的感受野要比理論小的多(2.7x-less);
  • 已有的下采樣方案(如池化、stride卷積)會造成信息的損失,進而影響模型的性能。

​ 然后,我們再來簡單介紹一下實際場景中物體的尺度信息。以下圖為例,包含室內與室外兩個場景及其對應的語義標簽。從圖中可以看到:部分物體具有非常大的空間形式(比如建築物、樹以及沙發),部分物體具有非常小的空間表現形式(比如行人、書本等)。甚至同一物體具有非常大的可變的空間變現形式(比如室外場景中的汽車)。

image-20200624101435203

​ 上述這種空間變大巨大的表現形式是標准卷積所無法有效提取的,而CV的終極目標是:提取輸入的多尺度信息。在這方面最為知名的當屬SIFT,它可以從不同尺度提取特征描述算子。然而深度學習中的卷積卻並未具有類似SIFT這種提取多尺度特征的能力。

​ 最后,我們再來說明一下作者為解決上述挑戰而提出的幾點創新:

  • (1) 作者引入一種金字塔卷積(PyConv),它包含不同尺度與深度的卷積核,進而確保了多尺度特征的提取;
  • (2) 作者為圖像分類任務提出了兩種網絡架構並以極大優勢優於baseline,同時具有更少的參數量與計算復雜度;
  • (3) 作者為語義分割任務提出了一個新的框架:一種新穎的Head用於對backbone提取的特征可以從局部到全局進行上下文信息特征提取,並在場景解析方面取得了SOTA性能;
  • (4) 作者基於PyConv而設計的網絡架構在目標檢測與視頻分類任務上取得了性能的極大提升。

Pyramidal Convolution

​ 下圖a給出了標准卷積的示意圖,它包含單一類型的核:卷積核的空間分辨率為K^2(應用最多的當屬3\times3,即K=3)而深度則等於輸入特征通道數C_i。那么執行C_o個相同分辨率與深度卷積核得到FM_o個輸出特征。因此,標准卷積的參數量與計算量分別為:para=K^2 \times C_i \times C_o, FLOPs=K^2 \times C_i \times C_o \times(H \times W)

image-20200624102951586

​ 上圖b給出了所提PyCOnv的示意圖,它包含一個由n層不同類型核構成的金字塔。PyConv的目標是:在不提升計算復雜或參數量的前提下采用多尺度核對輸入進行處理。PyConv每一層的核包含不同的空間尺寸(自下而上提升),隨卷積核的提升而逐漸降低核的深度。

​ 為使PyConv在不同層使用不同深度的卷積核,需要將輸入特征划分為不同的組並獨立的進行卷積計算,稱之為組卷積(見下圖示例)。不知各位有沒有覺得這個思想跟谷歌的MixNet思想非常相似,MixNet中也是采用了類似組卷積方式進行不同尺寸卷積核計算,文末附對比分析

image-20200624104547085image-20200624104547085

​ 但是,需要注意哈:組卷積中每組的通道數是相同的。MixNet中的也是相同的,而PyConv則是不相同的,可以說MixNet是PyConv的一個特例。每組特征通道數上的區別構成MixConv與PyConv的最大區別所在。

​ 假設PyConv的輸入包含C_i個通道數,PyConv每一層的卷積核尺寸為K_1^2, K_2^2,\cdots,K_n^2,深度為C_i, \frac{C_i}{(\frac{K_2^2}{K_1^2})},\cdots, \frac{C_i}{(\frac{K_n^2}{K_1^2})},對應的輸出特征維度為C_{o1},C_{o2},\cdots, C_{on}。PyConv的參數量與計算復雜度如下:

para=K_n^2 \times C_{on}\times \frac{C_i}{(\frac{K_n^2}{K_1^2})} + \cdots + K_3^2 \times C_{o3} \times \frac{C_i}{(\frac{K_3^2}{K_1^2})} + \cdots K_1^2 \times C_{o1} \times C_i  \\
FLOPs = Para * (H \times W)
\\

其中C_{o1} + \C_{o2} + \cdots C_{on} = C_o。注:如果每一層輸出的通道數相同,那么每一層的參數量與計算復雜度就會分布比較均勻。基於上述描述,可以看到:PyConv的計算復雜度與標准卷積相近。

​ 在實際應用時,作者為PyConv添加了額外的規則:每一層的通道數應當是相同的。這也就要求了PyConv的輸入通道數應當是2的冪次。

​ 所提PyConv具有這樣幾個優點:

  • Multi-scale Processing. 這個特性是非常明顯的,卷積核尺寸是多尺度的嘛;
  • Efficiency. PyConv可以通過並行的方式進行計算,因此計算高效(組卷積在GPU上的效率好像並不高,反而更適合CPU);
  • Flexibility. 由於具有與標准卷積相近的參數量和計算復雜度,那么用戶可以更靈活的去調節PyConv的超參數(比如層數、不同層的輸出通道數,不同深度設置不同的PyConv參數、不同層采用不同的組數)。注:這一點又跟MixNe相似了,MixNet通過NAS方式進行搜索的。

Classification

​ 下圖給出了在圖像分類任務中PyConv模塊示意圖,它是將PyConv嵌入到Bottleneck中,這也是目前卷積改進的一種常用思路,好像沒什么值得進一步深入介紹的。

image-20200624113644079image-20200624113644079

​ 下表給出了基於上述模塊構建網絡的配置信息,包含PyConvResNet與PyConvHGResNet兩種。配置信息還是挺詳細的,好像並沒有什么值得深入介紹的,表格一看就懂。PyConvHGResNet中不同層的分組數更高而已,其他基本相同。

image-20200624113906017

Semantic Segmentation

image-20200624114420506image-20200624114420506

​ 上圖給出了所提PyConv在語義分割中的應用形式,作者所設計的Head同時進行局部與全局信息提取並采用了另外的一個模塊進行信息集成,講這種Head稱之為PyConvPH。PyConvPH包含三個主要成分:

  • Local PyConv Block: 它主要用於小目標並進行多尺度細粒度特征提取,見上圖a;
  • Global PyConv Block:它主要用於捕獲場景的全局信息以及大尺度目標,見上圖b。
  • Merge PyConv Block:它用於對全局與局部特征融合。

Experiments

​ “實踐是檢驗真理的唯一標准”,為說明所提方法的有效性。作者圖像分類、語義分割、目標檢測等領域進行了一系列的實驗。主要結果如下:

(1) 下圖給出了ImageNet數據集上的指標(標准增廣,未用到AutoAugment、CutMix等增廣技術)。注:由於該方法主要是卷積的改進,故未與注意力等方法進行改進,加上注意力后是不是會超越ResNeSt呢?哈哈哈,甚是期待呀。

image-20200624115434586image-20200624115434586

(2) 下圖給出了ADE20K數據集上的指標,這個在不考慮注意力等方法的前提應當是目前最佳了吧,如果加上注意力機制應該還有提升的空間,期待各位小伙伴們去改善提升哈。

image-20200624115927881image-20200624115927881

(3) 下面給出了在目標檢測方面的應用與COCO數據及上的指標。更詳細的實驗分析,建議感興趣的小伙伴去看原文,筆者不做過多翻譯了。

image-20200624120118208image-20200624120118208 image-20200624120131293image-20200624120131293

Conclusion

​ 作者提出了一種金字塔卷積,它的每一層包含不同尺度的卷積核。PyConv極大的提升了不同視覺任務的性能,同時具有高效性與靈活性。PyConv是一種“即插即用”的模塊,可以輕易嵌入到不同的網絡架構與應用中,比如可以嘗試將其應用到圖像復原(超分、降噪、增強等等)應用。

Appendix

​ 多尺度卷積並不是什么非常新穎的東西,之前已有不少論文提出了各式各樣的多尺度卷積。比如商湯提出的ScaleNet,其多尺度卷積示意圖如下:

image-20200624140659196image-20200624140659196

再比如谷歌提出的MixConv,其多尺度卷積示意圖如下:

image-20200624140732658image-20200624140732658

再再比如UIUC&字節跳動提出的SCN,其多尺度卷積示意圖如下:

image-20200624140920393image-20200624140920393

再再再比如南開大學提出的Res2Net,其實也是一種多尺度卷積,結構如下:

image-20200624141153892image-20200624141153892

再再再再比如IBM提出的Big-LittleNet,結構如下:

image-20200624141444000image-20200624141444000

再再再再再比如Facebook提出的OctConv,不也是一種多尺度卷積嗎?結構如下:

image-20200624141514762image-20200624141514762

再再再再再再比如...,打住!不再比如了,看到了這里。各位小伙伴有沒有發現多尺度卷積真的好多好多,知名也挺多的,比如MixNet、Res2Net、OctConv以及Big-LittleNet。那么這篇論文提出的PyConv到底跟這里提到的幾種多尺度卷積有什么區別呢?

首先,第一點區別:PyConv不是通過分辨率的下采樣達到感受野提升的目的,而ScaleNet、OctNet、Big-LittleNet以及SCN都是通過調整特征的分辨率方式達到提升感受野目的。這一點是與MixConv是非常相似的:通過調整卷積核的尺寸達到多尺度特征提取的目的。

然后呢,第二點區別:PyConv每一組的輸入為全部輸入,每組輸出不同尺度的特征;這一點是與ScaleNet非常相似,而MIxConv、OctConv以及Res2Net都涉及到了輸入分組。

最后一點區別:PyConv為盡可能的降低計算量,在每一組內部還進行了分組卷積。經過前述一系列的組合確保了PyConv的計算量與標准卷積相當,但實際上推理速度還是標准卷積更快,三層時推理速度,比如下圖配置時,pyconv在cpu上比標准卷積慢一倍之多,呵呵。

image-20200624145116482image-20200624145116482

筆者認為:PyConv的靈活性是非常巧妙的一點,它非常適合於NAS結合去搜索相關參數(層數、每一層的組卷積組數、每一層的卷積核尺寸等)。也許通過NAS搜索的網絡會取得超越手工設計PyConvResNet的性能也說不定哦,這個說不定又可以水一篇paper了。O(∩_∩)O哈哈~

此外,除了PyConv與NAS結合外,還可以嘗試將其嵌入到圖像復原里面,雖然作者提到了會有提升,但不是還沒有paper嘛,這是不是又可以水一篇paper了。O(∩_∩)O哈哈~

推薦閱讀

  1. 比CNN更強有力的新型自注意力網絡
  2. 關於ResNeSt的點滴疑惑與解讀
  3. CVPR2020 | GCT會是SE的替代者嗎?
  4. 南開大學程明明團隊新作 | ResNet的又一改進:SCNet
  5. ICCV2019: HBONet

論文與代碼下載方式

關注AIWalker公眾並后台留言“PyConv”,即可獲得下載鏈接。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM