Les actualités du Freelance

Tout comprendre du VGG : histoire, fonctionnement et applications

Publié il y a 6 jours
Tout comprendre du VGG : histoire, fonctionnement et applications

À travers cet article, Freelance Informatique vous dit tout ce qu’il faut savoir sur le VGG, de son histoire à ses applications concrètes, en passant par son fonctionnement et ses différents algorithmes.

Du Deep Learning au VGG

Pour bien comprendre le VGG, il convient de revenir quelques années en arrière pour évoquer le Deep Learning, dont le VGG fait partie intégrante.

Le Deep Learning ou l’apprentissage profond

S’il est apparu dès les premiers temps de l’informatique, le véritable Deep Learning moderne a émergé au tout début des années 2010. Il s’agit d’une méthode d’apprentissage automatique inspirée du fonctionnement du système nerveux humain. Il se différencie du machine learning par l’énorme quantité de données que ses algorithmes lui permettent de gérer.

Ces données sont traitées par des architectures de réseaux de neurones artificiels profonds. Le terme “profonds”, ou “deep”, fait référence au nombre de couches dont sont constituées ces architectures. Cette profondeur permet une haute performance dans la résolution de problèmes complexes faisant intervenir des données de haute dimension. Elle entraîne aussi inévitablement une complexification des modèles.

L’utilisation d’un grand volume de données couplée à une puissance de calcul importante permet d’accomplir des actions très spécifiques, notamment dans les domaines de la reconnaissance d’image, de la reconnaissance vocale, de l’imagerie médicale ou de la robotique.

L’acte de naissance du VGG

C’est dans ce contexte de développement des architectures de réseaux de neurones qu’apparaît en 2014 le VGG. Il s’intègre donc dans la course à l’efficacité et à la simplicité qui caractérise alors le domaine du Deep Learning.

Conçu à l’université d’Oxford par A Zisserman et K Simonyan, il démontre toute sa cohérence lorsqu’il est présenté en 2014 à la conférence de l’ILSVRC (ImageNet Large Scale Visual Recognition Challenge). Confronté aux 14 millions d’images stockées par ImageNet, il obtient une précision de 92,7% dans la classification des images, ce qui reste le meilleur résultat à ce jour pour un algorithme.

Ce score a pu être obtenu grâce à une innovation technique : l’utilisation de noyaux de convolution (ou filtres) de dimensions nettement inférieures à ceux qu’employaient les prédécesseurs du VGG (3x3). Cette réduction de la taille des noyaux de convolution a permis plusieurs améliorations :

  • Augmentation de la profondeur du réseau ;
  • Réduction du nombre de paramètres, minimisant le risque de surapprentissage ;
  • Meilleure représentation des motifs locaux ;
  • Facilité de compréhension et de réplication, l’architecture de VGG s’adaptant donc mieux aux diverses utilisations.

Toutefois, avant d’en venir aux applications concrètes du VGG, il convient de comprendre son fonctionnement précis.

Comprendre le fonctionnement du VGG

Le fonctionnement du VGG repose sur l’utilisation de réseaux de neurones. Ces réseaux sont conçus pour apprendre à partir de données en utilisant des architectures complexes.

Les réseaux de neurones

L’architecture des réseaux de neurones imite le fonctionnement du cerveau humain. Un neurone artificiel est une unité de base qui reçoit des entrées pondérées, les combine à l’aide d’une fonction d’activation et produit une sortie qui est transmise à d’autres neurones.

L’architecture en question se compose de plusieurs couches de neurones artificiels. Celles-ci garantissent une parfaite compréhension et intégration des données à la machine.

Ces couches de neurones sont de trois types :

  • Les couches d’entrée, qui reçoivent les données brutes (images, textes, séquences temporelles) ;
  • Les couches cachées, qui sont responsables de l’extraction des caractéristiques et de l’apprentissage des représentations complexes ;
  • Les couches de sortie, qui produisent la prédiction ou le résultat du modèle.

Elles peuvent être :

  • Des couches denses (ou Fully connected), chaque neurone étant connecté à tous les neurones de la couche précédente ;
  • Des couches de récurrence (RNN ou Recurrent Neural Network), celles-ci maintenant une mémoire de séquence pour capturer les dépendances temporelles ;
  • Des couches de convolution (CNN ou Convolutional Neural Networks), qui appliquent des filtres pour détecter des motifs locaux ;
  • Des couches de pooling, dont l’objet est de réduire la dimensionnalité des données en regroupant les résultats des convolutions, aidant ainsi à extraire les caractéristiques importantes et à réduire le surapprentissage.

Ce sont ces deux derniers types de couches qui vont permettre la conception du VGG.

Architecture du VGG

Le fonctionnement des modèles de VGG se base sur les réseaux neuronaux convolutifs. L’entrée de ces derniers réseaux est composée de données d’image, tandis que la sortie fournit des prédictions de catégorie correspondant aux images d’entrée.

Comme nous l’avons vu précédemment, le VGG utilise des noyaux de convolution d’une taille de 3x3. Il prend en entrée une image de 224x224 et les différentes couches s’appuient sur ces noyaux convolutifs pour découper l’image dans son intégralité.

Chaque couche cachée (essentiellement des couches convolutionnelles et des couches de pooling) extrait ainsi des informations de plus en plus abstraites et complexes à partir des pixels de l’image en entrée. Ces mêmes informations permettent ensuite de reconnaître des motifs et des objets dans l’image finale.

Ces informations atteignent enfin la couche de sortie. Celle-ci attribue des probabilités à différentes classes d’objets, ce qui donne la possibilité au modèle de faire des prédictions sur ce que représente une image donnée.

Les deux algorithmes du VGG

Il existe deux algorithmes VGG préentraînés, le premier prenant en charge 16 couches (on parle alors de VGG16) et le second 19 couches (VGG19). Les deux algorithmes fonctionnent sensiblement de la même façon. Le VGG19 possède simplement 3 couches convolutionnelles supplémentaires.

Le VGG16 dispose d’environ 138 millions de paramètres et présente une architecture simple et uniforme. Le nombre de filtres est de 64, mais il est possiblement doublé pour atteindre d‘abord 128, puis 256 et enfin 512 filtres dans les dernières couches. En outre, avec ses 13 couches convolutionnelles et ses 3 couches connectées, sa structure brille par sa simplicité.

L’architecture du VGG19 est un peu plus complexe en raison des 3 couches supplémentaires. S’il nécessite en conséquence plus de ressources en termes de calcul et de mémoire, il est aussi plus performant notamment grâce aux 144 millions de paramètres qu’il possède. Sa profondeur plus importante permet de mieux capturer les caractéristiques complexes.

Créer une architecture de réseau de neurones VGG

Il est possible de récupérer sur la bibliothèque Deep Learning Keras le modèle VGG16 de base, entraîné sur ImageNet. En raison de sa profondeur et du grand nombre de filtres, la création d’une architecture VGG est un défi de taille, l’apprentissage de ses différents paramètres prenant beaucoup de temps. Elle implique de réfléchir à sa finalité et de concevoir son architecture en fonction de cette dernière. Elle induit également des mises en œuvre techniques de programmation et de validation.

Le choix des hyperparamètres

Avant de passer à la conception proprement dite, il est ainsi nécessaire de préciser certains points, comme le taux d’apprentissage, le nombre de filtres par couche, le nombre de couches, la taille des filtres, etc.

Il s’agit donc de définir la capacité du futur réseau, en fonction de ses objectifs et des possibilités du matériel informatique qui le soutiendra.

Organiser les couches

Cette étape est importante. Comme nous l’avons vu, un modèle VGG se compose de plusieurs couches de convolution suivies de couches de pooling. Les couches connectées sont ensuite utilisées pour la classification finale.

La programmation

Une fois ces choix opérés, il sera nécessaire de passer à la programmation pour implémenter efficacement l’architecture VGG. Le langage Python figure parmi les langages de programmation les plus souvent plébiscités pour la conception d’un modèle VGG.

Ses bibliothèques d’apprentissage automatique (TensorFlow et PyTorch) facilitent la création et l’entraînement des réseaux de neurones. La bibliothèque Deep Learning Keras est également écrite en langage Python. Open source, facile à comprendre et à prendre en main, elle offre une aide non négligeable à la création de modèles et à leur évaluation.

Une fois l’architecture VGG créée, il convient de l’entraîner sur un ensemble de données comme ImageNet.

Tests et validation

L’architecture VGG est terminée. Elle est également préentraînée. Il s’agit à présent de vérifier sa fiabilité.

Les tests unitaires évaluent chaque composant du réseau de manière isolée. Les tests fonctionnels, quant à eux, vérifient le comportement global du modèle sur des jeux de données.

La cross-validation (validation croisée) constitue également une méthode intéressante pour évaluer la généralisation d’une architecture VGG. Elle vérifie la capacité du modèle à généraliser sur des données non vues.

Enfin, pour quantifier les performances du modèle, il est aussi possible d’avoir recours aux matrices de confusion.

Le transfert learning

Un fois le modèle VGG entraîné et validé, l’utilisation du transfert learning peut lui apporter de nouveaux ensembles de données qui sont spécifiques à une tâche particulière. Il s’agit d’un simple transfert de connaissances qui permet d’obtenir de meilleures performances en adaptant le modèle aux caractéristiques des nouvelles données.

ResNet, Inception ou VGG ?

La même année que l’apparition du VGG, une équipe de chercheurs de Google a développé l’architecture Inception, également connue sous le nom GoogleLeNet. L’année suivante, en 2015, le ResNet (pour Residual Network), conçu par Microsoft Research, s’est immédiatement posé en concurrent du VGG et d’Inception dans le domaine de la vision par ordinateur.

Le modèle ResNet a notamment introduit le concept de blocs résiduels. Ces derniers ont permis de former des réseaux de neurones beaucoup plus profonds (jusqu’à 152 couches). Quant à Inception, il est conçu pour optimiser l’utilisation des ressources, mais se révèle très complexe et difficile à adapter aux différents contextes.

Le VGG reste le choix de référence lorsque la tâche à accomplir nécessite une architecture simple et uniforme. Il nécessite moins de ressources et apparaît donc plus adapté à des environnements limités par des contraintes de calcul.

Quelques applications concrètes du VGG

Le modèle VGG est très largement utilisé dans divers domaines de la vision par ordinateur et de l’apprentissage profond.

Initialement développé pour la reconnaissance d’objets dans des images, il aide à la localisation, à l’identification et à la classification de différents objets avec une précision élevée. Ceci est indispensable dans le bon fonctionnement de nombreux objets robotisés.

Le VGG a également été appliqué avec succès dans la classification d’images médicales (IRM et radiographies) et apporte une précieuse contribution dans la détection de maladies ou d’anomalies.

C’est toutefois dans le domaine de l’IHM (Interface Homme-Machine) que l’évolution semble la plus prometteuse actuellement. Détection d’activités humaines, analyse d’émotions faciales, analyse des mouvements des mains ou du corps, identification d’objets ou de personnes : le VGG est essentiel à la gestion des relations homme-machine. Il participe à l’amélioration des interfaces visuelles et se combine à d’autres technologies pour créer des interfaces interactives capables d’interpréter et de répondre aux demandes et besoins des utilisateurs de manière proactive et immersive.

Les éléments à retenir concernant le VGG

  • Développé en 2014, le modèle VGG a marqué un tournant dans les domaines de la vision par ordinateur et du Deep Learning ;
  • Grâce à ses noyaux de convolution de 3x3 et sa profondeur, il a su démontrer sa capacité à analyser de vastes ensembles de données variées ;
  • La simplicité de son architecture et son efficacité en font encore aujourd’hui un choix de référence, y compris face à d’autres architectures notables comme ResNet et Inception ;
  • L’implémentation de VGG, facilitée par des bibliothèques comme Keras, permet de s’attaquer à des projets divers, allant de la reconnaissance d’objets à la classification d’images médicales ;
  • Il est désormais incontournable pour les applications d’interface homme-machine.
Vous êtes freelance ?
Sécurisez votre activité grâce au portage salarial !
Laissez un commentaire
Votre adresse email ne sera pas publiée