Tsubatoの発信記録

主に機械学習やデータサイエンス関連で学んだことを書いています。

論文読み A ConvNet for the 2020s

記事の概要

  • Vision Transformerへ注目が集まる中、ConvNetの可能性を再考した論文"A ConvNet for the 2020s"を紹介します。arxiv.org
  • 新規のテクニックを発見したのではなく、既存のテクニックを適切に組み合わせてVision Transformerに匹敵する性能を得たという内容です。

論文の概要

  • 著者はSwin Transformerのshifted windowがConvNetに類似していることから着想を得て、逆にSwin Transformer(Swint-T)に使われるテクニックをConvNetへ輸入したConvNeXtsを提案しています。
  • 結果は以下の通りで、新たテクニックを導入するごとに性能が改善され、最終的にはSwin-Tに匹敵する(ImageNet-1Kでの)性能になることが示されています。論文では物体検出やセマンティックセグメンテーションでも同様の性能であることが示されています。

導入されたテクニック

Training Techniques
  • 以下のようなモダンな学習技術を使うことで、精度を76.1%→78.8%を向上させています。
    • optimizerにAdamWを使用、学習エポックを90→300に増加
    • Data augumentationにMixup、Cutmix、RandAugment、Random Erasingを使用。
    • regularizationにStochastic Depth、Label Smoothingを使用。
Macro Design
  • stage毎のResNet blockの繰り返しをSwin-Tに習って1:1:3:1の比率に変更。
  • また先頭のレイヤーをSwin-Tのパッチ化に合わせて4×4、stride4の畳み込みに変更。
ResNeXt-ify
  • ResNeXtを倣い、grouped convolutionを導入。特にgroupの数がchannel数と同じであるdepthwise convolutionを使用する。
  • depthwiseと1×1のconvolutionの組み合わせは空間方向とチャンネルのmixを区別しているため、Vision Transformerのself-attentionとMLPの二段階構造に類似している。
Inverted Bottleneck
  • MobileNetV2でも使われるInverted Bottleneckを採用。
Large Kernel Sizes
  • Swin-Tでのwindowサイズが7×7とResNetのカーネルサイズよりも大きいため、depthwiseのカーネルサイズを同じく7×7とする。
  • また、ViTでself-attention→MLPという順番であることを倣い、ブロック内の並びをdepthwise→1×1conv→1×1convに変更。
Micro Design
  • その他以下のような変更が加えられています。いずれもSwin-Tで使われる手法です。
    • 活性化関数をReLU→GeLUに変更。活性化関数はブロック毎に1つだけに。
    • normalizationも減らしてBatchからLayer Normalizationに変更。
    • ステージ毎にダウンサンプリング用の2×2, stride2のconvを追加。

感想

  • Swin-Tを参照しながら、それに使われているConvNetの最新手法をふんだんに利用した研究になっています。まだ自分も全てを網羅できていませんが、最新手法をキャッチアップする上でも勉強になる論文でした。
  • 「巨大なTransformerに大量のデータを突っ込めば良い」というのが私のイメージする最近の深層学習のトレンドですが、面白くないし巨大企業に力が集中するのも不健全と思います。なので、本論文のようなアーキテクチャを検討する研究は応援したくなります。
  • GPT-4のような自然言語と画像を組み合わせるモデルにはTransformerが使われ続けると思いますが、CV単独ではViTでもSelf-Attentionは必須ではないという研究もありますので、今後どのようなアーキテクチャに落ち着くのか注目したいです。