[PYTHON] Algorithme de réseau de neurones de style peinture (traduction magenta ② où l'intelligence artificielle crée de l'art et de la musique)

introduction

Cet article est la documentation du projet Google Magenta. Ceci est une traduction de "A Neural Algorithm of Artistic Style" (Cinjon Resnick). Ce document est un article de synthèse de Article du même nom de Gatys et al.. Il s'agit d'un livrable distribué sous Licence Apache, Version 2.0.

Google Brain a lancé Magenta, un projet visant à générer de l'art et de la musique grâce à l'apprentissage en profondeur. L'un des objectifs de Magenta est de présenter les recherches du projet et de publier des articles de synthèse pour plusieurs articles.

Cet article de synthèse présente un article intitulé "A Neural Algorithm of Artistic Style". Cet article décrit la recherche sur la conversion de style par apprentissage en profondeur, et il est devenu un sujet brûlant. De nos jours, des recherches telles que la conversion vidéo ont été annoncées, et on ressent les nouvelles possibilités des réseaux de neurones.

Algorithme de réseau de neurones de style peinture

Récemment, en août 2015, Gatys et ses collègues de l'Université de Tübingen ont publié "A Neural Algorithm of Artistic Style". Cet article expliquait comment exprimer une œuvre dans le style d'une autre et parcourait les murs Facebook (publications) à travers le monde. Il a attiré l'attention du public et a été reconnu comme étant capable d'utiliser cette technologie dans les outils que nous avons construits pour les applications d'image afin de créer de l'art créatif.

Tu peux le faire.

image

Cet article suppose une technologie qui relie le style de l'image d'entrée S au contenu de l'image d'entrée C (ce qui est transféré à l'image). L'image ci-dessus est "Star Moon Tubingen", S est une nuit de lune étoilée de Van Goch, et C est une photo de l'Université de Tubingen. Cette technologie comprend la perte de style Ls et la perte de contenu Lc, [Energy Minimization Problem](https://ja.wikipedia.org/wiki/%E6%9C%80%E9%81%A9%E5% Il faut assembler 8C% 96% E5% 95% 8F% E9% A1% 8C). L'idée clé est d'utiliser un réseau de convolution profonde (VGG-19) qui permet une compréhension hiérarchique des images. C'est. En tant qu'index montrant le style de peinture, la corrélation des caractéristiques multicouches est extraite de VGG. D'autre part, ce qui représente le contenu correspond à la quantité d'expression d'un calque spécifique.

La perte de contenu était définie par l'erreur brute L2 d'une couche particulière. Pour être plus clair, nous avons utilisé la couche conv4_2 pour Lc et calculé la perte d'erreur au carré en divisant par deux la sortie de la couche lorsque X était utilisé et la sortie de la couche lorsque C était utilisé.

D'autre part, comme perte d'image, ce papier a utilisé la matrice gramme. Cette matrice est un produit interne des caractéristiques vectorisées d'une couche donnée. Empiriquement, ce sont de très bons substituts pour la corrélation des caractéristiques, et l'erreur L2 entre la matrice gramme d'une image et la matrice gramme d'une autre est un très bon moyen de comparer la proximité de leurs styles. Ça marche. Plus intuitivement, lorsque l'on considère des algorithmes tels que la modélisation de texture, la matrice de gramme peut être considérée comme une statistique résumant l'espace dans ce qui représente l'entité. L'utilisation de ces fonctionnalités est un bon substitut pour voir des styles similaires.

Après tout, Ls est calculé en utilisant l'erreur quadratique moyenne entre les matrices de gramme. Calculez l'erreur quadratique moyenne des matrices gramme X et S pour chaque couche de Conv1_1, conv2_2, conv3_1, conv4_1, conv5_1. La somme de ces erreurs est la perte du style Ls.

Faites de X la première image de bruit blanc et combinez ces pertes avec la [méthode L-BFGS](https://ja.wikipedia.org/wiki/%E6%BA%96%E3%83%8B%E3%83] % A5% E3% 83% BC% E3% 83% 88% E3% 83% B3% E6% B3% 95) pour minimiser et produire un effet de conversion de style. Bien sûr, vous devrez peut-être ajuster, et les paramètres de poids Lc et Ls dépendent quelque peu de C et S. L'initialisation de X avec une image S ou C fonctionnera probablement, mais avec des résultats déterministes. En pratique, le réseau s'adapte d'abord aux fonctionnalités de style de bas niveau, puis modifie progressivement le contenu de l'image. Il faut 3 à 5 minutes sur le GPU pour terminer chaque image. Il convient également de mentionner que l'effet sur les autres images dépend du réseau de convolution utilisé. Par exemple, un réseau formé pour la reconnaissance faciale fonctionnera bien pour la conversion du style facial.

La contribution de cette recherche dépasse les limites de l'apprentissage automatique. Bien connu du public, il a attiré un éventail diversifié et nouveau de professionnels. Depuis ses débuts et en ouvrant la voie, il a réalisé de nombreuses réalisations à la fois en améliorant l'efficacité et en s'adaptant à de nouveaux domaines. Ici, je vais en expliquer brièvement trois. Conversion de style préservant les couleurs, conversion de style vidéo et conversion de style instantanée.

Conversion de style préservant les couleurs

Commençons par les innovations les plus récentes dans ce domaine. Cet article de Gatys et al.Révision de la première méthode de conversion de style en préservant la couleur de l'image de contenu. Deux techniques sont expliquées. La première consiste à convertir la palette de couleurs de l'image de style pour qu'elle corresponde à la palette de couleurs de l'image de contenu. Ce nouveau S'est utilisé comme entrée de style au lieu du S. Pour y parvenir, cet article décrit deux transformations linéaires différentes.

Une autre technique décrite est la conversion uniquement dans l'espace de luminosité. Tout d'abord, le canal de luminosité est extrait de S et C, la conversion de style est effectuée dans cette zone de luminosité et le canal de couleur est ajouté à la sortie de la conversion de style. Il y a aussi un bref débat sur ces techniques, comparant leurs avantages et leurs inconvénients. Vous pouvez voir la sortie dans l'image ci-dessous. J'ai utilisé "Seated Nude" de Picasso pour convertir l'image de New York la nuit dans ce style, et le jeu de couleurs de l'image originale est conservé.

image

Conversion de style vidéo

[L'article] de Ruder et al. (Https://arxiv.org/abs/1604.08610) voit ce qui se passe lorsque vous essayez d'appliquer la conversion de style à la vidéo. Ici, si vous appliquez simplement l'algorithme de Gatys indépendamment à la série temporelle de la trame, le résultat de la conversion de style n'est pas stable, il peut donc scintiller ou avoir de mauvaises coupures. Par conséquent, cet article explique comment rendre la transformation régulière en utilisant une technique appelée flux optique. Pour ce faire, nous utilisons des algorithmes d'estimation de pointe tels que DeepFlow et EpicFlow.

De plus, plusieurs techniques ont été utilisées pour améliorer encore la cohérence dans tout le cadre. Cela comprend la détection des zones et des limites de mouvement en déplaçant les flux optiques dans les deux directions. De même, il contrôle également la cohérence à long terme en pénalisant les écarts par rapport aux cadres éloignés dans le temps.

Après tout, le résultat était très impressionnant. Bien que non homogène, le cadre est cohérent et impressionnant. Vous pouvez voir l'exemple d'opération sur Youtube.

Conversion de style instantanée

[Papier] de Johnson et al. (Https://arxiv.org/abs/1603.08155) pose et répond à la question de la vitesse. Le travail de Gatys et Ruder comporte de longues étapes d'optimisation qui prennent 3-5 minutes par image à calculer. J'ai modifié la configuration et ajouté un autre réseau profond appelé «Image Transformer Network» (ITN) avant VGG. En conséquence, il a été produit avec une seule propagation vers l'avant, une imagerie qui satisferait les étapes d'optimisation de Gatys.

Dans la méthode de cette recherche, l'image de style S est préparée à l'avance, et VGG est traité comme une boîte noire qui renvoie le total de la perte de style et de contenu donnée par S. L'entrée d'ITN est l'image C du contenu que vous souhaitez convertir. Entraînez votre réseau à convertir C en C en optimisant le style et la perte de contenu. Puisque S est fixé à tous les C, il est possible de réaliser une conversion de style sans l'optimisation longue en utilisant la propagation directe et la propagation arrière utilisées dans la recherche originale de Gatys. Je peux le faire.

Il est débattu de savoir si la qualité se détériorera ou s’améliorera. Ce qui est clair, cependant, c'est que c'est le seul modèle à l'heure actuelle qui peut effectuer des conversions de style de 15 images par seconde.

Perspectives d'avenir

C'est un domaine vraiment intéressant. Parce que vous pouvez imaginer et créer diverses politiques. Que diriez-vous de commencer par ce que vous savez et de vous améliorer, comme le flux optique en temps réel? Que diriez-vous de développer un nouvel art pour transformer de manière transparente les personnages à partir de scènes vidéo? Qu'en est-il des nouveaux domaines comme la musique? J'adorerais entendre Dylan ressembler à Disney.

Recommended Posts

Algorithme de réseau de neurones de style peinture (traduction magenta ② où l'intelligence artificielle crée de l'art et de la musique)
Génération de séries temporelles par réseau neuronal récurrent (traduction magenta ① où l'intelligence artificielle fait de l'art et de la musique)