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 plonger dans les innovations qui font de YOLOv9 un nouveau référence pour la détection d’objets en temps réel.
Un aperçu rapide de la détection d’objets
Avant de voir 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 dans 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 en 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égions, 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 partie de la précision pour des temps d’inférence très rapides.
YOLO a initié l’approche à une étape. Voyons comment elle a évolué au fil des versions pour améliorer la précision et l’efficacité.
Bilans 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 l’évolution de YOLO au fil des 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é l’original 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 des tailles multiples, 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 améliorer encore la précision tout en maintenant des temps d’inférence rapides.
- YOLOv5 a réécrit 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.
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 du pré-entraînement. 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 des 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 précision élevée 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 vers des modèles de plus en plus grands augmente également le risque de sur-apprentissage et rend plus difficile la généralisation.
Il faut donc améliorer l’efficacité pour élargir l’applicabilité de la détection d’objets. Voyons 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 large gamme 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.
Voyons comment chaque amélioration aide à améliorer l’efficacité.
Architecture plus efficace avec GELAN
L’architecture du modèle elle-même est critique pour équilibrer la précision avec la vitesse et l’utilisation des ressources pendant l’inférence. Le réseau de neurones nécessite une profondeur et une largeur suffisantes 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 encombrants.
Les auteurs ont conçu GELAN spécifiquement pour extraire la précision maximale d’une architecture aussi petite que possible.
GELAN utilise deux blocs de construction principaux empilés ensemble :
- 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 l’information à travers les couches. Tout bloc peut être substitué en fonction des contraintes de calcul.
En équilibrant et en combinant soigneusement ces blocs, GELAN atteint un point d’équilibre entre performances, paramètres et 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-Small avec 7M de paramètres a surpassé YOLOv7-Nano avec 11M de paramètres. Et GELAN-Medium avec 20M de paramètres a performé au même niveau que 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 des modèles plus petits causés par des informations de gradient peu fiables.
Les gradients déterminent à quel point les poids du 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 aborde ce problème 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 plus légers.

YOLOv9 : Apprentissage de 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 a deux composants principaux :
- Branches réversibles auxiliaires – Ceux-ci fournissent des gradients plus propres en maintenant des connexions réversibles vers l’entrée à l’aide de blocs comme RevCols.
- 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.
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 améliore la précision sur toutes les configurations de YOLOv9, en particulier les plus petites.
YOLOv9 établit un nouveau référence pour l’efficacité
En combinant les avancées architecturales de GELAN avec les améliorations d’entraînement de PGI, YOLOv9 atteint une efficacité et des performances sans précédent :
- 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 améliore considérablement la vitesse et les capacités 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 des FLOPs. Il nécessite nettement moins de ressources pour atteindre un niveau de performance donné.
- Les modèles YOLOv9 plus petits battent même les modèles plus lourds pré-entraînés comme RT-DETR-X. Malgré 36 % moins de paramètres, YOLOv9-E atteint 55,6 % de précision grâce à des architectures plus efficaces.
Ainsi, en abordant l’efficacité aux niveaux de l’architecture et de l’entraînement, YOLOv9 établit un nouveau référence 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 minimal. Il s’appuie sur les modèles YOLO précédents mais optimise les différents composants spécifiquement pour l’efficacité.

YOLOv9 : Apprentissage de 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 version 5 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 les cartes de fonctionnalités à travers les branches parallèles du réseau tout en ajoutant une surcharge minimale :
Ceci est plus efficace que de simplement empiler les couches de manière sérielle, ce qui souvent conduit à 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 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 étaient fixes. GELAN permet de substituer n’importe quel bloc de calcul comme ResNets ou CSPNet, offrant plus d’options architecturales.
- Paramétrisation en profondeur – Les profondeurs de bloc séparées pour la branche principale par rapport à la branche d’agrégation simplifient la fine-tuning de l’utilisation des ressources.
- Performances stables sur différentes configurations – GELAN maintient la précision avec différents types de blocs et profondeurs, 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-Small avec 7M de paramètres bat YOLOv7-Nano avec 11M de paramètres
- GELAN-Medium égale 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é 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é réduite.
Les réseaux très profonds aggravent ce problème à 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, provoquant des interférences et des divergences entre les différentes branches.
Il faut donc trouver un moyen de fournir des gradients fiables qui fonctionnent sur toutes les tailles de modèles, en particulier les plus petites.
Présentation de l’information de gradient programmable (PGI)
Pour résoudre le problème des gradients peu fiables, YOLOv9 propose l’Information de gradient programmable (PGI). PGI a deux composants principaux conçus pour améliorer la qualité des gradients :
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 améliore la précision pour les configurations petites et grandes de YOLOv9 par rapport au GELAN de base :
- +0,1-0,4 % de précision pour YOLOv9-Small
- +0,5-0,6 % de précision pour les modèles YOLOv9 plus grands
Ainsi, les gradients programmables de PGI permettent aux modèles, petits et grands, de s’entraîner plus efficacement.
YOLOv9 établit un nouveau référence pour la précision
En combinant les améliorations architecturales de GELAN et les avancées d’entraînement de PGI, YOLOv9 atteint de nouveaux résultats de référence pour la détection d’objets en temps réel.
Les expériences sur l’ensemble de données COCO montrent YOLOv9 surpassant les versions précédentes de YOLO, ainsi que d’autres détecteurs en temps réel comme YOLO-MS, en termes de précision et d’efficacité :
Quelques points clés :
- YOLOv9-Small dépasse YOLO-MS-Small avec 10 % moins de paramètres et de calculs
- YOLOv9-Medium égale les modèles YOLOv7 plus lourds en utilisant moins de la moitié des ressources
- YOLOv9-Large surpasse YOLOv8-X avec 15 % moins de paramètres et 25 % moins de FLOPs
De manière remarquable, les modèles YOLOv9 plus petits surpassent même les modèles plus lourds d’autres détecteurs qui utilisent un pré-entraînement comme RT-DETR-X. Malgré 4 fois moins de paramètres, YOLOv9-E surpasse 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.
Principales conclusions sur les mises à jour de YOLOv9
Récapitulons rapidement certaines des mises à jour et innovations clés qui permettent aux performances de YOLOv9 d’atteindre un nouveau référence :
- 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 fiables à travers 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 nouveau référence pour les configurations de modèles légers, moyens et lourds. Surpasse les modèles pré-entraînés lourds.
- Applicabilité élargie – Une efficacité accrue élargit les cas d’utilisation viables, comme la détection en temps réel sur les appareils de bord.
En abordant directement la précision, l’efficacité et l’applicabilité, YOLOv9 fait progresser la détection d’objets pour répondre à des besoins réels divers. Les mises à jour fournissent une base solide pour les innovations futures dans cette capacité de vision par ordinateur critique.












