Neural Style Transfer
Le transfert de style neuronal redessine le contenu d’une photo dans le style d’une autre image en faisant correspondre les statistiques des caractéristiques d’un CNN. Présentation de la méthode de Gatys, des modèles rapides et des usages.
Le transfert de style neuronal (NST) est une technique de vision par ordinateur qui restitue le contenu d’une image, par exemple une photo de rue, dans le style visuel d’une autre image, comme un tableau, en faisant correspondre les caractéristiques internes d’un réseau neuronal convolutif (CNN) préentraîné. Le contenu est représenté par les cartes de caractéristiques d’une couche profonde, qui indiquent ce qui apparaît et où. Le style est représenté par les corrélations entre les canaux de caractéristiques, qui consignent les textures, les couleurs et les coups de pinceau, mais ne conservent pas leur agencement. Leon Gatys, Alexander Ecker et Matthias Bethge, de l’Université de Tübingen, ont présenté la méthode en août 2015 dans Un algorithme neuronal de style artistique, et l’application Prisma l’a rendue accessible aux utilisateurs de smartphones l’année suivante.
Fonctionnement de la méthode originale#
La méthode de Gatys utilise VGG-19, un CNN entraîné sur ImageNet, comme extracteur de caractéristiques fixe ; elle modifie les pixels de l’image de sortie plutôt que les poids du réseau. Deux fonctions de perte guident le résultat :
- Perte de contenu : La différence au carré entre les cartes de caractéristiques de l’image de sortie et de la photo de contenu à une couche profonde, conv4_2, qui permet de reconnaître les objets et la composition.
- Perte de style : La différence au carré entre les matrices de Gram de cinq couches, de conv1_1 à conv5_1. Pour une couche à C canaux, la matrice de Gram est un tableau C x C dont l’entrée (i, j) mesure le degré de réponse simultanée des canaux i et j, toutes les positions de l’image étant prises en compte.
Une somme pondérée des deux pertes est minimisée à l’aide de l’algorithme d’optimisation L-BFGS, et la rétropropagation transmet le gradient à travers le réseau gelé jusqu’aux pixels :
Comme la matrice de Gram additionne les valeurs sur toutes les positions, elle varie à peine lorsque la composition de l’image change. L’inversion des quadrants d’une photo le montre avec ResNet-18 de torchvision, un CNN ImageNet plus petit que VGG-19, dans PyTorch :
import torch
from skimage import data
from torchvision.models import ResNet18_Weights, resnet18
weights = ResNet18_Weights.DEFAULT
cnn = resnet18(weights=weights).eval()
early_layers = torch.nn.Sequential(cnn.conv1, cnn.bn1, cnn.relu, cnn.maxpool, cnn.layer1)
preprocess = weights.transforms()
photo = torch.tensor(data.astronaut()).permute(2, 0, 1) # 3 x 512 x 512
rearranged = torch.roll(photo, shifts=(256, 256), dims=(1, 2)) # same pixels, quadrants swapped
def content_and_style(image):
"""Return an early CNN layer's feature map (content) and its Gram matrix (style)."""
with torch.no_grad():
features = early_layers(preprocess(image)[None])[0].flatten(1) # channels x positions
return features, features @ features.T / features.shape[1]
(content_a, style_a), (content_b, style_b) = content_and_style(photo), content_and_style(rearranged)
print(f"Content change: {(content_a - content_b).norm() / content_a.norm():.0%}")
print(f"Style change: {(style_a - style_b).norm() / style_a.norm():.0%}")L’inversion des quadrants modifie la carte de caractéristiques de 96 %, mais la matrice de Gram de seulement 7 %. Les 7 % restants proviennent des nouvelles jonctions et du recadrage central, qui conserve une partie différente de chaque image. C’est pourquoi la perte de style reproduit les coups de pinceau et la palette d’un tableau sans reproduire la disposition de ses éléments.
Transfert de style rapide et arbitraire#
L’optimisation de chaque image nécessite des centaines d’itérations ; les travaux ultérieurs ont donc intégré l’optimisation à l’entraînement. En 2016, Justin Johnson, Alexandre Alahi et Li Fei-Fei de Stanford ont entraîné un réseau à propagation directe par style avec les mêmes pertes, obtenant des résultats environ mille fois plus rapides, et ont appliqué les mêmes pertes perceptuelles à la super-résolution. Dmitry Ulyanov et ses collègues ont découvert que remplacer la normalisation par lots par la normalisation par instance dans ces réseaux améliorait la qualité de la stylisation. La normalisation adaptative par instance (AdaIN, 2017) de Xun Huang et Serge Belongie gère n’importe quel style sans réentraînement : elle ajuste la moyenne et l’écart-type de chaque canal de caractéristiques du contenu pour qu’ils correspondent à ceux de l’image de style, puis décode le résultat, ce qui s’exécute en temps réel.
Transfert de style pour des modèles de vision robustes#
Robert Geirhos et ses collègues ont utilisé AdaIN pour montrer que les CNN entraînés sur ImageNet s’appuient davantage sur la texture que sur la forme : un ResNet-50 classe comme éléphant l’image d’un chat ayant une texture de peau d’éléphant, un exemple d’apprentissage de raccourcis. Leur Stylized-ImageNet a restylisé chaque image d’ImageNet à l’aide d’un tableau aléatoire de la collection Painter by Numbers, composée de 79 434 tableaux ; un ResNet-50 entraîné sur ce jeu de données s’est plutôt appuyé sur la forme. L’utilisation de ce réseau sensible à la forme comme colonne vertébrale d’un modèle Faster R-CNN de détection d’objets a fait passer le mAP50 de 70,7 à 75,1 sur Pascal VOC 2007 et de 52,3 à 55,2 sur MS COCO.
La même idée sert d’augmentation de données pour les jeux de données de détection, car le transfert de style conserve la position de chaque objet. Une copie stylisée d’une image annotée réutilise ses boîtes englobantes d’origine ; dans un jeu de données de détection Ultralytics YOLO26, il suffit donc de copier le fichier d’annotations d’origine sous le nouveau nom de l’image.
Le transfert de style neuronal et les termes associés#
- Réseaux antagonistes génératifs (GANs) : CycleGAN apprend une correspondance entre des collections entières d’images, comme des photos et des tableaux de Monet, au lieu de comparer les statistiques d’une seule image de style.
- Apprentissage par transfert : Ajuste des poids préentraînés pour une nouvelle tâche. Le NST ne met jamais à jour les poids du réseau et l’utilise uniquement pour mesurer les pertes.
- Modèles de diffusion : Restylisent des images à partir d’une invite textuelle ou d’une image de référence en les régénérant, ce qui peut modifier les formes et les détails en plus du style.










