加入極市專業CV交流羣,與  1 0000+來自港科大、北大、清華、中科院、CMU、騰訊、百度  等名校名企視覺開發者互動交流!

同時提供每月大咖直播分享、真實項目需求對接、乾貨資訊彙總,行業技術交流。關注  極市平臺  公衆號  , 回覆  加羣, 立刻申請入羣~

來源|AIWalker

導讀:該文參考SIFT的多尺度特徵提取思路設計了一種新穎的金字塔卷積,它不用於其他類似方法的關鍵點在於:卷積核的多尺度。同時爲了儘可能的降低整體計算複雜度,在每個group內再一次進行組卷積,以確保金字塔卷積的計算量與標準卷積的計算量相當。筆者認爲這篇論文思想簡單,易於實現,效果驚人。推薦各位稍微花點時間瞭解一下這篇文章(注:亮點在Appendix部分)

論文: https://arxiv.org/abs/2006.11538

代碼:

https://github.com/iduta/pyconv

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卷積)會造成信息的損失,進而影響模型的性能。

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

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

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

  • (1) 作者引入一種金字塔卷積(PyConv),它包含不同尺度與深度的卷積核,進而確保了多尺度特徵的提取;

  • (2) 作者爲圖像分類任務提出了兩種網絡架構並以極大優勢優於baseline,同時具有更少的參數量與計算複雜度;

  • (3) 作者爲語義分割任務提出了一個新的框架:一種新穎的Head用於對backbone提取的特徵可以從局部到全局進行上下文信息特徵提取,並在場景解析方面取得了SOTA性能;

  • (4) 作者基於PyConv而設計的網絡架構在目標檢測與視頻分類任務上取得了性能的極大提升。

Pyramidal Convolution

下圖a給出了標準卷積的示意圖,它包含單一類型的核:卷積核的空間分辨率爲(應用最多的當屬,即)而深度則等於輸入特徵通道數。那麼執行個相同分辨率與深度卷積核得到個輸出特徵。因此,標準卷積的參數量與計算量分別爲:,。

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

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

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

假設PyConv的輸入包含個通道數,PyConv每一層的卷積核尺寸爲,深度爲,對應的輸出特徵維度爲。PyConv的參數量與計算複雜度如下:

其中。

注:如果每一層輸出的通道數相同,那麼每一層的參數量與計算複雜度就會分佈比較均勻。基於上述描述,可以看到:PyConv的計算複雜度與標準卷積相近。

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

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

  • Multi-scale Processing. 這個特性是非常明顯的,卷積核尺寸是多尺度的嘛;

  • Efficiency. PyConv可以通過並行的方式進行計算,因此計算高效(組卷積在GPU上的效率好像並不高,反而更適合CPU);

  • Flexibility. 由於具有與標準卷積相近的參數量和計算複雜度,那麼用戶可以更靈活的去調節PyConv的超參數(比如層數、不同層的輸出通道數,不同深度設置不同的PyConv參數、不同層採用不同的組數)。注:這一點又跟MixNe相似了,MixNet通過NAS方式進行搜索的。

Classification

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

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

Semantic Segmentation

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

  • Local PyConv Block: 它主要用於小目標並進行多尺度細粒度特徵提取,見上圖a;

  • Global PyConv Block:它主要用於捕獲場景的全局信息以及大尺度目標,見上圖b。

  • Merge PyConv Block:它用於對全局與局部特徵融合。

Experiments

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

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

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

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

Conclusion

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

Appendix

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

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

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

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

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

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

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

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

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

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

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

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

推薦閱讀

添加極市小助手微信 (ID : cv-mart) ,備註: 研究方向-姓名-學校/公司-城市 (如:目標檢測-小極-北大-深圳),即可申請加入 極市技術交流羣 ,更有 每月大咖直播分享、真實項目需求對接、求職內推、算法競賽、 乾貨資訊彙總、行業技術交流 一起來讓思想之光照的更遠吧~

△長按添加極市小助手

△長按關注極市平臺,獲取 最新CV乾貨

覺得有用麻煩給個在看啦~   

相關文章