Découvrez la rapidité et l'efficacité des détecteurs d'objets à un étage comme YOLO, idéaux pour les applications en temps réel telles que la robotique et la surveillance.
Les détecteurs d'objets en une étape sont une catégorie de modèles d'apprentissage profond optimisés pour la rapidité et l'efficacité. d'apprentissage profond (DL) optimisés pour la vitesse et l'efficacité vitesse et l'efficacité dans les tâches de vision par ordinateur (VA). Contrairement aux détecteurs d'objets en deux étapes, qui séparent le processus de détection en phases de proposition de région et de classification, les architectures à une étape effectuent la détection d'objets en un seul passage d'évaluation. détection d'objets en une seule passe d'évaluation. En en présentant la tâche comme un problème de régression directe, ces modèles prédisent les boîtes englobantes et les probabilités de classe simultanément à partir des images d'entrée. Cette approche simplifiée permet un traitement nettement plus rapide, ce qui en fait le choix privilégié pour les applications exigeant un traitement rapide. pour les applications nécessitant une d'inférence en temps réel.
Au cœur d'un détecteur à un étage se trouve un réseau neuronal convolutif (CNN) qui sert de colonne vertébrale à l'extraction l 'extraction des caractéristiques. Le réseau traite l'ensemble de l'image en une seule fois, d'où le nom "You Only Look Once". Le réseau traite l'ensemble de l'image en une seule fois - d'où le nom "You Only Look Once" - et crée une grille de cartes de caractéristiques. Les premières Les premières architectures, telles que le Single Shot MultiBox Detector (SSD), s'appuyaient sur des boîtes d'ancrage prédéfinies pour traiter les objets d'une certaine taille. sur des boîtes d'ancrage prédéfinies pour traiter les objets de différentes échelles. Cependant, les itérations modernes telles que Ultralytics YOLO11 ont largement adopté des conceptions sans ancrage pour réduire la complexité et pour réduire la complexité et améliorer la généralisation. Le résultat comprend généralement des coordonnées pour la localisation et un score de confiance indiquant la probabilité d'une erreur. de confiance indiquant la probabilité de présence d'un présence d'un objet.
La principale distinction entre les modèles à une étape et les modèles à deux étapes réside dans le compromis entre la vitesse et la précision. Les architectures à deux niveaux, telles que la famille R-CNN, offrent généralement offrent généralement une plus grande précision pour les objets de petite taille ou occultés, mais entraînent des coûts de calcul plus élevés en raison de leur processus en plusieurs étapes. À l'inverse, les détecteurs à une étape privilégient une faible latence d'inférence, ce qui permet de les déployer sur des ordinateurs portables. faible latence d'inférence, ce qui permet un sur du matériel aux ressources limitées. Des progrès récents, notamment l'évolution de YOLOv1 dans le futur YOLO26 (prévu pour la fin de l'année 2025), utilisent l'entraînement de bout en bout et des fonctions de perte avancées pour réduire l'écart de précision entre les détecteurs et les détecteurs. de bout en bout et des fonctions de perte avancées pour de précision, égalant ou dépassant souvent les modèles à deux niveaux.
L'efficacité des détecteurs à un étage favorise l'innovation dans de nombreux secteurs où la réactivité immédiate est essentielle. immédiate :
Pour garantir la précision des résultats, ces modèles prévoient souvent plusieurs boîtes potentielles pour un seul objet. Les techniques de post-traitement comme le suppression non maximale (NMS) filtrent ces prédictions redondantes en se basant sur l'intersection sur l'union (IoU) seuils. L'implémentation d'un détecteur à une étape est simple avec des bibliothèques modernes comme PyTorch et le paquetage Python Ultralytics Python .
L'exemple suivant montre comment exécuter l'inférence à l'aide d'un modèle YOLO11 pré-entraîné :
from ultralytics import YOLO
# Load the YOLO11 model, a state-of-the-art one-stage detector
model = YOLO("yolo11n.pt")
# Run inference on a local image or URL
results = model("https://ultralytics.com/images/bus.jpg")
# Display the detected objects with bounding boxes
results[0].show()