論文筆記 — ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders

Watson Wang
9 min readJan 6, 2023

Paper Link: https://arxiv.org/pdf/2301.00808v1.pdf

Code Link: https://github.com/facebookresearch/ConvNeXt-V2

ConvNext 介紹可以參考我之前寫的🔗論文筆記 — A ConvNet for the 2020s

Photo by Glenn Carstens-Peters on Unsplash

Abstract

在本文中,我們提出了一個fully convolutional masked auto-encoder 框架和一個新的Global Response Normalization(GRN)用來添加到 ConvNeXt 架構以增強通道間特徵競爭。 這種自我監督學習技術和架構改進的共同設計產生了一個名為 ConvNeXtV2 的新模型系列,它顯著提高了純 ConvNet 在各種識別基准上的性能,包括 ImageNet 分類、COCO 檢測和 ADE20K 分割。

Introduction

最近,ConvNeXt 架構對傳統的 ConvNet 進行了現代化改造,並證明純卷積模型也可以是可擴展的架構。 然而,探索神經網絡架構設計空間的最常用方法仍然是通過在 ImageNet 上對監督學習性能進行基準測試。

在另一項研究中,視覺表示學習的重點已經從帶有標籤的監督學習轉移到帶有前置目標(pre- text objectives)的自我監督預訓練。 在許多不同的自監督算法中,masked autoencoders (MAE) 最近將masked language modeling成功帶到了視覺領域,並迅速成為視覺表示學習的流行方法。

自我監督學習中的一種常見做法是使用為監督學習設計的預定架構,並假設設計是固定的。但如果將設計好的架構和自監督學習框架結合起來,可能會在將 ConvNeXt 與屏蔽自動編碼器一起使用時帶來挑戰。

問題:

  1. MAE 針對 Transformer 的序列處理能力進行了優化,這使得計算量大的編碼器可以專注於可見的補丁,從而降低預訓練成本。 這種設計可能與使用密集滑動窗口的標準 ConvNet 不兼容。
  2. 之前的研究表明,使用基於masked 的自監督學習訓練 ConvNets 可能很困難 ,並且經驗證據表明 transformers 和 ConvNets 可能具有不同的特徵學習行為,這些行為會影響表示質量。

解法:

以Convolution 去取代Transformer設計,以此做到跟MAE設計相似概念

Fully Convolutional Masked Autoencoder

我們的方法在概念上很簡單,並且以完全卷積的方式運行。 學習信號是通過以高屏蔽率隨機屏蔽原始輸入視覺效果(如MAE)並讓模型在給定剩餘上下文的情況下預測缺失部分來生成的,框架如下圖所示:

Our FCMAE framework.我們的自動編碼器的架構是不對稱的。 編碼器僅處理可見像素,解碼器使用編碼像素和掩碼標記重建圖像。 損失僅在屏蔽區域上計算。

Masking

我們使用 masked ratio 為 0.6 的隨機掩蔽策略。 由於卷積模型具有分層設計,其中特徵在不同階段被下採樣,掩碼在最後階段生成並遞歸上採樣到最精細的分辨率。 為了在實踐中實現這一點,我們從原始輸入圖像中隨機刪除 60% 的 32 × 32 塊。 我們使用最少的data augmentation,僅包括隨機調整大小的裁剪。

Encoder design

我們在我們的方法中使用 ConvNeXt 模型作為 encoder。 其中一個挑戰是防止模型學習直接從 masked 前的 image 直接copy過來做ouptut。 這在基於變壓器的模型中相對容易預防,它可以將可見補丁作為編碼器的唯一輸入。 然而,使用 ConvNets 更難實現這一點,因為必須保留 2D 圖像結構。

為了解決這個問題,我們的新見解是從 “sparse data perspective” 查看masked image ,其靈感來自於在 3D 任務中學習稀疏點雲 (sparse point clouds)。

我們的主要觀察結果是masked image 可以表示為二維稀疏像素陣列。 基於這種洞察力,我們將 稀疏卷積 納入框架,以促進 MAE 的預訓練。 在實踐中,在預訓練期間,我們建議將編碼器中的標準卷積層轉換為子流形稀疏卷積(submanifold sparse convolution),這使得模型僅對可見數據點進行操作。

Decoder design

我們使用輕量級、普通的 ConvNeXt 塊作為解碼器。 這總體上形成了一個非對稱的encoder-decoder架構,因為編碼器更重並且具有層次結構。簡單的單個 ConvNeXt 塊解碼器在微調精度和減少預訓練方面表現良好 時間相當長,如下表所示,所以之後將解碼器的維度設置為 512。

Reconstruction target

計算重建圖像和目標圖像之間的均方誤差 (MSE)

FCMAE

我們現在通過結合上述建議提出全卷積掩碼自動編碼器(FCMAE),我們分別使用 ImageNet-1K (IN-1K) 數據集對 800 和 100 個 epoch 進行預訓練和微調,並報告單個 224×224 中心裁剪的 top-1 IN-1K 驗證精度。

接下來,我們將自我監督方法與監督學習進行比較。我們發現我們的 FCMAE 預訓練提供了比隨機基線更好的初始化( 82.7 → 83.7),但它仍然還沒追上在原始監督設置中獲得的最佳性能。

Global Response Normalization

在本節中介紹了一種新的Global Response Normalization (GRN) 技術,以結合 ConvNeXt 架構使 FCMAE 預訓練更有效。 我們首先通過定性( qualitative ) 和定量特徵分析(quantitative feature analyses)來激發我們的方法。

Feature collapse

為了更深入地了解學習行為,我們首先在特徵空間中進行定性分析。 我們將 FCMAE 預訓練的 ConvNeXt-Base 模型的activation ouput 可視化,並註意到一個有趣的“特徵崩潰”現象:有許多死的或飽和的特徵圖,並且激活在通道之間變得多餘。 下圖中展示了一些可視化效果。這種行為主要在 ConvNeXt 塊的維數擴展 MLP 層中觀察到。

Feature cosine distance analysis

為了進一步定量地驗證我們的觀察,我們進行了特徵餘弦距離分析。 給定一個激活張量 X ∈ R(H ×W ×C) ,X_i ∈ R (H × W) 是第 i 個通道的特徵圖。 我們將其重塑為 H*W 維向量,以計算跨通道的平均成對余弦距離,距離公式如下:

較高的距離值表示更多樣化的特徵,而較低的值表示特徵冗餘。

為了執行此分析,我們隨機選擇 ImageNet-1K 驗證集中不同類別的 1,000 張圖像,並從不同模型的每一層提取高維特徵,包括 FCMAE 模型、ConvNeXt 監督模型和 MAE 預訓練 ViT 模型 。 然後我們計算每個圖像的每層距離,並對所有圖像的值進行平均。 結果繪製在下圖中。FCMAE 預訓練的 ConvNeXt 模型表現出明顯的特徵崩潰趨勢,這與我們從之前的激活可視化中觀察到的一致。 這促使我們考慮在學習過程中使特徵多樣化並防止特徵崩潰的方法。

Approach

大腦中有許多促進神經元多樣性的機制。 例如,橫向抑制可以幫助增強激活神經元的反應,增加單個神經元對刺激的對比度和選擇性,同時也增加整個神經元群的反應多樣性 .

在深度學習中,這種形式的橫向抑制可以通過響應標準化來實現,我們引入了全局響應歸一化 (GRN),目標是增加通道的對比度和選擇性。 給定一個輸入特徵 X ∈ R(H ×W ×C),所提出的 GRN 單元包括三個步驟:

  1. 全局特徵聚合
  2. 特徵歸一化
  3. 特徵校準

首先,我們將空間特徵映射 Xi 聚合為具有全局函數 G(·) 的向量 gx:

我們發現使用基於norm的特徵聚合,特別是使用 L2-norm,會產生更好的性能。 這給了我們一組聚合值 G(X) = gx = {||X1||, ||X2||, 。 . . , ||XC ||} ∈ R(C) 其中 G(X)_i = ||Xi|| 是聚合第 i 個通道的統計信息,並使用標準除法歸一化如下:

最後使用計算出的特徵歸一化分數來校準原始輸入響應:

核心 GRN 單元非常容易實現,只需要三行代碼,如下:

為了優化,我們添加了兩個額外的可學習參數 γ 和 β,並將它們初始化為零。 我們還在 GRN 層的輸入和輸出之間添加了一個殘差連接。 得到的最終 GRN 塊:

ConvNeXt V2

我們將 GRN 層合併到原始的 ConvNeXt 塊中,如圖所示。我們憑經驗發現,當應用 GRN 時,LayerScale 變得不必要並且可以被刪除。 使用這種新的塊設計,我們創建了具有不同效率和容量的各種模型,我們將其稱為 ConvNeXt V2 模型系列。

The role of GRN in pre-training/fine-tuning

最後,我們檢查了 GRN 在預訓練和微調中的重要性。 下表中給出了結果,其中我們嘗試從微調中刪除 GRN,或是僅在微調時添加新初始化的 GRN。 無論哪種方式,我們都觀察到性能顯著下降,這表明在預訓練和微調中保持 GRN 很重要。

Result

--

--