{"notes":[{"id":"reparameterization/unireplknet","category":"reparameterization","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"UniRepLKNet","subtitle":"Les grands noyaux franchissent les frontières","author":"Z. Yuan","paperDate":"2023-11-27","publishedOn":"2025-12-14","world":"external/unireplknet","paperTitle":"UniRepLKNet: A Universal Perception Large-Kernel ConvNet for Audio, Video, Point Cloud, Time-Series and Image Recognition","paperUrl":"https://arxiv.org/abs/2311.15599","bibliography":{"title":"UniRepLKNet: A Universal Perception Large-Kernel ConvNet for Audio, Video, Point Cloud, Time-Series and Image Recognition","authors":["Xiaohan Ding","Yiyuan Zhang","Yixiao Ge","Sijie Zhao","Lin Song","Xiangyu Yue","Ying Shan"],"url":"https://arxiv.org/abs/2311.15599","pdfUrl":"https://arxiv.org/pdf/2311.15599v2","codeUrl":"https://github.com/AILab-CVC/UniRepLKNet","preprint":{"id":"2311.15599","submittedOn":"2023-11-27","url":"https://arxiv.org/abs/2311.15599"},"publication":{"venue":"CVPR","year":2024,"kind":"conference","url":"https://openaccess.thecvf.com/content/CVPR2024/html/Ding_UniRepLKNet_A_Universal_Perception_Large-Kernel_ConvNet_for_Audio_Video_Point_CVPR_2024_paper.html"},"citation":"@misc{reparameterizationunireplknet2023,\n  title = {{UniRepLKNet: A Universal Perception Large-Kernel ConvNet for Audio, Video, Point Cloud, Time-Series and Image Recognition}},\n  author = {Xiaohan Ding and Yiyuan Zhang and Yixiao Ge and Sijie Zhao and Lin Song and Xiangyu Yue and Ying Shan},\n  year = {2023},\n  eprint = {2311.15599},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2311.15599}\n}\n","citationPath":"/content/papers/citations/reparameterization/unireplknet.df5ca5b9a0be.bib"},"thumbnail":{"src":"/content/papers/assets/8dc0f2f7d7d64f92bea8485e2e00428225297bb13404dee50fe50f28385d34c8.png","width":1680,"height":384},"locale":"fr","path":"/content/papers/fr/reparameterization/unireplknet.0b9751d6b826.md","headings":[{"id":"définir-le-problème","text":"Définir le problème","depth":2},{"id":"une-couche-33-remplit-trois-fonctions","text":"Une couche 3×3 remplit trois fonctions","depth":3},{"id":"résoudre-le-problème","text":"Résoudre le problème","depth":2},{"id":"architecture-de-référence","text":"Architecture de référence","depth":3},{"id":"principe-1--approfondir-avec-des-structures-peu-coûteuses","text":"Principe 1 : approfondir avec des structures peu coûteuses","depth":3},{"id":"principe-2--reparamétrer-avec-de-petites-convolutions-dilatées","text":"Principe 2 : reparamétrer avec de petites convolutions dilatées","depth":3},{"id":"principe-3--choisir-la-taille-du-noyau-selon-la-tâche-en-aval","text":"Principe 3 : choisir la taille du noyau selon la tâche en aval","depth":3},{"id":"principe-4--approfondir-avec-de-petits-noyaux","text":"Principe 4 : approfondir avec de petits noyaux","depth":3},{"id":"discussion","text":"Discussion","depth":2},{"id":"image","text":"Image","depth":3},{"id":"autres-modalités","text":"Autres modalités","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":"reparameterization/replknet","relation":"referenced","topic":""},{"id":"classic-cnns/slak","relation":"referenced","topic":""},{"id":"lightweight/senet","relation":"referenced","topic":""}]},{"id":"reparameterization/replknet","category":"reparameterization","legacyPath":"reparameterization/2203-replknet","legacySlug":"2203-replknet","legacyPaths":[],"title":"RepLKNet","subtitle":"Des noyaux de convolution géants","author":"Z. Yuan","paperDate":"2022-03-13","publishedOn":"2024-07-21","paperTitle":"Scaling Up Your Kernels to 31x31: Revisiting Large Kernel Design in CNNs","paperUrl":"https://arxiv.org/abs/2203.06717","bibliography":{"title":"Scaling Up Your Kernels to 31x31: Revisiting Large Kernel Design in CNNs","authors":["Xiaohan Ding","Xiangyu Zhang","Yizhuang Zhou","Jungong Han","Guiguang Ding","Jian Sun"],"url":"https://arxiv.org/abs/2203.06717","pdfUrl":"https://arxiv.org/pdf/2203.06717","codeUrl":null,"preprint":{"id":"2203.06717","submittedOn":"2022-03-13","url":"https://arxiv.org/abs/2203.06717"},"publication":{"venue":"CVPR","year":2022,"kind":"conference","url":"https://arxiv.org/abs/2203.06717"},"citation":"@misc{reparameterizationreplknet2022,\n  title = {{Scaling Up Your Kernels to 31x31: Revisiting Large Kernel Design in CNNs}},\n  author = {Xiaohan Ding and Xiangyu Zhang and Yizhuang Zhou and Jungong Han and Guiguang Ding and Jian Sun},\n  year = {2022},\n  eprint = {2203.06717},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2203.06717}\n}\n","citationPath":"/content/papers/citations/reparameterization/replknet.c7cc2407aa19.bib"},"thumbnail":{"src":"/content/papers/assets/b85fa678b6e815b9d112b67d68443295a98c80478664ec8053c2e832d89574ca.jpg","width":1140,"height":972},"locale":"fr","path":"/content/papers/fr/reparameterization/replknet.d98b90ec0670.md","headings":[{"id":"définir-le-problème","text":"Définir le problème","depth":2},{"id":"mode-demploi-des-convolutions-à-grand-noyau","text":"Mode d'emploi des convolutions à grand noyau","depth":2},{"id":"les-grands-noyaux-en-convolution-en-profondeur-restent-efficaces","text":"Les grands noyaux en convolution en profondeur restent efficaces","depth":3},{"id":"les-grands-noyaux-dépendent-fortement-des-connexions-résiduelles","text":"Les grands noyaux dépendent fortement des connexions résiduelles","depth":3},{"id":"les-grands-noyaux-ont-besoin-de-reparamétrisation","text":"Les grands noyaux ont besoin de reparamétrisation","depth":3},{"id":"les-grands-noyaux-améliorent-nettement-les-tâches-en-aval","text":"Les grands noyaux améliorent nettement les tâches en aval","depth":3},{"id":"les-grands-noyaux-restent-utiles-sur-de-petites-cartes-de-caractéristiques","text":"Les grands noyaux restent utiles sur de petites cartes de caractéristiques","depth":3},{"id":"résoudre-le-problème","text":"Résoudre le problème","depth":2},{"id":"architecture-du-réseau","text":"Architecture du réseau","depth":3},{"id":"discussion","text":"Discussion","depth":2},{"id":"évaluation-des-grands-noyaux","text":"Évaluation des grands noyaux","depth":3},{"id":"performances-sur-imagenet","text":"Performances sur ImageNet","depth":3},{"id":"un-cnn-à-grands-noyaux-a-un-erf-plus-vaste-quun-réseau-profond-à-petits-noyaux","text":"Un CNN à grands noyaux a un ERF plus vaste qu'un réseau profond à petits noyaux","depth":3},{"id":"biais-de-forme","text":"Biais de forme","depth":3},{"id":"limites","text":"Limites","depth":3},{"id":"conclusion","text":"Conclusion","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"classic-cnns/convnext","relation":"comparison","topic":"Grands noyaux et architectures convolutives simplifiées"}]},{"id":"classic-cnns/slak","category":"classic-cnns","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"SLaK","subtitle":"Le noyau Pro Max","author":"Z. Yuan","paperDate":"2022-07-07","publishedOn":"2025-03-09","world":"external/slak","paperTitle":"More ConvNets in the 2020s: Scaling up Kernels Beyond 51x51 using Sparsity","paperUrl":"https://arxiv.org/abs/2207.03620","bibliography":{"title":"More ConvNets in the 2020s: Scaling up Kernels Beyond 51x51 using Sparsity","authors":["Shiwei Liu","Tianlong Chen","Xiaohan Chen","Xuxi Chen","Qiao Xiao","Boqian Wu","Tommi Kärkkäinen","Mykola Pechenizkiy","Decebal Mocanu","Zhangyang Wang"],"url":"https://arxiv.org/abs/2207.03620","pdfUrl":"https://arxiv.org/pdf/2207.03620v3","codeUrl":null,"preprint":{"id":"2207.03620","submittedOn":"2022-07-07","url":"https://arxiv.org/abs/2207.03620"},"publication":{"venue":"ICLR","year":2023,"kind":"conference","url":"https://iclr.cc/virtual/2023/poster/11529"},"citation":"@misc{classiccnnsslak2022,\n  title = {{More ConvNets in the 2020s: Scaling up Kernels Beyond 51x51 using Sparsity}},\n  author = {Shiwei Liu and Tianlong Chen and Xiaohan Chen and Xuxi Chen and Qiao Xiao and Boqian Wu and Tommi Kärkkäinen and Mykola Pechenizkiy and Decebal Mocanu and Zhangyang Wang},\n  year = {2022},\n  eprint = {2207.03620},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2207.03620}\n}\n","citationPath":"/content/papers/citations/classic-cnns/slak.e167e693df01.bib"},"thumbnail":{"src":"/content/papers/assets/b5b8ba279efe42831c7ec4e60395d0559da26774c8519a438783f49f4b814a85.png","width":1640,"height":660},"locale":"fr","path":"/content/papers/fr/classic-cnns/slak.a981a598f00d.md","headings":[{"id":"définir-le-problème","text":"Définir le problème","depth":2},{"id":"au-delà-de-31","text":"Au-delà de 31","depth":3},{"id":"résoudre-le-problème","text":"Résoudre le problème","depth":2},{"id":"première-étape-couper-en-deux-bandes","text":"Première étape : couper en deux bandes","depth":3},{"id":"deuxième-étape-un-peu-plus-creux-un-peu-plus-large","text":"Deuxième étape : un peu plus creux, un peu plus large","depth":3},{"id":"à-quoi-ressemble-slak","text":"À quoi ressemble SLaK","depth":3},{"id":"discussion","text":"Discussion","depth":2},{"id":"imagenet","text":"ImageNet","depth":3},{"id":"tâches-en-aval","text":"Tâches en aval","depth":3},{"id":"en-conditions-réelles","text":"En conditions réelles","depth":3},{"id":"conclusion","text":"Conclusion","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"classic-cnns/convnext","relation":"referenced","topic":""},{"id":"reparameterization/replknet","relation":"referenced","topic":""},{"id":"classic-cnns/resnext","relation":"referenced","topic":""}]},{"id":"lightweight/senet","category":"lightweight","legacyPath":"lightweight/1709-senet","legacySlug":"1709-senet","legacyPaths":[],"title":"SENet","subtitle":"Presser ! Encore plus fort !","author":"Z. Yuan","paperDate":"2017-09-05","publishedOn":"2024-06-28","paperTitle":"Squeeze-and-Excitation Networks","paperUrl":"https://arxiv.org/abs/1709.01507","bibliography":{"title":"Squeeze-and-Excitation Networks","authors":["Jie Hu","Li Shen","Samuel Albanie","Gang Sun","Enhua Wu"],"url":"https://arxiv.org/abs/1709.01507","pdfUrl":"https://arxiv.org/pdf/1709.01507","codeUrl":null,"preprint":{"id":"1709.01507","submittedOn":"2017-09-05","url":"https://arxiv.org/abs/1709.01507"},"publication":{"venue":"CVPR","year":2018,"kind":"conference","url":"https://arxiv.org/abs/1709.01507"},"citation":"@misc{lightweightsenet2017,\n  title = {{Squeeze-and-Excitation Networks}},\n  author = {Jie Hu and Li Shen and Samuel Albanie and Gang Sun and Enhua Wu},\n  year = {2017},\n  eprint = {1709.01507},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/1709.01507}\n}\n","citationPath":"/content/papers/citations/lightweight/senet.1766a7978dde.bib"},"thumbnail":{"src":"/content/papers/assets/322f16ed8c782ffbdd7d7db3e8292c991908e3543dc69e1addd9238e22484363.jpg","width":1688,"height":394},"locale":"fr","path":"/content/papers/fr/lightweight/senet.cf880cb85b0f.md","headings":[{"id":"définir-le-problème","text":"Définir le problème","depth":2},{"id":"résoudre-le-problème","text":"Résoudre le problème","depth":2},{"id":"architecture-du-modèle","text":"Architecture du modèle","depth":3},{"id":"discussion","text":"Discussion","depth":2},{"id":"résultats-en-classification-dimages","text":"Résultats en classification d'images","depth":3},{"id":"résultats-sur-les-modèles-légers","text":"Résultats sur les modèles légers","depth":3},{"id":"limportance-de-squeeze","text":"L'importance de Squeeze","depth":3},{"id":"limportance-dexcitation","text":"L'importance d'Excitation","depth":3},{"id":"autres-résultats-expérimentaux","text":"Autres résultats expérimentaux","depth":3},{"id":"conclusion","text":"Conclusion","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"lightweight/mobilenet-v3","relation":"comparison","topic":"Attention par canal dans les réseaux légers"},{"id":"lightweight/pp-lcnet","relation":"comparison","topic":"Attention par canal dans les réseaux légers"}]}],"text":"Après les noyaux 31×31 de RepLKNet, les grandes convolutions sont devenues un sujet à la mode. SLaK les décompose en bandes pour atteindre 51×51 ; d'autres travaux les appliquent à la détection, à la segmentation et à diverses tâches.\n\nLe premier auteur, Xiaohan Ding, est aussi celui de RepLKNet et RepVGG. Cette fois, au Tencent AI Lab, il réexamine avec des chercheurs de l'Université chinoise de Hong Kong l'architecture des réseaux à grands noyaux. Ils constatent que ces structures reprennent souvent celles d'autres modèles. RepLKNet suit Swin Transformer, SLaK suit ConvNeXt, alors que ce dernier utilise des noyaux moyens de 7×7. Les architectures conçues spécialement pour les grands noyaux ont été peu explorées.\n\nL'article pose aussi une autre question. Les Transformers sont bien installés en image, en audio, en nuages de points et en séries temporelles. Les réseaux convolutifs restent-ils compétitifs hors de l'image ?\n\n\n> [!TIP]\n> \n> Les deux étapes précédentes sur la voie des grands noyaux :\n> \n> - **[[22.03] RepLKNet : Des noyaux de convolution géants](/blog/papers/reparameterization/replknet)**\n> - **[[22.07] SLaK : Le noyau Pro Max](/blog/papers/classic-cnns/slak)**\n\n\n## Définir le problème\n\n### Une couche 3×3 remplit trois fonctions\n\nLes auteurs repartent d'un vieux problème. Ajouter une couche dans un réseau de convolutions 3×3 produit simultanément trois effets :\n\n1. Le champ réceptif s'agrandit.\n2. L'abstraction spatiale augmente, des coins et textures aux formes des objets, par exemple.\n3. Le réseau devient plus profond, gagne des paramètres et des non-linéarités, donc en expressivité.\n\nAvec de petits noyaux, empiler les couches est le seul moyen d'agrandir le champ réceptif : les trois fonctions sont liées. Les grands noyaux couvrent une large zone sans accroître la profondeur. Quelques couches suffisent à obtenir un champ réceptif effectif assez grand ; le calcul restant peut aller à des structures plus efficaces pour les deuxième et troisième fonctions.\n\nLes auteurs proposent donc de concevoir ces trois fonctions séparément. Leurs quatre principes découlent de cette idée.\n\n## Résoudre le problème\n\n### Architecture de référence\n\n[![Figure 1 de l'article : à gauche, le backbone à quatre étages utilise un sous-échantillonnage initial par 4, puis par 2 entre Stage 1, Stage 2, Stage 3 et Stage 4. Au centre, Stage 3 alterne LarK Blocks orange et SmaK Blocks bleus, avec deux SmaK après chaque LarK. À droite, le LarK Block en pointillés contient successivement une convolution depthwise formée d'un Dilated Reparam Block, BN, un SE Block avec pooling moyen, ReLU et multiplication par une sigmoid, FFN, BN, puis drop path et addition résiduelle.](/content/papers/assets/95a64d551639000b4d79a5746c5aa0f05d914227d468929959577bade902ad80.png)](/content/papers/assets/95a64d551639000b4d79a5746c5aa0f05d914227d468929959577bade902ad80.png)\n\n*Figure 1 de Ding et al., extraite de la [**page 2 du PDF**](https://arxiv.org/pdf/2311.15599v2#page=2). La légende originale est omise.*\n\nVoici la référence utilisée pour les expériences : quatre étages de $C$, $2C$, $4C$ et $8C$ canaux, avec $(3, 3, 9, 3)$ blocs comme ConvNeXt-T. Chaque bloc ressemble à celui de ConvNeXt : une convolution depthwise suivie d'un FFN avec GRN, mais BatchNorm remplace LayerNorm pour pouvoir fusionner avec la convolution à l'inférence. Le premier étage utilise du 3×3, les trois suivants du 13×13.\n\nPour explorer l'architecture, les auteurs n'entraînent que 100 epochs sur ImageNet, puis évaluent la segmentation sur ADE20K avec UperNet. Ils insistent sur ce second test : les grands noyaux montrent mieux leurs avantages sur les tâches en aval, que la seule précision ImageNet distingue parfois mal.\n\n### Principe 1 : approfondir avec des structures peu coûteuses\n\nPuisque les grands noyaux assurent le champ réceptif, la profondeur peut venir de structures sans calcul spatial de grande étendue. Les auteurs ajoutent un petit module dans chaque bloc et comparent quatre options :\n\n| Structure ajoutée | Débit (images/s) | ImageNet | ADE20K mIoU |\n| --- | ---: | ---: | ---: |\n| Aucune | 1954 | 81.2% | 45.1 |\n| Goulot (1×1, DW 3×3, 1×1) | 1716 | 81.5% | 46.3 |\n| Deux 1×1 | 1745 | 81.3% | 46.2 |\n| Deux DW 3×3 | 1659 | 81.3% | 45.4 |\n| SE Block | **1863** | **81.6%** | **46.5** |\n\n*Tableau : tableau 1 de l'article. A100, batch de 128.*\n\nLe SE Block échange l'information entre canaux tout en agrégeant l'espace par un pooling moyen global très peu coûteux. Il offre les meilleurs résultats et la meilleure vitesse.\n\n\n> [!TIP]\n> \n> Pour voir comment le SE Block pondère les canaux avec le pooling moyen global :\n> \n> - **[[17.09] SENet : Presser ! Encore plus fort !](/blog/papers/lightweight/senet)**\n\n\n### Principe 2 : reparamétrer avec de petites convolutions dilatées\n\nRepLKNet avait déjà montré l'intérêt d'une petite convolution parallèle au grand noyau pendant l'entraînement, pour capter les motifs fins. Une fois l'entraînement terminé, on fusionne BN dans la convolution, puis on complète le petit noyau par des zéros avant de l'ajouter au grand. Il ne reste qu'une couche à l'inférence.\n\nCe travail va un peu plus loin. En plus des motifs fins, il existe des motifs clairsemés : un pixel peut être plus lié à un pixel situé à quelques cases qu'à son voisin immédiat. C'est la spécialité des convolutions dilatées : avec une dilatation $r$, deux points échantillonnés voisins sont séparés par $r-1$ pixels.\n\n[![Figure 2 de l'article : en haut, vue de la structure. L'entrée alimente cinq branches parallèles, 9×9 de dilatation 1, 5×5 de dilatation 1, 5×5 de dilatation 2, 3×3 de dilatation 3 et 3×3 de dilatation 4, chacune suivie de BN avant addition. La flèche Re-parameterize mène à une unique convolution 9×9 de dilatation 1. En bas, vue des paramètres : les poids des branches sont des grilles ; les noyaux dilatés deviennent des grilles clairsemées avec des cases vides intercalées, puis leur somme forme une grille 9×9 dont les couleurs montrent la superposition des branches.](/content/papers/assets/8dc0f2f7d7d64f92bea8485e2e00428225297bb13404dee50fe50f28385d34c8.png)](/content/papers/assets/8dc0f2f7d7d64f92bea8485e2e00428225297bb13404dee50fe50f28385d34c8.png)\n\n*Figure 2 de Ding et al., extraite de la [**page 4 du PDF**](https://arxiv.org/pdf/2311.15599v2#page=4). La légende originale est omise.*\n\nLa figure prend $K=9$, le réseau réel utilise $K=13$. L'essentiel est en bas : une convolution $k\\times k$ de dilatation $r$ équivaut à un noyau clairsemé de taille $(k-1)r+1$, rempli de zéros entre les coefficients. Comme c'est encore un noyau convolutif, on peut l'ajouter au grand noyau.\n\nVérifions d'abord l'équivalence exacte entre convolution dilatée et noyau clairsemé déplié :\n\n```python\nimport torch\nimport torch.nn.functional as F\n\ndef dilate(w, r):\n    \"\"\"Déplier les poids k×k : insérer r-1 zéros entre deux poids voisins.\"\"\"\n    c, _, k, _ = w.shape\n    size = (k - 1) * r + 1\n    big = torch.zeros(c, 1, size, size)\n    big[:, :, ::r, ::r] = w\n    return big\n\ntorch.manual_seed(0)\nc = 4\nx = torch.randn(1, c, 32, 32)\nw = torch.randn(c, 1, 3, 3)\ny_dilated = F.conv2d(x, w, padding=3, dilation=3, groups=c)   # Convolution 3×3 de dilatation 3\ny_sparse = F.conv2d(x, dilate(w, 3), padding=3, groups=c)     # Noyau clairsemé déplié en 7×7\nprint(\"Noyau déplié :\", tuple(dilate(w, 3).shape[-2:]), \"cases non nulles\", int((dilate(w, 3)[0] != 0).sum()))\nprint(\"Écart maximal entre les deux calculs :\", f\"{(y_dilated - y_sparse).abs().max():.1e}\")\n```\n\n```text\nNoyau déplié : (7, 7) cases non nulles 9\nÉcart maximal entre les deux calculs : 0.0e+00\n```\n\nReprenons ensuite les réglages par défaut de l'article : cinq branches en parallèle du noyau principal 13×13, de tailles $k=(5,7,3,3,3)$ et de dilatations $r=(1,2,3,4,5)$. À l'entraînement, on calcule chaque branche puis on additionne. Avant l'inférence, on déplie chaque noyau, on le complète jusqu'à 13×13 et on l'ajoute au noyau principal :\n\n```python\nK = 13\nbranches = [(5, 1), (7, 2), (3, 3), (3, 4), (3, 5)]          # (taille k du noyau, dilatation r)\nw_main = torch.randn(c, 1, K, K)\nw_small = [torch.randn(c, 1, k, k) for k, _ in branches]\n\n# Entraînement : un 13×13 et cinq petites convolutions dilatées, calculés puis additionnés\ny_train = F.conv2d(x, w_main, padding=K // 2, groups=c)\nfor (k, r), w in zip(branches, w_small):\n    y_train += F.conv2d(x, w, padding=r * (k - 1) // 2, dilation=r, groups=c)\n\n# Avant l'inférence : déplier chaque noyau, compléter à 13×13 et fusionner\nmerged = w_main.clone()\nfor (k, r), w in zip(branches, w_small):\n    big = dilate(w, r)\n    pad = (K - big.shape[-1]) // 2\n    merged += F.pad(big, [pad] * 4)\n    print(f\"{k}×{k}, dilatation {r} → équivalent {big.shape[-1]}×{big.shape[-1]}\")\ny_infer = F.conv2d(x, merged, padding=K // 2, groups=c)\nprint(\"Amplitude des sorties :\", f\"{y_train.abs().max():.1f}\")\nprint(\"Écart maximal après fusion en un 13×13 :\", f\"{(y_train - y_infer).abs().max():.1e}\")\n```\n\n```text\n5×5, dilatation 1 → équivalent 5×5\n7×7, dilatation 2 → équivalent 13×13\n3×3, dilatation 3 → équivalent 7×7\n3×3, dilatation 4 → équivalent 9×9\n3×3, dilatation 5 → équivalent 11×11\nAmplitude des sorties : 59.9\nÉcart maximal après fusion en un 13×13 : 2.7e-05\n```\n\nSix convolutions deviennent une seule ; seul reste l'arrondi dû à l'ordre des additions flottantes. Dans le vrai module, chaque branche est aussi suivie de BN. Avant l'inférence, son échelle et son décalage sont fusionnés dans les poids et biais convolutifs, comme dans RepVGG.\n\n\n> [!TIP]\n> \n> Pour fusionner BN avec une convolution et réunir des branches parallèles :\n> \n> - **[[21.01] RepVGG : Rendre sa grandeur à VGG](/blog/papers/reparameterization/repvgg)**\n\n\nCela aide-t-il vraiment ? Les auteurs comparent deux versions sans dilatation, avec le même nombre de branches : l'une conserve les tailles de noyaux $(5,7,3,3,3)$, l'autre les tailles effectives $(5,13,7,9,11)$. À l'inférence, les trois versions donnent le même 13×13 ; seul l'entraînement change :\n\n| Reparamétrage | ImageNet | ADE20K mIoU |\n| --- | ---: | ---: |\n| Aucun | 81.44 ± 0.04% | 45.78 ± 0.05 |\n| Petites convolutions dilatées | **81.63 ± 0.02%** | **46.37 ± 0.10** |\n| Mêmes tailles de noyaux, sans dilatation | 81.55 ± 0.01% | 46.07 ± 0.07 |\n| Mêmes tailles effectives, sans dilatation | 81.59 ± 0.02% | 46.17 ± 0.04 |\n\n*Tableau : tableau 2 de l'article, moyenne et écart-type de trois entraînements.*\n\nLa version dilatée est la meilleure, avec 0.6 de mIoU de plus que sans reparamétrage. Les auteurs l'attribuent à sa capacité à capter des motifs clairsemés : ajouter simplement des petits noyaux ou diversifier les tailles de champs réceptifs donne moins de gains.\n\n### Principe 3 : choisir la taille du noyau selon la tâche en aval\n\nQuelle taille utiliser à chaque étage ?\n\n| Noyaux par étage | Débit (images/s) | ImageNet | ADE20K mIoU |\n| --- | ---: | ---: | ---: |\n| 3, 13, 13, 13 (référence) | 1863 | 81.6% | **46.5** |\n| 3, 11, 11, 11 | 1876 | 81.6% | 45.5 |\n| 3, 15, 15, 15 | 1851 | 81.7% | 45.9 |\n| 3, 3, 13, 13 | 2006 | 81.7% | 46.1 |\n| 13, 13, 13, 13 | 1547 | 81.6% | 44.9 |\n\n*Tableau : certaines lignes du tableau 3 de l'article.*\n\nLa précision ImageNet bouge à peine, autour de 81.6%, alors que la mIoU va de 44.9 à 46.5. La seule classification ferait croire que la taille du noyau compte peu.\n\nCurieusement, passer à 15, ou utiliser 13 dès le premier étage, réduit la mIoU. Les auteurs soupçonnent UperNet : il combine les premières et dernières caractéristiques du backbone en supposant que les premières portent de l'information locale. Avec de grands noyaux dès le début, cette information est moins locale et la combinaison devient moins utile.\n\nPour le vérifier, ils limitent UperNet à la sortie du quatrième étage, afin d'évaluer uniquement les dernières caractéristiques. Le noyau 15 obtient alors la meilleure mIoU, 42.7 ; la version à noyau 13 dès le premier étage donne 42.4, comme la référence ; le noyau 11 est dernier à 41.9. Les grands noyaux n'ont pas dégradé les caractéristiques : celles des premiers étages conviennent simplement moins à UperNet.\n\nLa taille dépend donc de ce qu'on branche en aval. Pour les tâches visuelles courantes, les auteurs retiennent 13×13 aux étages intermédiaires et supérieurs.\n\n### Principe 4 : approfondir avec de petits noyaux\n\nPour agrandir le modèle, ils portent le troisième étage de 9 à 27 blocs. Faut-il aussi de grands noyaux dans les 18 nouveaux blocs ? On appelle LarK Block un bloc avec Dilated Reparam Block, et SmaK Block un bloc avec DW 3×3 :\n\n| Composition du troisième étage | Débit (images/s) | ImageNet | ADE20K mIoU |\n| --- | ---: | ---: | ---: |\n| 9 LarK (version peu profonde initiale) | 1863 | 81.6% | 46.5 |\n| 27 LarK | 1145 | 82.3% | **49.0** |\n| 14 LarK, 13 SmaK en alternance | 1229 | 82.3% | 48.8 |\n| 9 LarK, 18 SmaK | 1264 | 82.3% | 48.8 |\n| Même chose, SmaK sans DW 3×3 | 1289 | 82.2% | 47.8 |\n\n*Tableau : tableau 4 de l'article.*\n\nTout faire avec de grands noyaux ne gagne que 0.2 de mIoU, mais ralentit de près de 10%. Neuf grands noyaux suffisent au champ réceptif ; les blocs ajoutés peuvent utiliser de petits noyaux.\n\nLa dernière ligne est intéressante. Retirer le 3×3 des SmaK accélère à peine le réseau, mais coûte un point de mIoU. Ces petits noyaux ajoutent peu au champ réceptif ; ils élèvent en revanche l'abstraction spatiale, soit la deuxième fonction évoquée au départ.\n\nUniRepLKNet suit cette organisation. À partir de S, le troisième étage contient 9 LarK et 18 SmaK, avec deux SmaK après chaque LarK comme au centre du schéma. Le plus petit modèle T utilise 9 et 9.\n\n## Discussion\n\n### Image\n\nCommençons par l'entraînement sur ImageNet-1K seul. Le débit est mesuré sur A100 avec un batch de 128 :\n\n| Modèle | Paramètres | Débit (images/s) | top-1 |\n| --- | ---: | ---: | ---: |\n| SLaK-T | 30M | 1312 | 82.5% |\n| InternImage-T | 30M | 1292 | 83.5% |\n| UniRepLKNet-T | 31M | **1804** | 83.2% |\n| ConvNeXt-S | 50M | 1182 | 83.1% |\n| UniRepLKNet-S | 56M | 1265 | **83.9%** |\n\n*Tableau : certaines lignes du tableau 6 de l'article.*\n\nUniRepLKNet-T perd 0.3 point face à InternImage-T, mais est 40% plus rapide. Le plus grand modèle UniRepLKNet-XL, préentraîné sur ImageNet-22K et évalué en résolution 384, atteint 88.0%, comme InternImage-XL, avec un débit de 131 contre 114.\n\nLes résultats en aval sont aussi bons. Sur ADE20K, UniRepLKNet-T atteint 48.6 de mIoU en mono-échelle, contre 46.0 pour ConvNeXt-T ; XL monte à 55.6 en multi-échelle. Sur COCO, XL obtient 56.4 de box AP.\n\n### Autres modalités\n\nPour appliquer le même réseau à d'autres données, les auteurs les mettent toutes sous forme de tenseur $B\\times C'\\times H\\times W$. Seul le nombre de canaux d'entrée $C'$ de la première couche change ; tout le reste reste identique.\n\n- **Audio** : un spectrogramme à $T$ pas temporels et $F$ bandes fréquentielles devient une image monocanal $T\\times F$.\n- **Séries temporelles** : la couche d'embedding de Corrformer projette les données dans un espace latent, puis elles sont remodelées en image bidimensionnelle monocanal.\n- **Nuages de points** : quelques convolutions génèrent les vues projetées X, Y et Z, traitées comme une image à trois canaux de 224×224.\n- **Vidéo** : 16 images de 224×224 sont assemblées en une mosaïque 4×4, soit une grande image de 896×896.\n\nLa vidéo est le cas le plus brutal : les relations temporelles entre images passent entièrement par des noyaux qui franchissent les frontières de la mosaïque.\n\nRegroupons les résultats des quatre modalités :\n\n| Tâche | UniRepLKNet-S | Comparaison |\n| --- | --- | --- |\n| Commandes vocales (Speech Commands V2) | 98.5%, 55.5M, sans préentraînement | Audio-MAE 98.3%, 86.2M, préentraînement AudioSet-2M |\n| Température mondiale (MSE, plus bas est meilleur) | 7.602 | Corrformer 7.709 |\n| Classification de formes 3D (ModelNet-40 OA) | 93.2% | DGCNN, KPConv 92.9% |\n| Reconnaissance d'actions (Kinetics-400) | 54.8%, sans préentraînement | MViTv2-B 81.2%, préentraînement ImageNet-1K |\n\n*Tableau : certaines lignes des tableaux 9 à 12 de l'article.*\n\nEn audio, séries temporelles et nuages de points, le réseau égale ou dépasse légèrement les modèles spécialisés. En vidéo, l'écart reste très grand, ce que les auteurs reconnaissent. Ils le comparent plutôt aux modèles eux aussi présentés comme généralistes, ImageBind (50.0%) et Meta-Transformer (47.3%), qui utilisent en outre beaucoup de données de préentraînement.\n\nLa taille des noyaux compte ici aussi. À prétraitement et entraînement identiques, les autres réseaux convolutifs donnent :\n\n| Modèle (noyau) | Audio | Vidéo |\n| --- | ---: | ---: |\n| ResNet-101 (3) | 73.6% | 41.3% |\n| ConvNeXt-S (7) | 94.3% | 48.5% |\n| UniRepLKNet-S (11) | 94.7% | 51.7% |\n| UniRepLKNet-S (13) | **98.5%** | **54.8%** |\n\n*Tableau : certaines colonnes du tableau 13 de l'article.*\n\nResNet-101 n'atteint que 73.6% en audio, contre 98.5% avec un noyau de 13. Spectrogrammes et mosaïques exigent de voir large d'un coup : c'est précisément la force des grands noyaux.\n\n### Le coût à payer\n\nLes auteurs signalent une limite dans la conclusion : les branches dilatées consomment davantage de ressources à l'entraînement. Chacune des cinq branches calcule sa convolution et son BN ; leur fusion économise à l'inférence, pas à l'entraînement.\n\nLa vitesse d'inférence dépend aussi de l'implémentation. Les grandes convolutions depthwise nécessitent l'implémentation accélérée officielle. Sur GitHub, face à un [signalement d'entraînement très lent](https://github.com/AILab-CVC/UniRepLKNet/issues/15), la première question des auteurs est de savoir si elle est installée. Un autre utilisateur [mesure sur une 4090](https://github.com/AILab-CVC/UniRepLKNet/issues/22) un UniRepLKNet-S qui ne dépasse pas ConvNeXt-B. Les auteurs rappellent que leurs mesures utilisent un A100, et que le classement dépend du matériel.\n\n## Conclusion\n\nLes quatre principes d'UniRepLKNet suivent une même idée. Les grands noyaux voient large, les petits construisent les niveaux d'abstraction, les structures bon marché comme SE ajoutent de la profondeur. Chacun son rôle, sans demander à un seul opérateur d'en remplir trois.\n\nLe Dilated Reparam Block est la partie la plus facile à réutiliser. On ajoute quelques petites convolutions dilatées à l'entraînement, puis on les fusionne en un grand noyau à l'inférence, sans différence visible pour le déploiement. Le code ci-dessus contient toute la logique de fusion ; il suffit d'ajouter celle de BN.\n\nLes expériences multimodales surprennent davantage. En traitant un spectrogramme comme une image et une vidéo comme une mosaïque, sans conception spécialisée supplémentaire, un réseau convolutif égale, voire dépasse légèrement, plusieurs modèles dans des domaines où les Transformers dominent.\n","imageSizes":{"/content/papers/assets/95a64d551639000b4d79a5746c5aa0f05d914227d468929959577bade902ad80.png":{"width":960,"height":621},"/content/papers/assets/8dc0f2f7d7d64f92bea8485e2e00428225297bb13404dee50fe50f28385d34c8.png":{"width":1680,"height":384}}}
