Object Detection Architectures
Les architectures de détection d’objets sont les conceptions de réseaux qui transforment les pixels en boîtes et en étiquettes. Présentation du backbone, du neck, de la head et des principales familles de détecteurs.
Les architectures de détection d’objets sont les conceptions de réseaux qui transforment une image en une liste de boîtes englobantes, d’étiquettes de classe et de scores de confiance. Presque tous les détecteurs modernes se composent d’un backbone, d’un neck et d’une tête. Les conceptions diffèrent principalement par la façon dont elles génèrent des boîtes candidates — propositions de régions, grille dense ou requêtes apprises — et éliminent les prédictions en double, par suppression non maximale (NMS) ou par appariement un-à-un. Ces choix déterminent la précision et la vitesse du détecteur, ainsi que la facilité avec laquelle tu peux le déployer sur du matériel de périphérie. La détection d’objets désigne la tâche, et la tête de détection est une partie de l’architecture.
Backbone, neck et tête#
Le backbone extrait les caractéristiques. Il peut s’agir d’un réseau neuronal convolutif comme ResNet ou CSPDarknet, ou d’un transformer de vision, souvent préentraîné pour la classification sur ImageNet. Il réduit progressivement la résolution de l’image : ses cartes de caractéristiques perdent en résolution et gagnent en contenu sémantique à mesure que la profondeur augmente. Le neck, généralement un réseau pyramidal de caractéristiques (FPN) doté d’un chemin ascendant supplémentaire comme dans PANet, fusionne les cartes profondes et superficielles afin que chaque échelle de sortie transmette à la fois les détails fins et le contexte. La tête prédit des boîtes et des scores de classe à chaque emplacement de chaque échelle, généralement avec des strides de 8, 16 et 32 : la carte la plus fine détecte les petits objets et la plus grossière, les grands. Tu peux repérer ces trois parties d’un détecteur réel dans sa définition de modèle :
from ultralytics import YOLO
# Charge YOLO26n et sépare ses couches comme le fait son fichier YAML de modèle
model = YOLO("yolo26n.pt")
layers = model.model.model
n_backbone = len(model.model.yaml["backbone"])
# Le backbone extrait les caractéristiques, le neck fusionne les échelles et la dernière couche est la tête
print("Backbone:", [type(m).__name__ for m in layers[:n_backbone]])
print("Neck:", [type(m).__name__ for m in layers[n_backbone:-1]])
print("Head:", type(layers[-1]).__name__, "at strides", model.model.stride.tolist())La liste du backbone affiche des couches Conv avec stride et des blocs C3k2, qui se terminent par le pooling SPPF et un bloc d’attention C2PSA. Le neck exécute les couches Upsample, Concat et C3k2 de haut en bas, puis les couches Conv, Concat et C3k2 avec stride pour remonter. Enfin, une tête Detect effectue des prédictions avec des strides de 8, 16 et 32.
Familles de détecteurs#
- Détecteurs à deux étapes : un réseau de proposition de régions suggère quelques centaines de régions candidates, puis une seconde tête classe et affine chacune d’elles, comme dans Faster R-CNN (2015) et Mask R-CNN (2017).
- Détecteurs à une étape basés sur des ancres : SSD (2016), YOLOv2 à YOLOv5 et RetinaNet (2017) prédisent les décalages par rapport à des boîtes d’ancrage prédéfinies dans chaque cellule de la grille, en un seul passage.
- Détecteurs sans ancres : FCOS (2019) et YOLOv8 (2023) prédisent les distances entre un point et les quatre bords de la boîte. CenterNet (2019) prédit les centres des boîtes sous forme de pics dans une carte thermique, avec une largeur et une hauteur pour chaque centre. YOLOX (2021) a ramené la famille YOLO à la prédiction sans ancres : aucun de ces modèles n’a donc besoin d’ajuster des ancres.
- Détecteurs Transformer de type DETR : DETR (2020) décode un ensemble fixe de requêtes d’objets apprises et les associe une à une aux objets annotés ; sa sortie ne nécessite donc pas de NMS. Deformable DETR a atteint une meilleure précision avec dix fois moins d’époques d’entraînement, et RT-DETR a rendu cette architecture temps réel en 2023.
- Détecteurs CNN sans NMS : YOLOv10 (2024) entraîne une tête un-à-un en parallèle d’une tête un-à-plusieurs et n’exécute que la tête un-à-un lors de l’inférence ; ses boîtes ne nécessitent donc pas de NMS.
- Détecteurs à vocabulaire ouvert : Grounding DINO et YOLO-World remplacent la couche de classification fixe par des plongements textuels, ce qui leur permet de détecter les classes nommées au moment de l’inférence.
Choisir une architecture#
Les benchmarks comme la précision moyenne (mAP) sur COCO classent la précision, mais le matériel cible et les objets présents dans les images déterminent généralement la conception. YOLO26 est un CNN monocéphale sans ancres doté des deux types de tête : il applique NMS par défaut à sa branche un-à-plusieurs, nms=False active sa branche un-à-un, et ses fichiers YAML de modèle comprennent des variantes P2 et P6 qui ajoutent une sortie de stride 4 ou de stride 64.
- Périphérie et vidéo en temps réel : les petits détecteurs CNN se compilent bien avec des environnements d’exécution tels que TensorRT et OpenVINO. Une tête sans NMS élimine une étape de post-traitement dont le coût augmente avec le nombre de candidats.
- Petits objets : les images aériennes et d’inspection nécessitent un niveau de sortie plus fin, comme un stride 4, ou une inférence par tuiles qui exécute le détecteur sur des recadrages qui se chevauchent.
- Catalogues de produits évolutifs : les détecteurs à vocabulaire ouvert trouvent un nouveau produit à partir d’une instruction textuelle, sans avoir besoin d’images annotées de ce produit.
- Objets orientés : les navires, véhicules et bâtiments dans les images satellites s’adaptent mieux à des boîtes orientées, qui ajoutent une prédiction d’angle à la tête.










