{"notes":[{"id":"classic-cnns/overlock","category":"classic-cnns","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"OverLoCK","subtitle":"Voir d'abord l'ensemble","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":"fr","path":"/content/papers/fr/classic-cnns/overlock.dab14bfaaefd.md","headings":[{"id":"définir-le-problème","text":"Définir le problème","depth":2},{"id":"les-couches-intermédiaires-manquent-de-direction","text":"Les couches intermédiaires manquent de direction","depth":3},{"id":"les-noyaux-voient-trop-près","text":"Les noyaux voient trop près","depth":3},{"id":"résoudre-le-problème","text":"Résoudre le problème","depth":2},{"id":"trois-sous-réseaux","text":"Trois sous-réseaux","depth":3},{"id":"contmix--faire-entrer-limage-entière-dans-le-noyau","text":"ContMix : faire entrer l'image entière dans le noyau","depth":3},{"id":"quatre-tailles","text":"Quatre tailles","depth":3},{"id":"discussion","text":"Discussion","depth":2},{"id":"imagenet","text":"ImageNet","depth":3},{"id":"détection-et-segmentation","text":"Détection et segmentation","depth":3},{"id":"ajouter-les-éléments-un-par-un","text":"Ajouter les éléments un par un","depth":3},{"id":"comparaison-des-opérateurs-dynamiques","text":"Comparaison des opérateurs dynamiques","depth":3},{"id":"en-pratique","text":"En pratique","depth":3},{"id":"conclusion","text":"Conclusion","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":"La force brute fait des miracles ?","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":"fr","path":"/content/papers/fr/classic-cnns/internimage.61b6fcef5191.md","headings":[{"id":"définir-le-problème","text":"Définir le problème","depth":2},{"id":"où-la-convolution-est-en-retard","text":"Où la convolution est en retard","depth":3},{"id":"pourquoi-dcnv2-ne-convient-pas-tel-quel","text":"Pourquoi DCNv2 ne convient pas tel quel","depth":3},{"id":"résoudre-le-problème","text":"Résoudre le problème","depth":2},{"id":"les-trois-modifications-de-dcnv3","text":"Les trois modifications de DCNv3","depth":3},{"id":"empiler-en-réseau","text":"Empiler en réseau","depth":3},{"id":"discussion","text":"Discussion","depth":2},{"id":"imagenet","text":"ImageNet","depth":3},{"id":"détection-et-segmentation","text":"Détection et segmentation","depth":3},{"id":"ablation-la-softmax","text":"Ablation : la softmax","depth":3},{"id":"le-prix-à-payer","text":"Le prix à payer","depth":3},{"id":"conclusion","text":"Conclusion","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":"Des poids sans borne","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":"fr","path":"/content/papers/fr/classic-cnns/dcnv4.c237e5351849.md","headings":[{"id":"définir-le-problème","text":"Définir le problème","depth":2},{"id":"seulement-9-points-et-pourtant-si-lent","text":"Seulement 9 points, et pourtant si lent","depth":3},{"id":"un-softmax-emprunté","text":"Un softmax emprunté","depth":3},{"id":"résoudre-le-problème","text":"Résoudre le problème","depth":2},{"id":"1-retirer-softmax","text":"1. Retirer softmax","depth":3},{"id":"2-réduire-les-transferts-du-gpu","text":"2. Réduire les transferts du GPU","depth":3},{"id":"discussion","text":"Discussion","depth":2},{"id":"lopérateur-seul","text":"L'opérateur seul","depth":3},{"id":"flashinternimage","text":"FlashInternImage","depth":3},{"id":"linsérer-dans-dautres-réseaux","text":"L'insérer dans d'autres réseaux","depth":3},{"id":"le-coût-à-payer","text":"Le coût à payer","depth":3},{"id":"conclusion","text":"Conclusion","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"classic-cnns/internimage","relation":"referenced","topic":""},{"id":"classic-cnns/deformable-convnets","relation":"referenced","topic":""}]}],"text":"Devant une photo, on ne la parcourt généralement pas case par case depuis le coin supérieur gauche. On repère d'abord un capybara dans une source chaude, puis on regarde l'orange posée sur sa tête. Les sciences cognitives parlent d'attention descendante, ou top-down attention : une vue globale approximative guide ensuite l'examen des détails.\n\nLes backbones convolutifs ne fonctionnent pas ainsi. Leur pyramide sous-échantillonne progressivement, et chaque couche ne dispose que des résultats des précédentes. Les couches intermédiaires traitent leurs caractéristiques sans encore connaître le sens global de l'image.\n\nMeng Lou et Yizhou Yu, de l'Université de Hong Kong, veulent construire un backbone purement convolutif capable de « voir l'ensemble avant les détails ».\n\n## Définir le problème\n\n### Les couches intermédiaires manquent de direction\n\nLes auteurs examinent avec Grad-CAM les couches intermédiaires de Swin-T, ConvNeXt-T et VMamba-T. Au troisième étage, encore éloigné du classifieur, elles ne repèrent souvent pas l'objet de la bonne classe. Ces réseaux captent pourtant les relations à longue distance ; il leur manque surtout un guidage sémantique de haut niveau.\n\nDes modèles visuels ont déjà utilisé des signaux descendants. L'approche courante est récursive : réinjecter la sortie finale plus tôt et refaire un passage. Ce tour supplémentaire coûte trop cher dans un backbone.\n\n### Les noyaux voient trop près\n\nLe deuxième problème concerne l'opérateur. Il faut pouvoir utiliser la sémantique globale dans les noyaux convolutifs.\n\nGrands noyaux et convolutions dynamiques ordinaires restent bornés par leur taille : quand la résolution augmente, la proportion visible diminue. Les convolutions déformables voient plus loin, mais disperser les points d'échantillonnage fait perdre le biais inductif local de la convolution. Les auteurs veulent des poids dépendant de l'entrée, informés par toute l'image, tout en préservant ce biais local.\n\n## Résoudre le problème\n\n### Trois sous-réseaux\n\n[![Figure 3 de l'article : en bas, Base-Net reçoit la photo d'un capybara avec une orange sur la tête, puis trois groupes Embedding et Basic Block réduisent la résolution de H/4 à H/16. En haut à gauche, Overview-Net prolonge Base-Net par un Embedding et quelques Basic Blocks jusqu'à H/32, puis produit un cube vert Context Prior. En haut à droite, Focus-Net part aussi de Base-Net, suit Dynamic Block, Embedding, Dynamic Block, de H/16 à H/32. Les flèches rouges context guidance flow apportent le context prior à chaque Dynamic Block.](/content/papers/assets/d32df0756ccbd0c769259f897b5ad9cf4c8079758897be9a2147cd65a4d46ce1.png)](/content/papers/assets/d32df0756ccbd0c769259f897b5ad9cf4c8079758897be9a2147cd65a4d46ce1.png)\n\n*Figure 3 de Lou et Yu, extraite de la [**page 4 du PDF**](https://arxiv.org/pdf/2502.20087v3#page=4), CC BY 4.0. La légende originale est omise.*\n\nLe réseau est découpé en trois sous-réseaux selon la Deep-stage Decomposition Strategy (DDS) :\n\n- **Base-Net** : les trois premiers étages ordinaires, qui réduisent l'image à $H/16\\times W/16$ et produisent des caractéristiques intermédiaires.\n- **Overview-Net** : une partie légère qui passe directement de Base-Net à $H/32$, pour obtenir rapidement une compréhension globale, grossière mais sémantique, appelée context prior. C'est la vue d'ensemble.\n- **Focus-Net** : une partie plus profonde qui repart de Base-Net et utilise le context prior pour guider chaque bloc. C'est l'examen des détails.\n\nDeux backbones se cachent donc ici : Base-Net suivi d'Overview-Net, et Base-Net suivi de Focus-Net, avec Base-Net partagé. Au préentraînement, chaque sous-réseau possède une tête et une perte de classification. Pour les tâches en aval, Overview-Net n'a plus besoin de supervision supplémentaire. La pyramide utilise les sorties $H/4$ et $H/8$ de Base-Net, puis $H/16$ et $H/32$ de Focus-Net.\n\nLe context prior est mis à jour tout au long de Focus-Net. Chaque bloc le concatène aux caractéristiques, les traite puis les sépare, et transmet le prior actualisé au suivant. Pour éviter sa dilution, le prior initial est réajouté à chaque fois : $P_{i+1}=\\alpha P'_i+\\beta P_0$, où $\\alpha$ et $\\beta$ sont des scalaires appris.\n\nLes blocs de Base-Net et Overview-Net utilisent le Dilated RepConv d'UniRepLKNet, un grand noyau reparamétré avec de petites convolutions dilatées.\n\n### ContMix : faire entrer l'image entière dans le noyau\n\nFocus-Net repose sur une nouvelle convolution dynamique, ContMix, pour Context-Mixing Dynamic Convolution.\n\n[![Figure 5 de l'article : (a) l'entrée X passe par une convolution 1×1 puis un remodelage pour produire Q. Une autre branche utilise un pooling moyen adaptatif puis une convolution 1×1 pour produire K. Q transposé multiplie K et forme la matrice d'affinité A, G×HW×S². Une ligne encadrée de pointillés jaunes passe par W_d et softmax pour devenir un vecteur G×1×K², puis un noyau K×K informé globalement, multiplié élément par élément avec l'entrée avant sommation. Une branche parallèle K×K RepConv est ajoutée à la sortie. (b) La photo du capybara dans sa source chaude est divisée en quatre régions, chacune avec une étoile colorée au centre. Une grille 3×3 centrale comporte neuf points bleus, les poids informés globalement ; des pointillés rouges relient les quatre centres à la grille.](/content/papers/assets/99458c439c8f5458671d09ec6d68f52f31a20702b6a0bdba99e2fe33dbf86ea7.png)](/content/papers/assets/99458c439c8f5458671d09ec6d68f52f31a20702b6a0bdba99e2fe33dbf86ea7.png)\n\n*Figure 5 de Lou et Yu, extraite de la [**page 5 du PDF**](https://arxiv.org/pdf/2502.20087v3#page=5), CC BY 4.0. La légende originale est omise.*\n\nSuivons la figure (a) :\n\n1. Une convolution 1×1 transforme $X$ en $Q$, soit un vecteur requête par position, $HW$ au total.\n2. Une autre branche réduit $X$ à $S\\times S$ centres régionaux par pooling moyen adaptatif, puis une convolution 1×1 produit $K$. L'article fixe $S=7$, donc 49 centres.\n3. Le produit de $Q$ et $K$ donne la matrice d'affinité $A$ de taille $HW\\times S^2$. Sa ligne $i$ mesure la similarité entre la position $i$ et chacun des 49 centres.\n4. La couche linéaire $W_d$ transforme chaque ligne de 49 valeurs en $K^2$ valeurs, puis softmax produit le noyau $K\\times K$ propre à cette position.\n5. La convolution applique à chaque position son propre noyau.\n\nLes canaux sont divisés en $G$ groupes, chacun calculant son affinité et ses noyaux, partagés entre ses canaux. Dans les blocs dynamiques d'OverLoCK, $Q$ vient des caractéristiques et $K$ du context prior : c'est ainsi que la vue d'ensemble d'Overview-Net atteint les noyaux.\n\nLe point clé est l'étape 4. Chaque poids résulte de la relation entre la position courante et les 49 centres de toute l'image ; il porte donc une information globale. Mais la convolution reste dans un voisinage $K\\times K$ et conserve son biais inductif local. La figure (b) l'illustre : la grille 3×3 reste en place, alors que les centres des quatre coins déterminent ses poids.\n\nÉcrivons une version minimale pour le vérifier. Modifions un pixel en haut à gauche et observons la sortie en bas à droite :\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 centres, noyaux dynamiques 3×3, 2 groupes de canaux\nWq = torch.nn.Conv2d(C, C, 1)\nWk = torch.nn.Conv2d(C, C, 1)\nWd = torch.nn.Linear(S * S, K * K)   # Transformer 16 similarités en 9 poids convolutifs\n\ndef contmix(x):\n    q = Wq(x[None])[0].flatten(1)                                   # C × HW : requête de chaque position\n    k = Wk(F.adaptive_avg_pool2d(x[None], S))[0].flatten(1)         # C × S² : centres régionaux\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² : similarité position-centre\n        D = Wd(A).softmax(-1)                                       # HW × K² : noyau 3×3 propre à chaque position\n        patches = F.unfold(xg[None], K, padding=K // 2)[0]          # Voisinage 3×3 de chaque position\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)       # Convolution depthwise 3×3 ordinaire\n\nx = torch.randn(C, H, W)\nx2 = x.clone()\nx2[:, 0, 0] += 5.0                                                  # Modifier uniquement le pixel supérieur gauche\n\nwith torch.no_grad():\n    for name, f in [(\"Convolution depthwise 3×3\", lambda t: static(t[None])[0]), (\"ContMix (3×3)\", contmix)]:\n        diff = (f(x2) - f(x))[:, 12, 12].abs().max().item()       # Changement de la sortie en bas à droite (12, 12)\n        print(f\"{name} : variation en bas à droite {diff:.4f}\")\n```\n\n```text\nConvolution depthwise 3×3 : variation en bas à droite 0.0000\nContMix (3×3) : variation en bas à droite 0.0274\n```\n\nTous deux sont en 3×3, mais la convolution ordinaire ignore le changement situé 12 cases plus loin, alors que ContMix le voit. Le pixel supérieur gauche modifie le premier centre régional, puis les affinités de toutes les positions et le noyau du coin inférieur droit.\n\nLe vrai module est plus complexe. Le code officiel ajoute une projection value et un biais de position relative. Une moitié des groupes utilise de grands noyaux, l'autre des petits 5×5, avec une branche Dilated RepConv en parallèle. Avec la bibliothèque d'attention de voisinage NATTEN, l'application des noyaux dynamiques réutilise directement son opérateur CUDA : le calcul est la même somme pondérée. L'origine des poids diffère : l'attention de voisinage multiplie la requête par les keys voisines ; ContMix, par les centres de toute l'image.\n\n### Quatre tailles\n\nLes versions sont XT, T, S et B. T compte 33M paramètres et 5.5 GFLOPs ; B, 95M et 16.7 GFLOPs. Les trois étages de Base-Net utilisent des noyaux de 17, 15 et 13, Overview-Net de 7, et Focus-Net de 13 et 7.\n\n## Discussion\n\n### ImageNet\n\nL'entraînement ImageNet-1K dure 300 epochs selon DeiT. Le débit est mesuré sur une L40S, avec un batch de 128 et des entrées 224×224 :\n\n| Modèle | Paramètres | FLOPs | Débit (images/s) | 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*Tableau : certaines lignes du tableau 2 et du tableau I en annexe.*\n\nLe résumé souligne qu'OverLoCK-T dépasse ConvNeXt-B avec un tiers des paramètres et des FLOPs, et un débit supérieur, 810 contre 608. C'est exact.\n\nMais il s'appelle T. ConvNeXt-T traite 1507 images/s, OverLoCK-T un peu plus de la moitié. À vitesse voisine, la comparaison est plus équitable : ConvNeXt-S donne 926 images/s et 83.1%, tandis qu'OverLoCK-T est plus de 10% plus lent pour 1.1 point de précision supplémentaire.\n\n### Détection et segmentation\n\nL'écart est plus grand qu'en classification. Sur COCO avec Mask R-CNN pendant 12 epochs, OverLoCK-T donne 48.3 de box AP, contre 47.2 pour InternImage-T et 44.2 pour ConvNeXt-T. Sur ADE20K avec UperNet, sa mIoU mono-échelle atteint 50.3, contre 48.6 pour UniRepLKNet-T et 46.0 pour ConvNeXt-T.\n\nCes tâches utilisent des résolutions bien supérieures à la classification. Les centres régionaux de ContMix restent au nombre de 7×7 et couvrent toujours l'image entière, quelle que soit sa taille. C'est là qu'il se distingue des grands noyaux de taille fixe.\n\n### Ajouter les éléments un par un\n\nLes auteurs partent d'un réseau purement statique et ajoutent un élément à la fois. Ces expériences utilisent seulement 120 epochs ImageNet et 80K pas ADE20K ; leurs chiffres se comparent séparément de la table principale :\n\n| Modèle | FLOPs | top-1 | mIoU |\n| --- | ---: | ---: | ---: |\n| Référence statique | 2.6G | 78.5% | 41.1 |\n| Rétroaction récursive | 4.4G | 76.8% | 39.5 |\n| Trois sous-réseaux DDS | 2.6G | 79.0% | 41.6 |\n| Blocs dynamiques ContMix dans Focus-Net | 2.6G | 80.0% | 42.9 |\n| Perte auxiliaire d'Overview-Net | 2.6G | 80.2% | 43.1 |\n| Réinjection du context prior initial dans chaque bloc | 2.6G | 80.4% | 43.4 |\n| Ajout de portes (OverLoCK-XT) | 2.6G | **80.8%** | **43.8** |\n\n*Tableau : certaines lignes du tableau 6 de l'article.*\n\nPlusieurs résultats ressortent :\n\n1. **La rétroaction récursive échoue** : réinjecter le quatrième étage dans le troisième, comme AbsViT, ajoute 70% de calcul et réduit la précision.\n2. **DDS aide à calcul égal** : top-1 et mIoU gagnent chacun 0.5, avec un guidage descendant sans passage supplémentaire.\n3. **ContMix apporte le plus grand pas** : remplacer les blocs statiques par des dynamiques gagne 1.0 en top-1 et 1.3 en mIoU.\n\nUne autre comparaison en annexe retire Overview-Net pour revenir à une pyramide ordinaire de quatre étages, avec les mêmes autres blocs. Le top-1 passe de 80.7% à 79.2% et la mIoU de 43.8 à 41.9. C'est la contribution de la structure descendante elle-même.\n\n### Comparaison des opérateurs dynamiques\n\nPour isoler les opérateurs, les auteurs construisent un réseau de forme Swin et changent uniquement le mélangeur de tokens, avec noyaux ou fenêtres 7×7 :\n\n| Opérateur | top-1 | ADE20K mIoU |\n| --- | ---: | ---: |\n| DyConv | 77.5% | 36.3 |\n| Involution | 78.3% | 37.5 |\n| Attention à fenêtres décalées (Swin) | 78.4% | 37.4 |\n| Attention de voisinage (NATTEN) | 78.6% | 38.1 |\n| DCNv3 | 78.7% | 37.5 |\n| ContMix | **78.8%** | **39.0** |\n\n*Tableau : certaines lignes du tableau 7 de l'article.*\n\nEn classification, tous sont proches : ContMix n'a que 0.1 point d'avance sur le deuxième. En segmentation à haute résolution, son gain va de 0.9 à 2.7.\n\nUn mot sur softmax. ContMix l'utilise pour générer ses noyaux. Le retirer dans l'ablation en annexe fait passer le top-1 de 80.8% à 80.5%, et la mIoU de 43.8 à 43.5 : un effet limité. Dans InternImage, remplacer softmax par sigmoid faisait échouer l'entraînement ; dans DCNv4, retirer softmax accélère la convergence. Son rôle varie beaucoup, même parmi les poids dynamiques.\n\n\n> [!TIP]\n> \n> Pour le débat autour de softmax dans DCNv3 et DCNv4 :\n> \n> - **[[22.11] InternImage : La force brute fait des miracles ?](/blog/papers/classic-cnns/internimage)**\n> - **[[24.01] DCNv4 : Des poids sans borne](/blog/papers/classic-cnns/dcnv4)**\n\n\n### En pratique\n\nLe code officiel dépend de nombreuses bibliothèques. NATTEN accélère la convolution dynamique, qui fonctionne aussi sans lui, plus lentement. Les grands noyaux peuvent utiliser l'implémentation iGEMM d'UniRepLKNet ; détection et segmentation demandent aussi mmcv. Beaucoup d'issues GitHub concernent l'installation.\n\nL'accélération des grands noyaux dépend aussi du batch. Un utilisateur [signale](https://github.com/LMMMEng/OverLoCK/issues/33) un entraînement trois fois plus lent avec `use_gemm`. Les auteurs répondent que cette implémentation n'a pas d'avantage pour les petits batchs : on peut la désactiver sans effet sur la précision. Un autre, [avec 4 A100 et un batch total de 8](https://github.com/LMMMEng/OverLoCK/issues/38), estime l'entraînement COCO à 41 jours. Les auteurs le font en deux à trois jours sur 8 H800 et conseillent d'augmenter le batch et d'activer le gradient checkpointing.\n\n## Conclusion\n\nLes deux idées d'OverLoCK se lisent séparément. DDS confie d'abord la vue d'ensemble à un sous-réseau léger, puis l'envoie à chaque bloc suivant. ContMix détermine les noyaux de chaque position à partir de leurs relations avec les centres de toute l'image, tout en convoluant localement. Le premier gagne 0.5 à calcul égal, le second 1.0 ou plus ; les écarts sont encore plus grands en détection et segmentation.\n\n« Voir d'abord l'ensemble » paraît être le personnage principal de l'article. Pourtant, les ablations attribuent le plus gros gain à ContMix, qui fait entrer l'information globale dans les noyaux. La structure descendante fournit cette information ; ContMix lui donne un usage.\n\nPour l'utiliser, préparons d'abord l'environnement : NATTEN, extension CUDA des grands noyaux et mmcv. Avec un petit batch, désactivons `use_gemm` pour éviter de ralentir le calcul.\n","imageSizes":{"/content/papers/assets/d32df0756ccbd0c769259f897b5ad9cf4c8079758897be9a2147cd65a4d46ce1.png":{"width":1047,"height":762},"/content/papers/assets/99458c439c8f5458671d09ec6d68f52f31a20702b6a0bdba99e2fe33dbf86ea7.png":{"width":2112,"height":681}}}
