Slide 1

Slide 1 text

AI 2025.1.24 @tattaka_sun GO株式会社 実は強い 非ViTな画像認識モデル

Slide 2

Slide 2 text

AI 2 ▪ Self-attentionを用いたViTが流行って久しいが、 CNNを構造の中心としたモデルアーキテクチャについても 研究が続けられており、精度もViTベースの モデルに比肩するようになっている ▪ この発表ではCNNに焦点を当てた近年の研究をいくつか 紹介する はじめに

Slide 3

Slide 3 text

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] 紹介する論文

Slide 4

Slide 4 text

AI 4 01 学習戦略の見直し

Slide 5

Slide 5 text

AI 5 ▪ 学習スケジューリング・正規化・ モデルアーキテクチャの強化によって ResNetをEfficientNet以上の性能に 押し上げることができる Revisiting ResNets: Improved Training and Scaling Strategies [NeurIPS 2021] https://arxiv.org/abs/1812.01187v2 [9]

Slide 6

Slide 6 text

AI 6 ▪ 正則化とweight decay ▪ 正則化を強くかける時はweight decayを弱くしたほうが良い ▪ モデルサイズのスケーリング ▪ モデルサイズが大きいほどepoch数と正則化を増やす ▪ 半教師学習 ▪ EfficientNet-L2から取得した擬似ラベルを使用し、 Noisy Student [10] を用いて学習する Revisiting ResNets: Improved Training and Scaling Strategies [NeurIPS 2021]

Slide 7

Slide 7 text

AI 7 ▪ ResNet50のモデル構造や 入力解像度をオリジナルの ままで、学習方法のみを 変えることでどこまで精度向上 できるかを調査した研究 ResNet strikes back: An improved training procedure in timm

Slide 8

Slide 8 text

AI 8 ▪ 損失関数をCross EntropyではなくBinary Cross Entropy を用いる ▪ MixUpやCutMixを使用する際の合成された画像に含まれる「複 数のラベルが同時に存在している状態」を1つの分布として捉え るより、BCEを用いるほうが適切 ResNet strikes back: An improved training procedure in timm

Slide 9

Slide 9 text

AI 9 02 モデル構造の変更

Slide 10

Slide 10 text

AI 10 ▪ CNNとTransformerのアーキテクチャの違いを調査し、 パフォーマンスの違いがどこにあるのか調査する ▪ ResNetをベースラインとして、 Transformerの要素を加えていく ▪ Transformerに準じたマクロデザイン ▪ Depthwise Conv ▪ Inverted Bottleneck ▪ Large Kernel Sizes ▪ 活性化関数や正則化などのマイクロデザイン ConvNeXt [CVPR 2022]

Slide 11

Slide 11 text

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]

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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]

Slide 14

Slide 14 text

AI 14 ▪ Large kernel sizesなconv層を使ったアーキテクチャ設計 のガイドラインを示し、最大kernel_size=31を持つ RepLKNetと呼ばれるアーキテクチャを提案 ▪ Large kernel convの効率的な実装 ▪ Re-parametrization ▪ SwinTransformerと同程度の精度・より優れたレイテンシ RepLKNet [CVPR 2022]

Slide 15

Slide 15 text

AI 15 ▪ Large kernel convの効率的な実装 ▪ PyTorchの実装をそのまま使うとアルゴリズムの選択によっては kernel sizeが上がるにつれレイテンシが増加する ▪ Block-wise (inverse) implicit GEMM algorithmを 明示的に用いる RepLKNet [CVPR 2022]

Slide 16

Slide 16 text

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]

Slide 17

Slide 17 text

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]

Slide 18

Slide 18 text

AI 18 ▪ RepLKNetでは最大ks=31であるが、それ以上の large kernelを用いると性能がサチってしまう ▪ 2つの長方形kernelに分解することで、 ks=51までスケールアップできる ▪ 学習中にpruningを行うことでsparseなconvに ▪ ただしハードウェア最適化はできないので遅い Sparse Large Kernel Network (SLaK) [ICLR 2023]

Slide 19

Slide 19 text

AI 19 Sparse Large Kernel Network (SLaK) [ICLR 2023]

Slide 20

Slide 20 text

AI 20 ▪ Deformable Convolution(DCN)を用いて、 小さいkernelサイズでも有効受容野を増やすことができる ▪ 既存のDCNv1, v2を改良したDCNv3を提案、計算を 効率化・学習を安定化し大規模モデルに拡張 InternImage [CVPR2023]

Slide 21

Slide 21 text

AI 21 ▪ DCN v3 ▪ DCNv2: 畳み込みを行うpixelの場所を、入力によって条件付けさ れる学習可能なoffset (Δp_k) によって動的に変化させる. ▪ DCNv3では ▪ Separable convにして計算効率・安定性を上げる ▪ マルチヘッドにしてより表現力を高める InternImage [CVPR2023]

Slide 22

Slide 22 text

AI 22 ▪ 大きなカーネルサイズを持つdepthwise convはメモリ アクセスコストが高く、レイテンシが大きくなってしまう ▪ 小さなカーネルサイズを持つdepthwise convのブランチを 並列に備えたInception depthwise convolutionを 提案することで、精度と速度のトレードオフを大幅に改善 InceptionNeXt: When Inception Meets ConvNeXt [CVPR2024]

Slide 23

Slide 23 text

AI 23 ▪ MetaNeXt構造 ▪ convなど単純なTokenMixerを 使用する場合はMetaformer よりもMetaNeXt構造のほうが 効率が良い ▪ Inception depthwise convolution ▪ kernel sizeに対して計算量が 線形に増加 InceptionNeXt: When Inception Meets ConvNeXt [CVPR2024]

Slide 24

Slide 24 text

AI 24 ▪ MetaNeXt block InceptionNeXt: When Inception Meets ConvNeXt [CVPR2024] ▪ Inception depthwise convolution

Slide 25

Slide 25 text

AI 25 ▪ 現在主流のResNetをはじめとしたCNNでは、ショート カットを加算して接続する ▪ DenseNet[13]では加算ではなく連結で接続しResNetの 性能を上回るが、次元が増えるためスケーリングが 困難になる ▪ 学習戦略やモデル構造の見直しを 行い、他のCNNアーキテクチャに 匹敵するDenseNetベースの モデルを構築する RDNet (DenseNets Reloaded) [ECCV2024]

Slide 26

Slide 26 text

AI 26 ▪ 幅を広げて層を浅くする ▪ DenseNetは元々層数がかなり多かったが、ステージ内の blockを減らし中間channelを増やすことで メモリ効率とレイテンシを改善 ▪ ConvNeXtと同じようにStemのpatch分割化・ depthwise convを用いる ▪ 連結したchannelを削減するTransition layerを頻繁に 使用する RDNet (DenseNets Reloaded) [ECCV2024]

Slide 27

Slide 27 text

AI 27 RDNet (DenseNets Reloaded) [ECCV2024]

Slide 28

Slide 28 text

AI 28 各モデル+Transformerベースモデルの精度比較 ※1 数値はtimm[14]と紹介論文から引用 ※2 ResNet-RS以外の入力解像度は224x224

Slide 29

Slide 29 text

AI 29 ▪ Large kernelやDeformable Convolutionを用いるように、 ViTが持つ大きい受容野を再現する研究がトレンド? ▪ 構成要素自体は昔に提案されたものでも、 学習戦略やマクロデザインをアップデートすることで 性能を高めることができる ▪ Kaggleなど個人的な経験ではConvNeXt・InceptionNeXt・RDNetあたりが timmで使え精度も高いためおすすめ ▪ RepLKNetやInternImageなどはcuda実装が必要なためサポート されていない まとめ

Slide 30

Slide 30 text

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 参考文献