Accueil Technologies Neural Style Transfer : comment développer cette IA
Developper IA neural style transfer

Neural Style Transfer : comment développer cette IA

par Jérémy PASTOURET
Publié : Mis à jour le

Le Neural Style Transfer est une méthode permettant de reprendre le style d’un artiste et de l’appliquer sur une photo. Pour faire simple, vous pouvez vous même créer de superbes œuvres grâce à ce procédé basé sur une IA (Intelligence Artificielle). Pour vous faire une idée du résultat et tester cette technologie, je vous invite à lire mon précédent article.

L’objectif de cet article : vous expliquer en quelques étapes le fonctionnement du Neural Style Transfer. Étant donné qu’il s’agit d’un sujet complexe – et que je ne suis pas un génie de l’IA – vous pouvez me contacter si vous trouvez une erreur dans mon propos.

Pour éviter de vous perdre dans des notions trop techniques, je vais vous présenter les étapes du processus de transfert de style. Sans rentrer dans le détail, et sans code source.

Préconisations techniques pour le Neural Style Transfer

Bannière problème

Pour développer ce type d’IA, nous utilisons un langage de programmation nommé Python. Ce langage est très utilisé par la communauté scientifique aujourd’hui. Avec ce langage, il est possible d’importer des librairies (briques de code) contenant des fonctions très utiles. L’idée étant de ne pas réinventer la roue pour chaque nouveau projet.

Les librairies utilisées pour un tel projet sont Keras et Tensorflow. Pour faire court, Tensorflow permet de créer des IA de type apprentissage machine (Machine Learning) avec un réseau de neurones. Quant à Keras, cette librairie permet d’interagir avec Tensorflow sans trop s’arracher les cheveux. Leur slogan est « Deep learning for humans » : en français, cela signifie « Apprentissage profond pour humains ». Le but est vraiment de faciliter la prise en main des algorithmes de réseaux de neurones.

Donc pour réaliser un tel projet, vous devez installer Python ainsi que ces librairies très connues.

Recyclage de code

Bannière développeurs

Construire une IA prend du temps : il faut réaliser pas mal d’essais, identifier les erreurs, améliorer l’algorithme, comprendre ce que voit la machine, l’entraîner, etc. Heureusement, pour nous faciliter la vie, des contributeurs ont publié gratuitement des modèles et des collections. Ces éléments sont disponibles sur le marketplace de TensorFlow.

Les modèles correspondent à des IA pré-entraînées. Les collections sont des jeux de données triées, étiquetées et bien organisées. On s’en sert pour créer de nouvelles IA.

Pré-traitement rapide du Neural Style Transfer

Pré-traitement rapide du Neural Style Transfer

Pour démarrer le travail dans de bonnes conditions, il est important de bien choisir les données en entrée. En d’autres termes, une photo et une œuvre. Il ne sert à rien de compliquer la tâche avec quelque chose de difficile à la fois pour nous et pour la machine.

Après avoir choisi une photo (content image) et un œuvre (style image), il est important de vérifier si une correspondance (match) est possible. L’objectif : réaliser un transfert de style rapide et simple. Pour cela, nous allons utiliser un modèle gratuit déjà pré-entraîné. Celui-ci se nomme magenta/arbitrary-image-stylization-v1-256.

En prenant les images suivantes en entrée :

Image en entrée - Neural Style Transfer

Nous obtenons le résultat suivant :

Image-en-sortie-Neural-Style-Transfer

Plutôt pas mal, non ? Nos deux entrées sont prometteuses pour créer une IA.

Définition du contenu et du style

Définition du contenu et du style - Neural Style Transfer

Pour ne pas laisser l’IA dans le flou artistique, il est nécessaire d’identifier les éléments présents sur la photographie. Dans mon exemple, le labrador. En effet, le but est d’obtenir un résultat final cohérent, qui nous rappelle surtout la photo de base. Si en entrée nous voyons un chien, mais qu’en sortie l’œuvre ne contient pas cet animal, nous n’allons pas apprécier le résultat.

Pour cela, on utilise un autre modèle permettant d’identifier les éléments présents sur une photographie. Ce qui nous permettra d’indiquer à l’IA (artiste) les éléments important afin que celle-ci conserve (au minimum) les contours.

Comment y parvenir ? On peut se servir d’un autre modèle appartenant à une librairie célèbre : Keras. Le modèle qui nous intéresse se nomme VGG19 et fait 549M.

En utilisant VGG19 sur notre photo, l’IA nous renvoie les prédictions suivantes sur le contenu de l’image :

[('Labrador_retriever', 0.49317157),
 ('golden_retriever', 0.2366525),
 ('kuvasz', 0.03635752),
 ('Chesapeake_Bay_retriever', 0.02418279),
 ('Greater_Swiss_Mountain_dog', 0.018646086)]

L’IA a bien identifié un labrador avec une certitude de 0.49. En tant qu’humain, cela nous permet de vérifier que l’IA fonctionne correctement. La prochaine étape consiste à faire confiance à l’algorithme, en lui demandant la liste les couches (layers) de l’image. Celles-ci permettent à la machine d’interpréter le contenu d’une image. Pour nous, les humains, c’est peu compréhensible.

Voici les différentes couches interprétées par la machine sur l’image du labrador :

input_2
block1_conv1
block1_conv2
block1_pool
block2_conv1
block2_conv2
block2_pool
block3_conv1
block3_conv2
block3_conv3
block3_conv4
block3_pool
block4_conv1
block4_conv2
block4_conv3
block4_conv4
block4_pool
block5_conv1
block5_conv2
block5_conv3
block5_conv4
block5_pool

Sur ces différentes couches, il faut indiquer à l’IA les parties principales (celles dont il faudra conserver les traits) et les parties sur lesquelles appliquer le style de l’œuvre. Le Neural Style Transfer, c’est aussi ça : identifier les zones importantes.

Calculer le style de l’œuvre

Calcule Gram matrix

Pour déterminer le style d’une œuvre, les chercheurs utilisent une formule mathématique qui permet de calculer le déterminant de Gramian. Pour les amoureux des mathématiques, la formule se trouve ci-dessus.

Extraction du style et du contenu de l’image

Après avoir déterminé le style de l’œuvre, il suffit d’extraire les couches importantes de la photo de base ainsi que les couches de styles. Pour l’œuvre choisie, c’est la même chose : il est nécessaire d’extraire les couches contenant le style principal à appliquer sur notre photo. Pour cela, on réutilise les paramètres et les fonctions utilisées précédemment.

Application de l’algorithme du gradient

Application de l'algorithme du gradient - Neural Style Transfer

On reste dans les mathématiques : il faut maintenant transférer le style de l’œuvre sur la photographie. Pour cela, on utilise l’algorithme du gradient, je suis sur que vous le connaissez tous 😀.

Celui-ci permet de minimiser les différences entre des éléments dans un espace euclidien. En français, cela permet de fusionner au mieux l’œuvre et la photo. L’algorithme représente les deux éléments dans un espace et tente de réduire leur différence.

Entraînement de l’IA au Neural Style Transfer

Entraînement de l'IA au Neural Style Transfer

Ensuite, il faut relancer plusieurs fois l’algorithme du gradient afin de se rapprocher du résultat final. C’est aussi ce que l’on appelle entraîner l’IA. On rejoue plusieurs fois les modèles et algorithmes, jusqu’à obtenir un résultat qui nous paraît correct.

Optimisation d’algorithme

Optimisation d'algorithme

Pour les plus expérimentés, il est possible de faire quelques optimisations. Par exemple, réduire la haute fréquence des composants présents dans une photo (total variation loss). En jouant sur ces paramètres, on peut obtenir une photo plus lisse. Et par conséquent, obtenir de meilleurs résultats.

Conclusion

Bannière conclusion

Grâce à cet article, vous pouvez constater qu’il existe pas mal d’outils et de moyens pour créer une IA. Toutefois, cette activité n’est pas si simple. Il faut comprendre le fonctionnement de la machine, pour parvenir à lui apprendre à réaliser d’autres tâches. J’espère que ce second article sur le Neural Style Transfer vous a donné envie de faire fonctionner cet algorithme.

Dans l’article suivant, vous découvrirez le code source de cette IA proposé par l’équipe de TensorFlow. Il vous sera même possible de tester l’algorithme avec vos images. Je vous invite aussi à lire mon autre série d’articles dédiés à l’intelligence artificielle.

Vous pourriez aussi aimer

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.