You Only Look Once (YOLO) est une série de systèmes de détection d'objets en temps réel basés sur des réseaux de neurones convolutifs. Introduit pour la première fois par Joseph Redmon et ses collègues en 2015, YOLO a subi plusieurs itérations et améliorations, devenant l'un des frameworks de détection d'objets les plus populaires. Le nom « You Only Look Once » fait référence au fait que l'algorithme ne nécessite qu'un seul passage de propagation avant à travers le réseau de neurones pour faire des prédictions, contrairement aux techniques précédentes basées sur des propositions de régions comme R-CNN qui en nécessitent des milliers pour une seule image.
YOLO cadre la détection d'objets comme un problème de régression unique, prédisant directement les coordonnées des boîtes englobantes et les probabilités de classe à partir des pixels de l'image. Cette architecture unifiée permet des vitesses de traitement en temps réel tout en maintenant une précision compétitive, ce qui la rend adaptée à des applications telles que la surveillance vidéo, la conduite autonome et la robotique.
Vue d'ensemble
Par rapport aux méthodes précédentes comme R-CNN et OverFeat, au lieu d'appliquer le modèle à une image à plusieurs emplacements et échelles, YOLO applique un seul réseau de neurones à l'image complète. Ce réseau divise l'image en régions et prédit des boîtes englobantes et des probabilités pour chaque région. Ces boîtes englobantes sont pondérées par les probabilités prédites.
L'approche s'inspire des idées de apprentissage profond et de réseaux de neurones, en particulier des architectures convolutives qui se sont révélées efficaces dans les tâches de vision par ordinateur. La conception de YOLO privilégie la vitesse et la simplicité, sacrifiant une certaine précision de localisation au profit d'une efficacité computationnelle significative.
OverFeat
OverFeat était un modèle influent précoce pour la classification et la localisation simultanées d'objets. Son architecture est la suivante :
- Entraîner un réseau de neurones pour la classification d'images uniquement (« réseau entraîné pour la classification »), comme AlexNet.
- Supprimer la dernière couche du réseau entraîné, et pour chaque classe d'objets possible, initialiser un module de réseau à la dernière couche (« réseau de régression »). Le réseau de base a ses paramètres figés. Le réseau de régression est entraîné à prédire les coordonnées (x, y) de deux coins de la boîte englobante de l'objet.
- Pendant l'inférence, exécuter le réseau entraîné pour la classification sur la même image à de nombreux niveaux de zoom et recadrages différents. Pour chacun, il produit une étiquette de classe et une probabilité. Chaque sortie est ensuite traitée par le réseau de régression de la classe correspondante, résultant en des milliers de boîtes englobantes avec des étiquettes de classe et des probabilités. Ces boîtes sont fusionnées jusqu'à ce qu'une seule boîte avec une seule étiquette de classe reste.
OverFeat a démontré la faisabilité de l'apprentissage de bout en bout pour la détection, mais restait coûteux en calcul en raison de sa procédure d'inférence multi-échelle. YOLO a simplifié cela en effectuant la détection en un seul passage.
Versions
Il y a deux parties dans la série YOLO. La partie originale contenait YOLOv1, v2 et v3, toutes publiées sur un site web maintenu par Joseph Redmon. Les versions ultérieures (v4 et au-delà) ont été développées par d'autres chercheurs et maintenues séparément.
YOLOv1
L'algorithme YOLO original, introduit en 2015, divise l'image en une grille S x S de cellules. Si le centre de la boîte englobante d'un objet tombe dans une cellule de la grille, cette cellule est dite « contenir » cet objet. Chaque cellule de la grille prédit B boîtes englobantes et des scores de confiance pour ces boîtes. Ces scores de confiance reflètent à quel point le modèle est confiant que la boîte contient un objet et à quel point il pense que la boîte qu'il prédit est précise.
Plus en détail, le réseau effectue la même opération convolutive sur chacun des S^2 patchs. La sortie du réseau sur chaque patch est un tuple (p_1, ..., p_C, c_1, x_1, y_1, w_1, h_1, ..., c_B, x_B, y_B, w_B, h_B), où p_i est la probabilité conditionnelle que la cellule contienne un objet de classe i, conditionnellement au fait que la cellule contienne au moins un objet. Les termes x_j, y_j, w_j, h_j sont les coordonnées du centre, la largeur et la hauteur de la j-ième boîte englobante prédite centrée dans la cellule. Plusieurs boîtes englobantes sont prédites pour permettre à chaque prédiction de se spécialiser dans un type de boîte englobante. Le terme c_j est l'intersection sur union (IoU) prédite de chaque boîte englobante avec sa vérité terrain correspondante.
L'architecture du réseau comporte 24 couches convolutives suivies de 2 couches entièrement connectées. Pendant l'entraînement, pour chaque cellule qui contient une boîte englobante de vérité terrain, seule la boîte englobante prédite avec l'IoU la plus élevée avec la vérité terrain est utilisée pour la descente de gradient. Les coordonnées de la boîte sélectionnée sont entraînées à se rapprocher de la vérité terrain, la probabilité de classe pour la classe correcte est entraînée vers 1, et les autres probabilités de classe sont entraînées vers zéro. Les cellules sans objets de vérité terrain ne contribuent qu'à la perte du score de confiance, poussant la confiance vers zéro.
YOLOv2 et YOLOv3
YOLOv2, publié en 2016, a introduit la normalisation par lots, les boîtes d'ancrage et une stratégie d'entraînement multi-échelle, améliorant le rappel et la précision de localisation. Il utilisait également une architecture personnalisée darknet-19 et pouvait fonctionner jusqu'à 67 images par seconde sur un GPU. YOLOv3, publié en 2018, a ajouté un réseau de pyramide de caractéristiques avec trois échelles de détection, permettant une meilleure gestion des petits objets. Il utilisait un backbone darknet-53 plus profond et une régression logistique pour la prédiction de classe.
Versions ultérieures
YOLOv4, publié en 2020 par Alexey Bochkovskiy et ses collègues, a incorporé CSPDarknet53, PANet et l'augmentation de données en mosaïque, atteignant des compromis de vitesse et de précision à la pointe de la technologie. YOLOv5, YOLOv6, YOLOv7 et YOLOv8 ont suivi, avec des améliorations en efficacité, déploiement sur des appareils de périphérie et prise en charge de tâches au-delà de la détection, telles que la segmentation d'instances et l'estimation de pose. Ces versions ultérieures sont maintenues par différents groupes, y compris Ultralytics pour YOLOv5 et YOLOv8.
Applications et impact
YOLO a été largement adopté dans l'industrie et le monde académique en raison de ses capacités en temps réel. Il est utilisé dans Tesla Autopilot pour la détection d'objets dans la conduite autonome, dans les véhicules autonomes de Waymo et dans la flotte de robotaxis de Cruise. Il alimente également des applications dans Amazon Web Services Rekognition et Google Cloud Vision pour l'analyse d'images. Dans la recherche en intelligence artificielle, YOLO sert de référence pour comparer de nouvelles méthodes de détection et a inspiré de nombreuses variantes et extensions.
L'efficacité du framework l'a rendu populaire pour les déploiements embarqués et mobiles, y compris sur des appareils de Apple, Samsung Electronics et Qualcomm. Ses implémentations open source, en particulier les versions darknet et PyTorch, ont contribué à son utilisation généralisée dans l'éducation et le prototypage en apprentissage automatique.
Limitations et orientations futures
Malgré ses forces, YOLO a des limitations. Il peut avoir du mal avec les petits objets et les instances qui se chevauchent par rapport aux détecteurs en deux étapes comme Faster R-CNN. Sa nature à passage unique le rend également moins flexible pour les tâches nécessitant un raffinement itératif. Les chercheurs ont abordé ces problèmes par des changements architecturaux, tels que des mécanismes d'attention et des backbones basés sur des transformeurs, s'alignant sur les tendances des transformeurs et des grands modèles de langage pour les tâches de vision.
Les travaux futurs continuent de se concentrer sur l'amélioration des compromis précision-vitesse, la robustesse aux changements de domaine et l'intégration avec d'autres modalités comme la profondeur et le lidar. À mesure que le matériel s'améliore, y compris les accélérateurs spécialisés comme les systèmes AWS Trainium et Cerebras, les modèles basés sur YOLO devraient rester pertinents pour la perception en temps réel dans les pipelines d'IA générative et au-delà.