{"notes":[{"id":"classic-cnns/overfeat","category":"classic-cnns","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"OverFeat","subtitle":"D'un seul coup de filet","author":"Z. Yuan","paperDate":"2013-12-21","publishedOn":"2025-10-18","world":"external/overfeat","paperTitle":"OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks","paperUrl":"https://arxiv.org/abs/1312.6229","bibliography":{"title":"OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks","authors":["Pierre Sermanet","David Eigen","Xiang Zhang","Michael Mathieu","Rob Fergus","Yann LeCun"],"url":"https://arxiv.org/abs/1312.6229","pdfUrl":"https://arxiv.org/pdf/1312.6229v4","codeUrl":null,"preprint":{"id":"1312.6229","submittedOn":"2013-12-21","url":"https://arxiv.org/abs/1312.6229"},"publication":null,"citation":"@misc{classiccnnsoverfeat2013,\n  title = {{OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks}},\n  author = {Pierre Sermanet and David Eigen and Xiang Zhang and Michael Mathieu and Rob Fergus and Yann LeCun},\n  year = {2013},\n  eprint = {1312.6229},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/1312.6229}\n}\n","citationPath":"/content/papers/citations/classic-cnns/overfeat.24bd64ee73bc.bib"},"thumbnail":{"src":"/content/papers/assets/d52a811beca4cb19a17ff9c1e4d1fb5c130f8426db67edfc11b7f5ebec4e525e.png","width":988,"height":1594},"locale":"fr","path":"/content/papers/fr/classic-cnns/overfeat.b9806ebfe547.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":"le-réseau-de-classification","text":"Le réseau de classification","depth":3},{"id":"pourquoi-la-fenêtre-glissante-coûte-peu","text":"Pourquoi la fenêtre glissante coûte peu","depth":3},{"id":"une-sortie-trop-clairsemée","text":"Une sortie trop clairsemée","depth":3},{"id":"plusieurs-échelles-le-maximum-puis-la-moyenne","text":"Plusieurs échelles : le maximum, puis la moyenne","depth":3},{"id":"de-la-classification-aux-boîtes","text":"De la classification aux boîtes","depth":3},{"id":"accumuler-plutôt-que-supprimer","text":"Accumuler plutôt que supprimer","depth":3},{"id":"détection-choisir-les-exemples-négatifs-pendant-lentraînement","text":"Détection : choisir les exemples négatifs pendant l'entraînement","depth":3},{"id":"discussion","text":"Discussion","depth":2},{"id":"classification","text":"Classification","depth":3},{"id":"localisation","text":"Localisation","depth":3},{"id":"détection","text":"Détection","depth":3},{"id":"conclusion","text":"Conclusion","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"object-detection/yolov1","relation":"referenced","topic":""},{"id":"segmentation/fcn","relation":"referenced","topic":""}]},{"id":"object-detection/yolov1","category":"object-detection","legacyPath":"object-detection/1506-yolov1","legacySlug":"1506-yolov1","legacyPaths":[],"title":"YOLOv1","subtitle":"Un seul regard suffit","author":"Z. Yuan","paperDate":"2015-06-08","publishedOn":"2024-08-01","paperTitle":"You Only Look Once: Unified, Real-Time Object Detection","paperUrl":"https://arxiv.org/abs/1506.02640","bibliography":{"title":"You Only Look Once: Unified, Real-Time Object Detection","authors":["Joseph Redmon","Santosh Divvala","Ross Girshick","Ali Farhadi"],"url":"https://arxiv.org/abs/1506.02640","pdfUrl":"https://arxiv.org/pdf/1506.02640","codeUrl":null,"preprint":{"id":"1506.02640","submittedOn":"2015-06-08","url":"https://arxiv.org/abs/1506.02640"},"publication":{"venue":"CVPR","year":2016,"kind":"conference","url":"https://openaccess.thecvf.com/content_cvpr_2016/html/Redmon_You_Only_Look_CVPR_2016_paper.html"},"citation":"@misc{objectdetectionyolov12015,\n  title = {{You Only Look Once: Unified, Real-Time Object Detection}},\n  author = {Joseph Redmon and Santosh Divvala and Ross Girshick and Ali Farhadi},\n  year = {2015},\n  eprint = {1506.02640},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/1506.02640}\n}\n","citationPath":"/content/papers/citations/object-detection/yolov1.a6add3d1501c.bib"},"thumbnail":{"src":"/content/papers/assets/de2999633c20d235ccf6c7c3f0b2d7488ca55b32be8a406c1c988b0d117c1408.jpg","width":1028,"height":692},"locale":"fr","path":"/content/papers/fr/object-detection/yolov1.7ef2a2bd344f.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":"fonction-de-perte","text":"Fonction de perte","depth":3},{"id":"à-linférence","text":"À l'inférence","depth":3},{"id":"étape-1--trier","text":"Étape 1 : trier","depth":4},{"id":"étapes-2-et-3--sélectionner-et-supprimer","text":"Étapes 2 et 3 : sélectionner et supprimer","depth":4},{"id":"reprendre-les-étapes-3-et-4","text":"Reprendre les étapes 3 et 4","depth":4},{"id":"discussion","text":"Discussion","depth":2},{"id":"vitesse-dinférence","text":"Vitesse d'inférence","depth":3},{"id":"comparaison-avec-dautres-méthodes","text":"Comparaison avec d'autres méthodes","depth":3},{"id":"limites-du-modèle","text":"Limites du modèle","depth":3},{"id":"conclusion","text":"Conclusion","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"object-detection/yolov2","relation":"next","topic":"De YOLO à la détection multi-échelle en une étape"}]},{"id":"segmentation/fcn","category":"segmentation","legacyPath":"segmentation/1411-fcn","legacySlug":"1411-fcn","legacyPaths":[],"title":"FCN","subtitle":"Un réseau entièrement convolutif","author":"Z. Yuan","paperDate":"2014-11-14","publishedOn":"2024-09-11","paperTitle":"Fully Convolutional Networks for Semantic Segmentation","paperUrl":"https://arxiv.org/abs/1411.4038","bibliography":{"title":"Fully Convolutional Networks for Semantic Segmentation","authors":["Jonathan Long","Evan Shelhamer","Trevor Darrell"],"url":"https://arxiv.org/abs/1411.4038","pdfUrl":"https://arxiv.org/pdf/1411.4038","codeUrl":null,"preprint":{"id":"1411.4038","submittedOn":"2014-11-14","url":"https://arxiv.org/abs/1411.4038"},"publication":{"venue":"CVPR","year":2015,"kind":"conference","url":"https://arxiv.org/abs/1411.4038"},"citation":"@misc{segmentationfcn2014,\n  title = {{Fully Convolutional Networks for Semantic Segmentation}},\n  author = {Jonathan Long and Evan Shelhamer and Trevor Darrell},\n  year = {2014},\n  eprint = {1411.4038},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/1411.4038}\n}\n","citationPath":"/content/papers/citations/segmentation/fcn.1c65fe1c14c6.bib"},"thumbnail":{"src":"/content/papers/assets/1a8a4d2936086814cc5bd26819653959fe4cc29c64c5cba2009f8b8e43c87842.jpg","width":1224,"height":684},"locale":"fr","path":"/content/papers/fr/segmentation/fcn.72ea4d9d8a8b.md","headings":[{"id":"définition-du-problème","text":"Définition du problème","depth":2},{"id":"résolution-du-problème","text":"Résolution du problème","depth":2},{"id":"architecture-du-modèle","text":"Architecture du modèle","depth":3},{"id":"suréchantillonnage","text":"Suréchantillonnage","depth":3},{"id":"fusion-multi-échelle","text":"Fusion multi-échelle","depth":3},{"id":"jeux-de-données-et-stratégie-dentraînement","text":"Jeux de données et stratégie d'entraînement","depth":3},{"id":"mesures-dévaluation","text":"Mesures d'évaluation","depth":3},{"id":"discussion","text":"Discussion","depth":2},{"id":"résultats-sur-pascal-voc","text":"Résultats sur PASCAL VOC","depth":3},{"id":"résultats-sur-nyudv2","text":"Résultats sur NYUDv2","depth":3},{"id":"résultats-sur-sift-flow","text":"Résultats sur SIFT Flow","depth":3},{"id":"conclusion","text":"Conclusion","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"feature-fusion/unet","relation":"next","topic":"Prédiction dense et connexions entre encodeur et décodeur"}]}],"text":"En 2012, AlexNet remporte à la fois la classification et la localisation du concours ImageNet.\n\nSa méthode de classification est décrite dans l'article, que tout le monde a lu. Et la localisation ? À l'époque, aucune publication n'expliquait comment ils s'y étaient pris.\n\nEn décembre 2013, Pierre Sermanet et ses collègues du laboratoire de Yann LeCun, à l'université de New York, publient cet article, présenté ensuite à l'ICLR 2014. Dès l'introduction, ils affirment qu'il s'agit du premier article à expliquer clairement comment un réseau convolutif peut faire de la localisation et de la détection sur ImageNet. Leur système remporte la localisation au concours 2013 et participe, avec le même réseau, à la classification et à la détection.\n\nL'article publie aussi le modèle entraîné, utilisable comme extracteur de caractéristiques, sous le nom d'OverFeat.\n\n## Définir le problème\n\nL'article traite trois tâches de difficulté croissante, chacune incluse dans la suivante :\n\n1. **Classification** : chaque image n'a qu'une étiquette ; on a droit à 5 essais, et un seul bon suffit.\n2. **Localisation** : toujours 5 essais, mais chacun doit fournir, en plus de la classe, une boîte ; il faut que l'intersection sur union (IoU) entre la boîte et la vérité terrain atteigne au moins 50 % et que la classe soit juste pour que la réponse compte.\n3. **Détection** : une image peut contenir un nombre quelconque d'objets, voire aucun ; le score est la mAP, et les boîtes erronées sont pénalisées.\n\nDans les données de classification d'ImageNet, l'objet est généralement au centre de l'image et en occupe la plus grande partie, mais bon nombre d'objets varient encore beaucoup en taille et en position. La solution la plus directe est la fenêtre glissante : faire passer le réseau à chaque position et à chaque échelle de l'image.\n\nCela soulève deux problèmes.\n\nLe premier est le coût de calcul. Une image se découpe en des milliers de fenêtres, et faire passer chacune dans tout le réseau convolutif coûte cher.\n\nLe second est le mauvais alignement entre fenêtres et objets. Beaucoup de fenêtres n'encadrent qu'une partie de l'objet, par exemple la seule tête d'un chien ; cela suffit au classifieur pour reconnaître un chien, mais pas pour dire où se trouve le chien entier. Selon les auteurs, on obtient ainsi « une bonne classification, mais une mauvaise localisation et une mauvaise détection ».\n\nLes auteurs proposent donc trois idées : réaliser efficacement, à l'intérieur du réseau, une fenêtre glissante multi-échelle ; faire prédire à chaque fenêtre, en plus de la classe, la position de la boîte de l'objet par rapport à la fenêtre ; enfin, accumuler les indices fournis par toutes les fenêtres.\n\n## Résoudre le problème\n\n### Le réseau de classification\n\nLe réseau de classification d'OverFeat ressemble à AlexNet, à quelques différences près : pas de normalisation du contraste, des régions de pooling sans chevauchement, et des cartes de caractéristiques plus grandes dans les première et deuxième couches.\n\nL'article prépare en fait deux versions : le **modèle rapide**, dont la première couche est en $11\\times11$ avec un pas de 4, et le **modèle précis**, dont la première couche passe à $7\\times7$ avec un pas de 2, avec une couche de plus et davantage de cartes de caractéristiques. Les deux ont à peu près le même nombre de paramètres (145 millions pour le rapide, 144 millions pour le précis, environ 60 millions pour AlexNet), mais le modèle précis compte près de deux fois plus de connexions.\n\nÀ l'entraînement, le petit côté de l'image est ramené à 256 et un patch de $221\\times221$ est découpé au hasard ; le réseau est alors traité comme un modèle non spatial, qui produit à la fin un vecteur de classification $1\\times1$. C'est seulement au test qu'il glisse sur l'image entière.\n\n### Pourquoi la fenêtre glissante coûte peu\n\n[![Deux rangées de schémas. En haut : une entrée de 14×14 passe par une convolution 5×5 et un pooling 2×2, puis par les convolutions 5×5, 1×1 et 1×1 du classifieur, pour produire une sortie de 1×1. En bas : l'entrée est agrandie à 16×16, chaque carte de caractéristiques gagne une bordure jaune, et la sortie finale est de 2×2](/content/papers/assets/cd9ddd6b129a1c495df34121de190dc6244cb4d520df8eca6fcf86f44e85a94d.png)](/content/papers/assets/cd9ddd6b129a1c495df34121de190dc6244cb4d520df8eca6fcf86f44e85a94d.png)\n\n*Figure 5 de l'article, extraite de la [**page 8 du PDF v4**](https://arxiv.org/pdf/1312.6229v4#page=8). En haut, la taille d'entrée de l'entraînement, qui ne produit qu'une position ; en bas, l'entrée agrandie du test, dont la sortie devient $2\\times2$. Le jaune représente le calcul supplémentaire dû à l'agrandissement de l'entrée. La dimension des canaux est omise.*\n\nRegardons d'abord la rangée du haut. Une entrée de $14\\times14$ devient $10\\times10$ après la convolution $5\\times5$, puis $5\\times5$ après le pooling ; la première couche du classifieur prend tout ce $5\\times5$ et produit une seule position, et les deux couches suivantes sont en $1\\times1$.\n\nLe classifieur était à l'origine fait de couches entièrement connectées. L'observation des auteurs : une couche entièrement connectée qui prend une entrée de taille fixe équivaut à un noyau de convolution de même taille ; les couches entièrement connectées suivantes équivalent à des convolutions $1\\times1$. Le réseau entier ne comporte alors plus que des convolutions, des poolings et des ReLU.\n\nPassons à la rangée du bas. L'entrée est agrandie à $16\\times16$, chaque carte de caractéristiques gagne une bordure, et la sortie finale devient $2\\times2$, c'est-à-dire les résultats de classification de 4 fenêtres. Les parties qui se chevauchent ne sont calculées qu'une fois ; le surcoût se limite à la bordure jaune.\n\nC'est l'avantage naturel d'un réseau convolutif pour la fenêtre glissante : un seul passage sur l'image entière donne la réponse pour toutes les fenêtres, sans devoir découper chaque fenêtre pour la traiter séparément.\n\n### Une sortie trop clairsemée\n\nTout calculer en un passage a toutefois un prix. Dans le modèle précis, de l'entrée à la dernière couche de convolution, la convolution de pas 2 et les trois poolings réduisent la résolution d'un facteur total de $2\\times3\\times2\\times3=36$. Autrement dit, le classifieur ne produit qu'une sortie tous les 36 pixels de l'image d'entrée.\n\nPlus la fenêtre est alignée sur l'objet, plus le réseau est confiant ; en ne regardant que tous les 36 pixels, on risque fort de manquer la position la mieux alignée. Les auteurs constatent qu'une sortie aussi clairsemée fait même moins bien que les 10 recadrages fixes d'AlexNet.\n\nLeur solution consiste à ne pas perdre de résolution au dernier pooling. Celui-ci était un max pooling $3\\times3$ sans chevauchement ; désormais, le point de départ du pooling est décalé de $\\Delta=0, 1, 2$ pixels, un pooling est fait pour chaque décalage, chaque résultat passe séparément dans le classifieur, et les sorties sont finalement entrelacées :\n\n[![Schéma à une dimension. (a) La carte de caractéristiques non poolée de la couche 5, de longueur 20 ; (b) trois groupes de pooling, en rouge, vert et bleu, pour les décalages 0, 1 et 2 : chacun fusionne 3 cases en 1 et obtient 6 cases ; (c) les cartes de caractéristiques des trois groupes après pooling ; (d) le classifieur glisse avec une fenêtre de 5 cases et produit 2 sorties par groupe ; (e) les sorties des trois groupes, entrelacées en une carte de sortie de 6 cases](/content/papers/assets/d672122ea6ddf57393ed938154239f60084b8afebb1434624615cbd3e2b890ac.png)](/content/papers/assets/d672122ea6ddf57393ed938154239f60084b8afebb1434624615cbd3e2b890ac.png)\n\n*Figure 3 de l'article, extraite de la [**page 6 du PDF v4**](https://arxiv.org/pdf/1312.6229v4#page=6). Exemple de la direction verticale à la 2e échelle, dessiné avec les proportions réelles.*\n\nRefaisons le calcul en suivant la figure. La carte de caractéristiques non poolée de la couche 5 a une longueur de 20 ; pour chaque décalage, on fait un pooling sur 3 cases, puis on fait glisser un classifieur large de 5 cases :\n\n```python\nlayer5 = 20        # longueur de la carte de caractéristiques non poolée de la couche 5 (exemple de la Figure 3 de l'article)\npool, window = 3, 5\n\ndef starts(offsets):\n    \"\"\"Point de départ de chaque fenêtre du classifieur, en pixels de la couche 5.\"\"\"\n    out = []\n    for d in offsets:\n        pooled = (layer5 - d) // pool          # longueur après pooling pour ce décalage\n        for k in range(pooled - window + 1):   # le classifieur glisse avec une fenêtre de 5\n            out.append(d + pool * k)\n    return sorted(out)\n\ncoarse, fine = starts([0]), starts([0, 1, 2])\nprint(\"Δ=0 seul :\", coarse, \"→ une sortie tous les\", (coarse[1] - coarse[0]) * 12, \"pixels d'entrée\")\nprint(\"Δ=0,1,2 :\", fine, \"→ une sortie tous les\", (fine[1] - fine[0]) * 12, \"pixels d'entrée\")\n```\n\n```text\nΔ=0 seul : [0, 3] → une sortie tous les 36 pixels d'entrée\nΔ=0,1,2 : [0, 1, 2, 3, 4, 5] → une sortie tous les 12 pixels d'entrée\n```\n\nPour chaque décalage, il reste 6 cases après le pooling, sur lesquelles le classifieur produit 2 sorties : ce sont exactement les longueurs de (c) et (d) dans la figure. Entrelacés, les trois groupes donnent les 6 cases de (e).\n\nAvant le dernier pooling, le réseau a déjà réduit la résolution d'un facteur $2\\times3\\times2=12$ ; deux cases voisines de la couche 5 sont donc distantes de 12 pixels dans l'entrée. Avec $\\Delta=0$ seul, le classifieur avance de 3 cases à chaque pas, soit 36 pixels ; avec les trois décalages, chaque case a sa sortie, et l'intervalle tombe à 12 pixels.\n\nLes auteurs décrivent aussi la chose autrement : appliquer le dernier pooling et le classifieur une fois pour chaque décalage possible, puis entrelacer les résultats.\n\n### Plusieurs échelles : le maximum, puis la moyenne\n\nTout ce qui précède se fait à une seule échelle. Pour la classification proprement dite, les auteurs redimensionnent l'image à 6 tailles, de $245\\times245$ à $461\\times569$, appliquent la procédure ci-dessus à chacune, puis recommencent sur l'image retournée horizontalement. La classification finale se fait en trois étapes :\n\n1. Pour chaque échelle et chaque retournement, prendre pour chaque classe le maximum sur toutes les positions.\n2. Faire la moyenne des résultats sur les échelles et les retournements.\n3. Prendre les 1 ou 5 premières classes du vecteur moyen.\n\nLes auteurs résument ainsi l'usage des deux moitiés du réseau : les couches d'extraction de caractéristiques, à l'avant, convoluent l'image entière en une seule fois, ce qui est le plus efficace ; le classifieur, à l'arrière, fait l'inverse et, avec une entrée fixe de $5\\times5$, explore exhaustivement chaque position et chaque échelle des cartes de caractéristiques de la couche 5.\n\n### De la classification aux boîtes\n\nLa localisation demande une chose de plus : chaque fenêtre doit dire non seulement « ce qu'il y a ici », mais aussi « où se trouve la boîte de l'objet ».\n\nLes auteurs branchent, après les couches 1 à 5 du réseau de classification, un réseau de régression distinct : deux couches entièrement connectées, de 4096 et 1024 canaux, qui produisent à la fin 4 nombres représentant les quatre côtés de la boîte. Comme le classifieur, il est calculé pour chacun des $3\\times3$ décalages. La dernière couche existe en un exemplaire par classe, soit 1000 exemplaires.\n\nÀ l'entraînement, les couches 1 à 5 restent figées ; seul le réseau de régression est entraîné, avec une perte $\\ell_2$ entre la boîte prédite et la vérité terrain. Les boîtes d'objets dont le chevauchement avec la fenêtre d'entrée est inférieur à 50 % ne servent pas à l'entraînement : l'objet étant en majeure partie hors de la fenêtre, mieux vaut laisser d'autres fenêtres qui le contiennent s'en charger.\n\nLe réseau de régression est lui aussi entraîné à plusieurs échelles. Selon les auteurs, cela met en accord les prédictions des différentes échelles et augmente fortement la confiance après fusion ; quelques échelles suffisent alors. Le rapport entre deux échelles est d'environ 1,4, bien plus que les 1,05 à 1,1 courants en détection de piétons, et le système tourne aussi plus vite.\n\n### Accumuler plutôt que supprimer\n\nChaque échelle et chaque position produisent une boîte, soit des milliers au total. Les auteurs utilisent un algorithme de fusion glouton pour les réduire à quelques-unes :\n\n1. Pour chaque échelle, retenir les $k$ classes les plus probables.\n2. Rassembler les boîtes prédites pour ces classes à toutes les positions et à toutes les échelles.\n3. Chercher de façon répétée les deux boîtes les plus proches et les fusionner en une seule (moyenne des coordonnées), jusqu'à ce que la proximité de toutes les paires de boîtes passe sous un seuil.\n\nLa proximité se calcule à partir de la distance entre les centres des deux boîtes et de l'aire de leur intersection. Après fusion, la confiance d'une boîte est la somme des scores de classification de toutes les fenêtres qui y ont été fusionnées.\n\n[![Quatre rangées d'images, centrées sur un ours dans une chute d'eau. La première rangée montre la sortie du classifieur à chaque position, pour chaque échelle ; la deuxième, une sortie à plus haute résolution ; la troisième, les nombreuses boîtes prédites par le réseau de régression à chaque position, pour la plupart concentrées sur l'ours ; la dernière image ne garde qu'une seule boîte autour de l'ours](/content/papers/assets/d52a811beca4cb19a17ff9c1e4d1fb5c130f8426db67edfc11b7f5ebec4e525e.png)](/content/papers/assets/d52a811beca4cb19a17ff9c1e4d1fb5c130f8426db67edfc11b7f5ebec4e525e.png)\n\n*Figure 6 de l'article, extraite de la [**page 9 du PDF v4**](https://arxiv.org/pdf/1312.6229v4#page=9). De haut en bas : la classe et la confiance à chaque position, la sortie à plus haute résolution, les boîtes prédites par le réseau de régression, et le résultat après fusion.*\n\nDans la troisième rangée de la figure, les boîtes régressées se massent pour la plupart sur l'ours ; on y trouve aussi quelques boîtes « tortue » et « baleine », mais leur confiance de classification plafonne à 0,11 et 0,12, et leurs positions sont très dispersées : la fusion ne les additionne pas, et elles finissent sous le seuil. Les boîtes de l'ours, elles, ont une confiance élevée (environ 0,5 en moyenne par échelle) et des positions cohérentes ; elles fusionnent en une seule boîte à la confiance très élevée.\n\nLes auteurs comparent cela à la suppression des non-maxima (NMS) classique : la NMS ne garde que la boîte au meilleur score et jette les autres ; ici, les boîtes cohérentes se renforcent mutuellement, ce qui écarte plus facilement les fausses alarmes isolées produites par le classifieur seul.\n\n### Détection : choisir les exemples négatifs pendant l'entraînement\n\nLa principale différence entre détection et localisation est qu'il faut pouvoir dire « il n'y a pas d'objet ici », c'est-à-dire ajouter une classe d'arrière-plan.\n\nL'approche classique consiste à entraîner d'abord sur des exemples négatifs choisis au hasard, puis à réinjecter dans l'ensemble d'entraînement ceux sur lesquels le modèle se trompe le plus, et à recommencer plusieurs tours (bootstrapping). Les auteurs trouvent cette démarche compliquée, et sujette à un décalage entre la collecte des négatifs et l'entraînement ; ils choisissent plutôt, pendant l'entraînement, quelques exemples négatifs par image, à la volée, certains au hasard, d'autres parmi ceux qui trompent le plus le modèle. Le calcul est plus lourd, mais la procédure bien plus simple ; et comme les couches de caractéristiques ont déjà été entraînées sur la tâche de classification, l'affinage pour la détection ne prend pas très longtemps.\n\n## Discussion\n\n### Classification\n\n| Configuration (ensemble de validation) | Top-1 | Top-5 |\n| --- | ---: | ---: |\n| AlexNet, 1 modèle | 40,7 | 18,2 |\n| Modèle rapide, 1 échelle, $\\Delta=0$ seulement | 39,28 | 17,12 |\n| Modèle rapide, 1 échelle, trois décalages | 39,01 | 16,97 |\n| Modèle rapide, 6 échelles, trois décalages | 38,12 | 16,27 |\n| Modèle précis, 10 recadrages fixes | 35,60 | 14,71 |\n| Modèle précis, 4 échelles, trois décalages | 35,74 | 14,18 |\n| 7 modèles précis, 4 échelles, trois décalages | 33,96 | 13,24 |\n\n*Tableau : taux d'erreur (%) extraits de la Table 2 de l'article.*\n\nÀ une seule échelle, les trois décalages n'apportent qu'un tout petit gain (17,12 % → 16,97 %) ; selon les auteurs, ils comptent davantage en multi-échelle. Passer de 1 à 6 échelles fait baisser le taux d'erreur top-5 de 16,97 % à 16,27 %. Le modèle précis, en glissant sur plusieurs échelles, fait environ un demi-point de mieux que les 10 recadrages fixes (14,71 % → 14,18 %).\n\nSur l'ensemble de test du concours, OverFeat fait voter 7 modèles rapides et obtient un taux d'erreur top-5 de 14,2 %, cinquième sur 18 équipes ; le meilleur résultat obtenu cette année-là avec les seules données de l'ILSVRC13 était de 11,7 %. Après le concours, les auteurs descendent à 13,6 % avec des modèles plus grands.\n\n### Localisation\n\nLes auteurs comparent plusieurs configurations sur l'ensemble de validation de l'ILSVRC12 :\n\n- Un seul recadrage central : environ 40 % d'erreur.\n- Fusion des prédictions de toutes les positions, sur deux échelles : 31,5 %.\n- En passant à quatre échelles : 30,0 %.\n- Une tête de régression par classe (per-class regressor) fait pourtant nettement moins bien qu'une tête commune à toutes les classes : 44,1 % contre 31,3 %. Les auteurs supposent que chaque classe a trop peu d'exemples d'entraînement annotés avec des boîtes, alors que les paramètres sont multipliés par 1000.\n\nSur l'ensemble de test du concours, OverFeat remporte la localisation 2013 avec un taux d'erreur de 29,9 %.\n\n### Détection\n\nPendant le concours, le système de détection d'OverFeat se classe troisième avec une mAP de 19,4 % ; le vainqueur, UvA, obtient 22,6 %. Après le concours, les auteurs allongent l'entraînement et ajoutent à chaque échelle une entrée de plus basse résolution comme contexte, ce qui porte la mAP à 24,3 %, au-dessus de tous les résultats de l'époque.\n\nLes auteurs signalent aussi deux points. D'abord, les deux premiers génèrent leurs régions candidates par segmentation d'image, ce qui fait passer le nombre de fenêtres à examiner d'environ 200 000 à 2 000 ; selon la littérature, cela réduit les fausses alarmes, alors qu'OverFeat utilise des fenêtres glissantes denses. Ensuite, NEC et UvA ont affiné leur modèle sur l'ensemble de validation de la détection, ce qu'OverFeat n'a pas fait ; les ensembles de validation et de test diffèrent suffisamment de l'ensemble d'entraînement pour que cette seule étape rapporte environ un point de pourcentage.\n\n## Conclusion\n\nOverFeat démontre une chose que personne n'avait encore clairement écrite : la classification, la localisation et la détection peuvent partager un même réseau convolutif, et la fenêtre glissante peut se calculer à bas coût dans un réseau convolutif. Son résultat en localisation est le meilleur de 2013, et en détection, il atteint le meilleur niveau après le concours.\n\nCe record n'a pas tenu longtemps. R-CNN génère d'abord des régions candidates avec selective search, puis fait passer chaque région dans un réseau convolutif ; dans une version ultérieure, son article ajoute le même benchmark de détection de l'ILSVRC 2013 et [rapporte une mAP de 31,4 %](https://arxiv.org/abs/1311.2524), contre 24,3 % pour OverFeat. Le même article reconnaît qu'OverFeat est environ 9 fois plus rapide (environ 2 secondes par image), car ses fenêtres glissantes n'exigent aucune déformation au niveau de l'image et les calculs qui se chevauchent peuvent être partagés.\n\nPlus tard, dans sa section sur les travaux connexes, YOLO décrit OverFeat ainsi : il réalise efficacement la détection par fenêtre glissante, mais reste un système morcelé, optimisé pour la localisation plutôt que pour la détection ; chaque prédiction ne voit que l'information locale, et il faut beaucoup de post-traitement pour obtenir des détections cohérentes. YOLO choisit au contraire de faire regarder l'image entière au réseau en une seule fois, et de produire directement toutes les boîtes.\n\n\n> [!TIP]\n> \n> Pour YOLO, ainsi que pour FCN, qui traite lui aussi les couches entièrement connectées comme des convolutions afin qu'un réseau de classification produise une carte de prédiction complète, vous pouvez consulter nos notes :\n> \n> - **[[15.06] YOLOv1 : Un seul regard suffit](/blog/papers/object-detection/yolov1)**\n> - **[[14.11] FCN : Un réseau entièrement convolutif](/blog/papers/segmentation/fcn)**\n\n\nAvec le recul, on retrouve dans cet article l'ébauche de nombreuses idées de YOLO et de FCN : traiter les couches entièrement connectées comme des convolutions, calculer toute l'image en un seul passage, régresser les boîtes directement sur les cartes de caractéristiques. Simplement, en 2013, OverFeat découpait encore tout cela en plusieurs étapes.\n\nSi vous avez lu YOLO, n'hésitez pas à revenir à cet article pour comparer : vous verrez plus clairement ce que YOLO a vraiment changé.\n","imageSizes":{"/content/papers/assets/cd9ddd6b129a1c495df34121de190dc6244cb4d520df8eca6fcf86f44e85a94d.png":{"width":1016,"height":576},"/content/papers/assets/d672122ea6ddf57393ed938154239f60084b8afebb1434624615cbd3e2b890ac.png":{"width":662,"height":324},"/content/papers/assets/d52a811beca4cb19a17ff9c1e4d1fb5c130f8426db67edfc11b7f5ebec4e525e.png":{"width":988,"height":1594}}}
