Accueil
VGG, Modèle de Transfert Learning

VGG, Modèle de Transfert Learning

Intéressé par les formations de Jedha ?
Voir le syllabus de Jedha
Nos derniers articles !

Pour les machines, les expériences les plus enrichissantes dépendent des données reçues. Au cours des dernières années, le Deep Learning a apporté de nombreux avantages dans la réalisation des tâches par l'ordinateur. C'est un domaine d'apprentissage automatique qui connaît depuis quelques années un franc succès dans le monde de l'intelligence artificielle. Les progrès réalisés dans le Deep Learning ont permis l'émergence des réseaux neuronaux à convolution. Jedha présente l'essentiel à savoir sur le modèle de Transfert Learning VGG.

Qu'est-ce que le Deep Learning ?

Le Deep Learning ou apprentissage profond peut être défini comme une sous-catégorie du machine learning. Contrairement aux algorithmes traditionnels du machine Learning qui possèdent une faible capacité d'apprentissage, les algorithmes d'apprentissage profond ont la possibilité d'améliorer leur expérience en accédant à une grande quantité de données. Après avoir acquis une grande quantité d'expérience, les machines peuvent être utilisées pour réaliser des tâches spécifiques comme conduire une voiture, détecter des maladies, identifier les mauvaises herbes dans un champ ou encore inspecter d'autres machines.

Les réseaux d'apprentissage profond acquièrent les connaissances en se basant sur des structures de données complexes. Les algorithmes élaborent des modèles de calcul de plusieurs couches pour mettre en place différents niveaux d'abstraction. Les algorithmes peuvent par exemple retenir de façon autonome les caractéristiques d'un chat juste en ayant accès à un grand nombre d'images de chats.

Qu'est-ce que le VGG ?

VGG est un réseau de neurones convolutif proposé par A. Zisserman et K. Simonyan de l'université d'Oxford. Ce modèle a été rendu célèbre en gagnant la compétition ILSVRC (ImageNet Large Scale Visual Recognition Challenge) en 2014. Sur imagenet (un jeu de données de plus de 14 millions d'images appartenant à 1000 classes), VGG atteint une précision de 92,7%, ce qui est un des meilleurs scores jamais obtenus.

Il s'agit d'une architecture standard de réseau de neurones à convolution profonde doté de plusieurs couches. Par rapport aux modèles qui l'ont précédé, VGG a marqué une grande progression en proposant des noyaux de convolution de plus petites dimensions (3×3) dans les couches de convolution. Cela n'avait jamais été fait auparavant. VGG a été entraîné sur plusieurs semaines en utilisant des cartes graphiques à la pointe de la technologie. L'architecture VGG a été utilisée dans la conception de modèles de reconnaissance d'objets révolutionnaires. VGG se distingue par sa simplicité, avec des couches de regroupement et une couche entièrement liée.

VGG : les réseaux de neurones

En apprentissage profond, un réseau de neurones est un système informatique composé de plusieurs neurones, qui sont généralement répartis en plusieurs couches connectées les unes avec les autres. Dans un réseau neuronal, les neurones prennent des informations en entrée et développent des sorties sans règles programmées. On peut dire qu'ils résolvent les problèmes essentiellement par essais et erreurs. Les réseaux neuronaux sont suffisamment performants pour battre des humains à des jeux comme le Go ou les échecs.

Les réseaux de neurones convolutifs sont des sous-catégories de réseaux de neurones. Ils présentent toutes les caractéristiques citées plus haut. Cependant, les réseaux de neurones convolutifs ou CNN ont été spécialement conçus pour le traitement des images en entrée. Ils tirent leur apprentissage des pixels contenus dans les images qu'ils reçoivent. Le réseau de neurones convolutif qui reçoit des images de chats par exemple peut classer des groupes de pixels en fonction des caractéristiques du chat (les yeux, les oreilles, les griffes) qui indiquent la présence de l'animal dans l'image.

L'architecture de réseau neuronal à convolution (CNN)

L'architecture de réseau neuronal à convolution est inspirée du fonctionnement du cortex visuel des animaux. Le champ visuel est analysé à partir d'un ensemble de sous-régions qui se chevauchent et pavent l'image. Pour prétraiter de petites quantités d'informations tirées de l'image, chaque sous-région va être analysée par un neurone. On parle de traitement convolutif. Pour extraire les caractéristiques discriminant la classe d'appartenance de l'image des autres, l'architecture du réseau de neurones convolutifs sera formée d'un ensemble de blocs de traitement. Ce bloc de traitement est constitué d'une à plusieurs :

  • couches de correction fonction d'activation (Unité de rectification linéaire),
  • couches de pooling (POOL), compression de l'information en réduisant la taille de l'image intermédiaire,
  • couches de convolution (CONV) (traitement des données d'un champ récepteur).

Les blocs de traitement s'enchaînent jusqu'aux couches finales du réseau pour réaliser la classification de l'image et le calcul de l'erreur entre la prédiction et la valeur cible. L'image est parcourue par plusieurs noyaux de convolution qui permettent d'avoir plusieurs cartes de caractéristiques de sorties. Dans chacun des noyaux de convolution se trouvent des paramètres spécifiques à l'information recherchée dans l'image. La manière dont s'enchaînent les couches de pooling, de correction ou de convolution dans les blocs de traitement fait la particularité de l'architecture du réseau convolutif.

Qu'est-ce que le Transfert Learning ?

Le Transfert Learning ou apprentissage par Transfert permet de mutualiser des savoirs ou des données pour améliorer la qualité des réseaux de neurones artificiels. Pour l'apprentissage automatique, le Deep Learning nécessite un nombre important de modèles et d'algorithmes.

L'apprentissage par Transfert est un ensemble de techniques pour transférer les connaissances de plusieurs sources vers d'autres problèmes à résoudre. C'est une compétence apprise par la machine à partir de tâches antérieures pour améliorer de nouvelles tâches identiques. L'apprentissage par Transfert permet donc d'améliorer la qualité d'apprentissage d'un logiciel en mutualisant les savoirs d'un modèle à un autre. Il fonctionne grâce à plusieurs places de marché sur le web composé de milliers d'algorithmes.

Utilité et fonctionnalités de l'apprentissage par Transfert

On distingue principalement deux catégories de Transfert Learning : l'apprentissage par Transfert inductif et l'apprentissage par Transfert non supervisé. Avec l'apprentissage par Transfert inductif, les problèmes à résoudre sont différents, mais les sources et cibles relèvent du même domaine. Pour l'apprentissage par Transfert non supervisé, les tâches sont également différentes, mais les sources et cibles sont similaires.

Cependant, les données ne sont pas labellisées. Sur le web, cela permet d'obtenir un plus grand nombre de sources. Le Transfert Learning présente de nombreux avantages. Ce mode d'apprentissage permet de réaliser d'importants bénéfices en termes de techniques d'apprentissage et de gain de temps. Il permet également d'avoir une base de données gratuite sur le web pour améliorer et enrichir la qualité des réseaux de neurones d'un logiciel.

VGG : les deux algorithmes disponibles

Pour les modèles de classification d'image, il existe déjà des Frameworks pré-entraînés qui peuvent être utilisés. Il existe principalement deux différents algorithmes disponibles : VGG-16 et VGG-19. VGG16 est un réseau neuronal convolutif entraîné sur des millions d'images de catégorie différente.

Ce modèle fonctionne avec un système imbriqué de 3*3 couches convolutives. Chaque couche est centrée sur un élément graphique. Le VGG-19 est une amélioration du VGG-16. Il possède 19 couches de convolution au lieu de 16. Ce modèle a 19,6 milliards de FLOP . En 2015,Gatys et al ont utilisé un VGG -19 pour montrer qu'il est possible de séparer le contenu et le style d'une image.

VGG et Keras : qu'apporte Keras au modèle ?

Keras est une bibliothèque Deep Learning écrite en python. Elle permet un prototypage rapide de modèles de Deep learning. Son avantage est qu'il est à la portée des débutants en IA. Keras s'articule autour d'une APi de haut niveau qui supporte différents types de neurones artificiels convolutifs ou récurrents.

Cette bibliothèque open source offre un cadre adapté pour développer rapidement le réseau de neurones convolutif VGG. Elle a été conçue pour rendre accessibles les projets de Deep learning. Elle possède une API simple à prendre en main. Keras permet de réduire le nombre d'actions à réaliser lors de création d'un réseau de neurones artificiel comme VGG. Ses modèles de machine Learning sont supportés par une large gamme de plateformes : Google Cloud, iOS, Raspberry Pi, Android, etc.

Démo d'une implémentation du modèle VGG dans Keras

Le modèle VGG16 de la librairie Keras est utilisé dans la vision par ordinateur (Computer Vision). Avant d'utiliser la librairie Keras pour charger votre modèle VGG, il faut l'avoir installé au préalable. L'application Keras est composée de plusieurs modèles d'apprentissage profond. Ceux-ci sont mis à disposition avec des poids pré-entraînés. Le chargement de modèle sur Keras va permettre de charger automatiquement les poids pré-entraînés pour réaliser un Transfert Learning.

VGG16 a été entraîné dans Keras Application sur plus d'un million d'images issues de différentes bases de données. Keras permet de réaliser facilement un apprentissage par Transfert en utilisant ce réseau de neurones. On peut utiliser VGG16 sur une image d'ours polaire par exemple. Sur VGG-16 , la taille de l'image d'entrée par défaut de est de 224×224. Il faut donc redimensionner l'image. On a :

from keras.preprocessing.image import load_img

image = load_img('/ice-bear-hans-jurgen-mager-unsplash.jpg', target_size=(224, 224))

Les modèles de machine Learning ne prennent pas toujours des numériques en entrée. Voilà pourquoi il faut convertir l'image en matrice de pixels. L'image est transformée en numpy.array avec la fonction: img_to_array().

from keras.preprocessing.image import img_to_array

image = img_to_array(image)

Les pixels de l'image doivent ensuite être traités de la même manière qu'ont été préparées les données d'entreprise d'imageNet.

Les bibliothèques d'apprentissage profond

L'écosystème Deep Learning comprend un grand nombre de librairies. On peut citer TensorFlow qui est une librairie développée par Google pour le calcul numérique, ou encore Keras une librairie de réseaux de neurones minimaliste et modulaire. Apache MXNET et Caffe sont des librairies de Deep Learning rapide et modulaire. Il existe également de nombreuses autres bibliothèques d'apprentissage de Deep Learning très efficaces.

Pour la classification d'images, l'outil du Deep Learning le plus efficace est le réseau neuronal convolutif comme VGG. Pour les personnes passionnées du machine Learning et de l'intelligence artificielle, il existe de nombreuses formations très efficaces pour se faire former en Deep learning. Les formations Jedha sont les plus adaptées pour maîtriser les réseaux neuronaux convolutifs.

Apprentissage profond : comment se former ?

Se former au Deep Learning peut offrir de nombreuses opportunités d'emploi dans le Big Data. Jedha propose des formations certifiantes en data science, qui se déclinent en 3 catégories : formation en DataFullstack, Data Essentials, Data Lead. La formation Data Essentials est adaptée au un niveau débutant. Les modules de formations contient des notions sur les langages de programmation, les notions de Deep Learning, la data visualisation, le machine Learning et intelligence artificielle, etc. les étudiants approfondissent leurs connaissances avec la formation Fullstack pour expert dans le domaine de l'apprentissage profond.

Jedha propose des formations très pratiques et construites par des professionnels experts avec un excellent parcours data. Les étudiants ont la possibilité de suivre les cours en présentiel ou à distance, à temps partiel ou à temps plein selon leur emploi du temps. Les formations Deep Learning de Jedha s'adaptent à tous.

Antoine Krajnc
Écrit par
Antoine Krajnc
 - 
Fondateur
 @
Jedha