{"notes":[{"id":"classic-cnns/overlock","category":"classic-cnns","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"OverLoCK","subtitle":"まず全体を見る","author":"Z. Yuan","paperDate":"2025-02-27","publishedOn":"2026-02-24","paperTitle":"OverLoCK: An Overview-first-Look-Closely-next ConvNet with Context-Mixing Dynamic Kernels","paperUrl":"https://arxiv.org/abs/2502.20087","bibliography":{"title":"OverLoCK: An Overview-first-Look-Closely-next ConvNet with Context-Mixing Dynamic Kernels","authors":["Meng Lou","Yizhou Yu"],"url":"https://arxiv.org/abs/2502.20087","pdfUrl":"https://arxiv.org/pdf/2502.20087v3","codeUrl":"https://github.com/LMMMEng/OverLoCK","preprint":{"id":"2502.20087","submittedOn":"2025-02-27","url":"https://arxiv.org/abs/2502.20087"},"publication":{"venue":"CVPR","year":2025,"kind":"conference","url":"https://openaccess.thecvf.com/content/CVPR2025/html/Lou_OverLoCK_An_Overview-first-Look-Closely-next_ConvNet_with_Context-Mixing_Dynamic_Kernels_CVPR_2025_paper.html"},"citation":"@misc{classiccnnsoverlock2025,\n  title = {{OverLoCK: An Overview-first-Look-Closely-next ConvNet with Context-Mixing Dynamic Kernels}},\n  author = {Meng Lou and Yizhou Yu},\n  year = {2025},\n  eprint = {2502.20087},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2502.20087}\n}\n","citationPath":"/content/papers/citations/classic-cnns/overlock.a1eecba8875b.bib"},"thumbnail":{"src":"/content/papers/assets/99458c439c8f5458671d09ec6d68f52f31a20702b6a0bdba99e2fe33dbf86ea7.png","width":2112,"height":681},"locale":"ja","path":"/content/papers/ja/classic-cnns/overlock.153d2dc52901.md","headings":[{"id":"問題の定義","text":"問題の定義","depth":2},{"id":"中間層には方向付けが足りない","text":"中間層には方向付けが足りない","depth":3},{"id":"カーネルが遠くを見られない","text":"カーネルが遠くを見られない","depth":3},{"id":"問題の解決","text":"問題の解決","depth":2},{"id":"3つのサブネットワークへ分ける","text":"3つのサブネットワークへ分ける","depth":3},{"id":"contmix画像全体をカーネルへ入れる","text":"ContMix：画像全体をカーネルへ入れる","depth":3},{"id":"4つのサイズ","text":"4つのサイズ","depth":3},{"id":"考察","text":"考察","depth":2},{"id":"imagenet","text":"ImageNet","depth":3},{"id":"物体検出とセグメンテーション","text":"物体検出とセグメンテーション","depth":3},{"id":"1つずつ追加する","text":"1つずつ追加する","depth":3},{"id":"ほかの動的演算子と比べる","text":"ほかの動的演算子と比べる","depth":3},{"id":"実際に使うとき","text":"実際に使うとき","depth":3},{"id":"結論","text":"結論","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"classic-cnns/internimage","relation":"referenced","topic":""},{"id":"classic-cnns/dcnv4","relation":"referenced","topic":""}]},{"id":"classic-cnns/internimage","category":"classic-cnns","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"InternImage","subtitle":"力業で奇跡は起きる？","author":"Z. Yuan","paperDate":"2022-11-10","publishedOn":"2025-09-04","world":"external/internimage","paperTitle":"InternImage: Exploring Large-Scale Vision Foundation Models with Deformable Convolutions","paperUrl":"https://arxiv.org/abs/2211.05778","bibliography":{"title":"InternImage: Exploring Large-Scale Vision Foundation Models with Deformable Convolutions","authors":["Wenhai Wang","Jifeng Dai","Zhe Chen","Zhenhang Huang","Zhiqi Li","Xizhou Zhu","Xiaowei Hu","Tong Lu","Lewei Lu","Hongsheng Li","Xiaogang Wang","Yu Qiao"],"url":"https://arxiv.org/abs/2211.05778","pdfUrl":"https://arxiv.org/pdf/2211.05778v4","codeUrl":null,"preprint":{"id":"2211.05778","submittedOn":"2022-11-10","url":"https://arxiv.org/abs/2211.05778"},"publication":{"venue":"CVPR","year":2023,"kind":"conference","url":"https://openaccess.thecvf.com/content/CVPR2023/html/Wang_InternImage_Exploring_Large-Scale_Vision_Foundation_Models_With_Deformable_Convolutions_CVPR_2023_paper.html"},"citation":"@misc{classiccnnsinternimage2022,\n  title = {{InternImage: Exploring Large-Scale Vision Foundation Models with Deformable Convolutions}},\n  author = {Wenhai Wang and Jifeng Dai and Zhe Chen and Zhenhang Huang and Zhiqi Li and Xizhou Zhu and Xiaowei Hu and Tong Lu and Lewei Lu and Hongsheng Li and Xiaogang Wang and Yu Qiao},\n  year = {2022},\n  eprint = {2211.05778},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2211.05778}\n}\n","citationPath":"/content/papers/citations/classic-cnns/internimage.4baca0899bc9.bib"},"thumbnail":{"src":"/content/papers/assets/eb597a4ac9a7c2e5e9b05e8ff1c61a951adab71d5cc5a273796762d353a9a0e9.png","width":1012,"height":1179},"locale":"ja","path":"/content/papers/ja/classic-cnns/internimage.d096fceb3441.md","headings":[{"id":"問題の定義","text":"問題の定義","depth":2},{"id":"畳み込みはどこで負けているのか","text":"畳み込みはどこで負けているのか","depth":3},{"id":"dcnv2をそのまま使えない理由","text":"DCNv2をそのまま使えない理由","depth":3},{"id":"問題の解決","text":"問題の解決","depth":2},{"id":"dcnv3の三つの変更","text":"DCNv3の三つの変更","depth":3},{"id":"ネットワークに積み上げる","text":"ネットワークに積み上げる","depth":3},{"id":"考察","text":"考察","depth":2},{"id":"imagenet","text":"ImageNet","depth":3},{"id":"検出とセグメンテーション","text":"検出とセグメンテーション","depth":3},{"id":"アブレーションsoftmaxの項目","text":"アブレーション：softmaxの項目","depth":3},{"id":"代償","text":"代償","depth":3},{"id":"結論","text":"結論","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"classic-cnns/deformable-convnets","relation":"referenced","topic":""},{"id":"reparameterization/replknet","relation":"referenced","topic":""},{"id":"classic-cnns/slak","relation":"referenced","topic":""}]},{"id":"classic-cnns/dcnv4","category":"classic-cnns","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"DCNv4","subtitle":"重みに上限を設けない","author":"Z. Yuan","paperDate":"2024-01-11","publishedOn":"2025-12-29","paperTitle":"Efficient Deformable ConvNets: Rethinking Dynamic and Sparse Operator for Vision Applications","paperUrl":"https://arxiv.org/abs/2401.06197","bibliography":{"title":"Efficient Deformable ConvNets: Rethinking Dynamic and Sparse Operator for Vision Applications","authors":["Yuwen Xiong","Zhiqi Li","Yuntao Chen","Feng Wang","Xizhou Zhu","Jiapeng Luo","Wenhai Wang","Tong Lu","Hongsheng Li","Yu Qiao","Lewei Lu","Jie Zhou","Jifeng Dai"],"url":"https://arxiv.org/abs/2401.06197","pdfUrl":"https://arxiv.org/pdf/2401.06197v1","codeUrl":"https://github.com/OpenGVLab/DCNv4","preprint":{"id":"2401.06197","submittedOn":"2024-01-11","url":"https://arxiv.org/abs/2401.06197"},"publication":{"venue":"CVPR","year":2024,"kind":"conference","url":"https://openaccess.thecvf.com/content/CVPR2024/html/Xiong_Efficient_Deformable_ConvNets_Rethinking_Dynamic_and_Sparse_Operator_for_Vision_CVPR_2024_paper.html"},"citation":"@misc{classiccnnsdcnv42024,\n  title = {{Efficient Deformable ConvNets: Rethinking Dynamic and Sparse Operator for Vision Applications}},\n  author = {Yuwen Xiong and Zhiqi Li and Yuntao Chen and Feng Wang and Xizhou Zhu and Jiapeng Luo and Wenhai Wang and Tong Lu and Hongsheng Li and Yu Qiao and Lewei Lu and Jie Zhou and Jifeng Dai},\n  year = {2024},\n  eprint = {2401.06197},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2401.06197}\n}\n","citationPath":"/content/papers/citations/classic-cnns/dcnv4.f17f87f8ee11.bib"},"thumbnail":{"src":"/content/papers/assets/fe768f9a1b9df098fd7de1ed2c34ba0713cb83936e024d45ca26e85a2b340ff1.png","width":1020,"height":522},"locale":"ja","path":"/content/papers/ja/classic-cnns/dcnv4.779a963baf25.md","headings":[{"id":"問題の定義","text":"問題の定義","depth":2},{"id":"9点しか見ないのになぜ遅いのか","text":"9点しか見ないのになぜ遅いのか","depth":3},{"id":"softmaxは注意から借りたもの","text":"softmaxは注意から借りたもの","depth":3},{"id":"問題の解決","text":"問題の解決","depth":2},{"id":"1softmaxを除く","text":"1．softmaxを除く","depth":3},{"id":"2gpuのデータ転送を減らす","text":"2．GPUのデータ転送を減らす","depth":3},{"id":"考察","text":"考察","depth":2},{"id":"演算子単体","text":"演算子単体","depth":3},{"id":"flashinternimage","text":"FlashInternImage","depth":3},{"id":"別のネットワークへ組み込む","text":"別のネットワークへ組み込む","depth":3},{"id":"代償","text":"代償","depth":3},{"id":"結論","text":"結論","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"classic-cnns/internimage","relation":"referenced","topic":""},{"id":"classic-cnns/deformable-convnets","relation":"referenced","topic":""}]}],"text":"写真を見るとき、人は左上から1マスずつ読み進めることは普通ありません。まずひと目でカピバラが温泉につかっていると捉え、それから頭の上のミカンへ目を戻します。認知科学ではtop-down attentionと呼び、先に大まかな全体像を得て、それを手がかりに細部を見ます。\n\n畳み込みネットワークのバックボーンは違います。ピラミッド構造で順にダウンサンプリングし、各層はそれ以前の結果だけを使います。中間層が特徴を処理するとき、画像全体が何を表すかはまだわかりません。\n\n香港大学のMeng LouとYizhou Yuは、ネットワークにも「まず全体を見て、次に細部を見る」能力を持たせる純粋な畳み込みバックボーンを作ろうとしました。\n\n## 問題の定義\n\n### 中間層には方向付けが足りない\n\n著者はGrad-CAMでSwin-T、ConvNeXt-T、VMamba-Tの中間層を調べ、分類器から遠い第3ステージでは正しいクラスの物体を捉えられないことが多いと見つけました。長距離関係を捉える能力はありますが、中間層には高次の意味による指針がありません。\n\n視覚モデルへトップダウン信号を加える先行研究もありました。主流は再帰的な方法で、最終出力を前段へ戻してもう一度計算します。しかし余分な1巡の計算は、バックボーンには割に合いません。\n\n### カーネルが遠くを見られない\n\nもう1つは演算子の問題です。画像全体の意味を得ても、それをカーネルへ組み込む手段が必要です。\n\n大きなカーネルも通常の動的畳み込みも、見る範囲はカーネルサイズに制限されます。入力解像度が上がるほど、画像中で見える割合は小さくなります。deformable convolutionは遠くを見られますが、点が散らばると、畳み込み本来の局所的な帰納バイアスが失われます。著者が求めるのは、重みが入力に応じて変わり、全体情報を使え、局所的な帰納バイアスも保つ演算子です。\n\n## 問題の解決\n\n### 3つのサブネットワークへ分ける\n\n[![原論文Figure 3。下のBase-Netへ頭にミカンを乗せたカピバラ画像を入力し、EmbeddingとBasic Blockの3組を通って解像度がH/4からH/16へ下がる。左上のOverview-NetはBase-Netに続き、Embeddingと数個のBasic BlockでH/32へ直接下げ、Context Priorと記した緑の立方体を出力する。右上のFocus-NetもBase-Netの出力を受け、Dynamic Block、Embedding、Dynamic Blockを経てH/16からH/32へ進む。赤いcontext guidance flowの矢印がcontext priorを各Dynamic Blockへ送る。](/content/papers/assets/d32df0756ccbd0c769259f897b5ad9cf4c8079758897be9a2147cd65a4d46ce1.png)](/content/papers/assets/d32df0756ccbd0c769259f897b5ad9cf4c8079758897be9a2147cd65a4d46ce1.png)\n\n*LouとYuの原論文Figure 3。[**PDF 4ページ**](https://arxiv.org/pdf/2502.20087v3#page=4)より。CC BY 4.0。原図のキャプションは省略。*\n\n著者はDeep-stage Decomposition Strategy（DDS）で、ネットワークを3つに分けます。\n\n- **Base-Net**：通常の最初の3ステージで、画像を$H/16\\times W/16$へ下げ、中間特徴を作ります。\n- **Overview-Net**：軽量な部分で、Base-Netの出力を直接$H/32$へ下げ、粗いながら意味を持つ全体理解、context priorを素早く作ります。「まず全体を見る」部分です。\n- **Focus-Net**：より深い部分で、Base-Netの出力から始め、context priorで各ブロックを導きながら進みます。「次に細部を見る」部分です。\n\n実際にはバックボーンが2つ隠れています。Base-NetとOverview-Net、Base-NetとFocus-Netの2経路で、Base-Netを共有します。事前学習時には両サブネットワークに分類ヘッドを付け、それぞれ分類損失を計算します。下流タスクではOverview-Netへの追加監督は不要になり、特徴ピラミッドにはBase-Netの$H/4$、$H/8$と、Focus-Netの$H/16$、$H/32$を使います。\n\nFocus-Net内のcontext priorは更新され続けます。各ブロックで特徴マップと連結して処理し、出力で再び分け、更新版を次へ渡します。伝わるうちに薄まらないよう、毎回最初のpriorを加え直します。式は$P_{i+1}=\\alpha P'_i+\\beta P_0$で、$\\alpha$と$\\beta$は学習可能なスカラーです。\n\nBase-NetとOverview-Netのブロックは、UniRepLKNet由来のDilated RepConvを使います。小さなdilated畳み込みで再パラメータ化した大きなカーネルです。\n\n### ContMix：画像全体をカーネルへ入れる\n\nFocus-Netの中心は、新しい動的畳み込みContMix（Context-Mixing Dynamic Convolution）です。\n\n[![原論文Figure 5。(a) ContMixの流れ。入力特徴Xを1×1畳み込みとreshapeでQにし、別経路では適応的平均プーリングと1×1畳み込みでKにする。Qを転置してKと行列乗算し、G×HW×S²の親和度行列Aを作る。黄色い破線で囲んだ1行を線形層W_dとsoftmaxへ通し、G×1×K²のベクトル、さらにK×Kの全体を認識するカーネルへ変形して、入力と要素ごとに掛けて加算する。下にはK×K RepConvの並列経路があり、最後に加算する。(b) 温泉のカピバラ画像を4区画へ分け、各中心を色付きの星で示す。中央の3×3格子の9つの青丸は全体を認識する重みで、4中心から赤い破線が格子中央へつながる。](/content/papers/assets/99458c439c8f5458671d09ec6d68f52f31a20702b6a0bdba99e2fe33dbf86ea7.png)](/content/papers/assets/99458c439c8f5458671d09ec6d68f52f31a20702b6a0bdba99e2fe33dbf86ea7.png)\n\n*LouとYuの原論文Figure 5。[**PDF 5ページ**](https://arxiv.org/pdf/2502.20087v3#page=5)より。CC BY 4.0。原図のキャプションは省略。*\n\n図(a)に沿って追います。\n\n1. 入力$X$を1×1畳み込みで$Q$にし、各位置に1つ、計$HW$個のqueryベクトルを作ります。\n2. 別経路では適応的平均プーリングで$X$を$S\\times S$個の領域中心へ圧縮し、1×1畳み込みで$K$にします。論文は$S=7$、つまり49中心です。\n3. $Q$と$K$を掛けて$HW\\times S^2$の親和度行列$A$を作ります。第$i$行には、$i$番目の位置と49中心の類似度が並びます。\n4. 各行を線形層$W_d$で49値から$K^2$値へ変え、softmaxを適用すると、その位置専用の$K\\times K$カーネルになります。\n5. 入力を畳み込み、各位置にそれぞれのカーネルを使います。\n\nチャネルを$G$グループに分け、各グループが独自の親和度とカーネルを計算し、グループ内で共有します。OverLoCKの動的ブロックでは、$Q$は特徴マップ、$K$はcontext priorから来ます。Overview-Netの全体理解はここからカーネルへ入ります。\n\n重要なのは4番目です。各重みを「この位置と全体49中心の関係」から求めるので、重みに全体情報が入ります。一方、畳み込み自体は$K\\times K$の近傍内で行い、局所的な帰納バイアスを保ちます。図(b)では3×3の格子は同じ場所にあり、重みを決めるのは四隅の領域中心です。\n\n最も単純化した版で確かめます。左上の1ピクセルを変え、右下の出力が変わるかを見ます。\n\n```python\nimport torch\nimport torch.nn.functional as F\n\ntorch.manual_seed(0)\nC, H, W = 8, 16, 16\nS, K, G = 4, 3, 2                    # 4×4領域中心、3×3動的カーネル、チャネルを2群に分割\nWq = torch.nn.Conv2d(C, C, 1)\nWk = torch.nn.Conv2d(C, C, 1)\nWd = torch.nn.Linear(S * S, K * K)   # 16個の類似度を9個のカーネル重みへ変換\n\ndef contmix(x):\n    q = Wq(x[None])[0].flatten(1)                                   # C × HW：各位置のquery\n    k = Wk(F.adaptive_avg_pool2d(x[None], S))[0].flatten(1)         # C × S²：領域中心\n    out = []\n    for qg, kg, xg in zip(q.chunk(G), k.chunk(G), x.chunk(G)):\n        A = qg.T @ kg                                               # HW × S²：各位置と各領域中心の類似度\n        D = Wd(A).softmax(-1)                                       # HW × K²：各位置専用の3×3カーネル\n        patches = F.unfold(xg[None], K, padding=K // 2)[0]          # 各位置の周囲の3×3近傍\n        patches = patches.view(C // G, K * K, H * W)\n        out.append((patches * D.T[None]).sum(1).view(C // G, H, W))\n    return torch.cat(out)\n\nstatic = torch.nn.Conv2d(C, C, K, padding=K // 2, groups=C)       # 通常の3×3 depthwise畳み込み\n\nx = torch.randn(C, H, W)\nx2 = x.clone()\nx2[:, 0, 0] += 5.0                                                  # 左上の1ピクセルだけ変更\n\nwith torch.no_grad():\n    for name, f in [(\"3×3 depthwise畳み込み\", lambda t: static(t[None])[0]), (\"ContMix（3×3）\", contmix)]:\n        diff = (f(x2) - f(x))[:, 12, 12].abs().max().item()       # 右下(12, 12)の出力変化を調べる\n        print(f\"{name}：右下の出力変化 {diff:.4f}\")\n```\n\n```text\n3×3 depthwise畳み込み：右下の出力変化 0.0000\nContMix（3×3）：右下の出力変化 0.0274\n```\n\n同じ3×3でも、通常の畳み込みは12マス離れた変化を見られず、ContMixは見られます。左上の変化で最初の領域中心が変わり、すべての位置の親和度が変わるため、右下のカーネルも変わります。\n\n実際のモジュールはもう少し複雑です。公式コードにはvalue射影と相対位置バイアスもあり、半分のグループは大きなカーネル、残りは5×5を使い、さらにDilated RepConvを並列に置きます。近傍注意パッケージNATTENがあれば、動的カーネルの適用にはそのCUDA演算子を借ります。近傍注意の加重和と計算が同じだからです。違いは重みの作り方で、近傍注意はqueryと近傍keyの積、ContMixはqueryと画像全体の領域中心の積を使います。\n\n### 4つのサイズ\n\nXT、T、S、Bの4版があり、Tは33Mパラメータ、5.5 GFLOPs、Bは95M、16.7 GFLOPsです。Base-Netの3ステージは17、15、13のカーネル、Overview-Netは7、Focus-Netは13と7を使います。\n\n## 考察\n\n### ImageNet\n\nImageNet-1KをDeiTのレシピで300 epoch学習します。スループットはL40S 1枚、バッチ128、224×224入力で測定します。\n\n| モデル | パラメータ数 | FLOPs | スループット（枚／秒） | top-1 |\n| --- | ---: | ---: | ---: | ---: |\n| ConvNeXt-T | 29M | 4.5G | 1507 | 82.1% |\n| UniRepLKNet-T | 31M | 4.9G | 1094 | 83.2% |\n| InternImage-T | 30M | 5.0G | 1084 | 83.5% |\n| MogaNet-S | 25M | 5.0G | 766 | 83.4% |\n| OverLoCK-T | 33M | 5.5G | 810 | **84.2%** |\n| ConvNeXt-S | 50M | 8.7G | 926 | 83.1% |\n| ConvNeXt-B | 89M | 15.4G | 608 | 83.8% |\n| OverLoCK-S | 56M | 9.7G | 480 | **84.8%** |\n| OverLoCK-B | 95M | 16.7G | 306 | **85.1%** |\n\n*表：原論文Table 2と付録Table Iの一部の行を抜粋。*\n\n要旨は、OverLoCK-TがConvNeXt-Bの約3分の1のパラメータとFLOPsで勝ち、スループットも810対608と高いことを強調しています。これは確かです。\n\nただしTという名前には注意が必要です。同じTのConvNeXt-Tは毎秒1507枚、OverLoCK-Tはその半分強です。速度が近いモデルで比べるなら、ConvNeXt-Sが926枚／秒、83.1%で、OverLoCK-Tは1割強遅い代わりに1.1ポイント高くなります。\n\n### 物体検出とセグメンテーション\n\n下流タスクでは差がさらに大きくなります。COCOのMask R-CNNを12 epoch学習すると、OverLoCK-Tのbox APは48.3、InternImage-Tは47.2、ConvNeXt-Tは44.2です。ADE20KのUperNetで、シングルスケールmIoUはOverLoCK-Tが50.3、UniRepLKNet-Tが48.6、ConvNeXt-Tが46.0です。\n\n検出とセグメンテーションは分類より入力解像度が高くなります。ContMixの領域中心は7×7で固定され、画像がどれほど大きくても全体を覆います。これが、固定サイズの大きなカーネルとの差を生みます。\n\n### 1つずつ追加する\n\n著者は純粋に静的な畳み込みネットワークへ、1つずつ要素を加えます。この実験はImageNet 120 epoch、ADE20K 80Kステップなので、主表と数値を直接比べられません。\n\n| モデル | FLOPs | top-1 | mIoU |\n| --- | ---: | ---: | ---: |\n| 静的な基準ネットワーク | 2.6G | 78.5% | 41.1 |\n| 再帰的フィードバックを追加 | 4.4G | 76.8% | 39.5 |\n| DDSの3サブネットワークへ変更 | 2.6G | 79.0% | 41.6 |\n| Focus-NetをContMix動的ブロックへ変更 | 2.6G | 80.0% | 42.9 |\n| Overview-Netの補助損失を追加 | 2.6G | 80.2% | 43.1 |\n| 各ブロックで最初のcontext priorを加算 | 2.6G | 80.4% | 43.4 |\n| ゲートを追加（OverLoCK-XT） | 2.6G | **80.8%** | **43.8** |\n\n*表：原論文Table 6の一部の行を抜粋。*\n\nいくつかの点が明確です。\n\n1. **再帰的フィードバックはうまくいかない**：AbsViTにならって第4ステージの出力を第3へ戻すと、計算量が7割増え、精度は下がります。\n2. **DDSは同じ計算量で効果がある**：top-1、mIoUとも0.5増え、追加の1巡なしでトップダウンの指針が得られます。\n3. **最大の改善はContMix**：静的ブロックを動的へ替えると、top-1が1.0、mIoUが1.3増えます。\n\n付録には別の比較もあります。Overview-Netを除いて通常の4ステージピラミッドへ戻し、他のブロックを固定すると、top-1は80.7%から79.2%、mIoUは43.8から41.9へ下がります。トップダウン構造自体にもこの効果があります。\n\n### ほかの動的演算子と比べる\n\n演算子を公平に比較するため、著者はSwin型のネットワークを別に作り、token mixerだけを替えます。カーネルかウィンドウはすべて7×7です。\n\n| 演算子 | top-1 | ADE20K mIoU |\n| --- | ---: | ---: |\n| DyConv | 77.5% | 36.3 |\n| Involution | 78.3% | 37.5 |\n| シフトウィンドウ注意（Swin） | 78.4% | 37.4 |\n| 近傍注意（NATTEN） | 78.6% | 38.1 |\n| DCNv3 | 78.7% | 37.5 |\n| ContMix | **78.8%** | **39.0** |\n\n*表：原論文Table 7の一部の行を抜粋。*\n\n分類では近い結果で、ContMixは2位より0.1高いだけですが、高解像度のセグメンテーションでは他の演算子より0.9〜2.7高くなります。\n\nsoftmaxにも触れておきます。ContMixはカーネル生成時にsoftmaxを使います。付録で除くとtop-1は80.8%から80.5%、mIoUは43.8から43.5と、影響は小さめです。InternImageではsigmoidへの置換で学習が崩れ、DCNv4では除くことで収束が速まりました。同じ動的重みでも、softmaxの役割は大きく違います。\n\n\n> [!TIP]\n> \n> DCNv3とDCNv4のsoftmaxをめぐる違いは、こちらの2本で読めます。\n> \n> - **[[22.11] InternImage：力業で奇跡は起きる？](/blog/papers/classic-cnns/internimage)**\n> - **[[24.01] DCNv4：重みに上限を設けない](/blog/papers/classic-cnns/dcnv4)**\n\n\n### 実際に使うとき\n\n公式コードは多くの外部パッケージに依存します。動的畳み込みはNATTENを入れるのが望ましく、なくても動きますが遅くなります。大きなカーネルにはUniRepLKNetのiGEMM実装を使え、検出とセグメンテーションにはmmcvも必要です。GitHubにはインストール関連のissueが多くあります。\n\n大きなカーネルの高速実装はバッチサイズにも左右されます。`use_gemm`を有効にしたら学習が3倍遅くなったという[報告](https://github.com/LMMMEng/OverLoCK/issues/33)に対し、著者は小バッチでは利点がなく、無効にしても精度に影響しないと回答しています。別の利用者は[A100 4枚、総バッチ8](https://github.com/LMMMEng/OverLoCK/issues/38)でCOCO学習に41日かかると推定しました。著者はH800 8枚で2〜3日だったとし、バッチ増加と勾配チェックポイントを勧めています。\n\n## 結論\n\nOverLoCKの2つの発想は分けて考えられます。DDSは軽量サブネットワークで全体を先に見て、その理解を後段の各ブロックへ送ります。ContMixは各位置と全体の領域中心の関係からカーネルを決め、畳み込み自体の範囲は局所に保ちます。同じ計算量で前者は0.5、後者は1.0以上を加え、検出とセグメンテーションでは差がさらに広がります。\n\n「まず全体を見る」が主役に聞こえますが、アブレーションでは全体情報をカーネルへ組み込むContMixが最も貢献しています。トップダウン構造が情報の供給元を作り、ContMixが使い道を作ります。\n\n使うなら、まず環境を整えましょう。NATTEN、大きなカーネルのCUDA拡張、mmcvをそろえてから始めます。小バッチなら`use_gemm`を無効にしないと、かえって遅くなります。\n","imageSizes":{"/content/papers/assets/d32df0756ccbd0c769259f897b5ad9cf4c8079758897be9a2147cd65a4d46ce1.png":{"width":1047,"height":762},"/content/papers/assets/99458c439c8f5458671d09ec6d68f52f31a20702b6a0bdba99e2fe33dbf86ea7.png":{"width":2112,"height":681}}}
