超越ConvNeXt!Conv2Former:用於視覺識別的Transformer風格的ConvNet

點選下方卡片,關注“CVer”公眾號
AI/CV重磅乾貨,第一時間送達
點選進入—> CV 微信技術交流群
轉載自:AIWalker
Conv2Former: A Simple Transformer-Style ConvNet for Visual Recognition


本文旨在透過充分利用卷積探索一種更高效的編碼空域特徵的方式:透過組合ConvNet與ViT的設計理念,本文利用卷積調製操作對自注意力進行了簡化,進而構建了一種新的ConvNet架構Conv2Former。ImageNet分類、COCO檢測以及ADE20K分割任務上的實驗結果表明:所提Conv2Former取得了優於主流ConvNet(如ConvNeXt)、ViT(如Swin Transformer)的效能。

本文方案

上圖給出了本文方案架構示意圖,類似ConvNeXt、SwinT,Conv2Former採用了金字塔架構,即含四個階段、四種不同尺寸的特徵,相鄰階段之間透過Patch Embedding模組(其實就是一個卷積核與stride均為的卷積)進行特徵空間解析度與通道維度的惡變換。下表給出了不同大小Conv2Former的超參配置,

核心模組

上圖給出了經典模組的架構示意圖,從經典的殘差模組到自注意力模組,再到新一代卷積模組。自注意力模組可以表示為如下形式:
儘管注意力可以更好的編碼空域相關性,但其計算複雜性隨N而爆炸性增長。
本文則旨在對自注意力進行簡化:採用卷積特徵對V進行調製。假設輸入,所提卷積調製模組描述如下:
需要注意的是:上式中表示Hadamard乘積。上述卷積調製模組使得每個位置的元素與其近鄰相關,而通道間的資訊聚合則可以透過線性層實現。下面給出了該核心模組的實現程式碼。

class 

ConvMod(nn.Module)

:

    def __

init__(self, dim)

:

super()

.__

init__()

        self.norm 

= LayerNorm(dim, eps=

1e-6

, data_format=

'channel_first'

)

        self.a = nn.Sequential(

            nn.Conv2d(dim, dim, 

1

),

            nn.GELU(),

            nn.Conv2d(dim, dim, 

11

, padding=

5

, groups=dim)

        )

        self.v = nn.Conv2d(dim, dim, 

1

)

        self.proj = nn.Conv2d(dim, dim, 

1

)
    def forward(self, x):

        B, C, H, W = x.shape

        x = self.norm(x)

        a = self.a(x)

        v = self.v(x)

        x = a * v

        x = self.proj(x)

return

 x

微觀設計理念

Larger Kernel than  如何更好的利用卷積對於CNN設計非常重要!自從VGG、ResNet以來,卷積成為ConvNet的標準選擇;Xception引入了深度分離卷積打破了該局面;再後來,ConvNeXt表明卷積核從3提升到7可以進一步改善模型效能。然而,當不採用重引數而進一步提升核尺寸並不會帶來效能效能提升,但會導致更高計算負擔。
作者認為:ConvNeXt從大於卷積中受益極小的原因在於使用空域卷積的方式。對於Conv2Former,從到,伴隨核尺寸的提升可以觀察到Conv2Former效能一致提升。該現象不僅發生在Conv2Former-T(),同樣在Conv2Former-B得到了體現()。考慮到模型效率,作者將預設尺寸設定為
Weighting Strategy 正如前面圖示可以看到:作者採用Depthwise卷積的輸出對特徵V進行加權調製。需要注意的是,在Hadamard乘積之前並未新增任務規範化層(如Sigmoid、),而這是取得優異效能的重要因素(類似SENet新增Sigmoid會導致效能下降超0.5%)。
Normalization and Activations 對於規範化層,作者參考ViT與ConvNeXt採用了Layer Normalization,而非卷積網路中常用的Batch Normalization;對於啟用層,作者採用了GELU(作者發現,LN+GELU組合可以帶來0.1%-0.2%的效能提升)。

本文實驗

上述兩表給出了ImageNet分類任務上不同方案的效能對比,從中可以看到:
  • 在tiny-size(<30M)方面,相比ConvNeXt-T與SwinT-T,Conv2Former-T分別取得了1.1%與1.7%的效能提升。值得稱道的是,Conv2Former-N僅需15M引數量+2.2GFLOPs取得了與SwinT-T(28M引數量+4.5GFLOPs)相當的效能。
  • 在base-size方面,相比ConvNeXt-B與SwinT-B,Conv2Former-B仍取得了0.6%與0.9%的效能提升
  • 相比其他主流模型,在相近大小下,所提Conv2Former同樣表現更優。值得一提的是,相比EfficientNet-B7,Conv2Former-B精度稍有(84.4% vs 84.3%),但計算量大幅減少(15G vs 37G)。
  • 當採用ImageNet-22K預訓練後,Conv2Former的效能可以進一步提升,同時仍比其他方案更優。Conv2Former-L甚至取得了87.7% 的優異指標
採用大核卷積是一種很直接的輔助CNN構建長程相關性的方法,但直接使用大核卷積使得所提模型難以最佳化。從上表可以看到:當不採用其他訓練技術(如重引數、稀疏權值)時,Conv2Former採用時已可取得更好的效能;當採用更大的核時,Conv2Former取得了進一步的效能提升
上表給出了COCO檢測任務上不同方案的效能對比,從中可以看到:
  • 在tiny-size方面,相比SwinT-T與ConvNeXt-T,Conv2Former-T取得了2% 的檢測指標提升,例項分割指標提升同樣超過1%;
  • 當採用Cascade Mask R-CNN框架時,Conv2Former仍具有超1%的效能提升。
  • 當進一步增大模型時,效能優勢則變得更為明顯;
上表給出了ADE20K分割任務上的效能對比,從中可以看到:
  • 在不同尺度模型下,Conv2Former均具有比SwinT與ConvNeXt更優的效能;
  • 相比ConvNeXt,在tiny尺寸方面效能提升1.3%mIoU,在base尺寸方面效能提升1.1%;
  • 當進一步提升模型尺寸,Conv2Former-L取得了54.3%mIoU,明顯優於Swin-L與ConvNeXt-L。

一點疑惑解析

到這裡,關於Conv2Former的介紹也就結束了。但是,心裡仍有一點疑惑存在:Conv2Former與VAN的區別到底是什麼呢?關於VAN的介紹可參考筆者之前的分享:《優於ConvNeXt,南開&清華開源基於大核注意力的VAN架構》。
先來看一下兩者的定義,看上去兩者並無本質上的區別(均為點乘操作),均為大核卷積注意力
  • VAN:
  • Conv2Former
結合作者開原始碼,筆者繪製了上圖,左圖為Conv2Former核心模組,右圖為VAN核心模組。兩者差別還是比較明顯的!
  • 雖然大核卷積注意力均是其核心,但Conv2Former延續了自注意力的設計正規化,大核卷積注意力是其核心;而VAN則是採用傳統Bottleneck設計正規化大核卷積注意力的作用類似於SE
  • 從大核卷積內在機理來看,Conv2Former僅考慮了的空域建模,而VAN則同時考慮了空域與通道兩個維度
  • 在規範化層方面,Conv2Former採用了Transformer一貫的LayerNorm,而VAN則採用了CNN一貫的BatchNorm;
  • 值得一提的是:兩者在大核卷積注意力方面均未使用Sigmoid啟用函式。兩者均發現:使用Sigmoid啟用會導致0.2%左右的效能下降。
為更好對比Conv2Former與VAN的效能,特彙總上表(注:GFLOPs列僅彙總了)在Image輸入時的計算量Net-1K上的指標進行了對比,可以看到:在同等引數量前提下,兩者基本相當,差別僅在0.1%。此外,考慮到作者所提到的“LN+GELU的組合可以帶來0.1%-0.2%的效能提升”,兩者就算是打成平手了吧,哈哈。
CVPR/ECCV 2022論文和程式碼下載
後臺回覆:CVPR2022,即可下載CVPR 2022論文和程式碼開源的論文合集
後臺回覆:ECCV2022,即可下載CVPR 2022論文和程式碼開源的論文合集
後臺回覆:Transformer綜述,即可下載最新的3篇Transformer綜述PDF
目標檢測和Transformer交流群成立
掃描下方二維碼,或者新增微信:CVer222,即可新增CVer小助手微信,便可申請加入CVer-目標檢測或者Transformer 微信交流群。另外其他垂直方向已涵蓋:目標檢測、影像分割、目標跟蹤、人臉檢測&識別、OCR、姿態估計、超解析度、SLAM、醫療影像、Re-ID、GAN、NAS、深度估計、自動駕駛、強化學習、車道線檢測、模型剪枝&壓縮、去噪、去霧、去雨、風格遷移、遙感影像、行為識別、影片理解、影像融合、影像檢索、論文投稿&交流、PyTorch、TensorFlow和Transformer等。
一定要備註:研究方向+地點+學校/公司+暱稱(如目標檢測或者Transformer+上海+上交+卡卡),根據格式備註,可更快被透過且邀請進群
▲掃碼或加微訊號: CVer222,進交流群
CVer學術交流群(知識星球)來了!想要了解最新最快最好的CV/DL/ML論文速遞、優質開源專案、學習教程和實戰訓練等資料,歡迎掃描下方二維碼,加入CVer學術交流群,已彙集數千人!

掃碼進群
▲點選上方卡片,關注CVer公眾號
整理不易,請點贊和在看


相關文章