{"notes":[{"id":"classic-cnns/convnext-v2","category":"classic-cnns","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"ConvNeXt V2","subtitle":"畳み込みも穴埋めができる","author":"Z. Yuan","paperDate":"2023-01-02","publishedOn":"2025-09-27","world":"external/convnext-v2","paperTitle":"ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders","paperUrl":"https://arxiv.org/abs/2301.00808","bibliography":{"title":"ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders","authors":["Sanghyun Woo","Shoubhik Debnath","Ronghang Hu","Xinlei Chen","Zhuang Liu","In So Kweon","Saining Xie"],"url":"https://arxiv.org/abs/2301.00808","pdfUrl":"https://arxiv.org/pdf/2301.00808v1","codeUrl":null,"preprint":{"id":"2301.00808","submittedOn":"2023-01-02","url":"https://arxiv.org/abs/2301.00808"},"publication":{"venue":"CVPR","year":2023,"kind":"conference","url":"https://openaccess.thecvf.com/content/CVPR2023/html/Woo_ConvNeXt_V2_Co-Designing_and_Scaling_ConvNets_With_Masked_Autoencoders_CVPR_2023_paper.html"},"citation":"@misc{classiccnnsconvnextv22023,\n  title = {{ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders}},\n  author = {Sanghyun Woo and Shoubhik Debnath and Ronghang Hu and Xinlei Chen and Zhuang Liu and In So Kweon and Saining Xie},\n  year = {2023},\n  eprint = {2301.00808},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2301.00808}\n}\n","citationPath":"/content/papers/citations/classic-cnns/convnext-v2.065fc6e2e545.bib"},"thumbnail":{"src":"/content/papers/assets/0af11b7bcef637ee0205fe47b31901b1b775a0336ccab0042e73e8d9643589c0.png","width":1640,"height":600},"locale":"ja","path":"/content/papers/ja/classic-cnns/convnext-v2.ccc536a1140c.md","headings":[{"id":"問題の定義","text":"問題の定義","depth":2},{"id":"maeはなぜそのまま使えないのか","text":"MAEはなぜそのまま使えないのか","depth":3},{"id":"問題の解決","text":"問題の解決","depth":2},{"id":"fcmae全畳み込みのmae","text":"FCMAE：全畳み込みのMAE","depth":3},{"id":"事前学習を替えるだけでは足りない","text":"事前学習を替えるだけでは足りない","depth":3},{"id":"特徴の崩壊","text":"特徴の崩壊","depth":3},{"id":"grnチャネルどうしを競わせる","text":"GRN：チャネルどうしを競わせる","depth":3},{"id":"convnext-v2ブロック","text":"ConvNeXt V2ブロック","depth":3},{"id":"考察","text":"考察","depth":2},{"id":"アーキテクチャと事前学習は一緒に変える","text":"アーキテクチャと事前学習は一緒に変える","depth":3},{"id":"transformerのmaeと比べる","text":"TransformerのMAEと比べる","depth":3},{"id":"検出とセグメンテーション","text":"検出とセグメンテーション","depth":3},{"id":"結論","text":"結論","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"classic-cnns/convnext","relation":"referenced","topic":""},{"id":"vision-transformers/mae","relation":"referenced","topic":""}]},{"id":"classic-cnns/convnext","category":"classic-cnns","legacyPath":"classic-cnns/2201-convnext","legacySlug":"2201-convnext","legacyPaths":[],"title":"ConvNeXt","subtitle":"卷積を再び偉大に","author":"Z. Yuan","paperDate":"2022-01-10","publishedOn":"2024-06-30","paperTitle":"A ConvNet for the 2020s","paperUrl":"https://arxiv.org/abs/2201.03545","bibliography":{"title":"A ConvNet for the 2020s","authors":["Zhuang Liu","Hanzi Mao","Chao-Yuan Wu","Christoph Feichtenhofer","Trevor Darrell","Saining Xie"],"url":"https://arxiv.org/abs/2201.03545","pdfUrl":"https://arxiv.org/pdf/2201.03545","codeUrl":"https://github.com/facebookresearch/ConvNeXt","preprint":{"id":"2201.03545","submittedOn":"2022-01-10","url":"https://arxiv.org/abs/2201.03545"},"publication":{"venue":"CVPR","year":2022,"kind":"conference","url":"https://arxiv.org/abs/2201.03545"},"citation":"@misc{classiccnnsconvnext2022,\n  title = {{A ConvNet for the 2020s}},\n  author = {Zhuang Liu and Hanzi Mao and Chao-Yuan Wu and Christoph Feichtenhofer and Trevor Darrell and Saining Xie},\n  year = {2022},\n  eprint = {2201.03545},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2201.03545}\n}\n","citationPath":"/content/papers/citations/classic-cnns/convnext.801b4060b807.bib"},"thumbnail":{"src":"/content/papers/assets/37882616c5c72df33699003256d14bf7c58c8ea5d1e9e4fb5b1c33268c9a6923.jpg","width":1224,"height":432},"locale":"ja","path":"/content/papers/ja/classic-cnns/convnext.4e647352c822.md","headings":[{"id":"問題の定義","text":"問題の定義","depth":2},{"id":"解決策","text":"解決策","depth":2},{"id":"ネットワークアーキテクチャの再設計","text":"ネットワークアーキテクチャの再設計","depth":3},{"id":"現代的なトレーニング技術の導入","text":"現代的なトレーニング技術の導入","depth":3},{"id":"マクロ設計","text":"マクロ設計","depth":3},{"id":"resnext-化","text":"ResNeXt 化","depth":3},{"id":"逆瓶頸","text":"逆瓶頸","depth":3},{"id":"大きな畳み込み核","text":"大きな畳み込み核","depth":3},{"id":"微細設計","text":"微細設計","depth":3},{"id":"討論","text":"討論","depth":2},{"id":"モデル設定の概要","text":"モデル設定の概要","depth":3},{"id":"imagenet-上での性能","text":"ImageNet 上での性能","depth":3},{"id":"結論","text":"結論","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"vision-transformers/convmixer","relation":"comparison","topic":"畳み込みによる画像パッチの混合"},{"id":"vision-transformers/caformer","relation":"comparison","topic":"畳み込みによる画像パッチの混合"},{"id":"reparameterization/replknet","relation":"comparison","topic":"大きなカーネルと簡潔な畳み込み骨格"}]},{"id":"vision-transformers/mae","category":"vision-transformers","legacyPath":"vision-transformers/2111-mae","legacySlug":"2111-mae","legacyPaths":[],"title":"MAE","subtitle":"四分之一の線索","author":"Z. Yuan","paperDate":"2021-11-11","publishedOn":"2024-08-27","paperTitle":"Masked Autoencoders Are Scalable Vision Learners","paperUrl":"https://arxiv.org/abs/2111.06377","bibliography":{"title":"Masked Autoencoders Are Scalable Vision Learners","authors":["Kaiming He","Xinlei Chen","Saining Xie","Yanghao Li","Piotr Dollár","Ross Girshick"],"url":"https://arxiv.org/abs/2111.06377","pdfUrl":"https://arxiv.org/pdf/2111.06377","codeUrl":"https://github.com/facebookresearch/mae","preprint":{"id":"2111.06377","submittedOn":"2021-11-11","url":"https://arxiv.org/abs/2111.06377"},"publication":{"venue":"CVPR","year":2022,"kind":"conference","url":"https://openaccess.thecvf.com/content/CVPR2022/html/He_Masked_Autoencoders_Are_Scalable_Vision_Learners_CVPR_2022_paper.html"},"citation":"@misc{visiontransformersmae2021,\n  title = {{Masked Autoencoders Are Scalable Vision Learners}},\n  author = {Kaiming He and Xinlei Chen and Saining Xie and Yanghao Li and Piotr Dollár and Ross Girshick},\n  year = {2021},\n  eprint = {2111.06377},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2111.06377}\n}\n","citationPath":"/content/papers/citations/vision-transformers/mae.762f979b1c32.bib"},"thumbnail":{"src":"/content/papers/assets/f6a24c00fab9f102a2680899072c0e9de2ff2ae0cd7197666455a34c566f6542.jpg","width":1224,"height":716},"locale":"ja","path":"/content/papers/ja/vision-transformers/mae.14bf96835957.md","headings":[{"id":"問題の定義","text":"問題の定義","depth":2},{"id":"問題の解決","text":"問題の解決","depth":2},{"id":"モデルアーキテクチャ","text":"モデルアーキテクチャ","depth":3},{"id":"訓練方法","text":"訓練方法","depth":3},{"id":"討論","text":"討論","depth":2},{"id":"どれくらいの割合を隠すべきか","text":"どれくらいの割合を隠すべきか？","depth":3},{"id":"decoder-パラメータ","text":"Decoder パラメータ","depth":3},{"id":"学習目標","text":"学習目標","depth":3},{"id":"画像強化","text":"画像強化","depth":3},{"id":"マスク方法","text":"マスク方法","depth":3},{"id":"imagenet-での効果","text":"ImageNet での効果","depth":3},{"id":"結論","text":"結論","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"vision-transformers/beit","relation":"comparison","topic":"画素と視覚トークンの再構成"},{"id":"image-generation/mar","relation":"comparison","topic":"画素と視覚トークンの再構成"}]}],"text":"ConvNeXtは、純粋な畳み込みネットワークでも、教師あり学習ならSwin Transformerと互角に戦えることを示しました。ほぼ同じ頃、視覚の自己教師あり学習ではMAEがブームを起こしていました。画像の大半をマスクで隠し、モデルにそれを補わせるやり方です。ViTをこの方法で事前学習すると、微調整後の成績は教師あり学習よりはっきり良くなりました。\n\n\n> [!TIP]\n> \n> この2本は、先に私たちのノートで読めます。\n> \n> - **[[22.01] ConvNeXt：卷積を再び偉大に](/blog/papers/classic-cnns/convnext)**\n> - **[[21.11] MAE：四分之一の線索](/blog/papers/vision-transformers/mae)**\n\n\nこの二つをつなぐのは、ごく自然な次の一歩に見えます。この論文の著者のうち、Zhuang LiuはConvNeXtの筆頭著者、Saining XieはConvNeXtとMAEの両方の著者、Xinlei ChenもMAEの著者です。筆頭著者はKAISTのSanghyun Wooで、この論文は彼がFAIRでインターンをしていたときの仕事です。彼と、同じく名を連ねるIn So Kweonは、どちらもCBAMの著者でもあります。\n\n彼らは、MAEをそのままConvNeXtに適用しても、うまくいかないことに気づきました。\n\n## 問題の定義\n\n### MAEはなぜそのまま使えないのか\n\nMAEのエンコーダとデコーダは非対称です。画像をpatchに切り分けて75%をマスクし、ViTのエンコーダは残りの25%のpatchだけを受け取ります。隠された部分はそもそもエンコーダに入らないので、事前学習は速く、計算も少なくて済みます。この設計は系列を処理するTransformerの能力に頼っていて、tokenが少し減っても問題なく計算できます。\n\n畳み込みネットワークは、そう簡単にはいきません。畳み込みは完全な2D特徴マップの上をスライドするので、画像の空間構造を保つ必要があり、隠されたパッチをそのまま取り除くことはできません。よくある間に合わせのやり方は、入力側に学習可能なmask tokenを差し込むことですが、これでは事前学習の計算が節約できません。しかも推論時にはmask tokenがないので、学習とテストで食い違いが生じ、マスク率が高いほど問題が大きくなります。\n\nこうした実装上の問題を解決できたとしても、著者らはもう一つの問題に気づきました。マスク事前学習でConvNeXtが学ぶ特徴そのものに難があるのです。これについては後で説明します。\n\n## 問題の解決\n\n### FCMAE：全畳み込みのMAE\n\n[![左から右へ4つの部分からなる流れ図。左端は224×224の入力で、7×7のマス目として描かれ、赤が見えるパッチ、灰色が隠されたパッチで、約6割が灰色。矢印がConvNeXtエンコーダにつながり、枠内には、スパース畳み込み、見えるパッチだけを計算、TPUでは通常の畳み込み＋二値マスクに置き換え、と書かれている。続いてデコーダにつながり、枠内には、ConvNeXtブロック1つ、次元512、mask tokenを追加、と書かれている。右端は再構成の結果で、同じく7×7のマス目のうち、もともと隠されていたマスだけが薄い赤で示され、これらの位置でだけMSE損失を計算することを表している](/content/papers/assets/0af11b7bcef637ee0205fe47b31901b1b775a0336ccab0042e73e8d9643589c0.png)](/content/papers/assets/0af11b7bcef637ee0205fe47b31901b1b775a0336ccab0042e73e8d9643589c0.png)\n\n*図：本稿で作図。原論文の第3節と公式コードをもとに描いています。原論文はCC BY-NC-ND 4.0のため、原図は転載していません。*\n\n著者らの解決策は、マスクした画像をスパースなデータとみなすことです。この発想は3D点群から来ています。点群はもともとスパースで、点群を処理するスパース畳み込みは、データのある位置でだけ計算します。マスクした画像も同じで、見えるパッチがデータのある点にあたります。\n\n事前学習では、エンコーダの畳み込みをサブマニフォールドスパース畳み込みに置き換え、見える位置でだけ計算し、出力もその位置にだけ残します。微調整では通常の畳み込みに戻し、重みはそのまま引き継ぎます。TPUのようなアクセラレータでは、著者らは通常の畳み込みを使い、各畳み込みの前後に二値マスクを1回ずつ掛けます。数値的には完全に等価で、計算に無駄が多いだけです。論文の主な実験は、すべてTPU v3上でこのやり方で行われています。\n\n通常の畳み込みを使うと何が起きるのか、7×7のdepthwise畳み込みを3層重ねて見てみましょう。\n\n```python\nimport torch\nimport torch.nn.functional as F\n\ntorch.manual_seed(0)\nkeep = torch.zeros(49)\nkeep[torch.randperm(49)[:19]] = 1                       # 7×7個のパッチのうち19個を残し、6割をマスク\nmask = F.interpolate(keep.view(1, 1, 7, 7), size=56)    # 第1ステージの56×56に拡大、1パッチは8×8\nx = torch.randn(1, 1, 56, 56) * mask                    # マスクした場所は0\nhole = mask == 0\n\nw = torch.randn(1, 1, 7, 7) / 7                         # 7×7のdepthwise畳み込み1つ\ndense, sparse = x, x\nfor layer in range(1, 4):\n    dense = F.conv2d(dense, w, padding=3)\n    sparse = F.conv2d(sparse, w, padding=3) * mask      # 各層の計算後、マスクした場所を0に戻す\n    print(f\"{layer}層目：マスクした位置のうち値を持つ割合、通常の畳み込み {(dense[hole] != 0).float().mean():.0%}、\"\n          f\"マスクあり {(sparse[hole] != 0).float().mean():.0%}\")\n```\n\n```\n1層目：マスクした位置のうち値を持つ割合、通常の畳み込み 50%、マスクあり 0%\n2層目：マスクした位置のうち値を持つ割合、通常の畳み込み 84%、マスクあり 0%\n3層目：マスクした位置のうち値を持つ割合、通常の畳み込み 100%、マスクあり 0%\n```\n\n通常の畳み込みは、隠されたパッチを値0のピクセルの集まりとしてそのまま計算するので、周りの値が1層ごとにしみ込み、3層で穴はすっかり埋まってしまいます。エンコーダは、隠された位置でも特徴を計算してしまうのです。マスクを掛ければ穴はずっと穴のままで、エンコーダは見える位置でだけ働きます。MAEのViTが見えるpatchだけを受け取るのと同じことです。ConvNeXt-Bでは、スパース畳み込みなしで79.3%、ありで83.7%という差が出ます。\n\n残りの部分はどれも簡単です。マスクは32×32単位で60%を隠し、最後のステージの7×7の解像度で生成してから、各ステージへ段階的に拡大します。データ拡張はランダムな切り抜きとリサイズだけです。デコーダはConvNeXtブロックを1つだけ使い、次元は512です。著者らはUNetやTransformerのデコーダも試しましたが、正解率はほぼ同じで、ConvNeXtブロック1つの事前学習時間が最も短く、7.7時間に対してUNetは12.9時間でした。損失はMAEと同じで、隠されたパッチでだけMSEを計算し、ターゲットはpatchごとに標準化したピクセルです。\n\n### 事前学習を替えるだけでは足りない\n\nFCMAEを組み上げた後、著者らはConvNeXt-Bを800エポック事前学習し、100エポック微調整して、83.7%を得ました。ゼロから教師ありで100エポック学習させた82.7%よりは良いものの、元のConvNeXtの論文で教師ありで300エポック学習させた結果は83.8%です。自己教師あり事前学習で大回りしたのに、まだ教師あり学習に勝てていません。ViTをMAEで事前学習した場合は、教師ありよりはっきり良くなっていたのに、です。\n\n### 特徴の崩壊\n\n著者らは事前学習済みのConvNeXtの各チャネルの活性化マップを描き、多くのチャネルが全面的に無反応か、全面的に飽和していて、しかもチャネルどうしの活性化がよく似ていることに気づきました。著者らはこれを特徴の崩壊（feature collapse）と呼んでいます。この現象は主に、各ブロックで次元を4倍に広げるMLP層に現れます。\n\n定量化するために、著者らは各層の特徴についてチャネル間の平均cosine距離を計算しました。距離が大きいほど、特徴が多様だということです。ImageNetの検証セットからランダムに1,000枚の画像を取り、いくつかのモデルを比べています。FCMAEで事前学習したConvNeXtは最後までずっと低く、崩壊がはっきりしています。教師ありのConvNeXtは最後の数層だけで下がり、著者らは、交差エントロピー損失がモデルを分類に必要な特徴に集中させるからだと推測しています。MAEで事前学習したViTは、ずっと高いままです。\n\n### GRN：チャネルどうしを競わせる\n\n著者らは、生物学の側抑制から着想を得ました。ニューロンどうしが互いに抑制し合うことで、強い反応がより際立ち、全体としての反応もより多様になります。彼らは新しい正規化層を設計し、グローバル応答正規化（Global Response Normalization、GRN）と名づけました。3つのステップからなります。\n\n1. **大域的な集約**。各チャネルについて、特徴マップ全体でL2ノルムを計算し、$\\|X_i\\|$を得ます。\n2. **正規化**。各チャネルのノルムを全チャネルのノルムの平均で割り、相対的な重要度$N_i$を得ます。1より大きいチャネルは平均より強く、1より小さいチャネルは平均より弱いということです。\n3. **較正**。元の特徴に、この相対的な重要度を掛けます。\n\n学習しやすくするために、著者らはさらに学習可能な$\\gamma$、$\\beta$と、残差接続を1本加えています。\n\n$$\nX_i \\leftarrow \\gamma\\, X_i\\, N_i + \\beta + X_i ,\n$$\n\n$\\gamma$と$\\beta$は0で初期化されるので、GRNは最初は何もせず、学習の過程で少しずつ効き始めます。公式の実装はたった3行なので、そのまま書き写し、強さの異なる5つのチャネルで試してみましょう。\n\n```python\nimport torch\n\ndef grn(x, gamma, beta, eps=1e-6):\n    # x: (N, H, W, C)。公式の実装と同じくチャネルを最後に置く\n    gx = torch.norm(x, p=2, dim=(1, 2), keepdim=True)   # 各チャネルの、特徴マップ全体でのL2ノルム\n    nx = gx / (gx.mean(dim=-1, keepdim=True) + eps)     # 全チャネルの平均で割る\n    return gamma * (x * nx) + beta + x\n\ntorch.manual_seed(0)\nstrength = torch.tensor([4.0, 2.0, 1.0, 0.5, 0.1])      # 強さの異なる5つのチャネル\nx = torch.randn(1, 14, 14, 5) * strength\n\nzero = torch.zeros(5)\nprint(\"γ、βがどちらも0のとき、出力は入力と同じ：\", torch.equal(grn(x, zero, zero), x))\n\ny = grn(x, torch.ones(5), zero)                         # 学習後にγ = 1になったと仮定\ngx = torch.norm(x, p=2, dim=(1, 2)).flatten()\ngy = torch.norm(y, p=2, dim=(1, 2)).flatten()\nprint(\"相対的な重要度 N：\", [round(v, 2) for v in (gx / gx.mean()).tolist()])\nprint(\"処理前のノルム：\", [round(v, 1) for v in gx.tolist()])\nprint(\"処理後のノルム：\", [round(v, 1) for v in gy.tolist()])\nprint(f\"最強と最弱のチャネルのノルム比：{gx.max() / gx.min():.0f}倍 → {gy.max() / gy.min():.0f}倍\")\n```\n\n```\nγ、βがどちらも0のとき、出力は入力と同じ： True\n相対的な重要度 N： [2.64, 1.3, 0.66, 0.33, 0.07]\n処理前のノルム： [57.3, 28.1, 14.4, 7.2, 1.5]\n処理後のノルム： [208.6, 64.6, 23.9, 9.6, 1.6]\n最強と最弱のチャネルのノルム比：39倍 → 132倍\n```\n\n最も強いチャネルは3.6倍に拡大され、最も弱いチャネルはほとんど変わらず、強弱の差は39倍から132倍に開きました。各チャネルがどれだけ拡大されるかは、ほかのチャネルと比べて強いかどうかで決まります。これがチャネル間の競争です。\n\n3つのステップのどれについても、著者らはほかのやり方に替えて比べていて、どれも今の版が最も良い結果でした。\n\n| 比較項目 | 置き換え | ImageNet微調整正解率 |\n| --- | --- | ---: |\n| 大域的な集約 | グローバル平均プーリング | 83.7% |\n| | L1ノルム | 84.3% |\n| | **L2ノルム** | **84.6%** |\n| 正規化層 | LRN | 83.2% |\n| | BatchNorm | 80.5% |\n| | LayerNorm | 83.8% |\n| | **GRN** | **84.6%** |\n| 特徴の重み付け | SE（パラメータ109M） | 84.4% |\n| | CBAM（パラメータ109M） | 84.5% |\n| | **GRN（パラメータ89M）** | **84.6%** |\n| GRNを使う段階 | 事前学習だけで使い、微調整で外す | 78.8% |\n| | 微調整のときだけ加える | 80.6% |\n| | **両方の段階で使う** | **84.6%** |\n\n*表：原論文Table 2をもとに整理。ConvNeXt-BをFCMAEで800エポック事前学習した後に微調整しています。GRNなしの基準は83.7%です。*\n\nSEやCBAMでも似たような特徴の重み付けはできますが、パラメータが20M増えます。GRNはパラメータを一つも増やしません（$\\gamma$、$\\beta$は無視できるほど小さい）。最後の組も注目に値します。GRNは事前学習と微調整の両方に必要で、どちらか一方でも欠けると大きく下がります。\n\n### ConvNeXt V2ブロック\n\nGRNは、ConvNeXtブロックの中で次元を広げた後、つまり崩壊が最もひどい層に置かれます。GRNを加えるとLayerScaleが不要になることがわかったので、著者らはそれを取り除きました。\n\n[![左右2列のブロック構造図。左の列はConvNeXt V1ブロックで、上から順に7×7のdepthwise畳み込み、LayerNorm、チャネルをCから4Cに広げる1×1畳み込み、GELU、チャネルを4CからCに戻す1×1畳み込み、LayerScaleが並び、最後に入力と足し合わされる。LayerScaleは破線の枠で描かれ、下にV2では削除と注記されている。右の列はConvNeXt V2ブロックで、順序は同じだが、GELUと2つ目の1×1畳み込みのあいだに赤いGRNの枠が1つ加わり、LayerScaleはない。下には、GRNは各チャネルの大域的なL2ノルムを計算し、全チャネルの平均で割る、と注記されている](/content/papers/assets/149efd3dc24d22851f33f2ac0eb44a73e3dd77789df3b9f7e3427f4e09da8489.png)](/content/papers/assets/149efd3dc24d22851f33f2ac0eb44a73e3dd77789df3b9f7e3427f4e09da8489.png)\n\n*図：本稿で作図。原論文の第4節と公式コードをもとに描いています。*\n\nこの1か所を除けば、ConvNeXt V2のアーキテクチャはV1とまったく同じです。著者らはこれを8つのサイズで用意しました。最小のAttoはパラメータ3.7Mしかなく、続いてFemto、Pico、Nano、Tiny、Base、Largeがあり、最大のHugeは約660Mで、この論文で新たに加わったものです。\n\n## 考察\n\n### アーキテクチャと事前学習は一緒に変える\n\nこの論文の最も核心的な結果は、次の表です。\n\n| モデル | 教師あり | FCMAE |\n| --- | ---: | ---: |\n| ConvNeXt V1-B | 83.8% | 83.7% |\n| ConvNeXt V2-B | 84.3% | **84.6%** |\n| ConvNeXt V1-L | 84.3% | 84.4% |\n| ConvNeXt V2-L | 84.5% | **85.6%** |\n\n*表：原論文Table 3から抜粋。ImageNet-1Kの微調整正解率で、FCMAEの事前学習は800エポックです。*\n\nV1をFCMAEで事前学習しても、ほとんど改善しません。V2を教師ありで学習させても改善は小さく、Lでは0.2しか上がりません。両方を一緒に使うと、Bは0.8、Lは1.3上がります。アーキテクチャだけを変えても、事前学習だけを替えても足りないということで、著者らはこれを協調設計（co-design）と呼んでいます。\n\n8つのサイズに広げても、結果は同じです。\n\n| サイズ | パラメータ数 | V1教師あり | V2教師あり | V2 + FCMAE |\n| --- | ---: | ---: | ---: | ---: |\n| Atto | 3.7M | 75.7% | 76.2% | **76.7%** |\n| Femto | 5.2M | 77.5% | 78.0% | **78.5%** |\n| Pico | 9.1M | 79.5% | 79.7% | **80.3%** |\n| Nano | 15.6M | 80.8% | 81.2% | **81.9%** |\n| Tiny | 28.6M | 82.1% | 82.5% | **83.0%** |\n| Base | 89M | 83.8% | 84.3% | **84.9%** |\n| Large | 198M | 84.3% | 84.5% | **85.8%** |\n| Huge | 660M | — | — | **86.3%** |\n\n*表：原論文Table 14から抜粋。入力は224×224で、ここでのFCMAEの事前学習は1600エポックです。*\n\nどのサイズでも0.8〜1.5ポイント向上していて、最も伸びたのはLargeです。\n\nただし、はっきりさせておくと、これらの数字が比べているのは微調整後の正解率で、学習コストは比較の対象外です。FCMAEはまず1600エポック事前学習し、BaseとLargeはさらに100エポック微調整します。AttoからNanoまでの小さなモデルは、微調整だけで600エポックかかります。\n\n### TransformerのMAEと比べる\n\nImageNet-1Kだけで事前学習し、ほかのマスク事前学習の手法と比べます。\n\n| サイズ | ViT + MAE | Swin + SimMIM | ConvNeXt V2 + FCMAE |\n| --- | ---: | ---: | ---: |\n| B | 83.6% | 84.0% | **84.9%** |\n| L | **85.9%** | 85.4% | 85.8% |\n| H | **86.9%** | 85.7%（SwinV2） | 86.3% |\n\n*表：原論文Table 4から抜粋。Swinの列は800エポック事前学習した結果で、ほかはそれぞれ最も良い設定のものです。*\n\nSwin + SimMIMと比べると、ConvNeXt V2はどのサイズでも勝っています。ViT + MAEと比べると、Lではほぼ互角で、しかもViT-Lのほうがパラメータが5割以上多いのです（307M対198M）。Hになると、ConvNeXt V2は0.6遅れをとります。著者らは、大きなViTのほうが自己教師あり事前学習から得る恩恵が大きいからだと説明しています。\n\nさらにImageNet-22Kでの教師ありの中間微調整を1段階加えると、ConvNeXt V2-Hは512×512の入力で88.9%に達しました。これは当時、公開データだけを使った最高成績です。V2のBaseとLargeも、それぞれ1サイズ上のV1のLargeとXLargeを上回っています。\n\n付録では対照学習とも比べています。同じConvNeXt V2-Bで、MoCo v3で事前学習して微調整すると83.7%で、教師ありの84.3%より低くなります。FCMAEは84.9%です。\n\n### 検出とセグメンテーション\n\nCOCOではMask R-CNNを使い、V1教師あり、V2教師あり、V2 + FCMAEと進むにつれて、box APは一歩ずつ上がります。Baseは50.3、51.0、52.9、Largeは50.6、51.5、54.4で、Hugeは55.7に達します。SimMIMで事前学習したSwinと比べても、どのサイズでも勝っています。\n\nADE20KではUperNetを使い、V2 + FCMAEはここでもV1教師ありよりずっと良く、Baseは49.9から52.1、Largeは50.5から53.7になります。ただ、Swin-B + SimMIMは52.8なので、Baseのクラスでは実は0.7負けています。論文の言い方では、BaseとLargeではSwinと「同等の性能」で、Hugeで初めて勝つ、となっています。\n\n## 結論\n\nConvNeXtは穴埋めを覚えました。ただし、アーキテクチャも合わせて変えることが条件です。事前学習ではスパース畳み込みを使い、ViTと同じように見えるパッチだけを見させます。ブロックにはGRNを加え、チャネルどうしを競わせて、ひとかたまりに崩れないようにします。この二つを一緒に使って初めて、マスク事前学習が畳み込みネットワークに本当に役立ったのです。\n\nGRNはたった3行で、パラメータも増やさないので、この論文で最も持ち帰りやすいものです。FCMAEのほうはそれほど手軽ではありません。論文ではTPU v3-256で800〜1600エポック事前学習して、得られたのは各サイズでおよそ1ポイントです。\n\nですから、より現実的なのは[公式の重み](https://github.com/facebookresearch/ConvNeXt-V2)をそのまま使って微調整することで、timmにはAttoからHugeまでそろっています。\n\n穴埋め問題はTPUに解いてもらって、私たちは答えを写すだけにしましょう。\n","imageSizes":{"/content/papers/assets/0af11b7bcef637ee0205fe47b31901b1b775a0336ccab0042e73e8d9643589c0.png":{"width":1640,"height":600},"/content/papers/assets/149efd3dc24d22851f33f2ac0eb44a73e3dd77789df3b9f7e3427f4e09da8489.png":{"width":1640,"height":1000}}}
