Intelligence artificielle
YOLOv9 : Un bond en avant dans la détection d’objets en temps réel
La détection d’objets a connu une avancée rapide ces dernières années grâce aux algorithmes d’apprentissage profond comme YOLO (You Only Look Once). La dernière itération, YOLOv9, apporte des améliorations majeures en termes de précision, d’efficacité et d’applicabilité par rapport aux versions précédentes. Dans cet article, nous allons examiner les innovations qui font de YOLOv9 un nouvel état de l’art pour la détection d’objets en temps réel.
Une brève introduction à la détection d’objets
Avant de plonger dans ce qui est nouveau avec YOLOv9, résumons brièvement comment fonctionne la détection d’objets. L’objectif de la détection d’objets est d’identifier et de localiser les objets à l’intérieur d’une image, comme des voitures, des personnes ou des animaux. Il s’agit d’une capacité clé pour des applications comme les voitures autonomes, les systèmes de surveillance et la recherche d’images.
Le détecteur prend une image comme entrée et produit des boîtes de délimitation autour des objets détectés, chacune avec une étiquette de classe associée. Des ensembles de données populaires comme MS COCO fournissent des milliers d’images étiquetées pour entraîner et évaluer ces modèles.
Il existe deux approches principales pour la détection d’objets :
- Détecteurs à deux étapes comme Faster R-CNN génèrent d’abord des propositions de région, puis classifient et affinent les limites de chaque région. Ils tendent à être plus précis mais plus lents.
- Détecteurs à une étape comme YOLO appliquent un modèle directement sur l’image en une seule passe. Ils échangent une certaine précision pour des temps d’inférence très rapides.
YOLO a été pionnier dans l’approche à une étape. Examinons comment il a évolué au fil de multiples versions pour améliorer la précision et l’efficacité.
Examen des versions précédentes de YOLO
La famille de modèles YOLO (You Only Look Once) a été à la pointe de la détection d’objets rapide depuis la publication de la version originale en 2016. Voici un aperçu rapide de la façon dont YOLO a progressé au fil de multiples itérations :
- YOLOv1 a proposé un modèle unifié pour prédire des boîtes de délimitation et des probabilités de classe directement à partir d’images complètes en une seule passe. Cela l’a rendu extrêmement rapide par rapport aux modèles à deux étapes précédents.
- YOLOv2 a amélioré la version originale en utilisant la normalisation par lots pour une meilleure stabilité, en ancrant des boîtes à différentes échelles et rapports d’aspect pour détecter plusieurs tailles, et une variété d’autres optimisations.
- YOLOv3 a ajouté un nouvel extracteur de fonctionnalités appelé Darknet-53 avec plus de couches et de raccourcis entre elles, améliorant ainsi la précision.
- YOLOv4 a combiné des idées d’autres détecteurs d’objets et de modèles de segmentation pour pousser la précision encore plus haut tout en maintenant une inférence rapide.
- YOLOv5 a réécrit intégralement YOLOv4 en PyTorch et a ajouté un nouvel extracteur de fonctionnalités appelé CSPDarknet ainsi que plusieurs autres améliorations.
- YOLOv6 a continué à optimiser l’architecture et le processus d’entraînement, avec des modèles pré-entraînés sur de grands ensembles de données externes pour améliorer les performances encore plus.
En résumé, les versions précédentes de YOLO ont atteint une précision plus élevée grâce à des améliorations de l’architecture du modèle, des techniques d’entraînement et de la pré-entraîne. Mais à mesure que les modèles deviennent plus grands et plus complexes, la vitesse et l’efficacité commencent à souffrir.
Le besoin d’une meilleure efficacité
De nombreuses applications nécessitent que la détection d’objets s’exécute en temps réel sur des appareils avec des ressources de calcul limitées. À mesure que les modèles deviennent plus grands et plus gourmands en calcul, ils deviennent impraticables à déployer.
Par exemple, une voiture autonome a besoin de détecter des objets à des taux de trames élevés en utilisant les processeurs à l’intérieur du véhicule. Une caméra de sécurité a besoin d’exécuter la détection d’objets sur son flux vidéo à l’aide de son matériel intégré. Les téléphones et autres appareils grand public ont des contraintes de puissance et thermiques très serrées.
Les versions récentes de YOLO obtiennent une grande précision avec un grand nombre de paramètres et d’opérations de multiplication-addition (FLOPs). Mais cela se fait au détriment de la vitesse, de la taille et de l’efficacité énergétique.
Par exemple, YOLOv5-L nécessite plus de 100 milliards de FLOPs pour traiter une seule image de 1280×1280. C’est trop lent pour de nombreux cas d’utilisation en temps réel. La tendance des modèles de plus en plus grands augmente également le risque de sur-ajustement et rend plus difficile la généralisation.
Ainsi, pour élargir l’applicabilité de la détection d’objets, nous devons améliorer l’efficacité – obtenir une meilleure précision avec moins de paramètres et de calculs. Examinons les techniques utilisées dans YOLOv9 pour relever ce défi.
YOLOv9 – Meilleure précision avec moins de ressources
Les chercheurs derrière YOLOv9 se sont concentrés sur l’amélioration de l’efficacité pour atteindre des performances en temps réel sur une plus grande variété d’appareils. Ils ont introduit deux innovations clés :
- Une nouvelle architecture de modèle appelée Réseau d’agrégation de couches efficace généralisé (GELAN) qui maximise la précision tout en minimisant les paramètres et les FLOPs.
- Une technique d’entraînement appelée Information de gradient programmable (PGI) qui fournit des gradients d’apprentissage plus fiables, en particulier pour les modèles plus petits.
Examinons comment chacune de ces avancées améliore l’efficacité.
Architecture plus efficace avec GELAN
L’architecture du modèle elle-même est cruciale pour équilibrer la précision avec la vitesse et l’utilisation des ressources pendant l’inférence. Le réseau de neurones nécessite suffisamment de profondeur et de largeur pour capturer les fonctionnalités pertinentes à partir des images d’entrée. Mais trop de couches ou de filtres entraînent des modèles lents et gonflés.
Les auteurs ont conçu GELAN spécifiquement pour extraire la précision maximale de l’architecture la plus petite possible.
GELAN utilise deux blocs de construction principaux empilés :
- Blocs d’agrégation de couches efficaces – Ceux-ci agrègent les transformations à travers plusieurs branches du réseau pour capturer des fonctionnalités multi-échelles de manière efficace.
- Blocs de calcul – Les blocs CSPNet aident à propager les informations à travers les couches. Tout bloc peut être substitué en fonction des contraintes de calcul.
En équilibrant soigneusement et en combinant ces blocs, GELAN atteint un point d’équilibre entre les performances, les paramètres et la vitesse. La même architecture modulaire peut être mise à l’échelle vers le haut ou vers le bas sur différents tailles de modèles et matériel.
Les expériences ont montré que GELAN intègre plus de performances dans des modèles plus petits par rapport aux architectures YOLO précédentes. Par exemple, GELAN-Petit avec 7M de paramètres a surpassé YOLOv7-Nano avec 11M de paramètres. Et GELAN-Moyen avec 20M de paramètres a performé au pair avec les modèles YOLOv7 moyens nécessitant 35-40M de paramètres.
Ainsi, en concevant une architecture paramétrée spécifiquement optimisée pour l’efficacité, GELAN permet aux modèles de s’exécuter plus rapidement et sur plus d’appareils à ressources limitées. Ensuite, nous allons voir comment PGI les aide à s’entraîner mieux.
Meilleur entraînement avec l’information de gradient programmable (PGI)
L’entraînement du modèle est tout aussi important pour maximiser la précision avec des ressources limitées. Les auteurs de YOLOv9 ont identifié des problèmes d’entraînement de modèles plus petits causés par des informations de gradient peu fiables.
Les gradients déterminent à quel point les poids d’un modèle sont mis à jour pendant l’entraînement. Des gradients bruyants ou trompeurs entraînent une mauvaise convergence. Ce problème devient plus prononcé pour les réseaux plus petits.
La technique de supervision profonde répond à cela en introduisant des branches latérales supplémentaires avec des pertes pour propager un meilleur signal de gradient à travers le réseau. Mais elle tend à se dégrader et à causer une divergence pour les modèles légers.

YOLOv9 : Apprendre ce que vous voulez apprendre en utilisant l’information de gradient programmable https://arxiv.org/abs/2402.13616
Pour surmonter cette limitation, YOLOv9 introduit l’information de gradient programmable (PGI). PGI comporte deux composants principaux conçus pour améliorer la qualité du gradient :
- Branches réversibles auxiliaires – Ces branches fournissent des connexions réversibles vers l’entrée en utilisant des blocs comme RevCols. Cela maintient des gradients propres en évitant le goulet d’étranglement d’information.
- Intégration de gradient multi-niveaux – Un bloc de fusion agrège les gradients de toutes les branches avant de les réinjecter dans le modèle principal. Cela empêche la divergence entre les branches.
En générant des gradients plus fiables, PGI améliore la convergence et l’efficacité de l’entraînement sur toutes les tailles de modèles :
Les expériences ont montré que PGI a amélioré la précision pour les petites et les grandes configurations de YOLOv9 par rapport au GELAN de base :
- +0,1-0,4% AP pour YOLOv9-Petit
- +0,5-0,6% AP pour les plus grands modèles YOLOv9
Ainsi, les gradients programmables de PGI permettent aux modèles, grands et petits, de s’entraîner plus efficacement.
YOLOv9 établit un nouvel état de l’art pour l’efficacité
En combinant les avancées architecturales de GELAN et les améliorations d’entraînement de PGI, YOLOv9 atteint des résultats sans précédent en termes d’efficacité et de performance :
- Par rapport aux versions précédentes de YOLO, YOLOv9 obtient une meilleure précision avec 10-15% moins de paramètres et 25% moins de calculs. Cela apporte des améliorations majeures en termes de vitesse et de capacité sur toutes les tailles de modèles.
- YOLOv9 dépasse les autres détecteurs en temps réel comme YOLO-MS et RT-DETR en termes d’efficacité des paramètres et de FLOPs. Il nécessite beaucoup moins de ressources pour atteindre un niveau de performance donné.
- Les plus petits modèles YOLOv9 surpassent même les plus grands modèles pré-entraînés comme RT-DETR-X. Malgré 36% moins de paramètres, YOLOv9-E atteint 55,6% AP grâce à des architectures plus efficaces.
Ainsi, en abordant l’efficacité au niveau de l’architecture et de l’entraînement, YOLOv9 établit un nouvel état de l’art pour maximiser les performances dans les ressources contraintes.
GELAN – Architecture optimisée pour l’efficacité
YOLOv9 introduit une nouvelle architecture appelée Réseau d’agrégation de couches efficace généralisé (GELAN) qui maximise la précision dans un budget de paramètres minimum. Il s’appuie sur les modèles YOLO précédents mais optimise les différents composants spécifiquement pour l’efficacité.

YOLOv9 : Apprendre ce que vous voulez apprendre en utilisant l’information de gradient programmable
https://arxiv.org/abs/2402.13616
Contexte sur CSPNet et ELAN
Les versions récentes de YOLO depuis la v5 ont utilisé des backbones basés sur le Réseau de partie croisée (CSPNet) pour améliorer l’efficacité. CSPNet permet d’agréger des cartes de fonctionnalités à travers des branches de réseau parallèles tout en ajoutant une surcharge minimale :
Ceci est plus efficace que de simplement empiler des couches de manière sérielle, ce qui entraîne souvent des calculs redondants et une sur-paramétrisation.
YOLOv7 a amélioré CSPNet en Réseau d’agrégation de couches efficace (ELAN), qui a simplifié la structure de bloc :
ELAN a supprimé les connexions de raccourci entre les couches en faveur d’un nœud d’agrégation à la sortie. Cela a encore amélioré l’efficacité des paramètres et des FLOPs.
Généralisation d’ELAN pour une efficacité flexible
Les auteurs ont généralisé ELAN encore plus pour créer GELAN, le backbone utilisé dans YOLOv9. GELAN a apporté des modifications clés pour améliorer la flexibilité et l’efficacité :
- Blocs de calcul interchangeables – Les couches de convolution précédentes d’ELAN étaient fixes. GELAN permet de substituer n’importe quel bloc de calcul comme ResNets ou CSPNet, offrant plus d’options architecturales.
- Paramétrisation de la profondeur – Les profondeurs de bloc séparées pour la branche principale par rapport à la branche d’agrégation simplifient la mise à jour fine des ressources.
- Performances stables sur différentes configurations – GELAN maintient la précision avec différents types et profondeurs de bloc, permettant une mise à l’échelle flexible.
Ces changements font de GELAN un backbone solide mais configurable pour maximiser l’efficacité :
Les expériences ont montré que les modèles GELAN surpassent régulièrement les architectures YOLO précédentes en termes de précision par paramètre :
- GELAN-Petit avec 7M de paramètres a battu YOLOv7-Nano avec 11M de paramètres
- GELAN-Moyen a égalé les modèles YOLOv7 moyens plus lourds
Ainsi, GELAN fournit un backbone optimisé pour mettre à l’échelle YOLO sur différents objectifs d’efficacité. Ensuite, nous allons voir comment PGI les aide à s’entraîner mieux.
PGI – Entraînement amélioré pour toutes les tailles de modèles
Alors que les choix d’architecture impactent l’efficacité au moment de l’inférence, le processus d’entraînement affecte également l’utilisation des ressources du modèle. YOLOv9 utilise une nouvelle technique appelée Information de gradient programmable (PGI) pour améliorer l’entraînement sur différentes tailles et complexités de modèles.
Le problème des gradients peu fiables
Pendant l’entraînement, une fonction de perte compare les sorties du modèle aux étiquettes de vérité terrain et calcule un gradient d’erreur pour mettre à jour les paramètres. Des gradients bruyants ou trompeurs entraînent une mauvaise convergence et une efficacité.
Les réseaux très profonds exacerbent cela à travers le goulet d’étranglement d’information – les gradients des couches profondes sont corrompus par des signaux perdus ou compressés.
La supervision profonde aide en introduisant des branches latérales auxiliaires avec des pertes pour fournir des gradients plus propres. Mais elle se dégrade souvent pour les modèles plus petits, causant interférence et divergence entre les différentes branches.
Ainsi, nous avons besoin d’un moyen de fournir des gradients fiables qui fonctionne sur toutes les tailles de modèles, en particulier les plus petites.
Présentation de l’information de gradient programmable (PGI)
Pour répondre aux gradients peu fiables, YOLOv9 propose l’Information de gradient programmable (PGI). PGI comporte deux composants principaux conçus pour améliorer la qualité du gradient :
1. Branches réversibles auxiliaires
Des branches supplémentaires fournissent des connexions réversibles vers l’entrée en utilisant des blocs comme RevCols. Cela maintient des gradients propres en évitant le goulet d’étranglement d’information.
2. Intégration de gradient multi-niveaux
Un bloc de fusion agrège les gradients de toutes les branches avant de les réinjecter dans le modèle principal. Cela empêche la divergence entre les branches.
En générant des gradients plus fiables, PGI améliore la convergence et l’efficacité de l’entraînement sur toutes les tailles de modèles :
- Modèles légers bénéficient de la supervision profonde qu’ils ne pouvaient pas utiliser auparavant
- Modèles plus grands obtiennent des gradients plus propres, permettant une meilleure généralisation
Les expériences ont montré que PGI a amélioré la précision pour les petites et les grandes configurations de YOLOv9 par rapport au GELAN de base :
- +0,1-0,4% AP pour YOLOv9-Petit
- +0,5-0,6% AP pour les plus grands modèles YOLOv9
Ainsi, les gradients programmables de PGI permettent aux modèles, grands et petits, de s’entraîner plus efficacement.
YOLOv9 établit un nouvel état de l’art pour la précision
En combinant les améliorations architecturales de GELAN et les améliorations d’entraînement de PGI, YOLOv9 atteint de nouveaux résultats sans précédent pour la détection d’objets en temps réel.
Les expériences sur l’ensemble de données COCO montrent que YOLOv9 dépasse les versions précédentes de YOLO, ainsi que les autres détecteurs en temps réel comme YOLO-MS, en termes de précision et d’efficacité :
Certains points clés :
- YOLOv9-Petit dépasse YOLO-MS-Petit avec 10% moins de paramètres et de calculs
- YOLOv9-Moyen égale les modèles YOLOv7 plus lourds en utilisant moins de la moitié des ressources
- YOLOv9-Grand dépasse YOLOv8-X avec 15% moins de paramètres et 25% moins de FLOPs
De manière remarquable, les plus petits modèles YOLOv9 surpassent même les modèles plus lourds d’autres détecteurs qui utilisent la pré-entraîne comme RT-DETR-X. Malgré 4 fois moins de paramètres, YOLOv9-E dépasse RT-DETR-X en précision.
Ces résultats démontrent la supériorité de l’efficacité de YOLOv9. Les améliorations permettent une détection d’objets de haute précision dans plus de cas d’utilisation réels.
Points clés sur les mises à jour de YOLOv9
Résumons rapidement certaines des mises à jour et innovations clés qui permettent aux performances de YOLOv9 d’atteindre un nouvel état de l’art :
- Architecture GELAN optimisée – Améliore l’efficacité des paramètres grâce à des blocs d’agrégation flexibles. Permet de mettre à l’échelle les modèles pour différents objectifs.
- Information de gradient programmable – Fournit des gradients d’apprentissage fiables grâce à des connexions réversibles et à une fusion. Améliore l’entraînement sur toutes les tailles de modèles.
- Meilleure précision avec moins de ressources – Réduit les paramètres et les calculs de 10-15% par rapport à YOLOv8 avec une meilleure précision. Permet une inférence plus efficace.
- Résultats supérieurs sur toutes les tailles de modèles – Établit un nouvel état de l’art pour les configurations de modèles légers, moyens et grands. Surpasse les modèles pré-entraînés plus lourds.
- Applicabilité élargie – Une efficacité plus élevée élargit les cas d’utilisation viables, comme la détection en temps réel sur les appareils périphériques.
En abordant directement la précision, l’efficacité et l’applicabilité, YOLOv9 fait progresser la détection d’objets pour répondre aux besoins réels diversifiés. Les mises à jour fournissent une base solide pour les innovations futures dans cette capacité de vision par ordinateur critique.


