Upgrade to Pro — share decks privately, control downloads, hide ads and more …

実は強い 非ViTな画像認識モデル

tattaka
February 26, 2025

実は強い 非ViTな画像認識モデル

tattaka

February 26, 2025
Tweet

More Decks by tattaka

Other Decks in Technology

Transcript

  1. AI 3 ▪ 学習戦略の見直し ▪ ResNet-RS (Revisiting ResNets: Improved Training

    and Scaling Strategies) [1] ▪ ResNet strikes back: An improved training procedure in timm [2] ▪ モデル構造の変更 ▪ ConvNeXt (A ConvNet for the 2020s) [3] ▪ RepLKNet (Scaling Up Your Kernels to 31x31: Revisiting Large Kernel Design in CNNs) [4] ▪ SLaK (More ConvNets in the 2020s: Scaling up Kernels Beyond 51x51 using Sparsity) [5] ▪ InternImage: Exploring Large-Scale Vision Foundation Models with Deformable Convolutions [6] ▪ InceptionNeXt: When Inception Meets ConvNeXt [7] ▪ RDNet (DenseNets Reloaded: Paradigm Shift Beyond ResNets and ViTs) [8] 紹介する論文
  2. AI 6 ▪ 正則化とweight decay ▪ 正則化を強くかける時はweight decayを弱くしたほうが良い ▪ モデルサイズのスケーリング

    ▪ モデルサイズが大きいほどepoch数と正則化を増やす ▪ 半教師学習 ▪ EfficientNet-L2から取得した擬似ラベルを使用し、 Noisy Student [10] を用いて学習する Revisiting ResNets: Improved Training and Scaling Strategies [NeurIPS 2021]
  3. AI 8 ▪ 損失関数をCross EntropyではなくBinary Cross Entropy を用いる ▪ MixUpやCutMixを使用する際の合成された画像に含まれる「複

    数のラベルが同時に存在している状態」を1つの分布として捉え るより、BCEを用いるほうが適切 ResNet strikes back: An improved training procedure in timm
  4. AI 11 ▪ Transformerに準じたマクロデザイン ▪ ステージごとの計算比率の変更 ▪ ResNetの(1, 1, 3,

    1)からSwin-Tの(1, 1, 9, 1)になるように ブロック数を変更 ▪ ImageNet精度が78.8% -> 79.4%に向上 ▪ Stemのpatch分割化 ▪ Stem: 入力画像をダウンサンプリングし、計算効率を上げる層 ▪ ResNetではks=7, stride=2のconvとmaxpoolで1/4解像度にするが ConvNeXtではks=4, stride=4に変更 (ViTのPatch分割に対応) ▪ 精度は79.4% -> 79.5% ConvNeXt [CVPR 2022]
  5. AI 12 ▪ Depthwise Conv ▪ ViTでは空間次元とチャネル次元を別々で処理する ▪ depthwise convとpointwise

    convを用いて実現 ▪ 精度は80.5%まで上昇 ▪ Inverted Bottleneck ▪ MobileNetV2やTransformerの中間次元は入力次元の 4倍となっており、それに準ずる ▪ shortcutの計算量が少なくなり精度向上 ▪ ResNet50サイズでは80.5%から80.6%だが、 ResNet200サイズでは81.9%から82.6% ConvNeXt [CVPR 2022] resnet bottlenck convnext bottlenck
  6. AI 13 ▪ Large Kernel Sizes ▪ ViTではself-attentionによって大域情報を見ることができる ▪ VGG以来、ks=3のconvを積み重ねることが慣例だったが、ks=7に拡大

    し、Transformerに準じてdepthwise convを先頭にする ▪ 精度は維持したままFLOPsが減少 ▪ 活性化関数や正則化などの変更 ▪ ReLUをGELUに、BatchNormをLayerNormに変更 ▪ 活性化層と正規化層を減らす ▪ ブロック内ではなくステージ間でdownsampling ▪ 80.6% -> 82.0%に改善 ConvNeXt [CVPR 2022]
  7. AI 14 ▪ Large kernel sizesなconv層を使ったアーキテクチャ設計 のガイドラインを示し、最大kernel_size=31を持つ RepLKNetと呼ばれるアーキテクチャを提案 ▪ Large

    kernel convの効率的な実装 ▪ Re-parametrization ▪ SwinTransformerと同程度の精度・より優れたレイテンシ RepLKNet [CVPR 2022]
  8. AI 16 ▪ Block-wise (inverse) implicit GEMM algorithm ▪ Implicit

    GEMM algorithmを分割して計算することで並列化して 高速に行う ▪ Implicit GEMM algorithm: ▪ [11]より “Instead of constructing the convolution matrix explicitly, it forms tiles of the convolution matrix on the fly as data are loaded from global memory into Shared Memory by carefully updating pointers and predicates. Once the convolution matrix is formed in Shared Memory, the existing warp-level GEMM components accumulate the result of convolution and update the output tensor.” RepLKNet [CVPR 2022]
  9. AI 17 ▪ Re-parametrization ▪ large kernel convだけではなく、並列でsmall kernel convを

    並べ、推論時は統合する ▪ BNをconvに統合したあと、small kernel convを large kernel convにまとめる ▪ 初出?: RepVGG: Making VGG-style ConvNets Great Again [12] ▪ ▪ ▪ RepLKNet [CVPR 2022]
  10. AI 18 ▪ RepLKNetでは最大ks=31であるが、それ以上の large kernelを用いると性能がサチってしまう ▪ 2つの長方形kernelに分解することで、 ks=51までスケールアップできる ▪

    学習中にpruningを行うことでsparseなconvに ▪ ただしハードウェア最適化はできないので遅い Sparse Large Kernel Network (SLaK) [ICLR 2023]
  11. AI 21 ▪ DCN v3 ▪ DCNv2: 畳み込みを行うpixelの場所を、入力によって条件付けさ れる学習可能なoffset (Δp_k)

    によって動的に変化させる. ▪ DCNv3では ▪ Separable convにして計算効率・安定性を上げる ▪ マルチヘッドにしてより表現力を高める InternImage [CVPR2023]
  12. AI 23 ▪ MetaNeXt構造 ▪ convなど単純なTokenMixerを 使用する場合はMetaformer よりもMetaNeXt構造のほうが 効率が良い ▪

    Inception depthwise convolution ▪ kernel sizeに対して計算量が 線形に増加 InceptionNeXt: When Inception Meets ConvNeXt [CVPR2024]
  13. AI 24 ▪ MetaNeXt block InceptionNeXt: When Inception Meets ConvNeXt

    [CVPR2024] ▪ Inception depthwise convolution
  14. AI 25 ▪ 現在主流のResNetをはじめとしたCNNでは、ショート カットを加算して接続する ▪ DenseNet[13]では加算ではなく連結で接続しResNetの 性能を上回るが、次元が増えるためスケーリングが 困難になる ▪

    学習戦略やモデル構造の見直しを 行い、他のCNNアーキテクチャに 匹敵するDenseNetベースの モデルを構築する RDNet (DenseNets Reloaded) [ECCV2024]
  15. AI 29 ▪ Large kernelやDeformable Convolutionを用いるように、 ViTが持つ大きい受容野を再現する研究がトレンド? ▪ 構成要素自体は昔に提案されたものでも、 学習戦略やマクロデザインをアップデートすることで

    性能を高めることができる ▪ Kaggleなど個人的な経験ではConvNeXt・InceptionNeXt・RDNetあたりが timmで使え精度も高いためおすすめ ▪ RepLKNetやInternImageなどはcuda実装が必要なためサポート されていない まとめ
  16. AI 30 ▪ [1] https://arxiv.org/abs/2103.07579 ▪ [2] https://arxiv.org/abs/2110.00476 ▪ [3]

    https://arxiv.org/abs/2201.03545 ▪ [4] https://arxiv.org/abs/2203.06717 ▪ [5] https://arxiv.org/abs/2207.03620 ▪ [6] https://arxiv.org/abs/2211.05778 ▪ [7] https://arxiv.org/abs/2303.16900 ▪ [8] https://arxiv.org/abs/2403.19588 ▪ [9] https://arxiv.org/abs/1812.01187v2 ▪ [10] https://arxiv.org/abs/1911.04252 ▪ [11] https://github.com/NVIDIA/cutlass/blob/main/media/docs/implicit_gemm_convolution.md ▪ [12] https://arxiv.org/abs/2101.03697 ▪ [13] https://arxiv.org/abs/1608.06993 ▪ [14] https://github.com/huggingface/pytorch-image-models/blob/main/results/results-imagenet.csv 参考文献