Le transfert de style : comment une IA peut peindre avec le style de van Gogh
Actuellement les Intelligences Artificielles (IA) sont capables de créer des images réalistes de manière bluffante.
Dall-E (mélange de « Salvador Dali » et de « Wall-E »), une IA développée par OpenAI, est capable de produire une image à partir d’une phrase descriptive. Par exemple Dall-E a généré l’image suivante à partir de la phrase « une peinture d’une voiture de course dans le style de van Gogh »:
Ici, on a demandé une peinture dans le style de van Gogh, mais on peut lui demander n’importe quel style de peinture ou d’image.
Comment une IA fait-il pour imiter le style d’un peintre ? Dans cet article on explique la technique du transfert de style qui permet de réaliser cet exploit.
Qu’est ce que le transfert de style ?
Le transfert de style est une technique publiée dans l’article A Neural Algorithm of Artistic Style, en 2015, qui permet aux IA de générer des images en respectant un style (comme par exemple le style de peinture de van Gogh). C’est une méthode basée sur l’utilisation du Deep-Learning.
Cette technique permet de prendre en entrée deux images appelées respectivement le contenu et le style, et de renvoyer une image, appelé le contenu stylisé, qui représente le même objet que la première image, mais dessinée avec le style du deuxième. Concrètement voilà un exemple d’image réalisée par la technique de transfert de style:
L’image de gauche (le contenu) et l’image en bas (le style) ont été données à un réseau de neurones, qui après calcul a renvoyé l’image de droite en appliquant le transfert de style.
Dans cet article, on explique en détails comment marche cette technique.
Comment faire un transfert de style
Le principe général du transfert de style est de définir avec des nombres ce qu’est le contenu d’une image et ce qu’est son style.
D’abord, la première étape est d’extraire des informations sur l’image. Ceci se fait grâce au réseau de neurones pré-entrainé VGG (pour Visual Geometry Group).
Rappelons que le réseau de neurones VGG est un modèle prédictif qui a été entraîné pour prendre entrée une image, puis à appliquer successivement des blocs d’opérations de convolutions pour à la fin prédire le contenu de l’image (comme par exemple : un chat, un chien, une table, une maison, etc…).
Chaque bloc de convolution du réseau va calculer un tableau de nombres. Ces nombres sont des informations sur l’image que seul le réseau peut interpréter.
Comme VGG a été entrainé pour déterminer le contenu de l’image, le résultat de la 5eme couche va servir à définir le contenu.
Quant au style, les auteurs ont mis en évidence qu’il est déterminé par la corrélation des filtres des blocs intermédiaires. Plus explicitement, le résultat d’une convolution est un tenseur de type où et sont les composantes en longueur et en largeur et est la composante du filtre (aussi appelé channel). La corrélation de ce tenseur est le tenseur définie par:
Ces nombres , de manière surprenante, caractérisent le style de l’image.
Ainsi pour effectuer un transfert de style il suffit de créer une image tel que:
- La dernière couche de convolution donne le même résultat que le contenu.
- Les couche intermédiaires donnent la même corrélation que le style.
Comme pour effectuer un entraînement, pour trouver une image qui vérifie ces deux critères, on applique la méthode de backpropagation (voir ici). Et on obtient l’image stylisée !
Ce schémas indique de manière synthétique les étapes du processus de transfert de style.
Et voilà comment ça marche !
Pour aller loin
Si tu souhaites en savoir plus et essayer le transfert de style par toi même, je te conseille de regarder ce tutoriel de Tensorflow qui est très bien expliqué.
Grâce à Tensorflow tu peux réaliser un transfert de style en quelque secondes avec ces lignes de code:
1 2 3 | import tensorflow_hub as hub hub_model = hub.load('https://tfhub.dev/google/magenta/arbitrary-image-stylization-v1-256/2') stylized_image = hub_model(tf.constant(content_image), tf.constant(style_image)) |
Pour terminer, voici quelques exemples de ce que l’on peut faire avec ce code.
Merci pour la lecture ! Et n’hésites pas à commenter cet article si tu as des remarques ou des questions.
2 commentaires
lecoqlit.co · 5 avril 2023 à 13h22
Wahou! J utilise de temps en temps midjourney, me posais cette question de comment l’IA applique t elle les infos qu’on lui transmet, et bien merci beaucoup pour cet article. J avoue ne pas avoir tout saisi mais je suis déjà plus éclairée.
Auguste Hoang · 29 avril 2023 à 18h35
Bonjour,
Merci pour ton commentaire.
Je ferai d’autres articles pour expliquer comment les IA créent des images.