La détection d’objets sort enfin de l’âge du compromis
Pendant longtemps, mettre un détecteur d’objets en production a été un exercice d’équilibriste. On choisissait un modèle assez précis pour valider la démo, puis on découvrait au déploiement que la latence rendait l’expérience inutilisable, ou que la facture GPU explosait dès que le trafic montait. À l’inverse, les modèles légers tournaient vite mais ratait une vache au milieu d’une route ou un casque de chantier dans une vidéo d’inspection. La génération YOLO v11, sortie en septembre 2024 par Ultralytics, a changé ce calcul : sur un même volume de paramètres que YOLOv8, elle gagne plusieurs points de mAP tout en consommant moins de mémoire à l’inférence. Couplée à un service de gestion de données comme Roboflow et à des cibles d’exécution modernes (TensorRT, ONNX Runtime, WebGPU), elle permet d’assembler des chaînes de traitement vidéo qui tenaient autrefois du laboratoire de recherche.
Cet article décrit le pipeline complet : récolte et annotation des images, choix du modèle, entraînement, validation, export, inférence sur GPU serveur ou carte embarquée, et surveillance en production. Chaque grand bloc renvoie ensuite vers un tutoriel pas-à-pas dédié. L’objectif est double : donner une vue d’ensemble cohérente, et fournir un atelier reproductible que vous pouvez exécuter sur un laptop équipé d’un GPU consumer ou sur un Jetson Orin.
Pourquoi YOLO v11 plutôt qu’autre chose ?
Le marché des détecteurs s’est densifié ces deux dernières années. RT-DETR, D-FINE, Co-DETR, et plusieurs descendants de DINO promettent tous de dépasser YOLO sur certains benchmarks. La question pratique reste pourtant la même : quelle famille offre le meilleur compromis entre précision, vitesse, taille du modèle, écosystème de déploiement, qualité de la documentation et licence. YOLO v11 gagne sur les cinq axes simultanément, ce qui en fait le choix par défaut raisonnable pour la majorité des projets industriels et embarqués.
Côté précision, la documentation officielle d’Ultralytics rapporte sur COCO val à 640 px les scores suivants : YOLO11n 39,5 mAP avec 2,6 M de paramètres, YOLO11s 47,0 mAP avec 9,4 M, YOLO11m 51,5 mAP avec 20,1 M, YOLO11l 53,4 mAP avec 25,3 M et YOLO11x 54,7 mAP avec 56,9 M de paramètres. Côté vitesse, sur un GPU NVIDIA T4 avec TensorRT FP16, les latences mesurées sont respectivement 1,5 ms, 2,5 ms, 4,7 ms, 6,2 ms et 11,3 ms par image — c’est-à-dire de 90 à 670 images par seconde selon la taille choisie. Ces chiffres viennent directement de la table comparative publiée sur docs.ultralytics.com/models/yolo11 et constituent la référence à citer dans une note technique.
L’autre force, plus rarement soulignée, tient à la diversité des tâches gérées par la même API : détection d’objets, segmentation d’instances, classification, estimation de pose, et boîtes englobantes orientées (OBB). Vous chargez un fichier .pt différent et l’interface Python reste identique. Cela réduit drastiquement la dette de plomberie quand un projet évolue d’une simple détection vers, par exemple, l’orientation de palettes dans un entrepôt.
Enfin, la licence par défaut est AGPL-3.0. Pour un usage interne, c’est suffisant. Pour intégrer YOLO v11 dans un produit propriétaire que vous vendez à un client, il faut une licence commerciale, à acheter directement chez Ultralytics. Anticipez ce point très en amont : un audit juridique en fin de projet est toujours plus douloureux qu’une décision prise à la spec.
Anatomie d’un pipeline moderne de vision
Un projet sérieux ne se résume jamais à « charger un .pt et appeler model.predict ». La chaîne complète comporte sept blocs, chacun sujet à des choix qui pèsent lourd en production.
Acquisition. Caméras IP RTSP, fichiers vidéo, images uniques venant d’un microservice, flux gRPC d’un robot mobile. Le format d’entrée détermine la stratégie de pré-traitement et la fréquence d’échantillonnage. Sur un flux RTSP 1080p à 25 images par seconde, on n’envoie pas chaque image au modèle ; on échantillonne en fonction de la latence cible et du coût.
Annotation et gestion des données. C’est le poste le plus sous-estimé. Annotation à la main, semi-automatique, active learning, multi-annotateur avec consensus, gestion de versions, augmentation, partition train/val/test. Roboflow, CVAT, Label Studio et FiftyOne se partagent l’écosystème ; Roboflow se distingue par l’intégration directe avec Ultralytics et un format YOLO natif sans étape de conversion.
Entraînement. Choix du backbone, des hyperparamètres, taille d’image, nombre d’époques, augmentations, stratégie de validation. Sur YOLO v11, l’API Ultralytics encapsule la majorité de ces décisions derrière des défauts saints, mais comprendre ce qu’ils font reste indispensable dès qu’on s’éloigne du domaine COCO.
Validation. mAP, précision-rappel, matrice de confusion, courbe F1, distribution d’erreurs par classe, tests sur des cas adversariaux (occlusion, faible luminosité, échelles extrêmes).
Export. Le modèle entraîné existe en PyTorch (.pt). Pour la production, on l’exporte généralement en ONNX (universel), TensorRT (GPU NVIDIA), CoreML (Apple), TFLite (mobile/edge), ou OpenVINO (CPU Intel). Le choix dépend de la cible.
Inférence et orchestration. Un service HTTP/gRPC qui prend une image et retourne des boîtes ; un worker qui consomme une file de messages ; un binaire qui tourne sur un Jetson Orin embarqué dans une caméra. Plusieurs scénarios coexistent souvent dans un même projet.
Surveillance. Métriques d’observabilité (latence, throughput, taux d’échec), métriques métier (rappel par classe sur un échantillon labellisé en continu), détection de dérive (data drift, concept drift). Sans ce dernier bloc, un modèle correct le jour de la mise en production peut devenir mauvais six mois plus tard sans que personne le voie.
Ce qui change dans YOLO v11 par rapport aux versions précédentes
YOLO v11 garde la philosophie « one-stage detector » avec ancres implicites héritée de YOLOv8, mais introduit deux modules nouveaux qui expliquent une bonne partie du gain. Le premier, C3k2, remplace les blocs C2f utilisés par YOLOv8. Conceptuellement, il s’agit d’une variante du bloc CSP (Cross-Stage Partial) avec deux convolutions plus petites en parallèle au lieu d’une seule, ce qui améliore le ratio précision/paramètres. Le deuxième, C2PSA, intègre un mécanisme d’auto-attention partial spatial attention dans les couches profondes du neck, ce qui aide le modèle à mieux focaliser sur les zones pertinentes des cartes de caractéristiques. La combinaison de ces deux modules donne, à nombre de paramètres équivalent, une augmentation de mAP que vous voyez directement sur la table COCO citée plus haut.
L’autre changement, plus discret, concerne le head de détection : YOLO v11 utilise toujours une approche découplée (classification et régression dans des branches séparées) mais avec une réduction du nombre de paramètres dans le head. Le résultat net : le modèle est plus rapide à l’inférence, ce qui se voit sur les latences T4 mesurées par Ultralytics.
Pour les utilisateurs de YOLOv8, la migration est transparente côté API : YOLO('yolo11n.pt') au lieu de YOLO('yolov8n.pt'), le reste du code Python ne bouge pas. Les checkpoints YOLOv8 ne sont en revanche pas chargeables tels quels dans une instance YOLO v11 — il faut ré-entraîner ou faire un fine-tuning depuis zéro à partir des poids COCO YOLO v11.
Enfin, début 2026, Ultralytics a publié YOLO26, qui pousse encore le compromis CPU-edge avec inférence end-to-end sans NMS et un nouvel optimiseur (MuSGD). YOLO26 reste un sujet à part : pour un projet production lancé en 2026 avec maturité écosystème, YOLO v11 demeure le choix le mieux outillé et documenté.
La couche logicielle : Ultralytics
Le mot « Ultralytics » désigne à la fois l’entreprise qui maintient les modèles YOLO récents et le package Python qui sert d’interface. Le package est installable via PyPI avec pip install -U ultralytics, conformément au guide officiel Quickstart. Il suit la convention « commande unique » : une fois installé, vous disposez d’une CLI yolo et d’une API Python from ultralytics import YOLO avec une douzaine de méthodes principales (train, val, predict, export, track).
L’utilisation typique se résume à trois lignes. Côté CLI, yolo predict model=yolo11n.pt source='video.mp4' génère directement une vidéo annotée. Côté Python, charger un modèle pré-entraîné, lancer une inférence et accéder aux boîtes prend exactement quatre instructions. Cette concision est un piège : elle pousse certains à sauter l’étape de validation rigoureuse, ce qui se paie en production. La règle d’or : ne jamais déployer un modèle sans avoir au minimum produit la matrice de confusion sur le jeu de validation et inspecté visuellement les pires erreurs.
Pour les besoins avancés (callbacks personnalisés, entraînement multi-GPU, surcharge des transformations), l’API expose une classe BaseTrainer dont vous pouvez hériter. La documentation est dense mais cohérente. Pour une première installation propre, le tutoriel Installer YOLO v11 et Ultralytics détaille la chaîne CUDA + PyTorch + Ultralytics et les pièges Windows / Linux.
La donnée : Roboflow
La qualité d’un détecteur dépend bien plus de la qualité du dataset que du choix de l’architecture. Roboflow s’est positionné sur cette brique avec un service hébergé qui couvre l’annotation, la gestion de versions, l’augmentation, l’export multi-format et la publication de jeux ouverts dans Roboflow Universe (qui dépasse aujourd’hui les deux cent mille datasets publics consultables et plus de 350 millions d’images). Pour un projet équipe, le plan gratuit limite le nombre d’images publiques par mois, mais permet de démarrer et de tester l’intégration. Vérifiez les conditions tarifaires courantes sur roboflow.com/pricing avant de lancer un projet payant — les paliers évoluent.
Trois fonctionnalités méritent une attention particulière. D’abord, le format YOLO natif : pas de conversion à écrire, l’export se fait directement avec un fichier data.yaml compatible Ultralytics. Ensuite, l’augmentation côté serveur : flou, rotation, hue/saturation, mosaic, etc., appliquées à la génération du dataset, ce qui décharge la machine d’entraînement. Enfin, l’API Python qui permet de scripter le téléchargement d’une version spécifique d’un dataset depuis n’importe quel notebook ou conteneur d’entraînement, garantissant la reproductibilité.
Le tutoriel pas-à-pas Entraîner YOLO v11 sur un dataset Roboflow couvre la création du projet, l’annotation collaborative, la génération d’une version, le téléchargement programmatique et la première session d’entraînement.
Vue d’ensemble pratique
Un projet typique suit la séquence suivante. Première phase, entre une et deux semaines selon la complexité : définir précisément les classes à détecter, collecter cinq cents à deux mille images représentatives (variabilité d’éclairage, d’angle, de fond), annoter dans Roboflow ou CVAT, partitionner 70/20/10. Deuxième phase, quelques heures à une journée : choisir la taille du modèle (YOLO11n pour edge, YOLO11s pour serveur léger, YOLO11m pour la majorité des cas, YOLO11l/x pour les besoins de précision maximale), lancer un premier entraînement à 100 époques avec les hyperparamètres par défaut, mesurer la mAP sur le jeu de validation. Troisième phase, jours à semaines : analyse d’erreurs, ré-annotation des cas mal traités, augmentation ciblée, fine-tuning. Quatrième phase, jours à semaines : export vers le format de la cible, intégration dans le service, tests de charge, mise en place de la télémétrie.
Les tutoriels suivants couvrent chaque étape :
- Installer YOLO v11 et Ultralytics sur Linux et Windows — chaîne CUDA, PyTorch GPU, vérification de l’environnement.
- Entraîner YOLO v11 sur un dataset Roboflow — annotation, partition, premier
model.train. - Fine-tuning YOLO v11 sur un dataset métier — gel des couches, learning rate adapté, contrôle du sur-apprentissage.
- Exporter YOLO v11 en ONNX et TensorRT — précision FP16/INT8, plugins, vérification numérique.
- Inférence YOLO v11 sur Jetson Orin — JetPack, dépendances natives, optimisation thermique.
- Détection YOLO v11 dans le navigateur avec WebGPU — onnxruntime-web, inférence côté client, démo HTML.
- Surveiller la dérive d’un modèle YOLO en production — métriques, alertes, ré-entraînement.
- Servir YOLO v11 derrière une API FastAPI — endpoint d’inférence, batching, déploiement Docker.
Ressources matérielles : qu’est-ce qui suffit ?
Pour l’entraînement, une carte grand public récente fait largement le travail sur YOLO11n et YOLO11s. Avec une RTX 3060 12 Go, on entraîne YOLO11s sur cinq mille images en moins d’une heure pour 100 époques en taille 640. Pour YOLO11m et au-delà, prévoir une RTX 4070 Ti ou supérieure si l’on veut conserver des temps raisonnables. Le DDP (entraînement multi-GPU) est supporté nativement par Ultralytics et passe par torchrun.
Pour l’inférence serveur, le choix dépend du throughput cible. À une centaine d’images par seconde, une T4 ou une L4 NVIDIA en location chez un fournisseur cloud suffit. Au-delà du millier d’images par seconde, on rentre dans le domaine A10/A100/L40S. Sur CPU, l’export OpenVINO permet de tenir 10-30 images par seconde sur un serveur Intel récent — utile pour des contextes où le GPU est interdit ou trop coûteux.
Pour l’embarqué, la gamme Jetson Orin de NVIDIA est la cible privilégiée. Le Jetson Orin Nano Super Developer Kit, lancé en décembre 2024, atteint 67 TOPS d’IA pour environ 249 USD, ce qui en fait un point d’entrée crédible pour un capteur intelligent. Le Jetson AGX Orin 64 Go monte à 275 TOPS et permet de tenir plusieurs modèles en parallèle. JetPack 6 (basé Ubuntu 22.04) est la version d’OS de référence. Le tutoriel YOLO v11 sur Jetson Orin donne la procédure exacte de flash, d’installation des dépendances et d’export TensorRT.
Sécurité, vie privée et conformité
Un détecteur d’objets en production traite par construction un flux d’images sensibles. Trois axes de conformité doivent être anticipés dès la phase de conception, pas en aval.
Vie privée des personnes filmées. Dès qu’un capteur observe un espace public ou semi-public, la captation d’images à fins de traitement automatisé tombe sous des règles strictes selon le pays. En Europe, le RGPD impose une base légale, une information visible des personnes (panneau, affichage), une durée de conservation limitée, et la possibilité d’exercer les droits d’accès et d’effacement. Plusieurs pays africains ont adopté des lois inspirées du RGPD ; vérifier la loi locale est un préalable. Techniquement, on combine deux pratiques : floutage automatique des visages et plaques au moment de l’ingestion, et stockage chiffré au repos. Des modèles dédiés comme RetinaFace ou un YOLO entraîné sur visages permettent de masquer en temps réel avant qu’aucune image brute ne touche le disque.
Sécurité du modèle lui-même. Un fichier .pt ou .engine contient des poids qui peuvent représenter des semaines d’annotation et un avantage concurrentiel. Ne pas l’embarquer en clair dans une image Docker publique. Sur Jetson Orin, on signe les binaires avec les outils NVIDIA SecureBoot et on chiffre la partition de données. Sur serveur, on garde les modèles dans un object storage privé et on les charge à la volée depuis un service authentifié.
Robustesse adversariale. Les détecteurs YOLO sont vulnérables aux attaques par patch physique (autocollant imprimé qui fait disparaître un objet de la détection). Pour des cas critiques (sécurité incendie, contrôle d’accès), prévoir une couche de redondance : un second modèle d’architecture différente, ou des règles métier sur la cohérence temporelle des détections (un objet ne disparaît pas brutalement entre deux images consécutives).
Stratégie de mise en place progressive
Un projet de vision réussit rarement en mode big bang. La séquence qui marche le mieux ressemble à ceci. Semaine 1-2 : preuve de concept. Un dataset minimal de 100 à 200 images annotées en interne, un YOLO11n entraîné en local, une démo qui détecte sur quelques vidéos extraites des conditions réelles. L’objectif est de valider que le problème est techniquement traitable et de chiffrer l’effort d’annotation.
Semaine 3-6 : itération sur la donnée. Mise en place de Roboflow ou CVAT, montée en puissance à 1000-2000 images, première matrice de confusion sérieuse, identification des classes ou des conditions où le modèle se trompe le plus. C’est ici qu’on décide si on garde YOLO11n pour l’embarqué ou si on bascule sur YOLO11s/m pour gagner quelques points de mAP.
Semaine 7-10 : industrialisation. Export vers la cible (TensorRT pour serveur GPU, ONNX/OpenVINO pour CPU, ONNX/TensorRT pour Jetson), packaging Docker, première mise en pré-production avec un trafic miroir (les images partent au modèle mais les sorties ne déclenchent pas encore d’action). Mise en place de la collecte de métriques.
Semaine 11+ : exploitation et amélioration continue. Boucle d’amélioration : on collecte les erreurs détectées en production (faux positifs corrigés à la main, faux négatifs signalés par les utilisateurs), on les renvoie dans Roboflow, on regénère un dataset, on ré-entraîne, on redéploie. Cette boucle est la vraie source de la qualité. Un modèle qui ne profite pas d’une boucle d’amélioration continue se dégrade lentement, surtout dans les domaines où la donnée évolue (saisons, mode, nouveaux types d’objets dans le champ).
Pièges fréquents à éviter
| Erreur | Cause | Solution |
|---|---|---|
| mAP excellent en validation, médiocre en production | Distribution des images d’entraînement trop éloignée de la production | Collecter des images directement depuis les caméras de production, ré-entraîner sur ce sous-ensemble. |
| Latence x3 entre PyTorch et la cible déployée | Inférence laissée en FP32 ou pré-traitement Python non vectorisé | Exporter en TensorRT FP16, vérifier que le pré-traitement utilise cv2 ou torch sur GPU. |
| Crash CUDA out-of-memory à l’entraînement | Taille de batch trop grande pour la VRAM disponible | Réduire batch, utiliser amp=True, ou diminuer la taille d’image à 480. |
| Annotations Roboflow non chargées par YOLO | Mauvais format dans data.yaml — chemins relatifs incorrects |
Utiliser l’export YOLO v11 PyTorch direct depuis Roboflow. |
| Modèle qui détecte une classe absente du jeu d’entraînement | Label leakage : classe apprise via biais de fond | Diversifier les arrière-plans, vérifier les activation maps. |
| License AGPL-3.0 incompatible avec un produit propriétaire | Distribution d’un binaire embarquant Ultralytics sans publier le code | Acheter une licence Ultralytics Enterprise. |
FAQ
Q : YOLO v11 est-il compatible avec mes anciens scripts YOLOv8 ?
R : Oui, l’API Python est rétro-compatible. Il suffit de changer le nom du checkpoint chargé. Les checkpoints eux-mêmes ne sont pas interchangeables — il faut ré-entraîner ou repartir des poids COCO YOLO v11.
Q : Faut-il choisir YOLO v11 ou YOLO26 pour un nouveau projet ?
R : YOLO v11 reste la valeur sûre fin 2026 : écosystème mature, plus de tutoriels, plus de retours en production. YOLO26 apporte des gains intéressants surtout sur CPU et en latence end-to-end sans NMS, à privilégier si ces axes sont critiques.
Q : Est-il possible d’entraîner YOLO v11 sans GPU ?
R : Techniquement oui, mais ce n’est pas raisonnable au-delà d’un dataset jouet. Les sessions d’entraînement gratuites sur Google Colab ou Kaggle Notebooks (T4 gratuit, 30 heures/semaine) sont la voie la plus accessible pour démarrer sans investir.
Q : Quelle taille de dataset prévoir pour une nouvelle classe métier ?
R : Cinq cents images annotées de bonne qualité par classe permettent d’atteindre un seuil utilisable pour la majorité des cas industriels. Mille à deux mille images par classe représentent un point d’inflexion où la mAP cesse de progresser linéairement.
Q : Roboflow est-il indispensable ou peut-on utiliser Label Studio / CVAT ?
R : Indispensable, non. Mais l’intégration native avec Ultralytics et l’API Python font gagner plusieurs heures d’écriture de scripts par projet. Sur des données sensibles, CVAT auto-hébergé reste le choix de référence.
Q : Comment gérer la confidentialité des images d’entraînement ?
R : Roboflow propose des espaces privés. Pour des données critiques (visages, plaques d’immatriculation, données médicales), héberger l’annotation sur une instance CVAT interne est plus prudent. Floutage automatique des visages avant l’entraînement est une bonne pratique de base.
Q : Quel framework de servage choisir pour la production ?
R : FastAPI couvre 80 % des besoins (latence, batching basique, endpoint REST). NVIDIA Triton Inference Server entre en jeu dès que l’on parle de mutualisation de plusieurs modèles, batch dynamique et multi-instance GPU.
Pour aller plus loin
- Documentation officielle YOLO v11 : docs.ultralytics.com/models/yolo11
- Quickstart Ultralytics : docs.ultralytics.com/quickstart
- Roboflow Universe : universe.roboflow.com
- NVIDIA Jetson Orin : developer.nvidia.com/embedded/jetson-orin
- ONNX Runtime : onnxruntime.ai
- WebGPU specification : w3.org/TR/webgpu
- Article arXiv comparatif YOLO26 / YOLO v11 / YOLOv8 : arXiv:2510.09653
Une fois cette vue d’ensemble assimilée, le point d’entrée le plus rapide reste le tutoriel Installer YOLO v11 et Ultralytics, suivi de l’entraînement sur un dataset Roboflow.