Object Detection (Détection d’Objets)
L’object detection (ou détection d’objets) est une tâche de vision par ordinateur qui consiste à localiser et identifier automatiquement chaque objet présent dans une image ou une vidéo, en prédisant pour chacun une bounding box (rectangle englobant) et une catégorie.
L’image classification dit « cette image contient un chat ». L’object detection dit « il y a un chat aux coordonnées (120, 80, 350, 290) et un chien aux coordonnées (400, 150, 600, 450) ». C’est le passage de la compréhension globale à la compréhension spatiale : savoir quoi et où.
L’object detection est la technologie au cœur des véhicules autonomes, de la vidéosurveillance intelligente, du contrôle qualité industriel, de la robotique, et de la réalité augmentée. Le marché mondial de la vision par ordinateur atteignait environ $19,8 milliards en 2024, avec une croissance annuelle projetée de ~20%. La famille de modèles YOLO (You Only Look Once), la plus populaire pour la détection en temps réel, en est à sa version YOLO26 (septembre 2025), avec des performances sans précédent sur les appareils edge.
- Catégorie
- Tâche fondamentale de vision par ordinateur
- Input
- Image ou frame vidéo
- Output
- Liste de (bounding box, classe, score de confiance) pour chaque objet détecté
- Approches
- Two-stage (Faster R-CNN), one-stage (YOLO, SSD), Transformers (DETR, RF-DETR)
- Benchmark principal
- MS COCO (80 classes, ~118K images train)
- Métrique
- mAP (mean Average Precision) à différents seuils IoU
- SOTA temps réel
- RF-DETR (~54,7% mAP COCO, 4,5ms latence), YOLO26, YOLOv12
Principe de fonctionnement
Un détecteur d’objets résout simultanément deux problèmes : la localisation (où se trouvent les objets dans l’image ?) et la classification (que sont ces objets ?). Pour chaque objet détecté, le modèle produit une bounding box (coordonnées x, y, largeur, hauteur), un label de classe (parmi les catégories définies), et un score de confiance (probabilité que la détection soit correcte).
La métrique d’évaluation standard est le mAP (mean Average Precision), qui mesure la précision de détection moyennée sur toutes les classes et sur différents seuils d’IoU (Intersection over Union, le recouvrement entre la bounding box prédite et la bounding box de référence). Sur le benchmark COCO, les résultats sont typiquement reportés en mAP@[0.5:0.95] (moyenné sur 10 seuils IoU de 0,5 à 0,95).
Les deux grandes familles de détecteurs
Détecteurs two-stage (à deux étapes)
Les détecteurs two-stage séparent la localisation et la classification en deux phases distinctes :
Phase 1 : Propositions de régions. Un réseau (RPN, Region Proposal Network) génère des milliers de régions candidates susceptibles de contenir des objets.
Phase 2 : Classification et raffinement. Chaque région candidate est classifiée (objet ou fond) et sa bounding box est affinée.
Le modèle fondateur est R-CNN (Girshick et al., 2014), qui a démontré qu’un CNN pré-entraîné pouvait être utilisé pour la détection d’objets. Fast R-CNN a optimisé le processus en partageant les features entre régions. Faster R-CNN (Ren et al., 2015) a remplacé la recherche sélective par un RPN neuronal, rendant le pipeline entièrement end-to-end. Mask R-CNN a ajouté une branche de segmentation d’instance, permettant de prédire un masque pixel par pixel en plus de la bounding box.
Les two-stage sont généralement plus précis mais plus lents que les one-stage. Ils restent utilisés quand la précision prime sur la vitesse (imagerie médicale, analyse d’images satellite).
Détecteurs one-stage (à une étape)
Les détecteurs one-stage prédisent directement les bounding boxes et les classes pour chaque position dans l’image en un seul passage du réseau, sans étape de proposition de régions. Résultat : une inférence beaucoup plus rapide, adaptée au temps réel.
YOLO (Redmon et al., 2016) a posé le paradigme : diviser l’image en grille, prédire les bounding boxes et les classes pour chaque cellule en un seul forward pass. L’idée révolutionnaire est dans le nom : « You Only Look Once ».
SSD (Single Shot Multibox Detector, Liu et al., 2016) : détections multi-échelle à différentes résolutions de features. Plus rapide que Faster R-CNN avec une précision comparable.
RetinaNet (Lin et al., 2017) : a résolu le problème du déséquilibre de classes (beaucoup plus de fond que d’objets) avec la Focal Loss, permettant aux one-stage d’atteindre la précision des two-stage.
La famille YOLO : de YOLOv1 à YOLO26
YOLO est la série de modèles la plus influente en détection d’objets. Voici les versions clés :
| Version | Année | Innovation clé | mAP COCO |
|---|---|---|---|
| YOLOv1 | 2016 | Détection en un seul passage, paradigme fondateur | ~63% (VOC) |
| YOLOv3 | 2018 | Détection multi-échelle, score d’objectness | ~33% |
| YOLOv5 | 2020 | Implémentation PyTorch (Ultralytics), écosystème open-source | ~37-50% |
| YOLOv8 | 2023 | Anchor-free, tête découplée, multi-tâche (détection + segmentation + classification) | ~44-53% |
| YOLO11 | 2024 | Blocs C3k2 + module C2PSA (attention), pose estimation, OBB | ~39-55% |
| YOLOv12 | 2025 (fév.) | Design centré attention, R-ELAN, FlashAttention | ~40-55% |
| YOLO26 | 2025 (sept.) | NMS-free, suppression DFL, MuSGD optimizer, ProgLoss, STAL | ~39-54% |
YOLO26, la dernière version d’Ultralytics, marque une rupture avec les versions précédentes. Ses innovations principales : inférence end-to-end sans NMS (Non-Maximum Suppression), suppression de la Distribution Focal Loss pour simplifier l’export edge, un nouvel optimiseur MuSGD (hybride SGD + Muon, inspiré des avancées LLM), et des améliorations spécifiques aux petits objets (ProgLoss + STAL). Résultat : jusqu’à 43% plus rapide en inférence CPU que YOLO11 à précision comparable. YOLO26 supporte 5 tâches unifiées : détection, segmentation d’instance, classification, estimation de pose, et détection de bounding boxes orientées (OBB).
Détecteurs basés sur les Transformers
Les architectures Transformer ont aussi transformé l’object detection, en éliminant les composants heuristiques (anchor boxes, NMS) au profit d’une approche end-to-end.
DETR (DEtection TRansformer, Carion et al., 2020) : le premier détecteur end-to-end basé sur un Transformer. DETR utilise un encodeur CNN + un décodeur Transformer avec des object queries apprises. Pas d’anchor boxes, pas de NMS. Innovant conceptuellement mais lent à converger et moins performant sur les petits objets.
RT-DETR (Real-Time DETR, Baidu, 2023) : adaptation de DETR pour le temps réel. Performances compétitives avec les YOLO tout en gardant l’architecture end-to-end sans NMS.
RF-DETR (Roboflow, 2025) : combine un backbone DINOv2 pré-entraîné avec un décodeur DETR optimisé. RF-DETR-Medium atteint 54,7% mAP sur COCO avec seulement 4,52ms de latence sur un GPU T4, surpassant les variantes YOLO comparables en précision. C’est le détecteur transformer temps réel de référence en 2025.
Grounding DINO (IDEA Research, 2023) : détecteur zero-shot qui combine vision et langage. Vous décrivez en texte ce que vous cherchez (« a person wearing a helmet ») et le modèle le détecte sans entraînement spécifique. 52,5% mAP sur COCO en zero-shot (sans données COCO), 63,0% après fine-tuning.
YOLO-World : combine le backbone YOLOv8 avec un module vision-langage (RepVL-PAN) pour la détection zero-shot en temps réel. Maintient la vitesse YOLO tout en offrant la flexibilité de la détection par prompt textuel.
Benchmarks et métriques
| Dataset | Classes | Images | Usage |
|---|---|---|---|
| MS COCO | 80 | ~118K train / 5K val | Benchmark universel, référence standard |
| Pascal VOC | 20 | ~11K (2007+2012) | Benchmark historique, plus simple que COCO |
| Open Images | 600+ | ~1,9M | Large échelle, détection + segmentation |
| DOTA | 15 | ~2,8K images aériennes | Détection de bounding boxes orientées (OBB), vue aérienne |
| Objects365 | 365 | ~2M | Pré-entraînement grande échelle |
mAP (mean Average Precision) : la métrique de référence. Elle calcule la précision moyenne (aire sous la courbe précision-rappel) pour chaque classe, puis moyenne sur toutes les classes. COCO utilise mAP@[0.5:0.95] (moyenne sur 10 seuils IoU), plus exigeant que le mAP@0.5 de Pascal VOC.
IoU (Intersection over Union) : mesure le chevauchement entre la bounding box prédite et la vérité terrain. IoU = surface d’intersection / surface d’union. Un seuil de 0,5 signifie que la prédiction doit couvrir au moins 50% de la vérité terrain pour être considérée correcte.
Latence / FPS : le temps d’inférence par image, critique pour les applications temps réel. Les modèles YOLO atteignent 30-100+ FPS sur GPU, les modèles two-stage sont généralement à 5-15 FPS.
Outils et code
Détection avec YOLO (Ultralytics)
# pip install ultralytics
from ultralytics import YOLO
# Charger un modèle pré-entraîné sur COCO (80 classes)
model = YOLO("yolo11n.pt") # ou "yolo26n.pt" pour YOLO26
# Inférence sur une image
results = model("photo.jpg")
# Parcourir les détections
for result in results:
for box in result.boxes:
classe = result.names[int(box.cls)]
confiance = float(box.conf)
coords = box.xyxy[0].tolist() # [x1, y1, x2, y2]
print(f"{classe}: {confiance:.2f} at {coords}")
# Sauvegarder l'image annotée
results[0].save("resultat.jpg")
# Inférence vidéo en temps réel
results = model("video.mp4", stream=True)
for r in results:
r.save() # Sauvegarde chaque frame annotée
Fine-tuning YOLO sur vos données
from ultralytics import YOLO
# Fine-tuner YOLO sur un dataset personnalisé
model = YOLO("yolo11s.pt") # Charger un modèle pré-entraîné
# Entraîner sur votre dataset (format YOLO ou COCO)
model.train(
data="dataset.yaml", # Chemin vers le fichier de config
epochs=100,
imgsz=640,
batch=16,
device=0, # GPU 0
)
# Évaluer sur le jeu de validation
metrics = model.val()
print(f"mAP@0.5: {metrics.box.map50:.3f}")
print(f"mAP@0.5:0.95: {metrics.box.map:.3f}")
# Exporter pour le déploiement
model.export(format="onnx") # ONNX (universel)
model.export(format="tflite") # TensorFlow Lite (mobile)
model.export(format="engine") # TensorRT (NVIDIA)
Détection zero-shot avec Grounding DINO
# pip install groundingdino-py
from groundingdino.util.inference import load_model, load_image, predict
model = load_model("groundingdino_swint_ogc.pth", "GroundingDINO_SwinT_OGC.py")
image_source, image = load_image("photo.jpg")
# Détection par prompt textuel (zero-shot)
boxes, logits, phrases = predict(
model=model,
image=image,
caption="person wearing helmet . red car . traffic light",
box_threshold=0.35,
text_threshold=0.25
)
for box, logit, phrase in zip(boxes, logits, phrases):
print(f"{phrase}: {logit:.2f} at {box.tolist()}")
Applications concrètes
Véhicules autonomes. Détection en temps réel des piétons, véhicules, cyclistes, panneaux, feux de circulation, et obstacles. Tesla traite plus de 50 tâches de détection simultanées. La détection fiable à 30+ FPS avec une latence minimale est critique pour la sécurité.
Vidéosurveillance et sécurité. Détection d’intrusions, comptage de personnes, détection de comportements suspects, et reconnaissance de plaques d’immatriculation. Les systèmes modernes utilisent YOLO ou RT-DETR déployés sur des caméras IP avec traitement edge (NVIDIA Jetson).
Contrôle qualité industriel. Détection de défauts sur les lignes de production (rayures, fissures, composants manquants), comptage de pièces, vérification d’assemblage. La vitesse d’inférence de YOLO permet un contrôle à 100% de la production en temps réel.
Imagerie médicale. Détection de lésions sur les radiographies, localisation de tumeurs sur les scanners CT, détection de cellules anormales sur les coupes histologiques. Mask R-CNN et les variantes DETR sont préférées pour leur précision supérieure.
Agriculture et drones. Comptage de fruits, détection de maladies des plantes, identification d’animaux, et surveillance de parcelles par drone. Les modèles YOLO déployés sur les drones permettent un traitement en vol sans transmission vers le cloud.
Retail et commerce. Self-checkout sans caisse (détection des produits pris), gestion automatisée des stocks (détection des produits en rayon), et analyse du trafic en magasin (comptage et parcours des clients).
Robotique. Détection et localisation des objets à manipuler (pick-and-place), navigation en environnement dynamique, et interaction homme-robot. Les modèles de détection alimentent les systèmes de perception des robots industriels et domestiques.
Défis de l’object detection
Petits objets. La détection d’objets de petite taille (moins de 32×32 pixels sur une image 640×640) reste le défi technique principal. Les features de ces objets sont peu représentées dans les couches profondes du réseau. YOLO26 adresse ce problème avec STAL (Small-Target-Aware Label Assignment) et ProgLoss.
Occultation et chevauchement. Quand des objets se recouvrent partiellement, le détecteur doit identifier chaque objet individuellement malgré l’occultation. Le NMS traditionnel peut supprimer des détections valides d’objets superposés. Les approches NMS-free (DETR, YOLO26) adressent partiellement ce problème.
Conditions adverses. Pluie, brouillard, faible luminosité, contre-jour dégradent fortement les performances des détecteurs entraînés sur des images propres. Des datasets spécialisés comme AODRaw (présenté à CVPR 2025) couvrent spécifiquement ces conditions.
Annotation. L’annotation de bounding boxes est nettement plus coûteuse que l’annotation de labels de classification (typiquement $0,05 à $0,50 par bounding box). Un projet de détection nécessite souvent 5 000 à 50 000 images annotées. Les outils de pré-annotation avec YOLO ou Grounding DINO réduisent considérablement ce coût.
Déploiement edge. Les contraintes de mémoire, de calcul et d’énergie des appareils embarqués (smartphones, drones, caméras IoT) limitent la taille des modèles. YOLO26 est spécifiquement optimisé pour ce scénario avec une inférence CPU jusqu’à 43% plus rapide que les versions précédentes.
Bonnes pratiques
Commencez avec un modèle pré-entraîné COCO. Ne partez jamais de zéro. Chargez un YOLO ou RF-DETR pré-entraîné sur COCO (80 classes) et fine-tunez sur vos données. Même si vos classes cibles n’existent pas dans COCO, les features bas-niveau (contours, textures) sont réutilisables.
Annotez avec une plateforme dédiée. Utilisez Roboflow, CVAT, Label Studio, ou Labelbox pour annoter vos images. Ces outils supportent la pré-annotation assistée par IA (un modèle YOLO pré-entraîné propose des bounding boxes que vous corrigez), réduisant le temps d’annotation de 50 à 70%.
Augmentez vos données. Flip horizontal, rotation, crop aléatoire, changement de luminosité/contraste, et mosaïque (assembler 4 images en une seule, technique standard dans YOLO). L’augmentation est gratuite et améliore systématiquement la robustesse.
Adaptez la taille du modèle à votre déploiement. YOLO-Nano pour les appareils edge, YOLO-Small ou Medium pour les GPU embarqués (Jetson), YOLO-Large ou Extra Large pour les serveurs GPU. Le choix de la variante est un compromis précision/vitesse que vous devez mesurer sur votre matériel cible.
Évaluez sur vos données, pas sur COCO. Les mAP sur COCO ne prédisent pas les performances sur vos images industrielles, médicales ou aériennes. Constituez un jeu de test de 500 à 1000 images représentatives de votre cas d’usage et mesurez la performance réelle.
Explorez le zero-shot pour le prototypage. Grounding DINO et YOLO-World permettent de détecter n’importe quel objet par prompt textuel sans aucune donnée d’entraînement. C’est la façon la plus rapide de valider un cas d’usage avant d’investir dans l’annotation et le fine-tuning.
Questions fréquentes sur l’object detection
Quelle est la différence entre object detection, image classification et image segmentation ?
L’image classification attribue un label à l’image entière (« cette image contient un chat »). L’object detection localise chaque objet avec une bounding box rectangulaire et l’identifie (« un chat ici, un chien là »). L’image segmentation délimite le contour exact de chaque objet au niveau du pixel (masque de segmentation). L’image classification est la plus simple, l’object detection ajoute la localisation, et la segmentation ajoute la délimitation précise. Le choix dépend de votre cas d’usage : si vous avez besoin de savoir où est l’objet mais pas sa forme exacte, l’object detection suffit. Si vous avez besoin du contour précis (imagerie médicale, conduite autonome), passez à la segmentation.
Quel modèle YOLO choisir pour un nouveau projet ?
Pour un déploiement edge ou CPU, YOLO26 est le meilleur choix grâce à son inférence NMS-free et son optimisation CPU (jusqu’à 43% plus rapide). Pour la meilleure précision sur GPU, YOLOv12 avec son design centré attention est recommandé. Si vous avez besoin de catégories flexibles (pas prédéfinies à l’avance), YOLO-World offre la détection zero-shot en temps réel. Pour les projets existants basés sur YOLOv8, la migration vers YOLO11 ou YOLO26 est directe avec la bibliothèque Ultralytics Python. Tous les modèles sont disponibles en 5 tailles (Nano à Extra Large) pour s’adapter à votre compromis vitesse/précision.
Combien d’images annotées faut-il pour entraîner un détecteur ?
Avec un modèle YOLO pré-entraîné sur COCO, 300 à 500 images annotées suffisent souvent pour un premier modèle fonctionnel sur un domaine spécifique. Pour des performances robustes en production, visez 1 000 à 5 000 images. Pour des domaines très spécifiques (défauts industriels rares, pathologies médicales), vous pouvez descendre à 100-200 images avec du transfer learning agressif et une forte augmentation de données. En zero-shot avec Grounding DINO, vous n’avez besoin de 0 image annotée (juste une description textuelle). Utilisez la pré-annotation assistée par IA pour réduire le coût d’annotation de 50 à 70%.
Object detection en temps réel : quelle latence est réaliste ?
Sur un GPU NVIDIA T4 (cloud standard), les modèles YOLO-Small atteignent environ 2 à 5ms par image (200-500 FPS). RF-DETR-Medium atteint 4,5ms (220 FPS). Sur un GPU embarqué (Jetson Orin), comptez 10 à 30ms (30-100 FPS) selon la taille du modèle. Sur CPU (YOLO26-Nano), environ 40ms (~25 FPS), suffisant pour de nombreuses applications. Sur smartphone, avec TFLite et quantization INT8, les modèles MobileNet-SSD atteignent 20-50ms. Pour de la vidéo temps réel à 30 FPS, votre modèle doit traiter chaque frame en moins de 33ms.
Qu’est-ce que la détection zero-shot et comment l’utiliser ?
La détection zero-shot permet de détecter des objets que le modèle n’a jamais vus pendant l’entraînement, en décrivant l’objet en langage naturel. Grounding DINO et YOLO-World sont les deux principaux modèles pour cette tâche. Vous fournissez un prompt textuel (« person wearing a red jacket », « damaged package », « cat on a table ») et le modèle localise les objets correspondants dans l’image. C’est extrêmement utile pour le prototypage rapide (valider un cas d’usage sans annoter de données), pour les catégories qui changent fréquemment (nouveaux produits en rayon), et pour les cas rares avec peu d’exemples. Les performances zero-shot (~52,5% mAP COCO pour Grounding DINO) sont inférieures aux modèles fine-tunés (~55-63% mAP), mais suffisent souvent pour un MVP.