🐶

【論文5分まとめ】A ConvNet for the 2020s

5 min read

この記事は、論文の内容を5分くらいで読めるようにまとめた記事です。そのため、前提となる知識や関連研究に関する説明は大幅に省略しています。
基本的には筆者の備忘録ですが、面白そうと思ったら是非ご自身でも読んでみてください。

概要

Vision Transformer以降、Visionの世界の中心はConvNetからTransformerへと移りつつある。しかし、ConvNetの設計空間は後発のTransformerのようには十分に「近代化」されておらず、古い慣習が残ったままであることも確かである。
本研究では、ConvNetの設計空間を再検討したConvNeXtを提案している。ConvNeXtは標準的なConvNetモジュールから構成され、標準的なConvNetのシンプルさと効率性を維持しながら、精度や拡張性において最先端のTransformer系手法と遜色なく、87.8%のImageNetトップ1精度とCOCO検出と、ADE20KセグメンテーションにおいてSwinTransformerを上回る性能を達成している。

書誌情報

ポイント

ResNet50/200をベースに、ResNeXt系の工夫や、Transformer的な設計を取り入れて精度を最終的なConvNeXtに至るまでが下図にまとめられている。
以降はResNet50のケースを中心に説明をしていく。

以下の表はベースとなるResNet50の構造である。最初に位置するstem, 複数のブロック(bottleneck block)からなるステージ(res2, res3, res4, res5)が続いている。

訓練の設定

ネットワークの設計とは別に、訓練上のテクニックを近代化する必要がある。これには最適化アルゴリズムやデータ拡張、学習率のスケジューリングなどが含まれる。
以下は各テクニックに関する、ConvNeXtでの最終的なハイパーパラメータである。

これらのテクニックの導入で、ResNet50のImageNet-1KのTop1精度は76.1%から78.8%へと上昇している。これをベースラインとしている。

マクロな設計

ステージの割合

まずはResNetに含まれる各ステージの計算ブロックの割合を調整する。入力画像の解像度が224x224の時に14x14の特徴マップを処理するステージ(res4)はより多くのブロックを使用する。このような設計は、ResNetでもSwinTransformerでも共通になっており、このステージでの特徴抽出処理が下流タスクにとって重要性が高いということが知られている。各ステージのブロック数の比率は、Swin-Tでは1:1:3:1、より大きなSwinTransformerでは1:1:9:1などとなっている。一方で、ResNet50では(3, 4, 6, 3)であり、res4は重要視されてはいるものの、比率としてはそこまで大きくない。そこで、各ステージのブロック数を見直し、(3,3,9,3)とした。これにより,Top1精度は78.8%から79.4%へと上昇している。

パッチ化

ResNetでは、最初の7x7Conv層(stride=2)とPooling層(stride=2)によって、解像度は4分の1にダウンサンプルされる。ViTではよりアグレッシブに、最初から画像はパッチ化されるが、カーネルサイズで言えば14から16に対応することになる。そのためResNetでも最初のConv層のカーネルサイズを4、strideも4とすることで、「パッチ化」を行っている。これにより、FLOPsは微減、Top1精度は79.4%から79.5%へと微増している。

ResNeXt化

続けて、ResNeXt風の設計方針を盛り込んでいる。すなわち、「Conv層をよりグループ化し、チャネル数をより増やす」という方針である。
ここでは、Grouped Convの特殊なケース(グループ数=チャネル数)であるDepthwise Convとチャネル数(ネットワークのWidth)の増加をbottleneckブロックに対して適用している。Widthは64からSwin-Tと同等の96に増加させる。これにより、Top1精度は80.5%へ改善する。

Inverted Bottleneck

TransFormerにおけるMLP層は2つのLinear層からなり、中間層の次元数は入出力の次元数の4倍と大きくなっている。このデザインをResNetにも取り入れたい。
Conv系の手法では、MobileNetv2から採用されているinverted bottleneck構造が、入出力の次元数を減らす代わりに、中間層の次元数を増やすという点で似た発想で作られていると言える。
これにより、以下のようにbottleneckブロック内の構造は以下の(a)から(b)へと変更される。

(b)の最下段の「96->384」は誤植。正しくは「384->96」。

これにより、Depthwise Conv部分のFLOPsは増えるが、全体のFLOPsは低下する。TOP1精度は80.5% から 80.6%へとわずかに上昇する。ただし、ResNet200をベースとした方では、Top1精度は明らかな改善が生じており、81.9% から82.6%へと上昇している。

カーネルサイズの拡大

VGGNet以降、Conv層のカーネルサイズは3x3が一般的に用いられてきた。しかし、SwinTransformerのself-attentionのwindowサイズは最低でも7x7と大きい。そのため、本当に3x3のような小さいカーネルサイズが最適なのか、再検討が必要である。
実際にカーネルサイズを拡大する前に、以下の図の(b)から(c)のように、Depthwise Convを先頭に移動させることとする。これは、TransformerにおけるMSAブロックがFFNよりも先頭にあることに倣ってのことである。当然、Depthwiseのチャネル数が小さくなり、一時的にTop1精度は落ちる。

先述の通り、(b)の「96->384」は誤植。

この状態で、Depthwise Convのカーネルサイズを5, 7, 9, 11にしたらどうなるのかを比較している。その結果、カーネルサイズ7で精度向上が飽和することがResNet50/200共に観察された。Top1精度は80.6% (7×7)へと上昇する。

以上までで、おおむねVisionTransformerまでの設計思想の移植が完了したと言える。

ミクロな設計

SwinTransformerの設計を参照しながら、より細かい構造についての検討を加えている。下図の左がSwinTransformerのブロック、真ん中が標準的なResNetのブロック、右がConvNeXtがたどりつくブロックである。

ReLUからGELUへ

NLPとCVの慣習の異なる点の一つとして活性化関数が挙げられる。CVではReLUがいまだによく使用され、Transformerでも最初はReLUが使用されていた。しかし、より発展したTransformerでは、GELUが使用されることが多くなっている。そこで、すべてのReLUをGELUに変更している。精度の変化はなく、80.6%にとどまっている。

活性化関数の除去

TransformerのMLPブロックでは、通常1つの活性化関数しか使用されない。それにならい、2層目の後のみに活性化関数(GELU)を適用する。これにより精度が向上し、81.3%となっている。

正規化層を減らす

BatchNormは1層目の後と2層目の後に適用されているが、SwinTransformerを参考に、2層目の後のBNを削除している。これにより、精度は81.4%に向上する。なお、SwinTransformerのように入力時に適用しているLayerNormに対応するものは精度の向上が見られなかったため適用していないということである。

LayerNormへの変更

BatchNormは、収束を安定化させ、しばしば精度を向上させることからCV分野においては多用されてきたが、バッチサイズのようなコントロールしにくいハイパーパラメータによって性能が変化してしまうなど、悪影響を及ぼすことも知られている。TransformerではよりコントロールしやすいLayerNormが使用される。そのため、LayerNormを採用したところ、81.5%とわずかに精度が向上した。

ダウンサンプルの独立

ResNetにおいては特定のResBlockにおいて、Conv層のstrideを2とすることでダウンサンプルをおこなっている。SwinTransformerにならい、ダウンサンプルを独立した別レイヤーで行うように変更する。具体的には、strideが2の2x2Conv層をダウンサンプルの位置に挿入することとした。しかし、これだけだとうまく収束しなかったので、ダウンサンプルが生じる箇所全てでLayerNormを追加することで訓練が安定することを確認した。

これにより、Top1精度は82.0%まで向上し、同程度のサイズのSwin-Tの81.3%を凌ぐ精度が得られた。

ConvNeXt

以上のような工夫によって、SwinTransformerと同等以上の精度を実現できるConvNetの設計がありうることがわかった。最後に、これらの工夫によって精度やFLOPsがどのように変化してきたかをまとめている。

実験

ここまでの説明で、ImageNet-1Kのような画像分類タスクにおいてはConvNeXtの有効性が確認できたが、他のタスクについても軽く確認しておく。

物体検出

以下の表は、物体検出モデルのバックボーンをConvNeXtに変更した時の有効性を示したものである。COCOデータセットを対象とした評価を行い、ConvNeXtは同程度のSwinTransformerよりも、おおむね高速かつ高精度に動作していることがわかる。

セマンティックセグメンテーション

以下の表は、セグメンテーションモデルのバックボーンをConvNeXtに変更した時の有効性を示したものである。ADE20Kを対象とした評価を行い、こちらでもConvNeXtは同程度のSwinTransformerよりも、おおむね高速かつ高精度に動作していることがわかる。

Discussion

ログインするとコメントできます