Que se passe-t-il si vous combinez un éditeur de photos et un réseau de neurones


Un exemple du travail d'un éditeur de photos neuronal Neural Photo Editor. Au centre se trouve l'image originale. Les carrés rouges et bleus montrent les zones d'espace caché générées après l'entraînement du réseau neuronal. Ils peuvent être manipulés à la fois directement (comme c'est généralement le cas) et indirectement, à l'aide de la «brosse contextuelle».

Pensez-vous que «Photoshop» fait des merveilles pour déformer la réalité? Oui, il peut supprimer complètement une personne d'une photographie ou faire pousser des cheveux sur sa tête, comme Elon Mask, à l'aide d'une «brosse contextuelle». Mais cela ne se situe pas à côté de ce dont le réseau neuronal est capable, s'il est autorisé à le modifier avec une analyse contextuelle. C'est une réalité complètement différente. Un réseau de neurones peut faire sourire une personne sur une photo, donner à votre petite amie les caractéristiques d'Angelina Jolie, etc. Les possibilités sont infinies.

Le premier signe dans ce domaine est l' éditeur de photos neurales Neural Photo Editor , qui a été développé par des employés de la School of Engineering and Physical Sciences de l'Université Heriot-Watt (Édimbourg, Royaume-Uni) avec un collègue de Renishaw .

Les progrès récents dans la création de modèles génératifs pour les images ont conduit à l'émergence de réseaux de neurones qui, après la formation, génèrent des échantillons et interpolent la plus haute qualité. Deux méthodes principales inventées en 2013-2014 sont utilisées dans ce domaine: Autoencoder variationnel (VAE) et Generative Adversarial Network(GAN). Ils ont montré qu'un réseau neuronal est capable de générer des structures complexes et multidimensionnelles dans des images naturelles.

Les encodeurs automatiques variationnels VAE sont des modèles graphiques probabilistes qui apprennent à maximiser les limites inférieures variationnelles (en fonction de la probabilité des données) en projetant le résultat d'apprentissage dans l'espace latent puis en reconstruisant l'image à partir de cet espace.

Les réseaux antagonistes génératifs (GAN) maîtrisent le modèle génératif en formant un réseau (le «discriminateur») à distinguer les données réelles des données générées. Dans le même temps, un autre réseau («générateur») apprend à générer des échantillons que le discriminateur ne distingue pas des vrais.

Les deux méthodes conviennent pour générer des images dans un espace caché - par exemple, pour ajouter un sourire à un froncement de sourcils. Chacun d'eux a ses propres avantages et inconvénients.

Neural Photo Editor Neural Photo Editor est une interface innovante pour travailler avec l'espace caché des modèles génératifs. Cette méthode vous permet d'effectuer des modifications sémantiques spécifiques dans l'image à l'aide du "pinceau de contexte", qui modifie indirectement son propre vecteur.

L'idée clé dans un éditeur de photos neuronales est de modifier l'espace caché de manière intuitive, c'est-à-dire en modifiant une image régulière. L'utilisateur sélectionne la couleur et la taille du pinceau - l'applique à l'image résultante. Le réseau neuronal effectue une convolution inverse, calculant la différence entre la couleur des pixels source et la couleur du pinceau, et modifie l'espace caché pour minimiser cette différence. En conséquence, nous obtenons des modifications sémantiquement significatives dans l'image résultante - changements de cheveux, sourire, fossettes sur les joues, etc.


Résultat de la modification d'une photo à l'aide d'un éditeur de photos neuronal

Un exemple simple. Si nous prenons une photo d'un visage blanc avec des cheveux noirs - et appliquons un pinceau noir sur le front, mais un éditeur de photos neuronal y ajoutera automatiquement des cheveux. L'éditeur travaille en temps réel sur un GPU décent.

Pour améliorer le résultat de l'édition, l'éditeur a la possibilité d'éditer la reconstruction d'image après transformation par un réseau de neurones (masque d'interpolation). Dans ce cas, le résultat ressort mieux (dans l'illustration ci-dessous).


Visualisation du masque d'interpolation. En haut à gauche à droite: reconstruction, delta (erreur) de reconstruction, image originale. Ci-dessous: reconstruction modifiée, delta, image résultante

Les images suivantes montrent des exemples de fonctionnement d'un réseau de neurones dans la reconstruction et l'interpolation de photographies à partir de bases de données CelebA, ImageNet et SVHN. Sur la gauche se trouvent les images sources, à chaque pas vers la droite, les résultats d'une reconstruction progressive dans le réseau neuronal sont affichés.



Les auteurs ont publié leurs travaux le 22 septembre 2016 sur arXiv.org.

Le code de Neural Photo Editor est publié sur Github . Dans le même référentiel, le code du réseau neuronal compétitif introspectif est publié, qui est un hybride d'autoencodeurs variationnels (VAE) et de réseaux compétitifs génératifs (GAN).

Pour lancer Neural Photo Editor, vous aurez besoin de:

  • Theano , une bibliothèque Python pour définir, optimiser et évaluer efficacement des expressions mathématiques à l'aide de tableaux multidimensionnels.
  • Lasagne , une bibliothèque pour construire et former des réseaux de neurones à Theano.
  • Pour améliorer les performances, il est recommandé (mais pas nécessaire) d'installer cuDNN , une bibliothèque de Nvidia pour l'accélération matérielle des procédures standard, telles que la convolution directe et inverse, la mise en commun, la normalisation et l'activation des couches. Cela fait partie du SDK Nvidia Deep Learning .
  • numpy, scipy, PIL, Tkinter et tkColorChooser du kit d'installation Python.

Source: https://habr.com/ru/post/fr397847/


All Articles