Créez vos propres "peintures neurales" avec DeepStyle et Ubuntu

Saviez-vous que les réseaux de neurones peuvent aussi peindre? Les chercheurs ont formé un vaste réseau de neurones pour transformer des photographies en peintures neurales qui ont l'air d'avoir été peintes par des artistes célèbres.

Saviez-vous que les réseaux de neurones peuvent aussi peindre?  Les chercheurs ont formé un vaste réseau de neurones pour transformer des photographies en peintures neurales qui ont l'air d'avoir été peintes par des artistes célèbres.
Publicité

Les réseaux de neurones peuvent faire beaucoup de choses. Ils peuvent interpréter les images, comprendre nos voix. 6 Google Now Des fonctionnalités qui changeront votre façon de rechercher 6 Google Now Des fonctionnalités qui changeront votre façon de chercher Vous utilisez peut-être déjà Google Now sur votre appareil Android, mais obtenez-vous tout ce que vous pouvez il? Connaître ces petites fonctionnalités peut faire une grande différence. Lire la suite et traduire les conversations Comment le traducteur Star Trek de Skype fonctionne Comment fonctionne le traducteur Star Trek de Skype La nouvelle fonctionnalité de traduction de Skype offre quelque chose de rêvé depuis Star Trek - un moyen facile de communiquer entre les langues. Lire la suite . Mais saviez-vous qu'ils peuvent aussi peindre?

Un récent document de recherche (intitulé «Un algorithme neuronal du style artistique») a lancé une série de discussions en ligne avec des exemples visuels frappants. Essentiellement, le papier discute d'une technique pour former un réseau neuronal profond Microsoft vs Google - Qui mène la course d'intelligence artificielle? Microsoft vs Google - Qui mène la course à l'intelligence artificielle? Les chercheurs en intelligence artificielle font des progrès tangibles, et les gens commencent à parler sérieusement de l'IA à nouveau. Les deux titans qui dirigent la course à l'intelligence artificielle sont Google et Microsoft. Lire la suite pour séparer le style artistique de la structure de l'image et combiner le style d'une image avec la structure d'une autre. Le résultat de tout cela est que vous pouvez former un énorme réseau de neurones pour transformer des photographies en "peintures neurales" qui ont l'air d'avoir été peintes par des artistes célèbres - des "contrefaçons numériques", pour ainsi dire.

Voici quelques exemples de l'article. La première image est l'original. Les images les plus récentes sont les résultats générés, avec la peinture à partir de laquelle le style a été échantillonné en miniature.

PaperImages

Les chercheurs d'origine n'ont pas publié leur code, malheureusement. Cependant, certains programmeurs intrépides ont répliqué leurs résultats au cours des derniers jours, et leur code est disponible, open source sur Internet. Tout ce dont vous avez besoin pour l'exécuter est une machine Linux et un peu de patience.

Aujourd'hui, je vais vous expliquer comment faire cela et vous montrer certains de mes propres résultats. Vous pouvez penser à ceci comme une suite libre à notre tutoriel DeepDream Créez vos propres rêves artificiels de fièvre avec "DeepDream" de Google Créez vos propres rêves artificiels de fièvre avec "DeepDream" de Google Avez-vous vu les images trippy de DeepDream? voulez vous faire le votre? Cherchez pas plus loin! Lire la suite . C'est un peu compliqué, mais n'importe qui avec une machine Linux peut suivre - aucune expérience de codage nécessaire.

J'ai transformé une peinture lumineuse Picasso en une peinture de style Picasso avec #DeepStyle! pic.twitter.com/cjkEoIhVcF

- James Blaha (@jamesblaha) 5 septembre 2015

Configuration du logiciel

Tout d'abord, si vous n'êtes pas très pressé ou n'avez pas de machine Linux, vous pouvez toujours jouer avec DeepStyle en utilisant le bot Twitter DeepForger (envoyez-lui une image et un style, et il finira par répondre avec les résultats que vous avez vouloir). Si vous souhaitez traiter plus d'images rapidement (et avec plus de contrôle sur les résultats), lisez la suite pour le tutoriel.

Tout d'abord, assurez-vous que vous avez une copie à jour d' Ubuntu (14.04 est ce que j'ai utilisé). Vous devriez avoir au moins quelques concerts supplémentaires d'espace disque dur. Pour plus d'informations, consultez notre tutoriel sur le double démarrage d'Ubuntu aux côtés de Windows Tired Of Windows 8? Comment Dual Boot Windows et Ubuntu Fatigué de Windows 8? Comment Dual Boot Windows & Ubuntu Si vous découvrez que Windows 8 n'est pas tout à fait votre tasse de thé, et vous n'avez aucun moyen possible de rétrograder, il peut être une bonne idée de double démarrage avec Linux pour avoir une alternative ... Lire Plus . Vous aurez également besoin de privilèges root, alors assurez-vous de le faire avant de continuer.

Outils de base

Dès le départ, il s'agit d'un projet open-source, nous allons donc vouloir installer Git . Git est l'étalon-or pour les logiciels de contrôle de version Qu'est-ce que Git & Pourquoi vous devriez utiliser le contrôle de version Si vous êtes développeur Qu'est-ce que Git & Pourquoi vous devriez utiliser le contrôle de version Si vous êtes un développeur Nous avons tendance à travailler sur des sites de développement locaux, puis nous téléchargeons tout lorsque nous avons terminé. C'est bien quand c'est juste vous et les changements sont petits, ... Lire la suite. Presque tous les projets Open Source qui valent la peine d'être connus sont hébergés sur Github.

Pour télécharger et installer Git, ouvrez simplement un terminal et tapez " sudo apt-get install git " et acceptez les demandes de l'installateur.

Suivant: nous allons mettre en place quelques outils de base nécessaires pour faire fonctionner le logiciel.

D'abord, installez Lua. C'est la langue dans laquelle l'outil est écrit. C'est assez simple. Tapez simplement " sudo apt-get install lua5.2 " et suivez le processus d'installation.

Deuxièmement, nous allons obtenir Luarocks. C'est l'outil qui facilite l'installation d'autres outils (n'aimez-vous pas Linux?). Pour celui-ci, tapez " sudo apt-get install luarocks " et suivez les étapes de l'installation.

Troisièmement, nous allons installer Luajit. C'est un compilateur juste-à-temps pour Lua qui va rendre nos vies un peu plus simples. Tapez simplement " sudo apt-get install luajit ."

Jusqu'ici tout va bien.

Je suis un bot qui crée des contrefaçons à partir de vos photos dans le style des peintres célèbres. Cliquez pour les instructions ci-dessous! pic.twitter.com/3MpThDNwRE

- The Deep Forger (@DeepForger) 5 septembre 2015

Cadres

Ensuite, nous allons installer Torch, un environnement de calcul scientifique et d'apprentissage automatique qui constitue l'épine dorsale de l'application. Malheureusement, celui-ci ne peut pas être installé en utilisant apt-get (le gestionnaire de paquets Ubuntu standard).

Heureusement, ils ont un programme d'installation d'une ligne qui utilise la magie de la ligne de commande. Retournez à votre terminal et entrez " curl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-all | bash curl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-all | bash ".

Lorsque vous avez terminé, tapez " luajit -ltorch ". Cela fera apparaître l'interface de la torche et vérifier que tout a été correctement installé.

Sortir de ça.

Maintenant, nous allons installer loadcaffe - un paquet spécifique au réseau neuronal. Installez sa seule dépendance en tapant " sudo apt-get install libprotobuf-dev protobuf-compiler ". Ensuite, vous pouvez installer le paquet lui-même en utilisant " sudo luarocks install loadcaffe" .

@Johnicholas Votre rupture de faux, avec style par l'école de Rembrandt van Rijn. #DigitalArt #StyleNet pic.twitter.com/pf0sZxWkaT

- The Deep Forger (@DeepForger) 7 septembre 2015

Double vérification des dépendances

Enfin, nous allons mettre à jour de façon préemptive certaines choses pour nous assurer que tout se passe bien.

Tapez " sudo luarocks install image " pour vous assurer que votre paquet d'image est à jour. Ensuite, entrez " luarocks install nn " qui fera la même chose pour votre paquet 'nn'.

Installation de Deep Style

Bien! À ce stade, nous sommes prêts à installer le logiciel lui-même. Par souci de propreté, créez un nouveau dossier dans votre répertoire personnel ('mkdir DeepStyle'). Ensuite, entrez-le en utilisant " cd Deepstyle ". Maintenant, tapez " sudo git clone https://github.com/jcjohnson/neural-style.git".

Ensuite, nous devons télécharger le modèle. Faire une tasse de café ou quelque chose, cela prendra un moment. Retournez au terminal et tapez " sudo sh models/download_models.sh ". Cela va commencer un long processus de téléchargement complexe. Si cela échoue en raison d'erreurs d'autorisation, essayez de vous accorder des autorisations de lecture-écriture sur les dossiers concernés, en utilisant chmod.

@ 44thats44oars a commandé ce #ProceduralArt #NeuralArt. pic.twitter.com/tbMH7gsvc8

- The Deep Forger (@DeepForger) 6 septembre 2015

Utilisation de Deep Style

D'accord, nous sommes prêts à partir. L'utilisation du logiciel est assez simple.

Assurez-vous que vous êtes dans le répertoire DeepStyle / style neural du terminal. Maintenant, vous allez avoir besoin d'images pour travailler dessus. Téléchargez-les sur Internet (ou autre), puis copiez-les dans le dossier DeepStyle / style neural en utilisant le navigateur de fichiers.

Vous pouvez maintenant utiliser la ligne de commande pour traiter des images individuelles. Le format est assez simple:

th neural_style.lua -style_image YOURPAINTINGHERE.jpg" - content_image YOURPHOTOHERE.jpg" -gpu -1

(De toute évidence, vous aurez besoin de remplacer les morceaux dans toutes les majuscules avec les noms de vos fichiers).

Cela fera démarrer le réseau de neurones. Il va durer environ une heure, crachant de nouvelles images partiellement convergées toutes les quelques minutes jusqu'à ce qu'il se termine. Le drapeau -gpu -1 empêche d'essayer d'accéder à votre GPU.

Après plusieurs heures d'essai (et plusieurs fois le système d'exploitation), je n'ai pas réussi à faire en sorte qu'Ubuntu et CUDA jouent bien avec mon GPU (une NVIDIA GTX 970). Si vous avez plus de chance avec cela, vous devrez installer CUDA et cudann.torch (voir le repo de github pour plus d'informations). Si ce n'est pas le cas, ça ira - cela fonctionnera toujours en utilisant votre CPU; ça va juste être un peu plus lent.

Si vous avez des problèmes pour faire fonctionner tout cela, demandez-moi dans les commentaires, et je ferai de mon mieux pour vous aider.

Résultats

Voici quelques images que j'ai générées au cours des derniers jours. Les résultats sont mitigés, mais beaucoup d'entre eux sont assez impressionnants.

zack-paden-composite

Cliquez ici pour la résolution complète.

Celui-ci est de mon ami Zack lors d'un voyage de randonnée à Yellowstone. Le style vient d'une peinture abstraite, créée par Theresa Paden. J'étais curieux de voir comment le système fonctionnerait en utilisant une image sans aucune structure. Les résultats sont assez soignés, et vous pouvez certainement voir les similitudes avec l'image de style.

jerseycity-demuth-composite

Cliquez ici pour la résolution complète.

Celui-ci vient courtoisie d'un de mes artistes préférés, Charles Demuth (voir: Encens d'une nouvelle église, et la figure 5 en or). Fait intéressant, Demuth est l'une des principales inspirations visuelles pour l'art de Team Fortress 2 Team Fortress 2: Le jeu de Steam Free-to-Play Vous devez jouer Team Fortress 2: Le jeu de Steam Free-to-Play Vous devez jouer Team Fortress 2 juste un jeu rapide pour tester les graphismes et les performances, ou est-ce un jeu qui vaut la peine d'être joué à plusieurs reprises? Lire la suite, comme vous pouvez le voir sur l'image de style.

Je lui ai donné une image de Jersey City que j'ai trouvée sur Wikimedia. Les résultats sont ... plutôt bons. Il n'a pas saisi l'angularité du style de Demuth, mais il a certainement pris le look doux et texturé et la palette de couleurs.

fleurs-okeefe-composite

Cliquez ici pour la résolution complète.

Celui-ci est une tentative de générer un O'Keeffe synthétique, en utilisant une image assez banale de quelques fleurs que j'ai trouvées. Les résultats sont, franchement, spectaculaires. Esthétiquement, c'est l'un de mes résultats préférés. La richesse des couleurs et des formes d'O'Keeffe transparaît clairement. Les bords superposés des pétales de fleurs deviennent les bords des feuilles en arrière-plan. Les fleurs elles-mêmes se dissolvent en couleurs, devenant presque abstraites.

Ce serait une bonne peinture si un humain le faisait. Je suis très tenté de passer quelques jours à rendre une version plus haute résolution de celui-ci et à l'encadrer.

Shannon Picasso

Cliquez ici pour la résolution complète.

Voici mon amie Shannon dans son costume d'Halloween, en guise de copie Picasso. Fait intéressant, l'appareil a choisi de peindre la partie inférieure de son visage blanc (semblable à la disposition des couleurs de la pièce Picasso). Je ne suis pas sûr si c'était une coïncidence ou non, mais les résultats sont frappants. Il semble également avoir identifié correctement les cheveux de Shannon sur le côté gauche, et l'a redessiné en utilisant la couleur et le trait de la chevelure dans l'image de style. Idem pour son chapeau.

C'est l'une des pièces où les limites de la technique commencent à devenir claires. Si Picasso était en train de peindre Shannon, il aurait jeté la structure de son visage et déformé les traits pour obtenir l'effet désiré. Ce système ne comprend pas ces sortes de concepts de haut niveau, et est capable d'imiter seulement les aspects superficiels du style, comme les lignes sombres et angulaires et la palette de couleurs.

eiffel-vangogh-composite

Cliquez ici pour la résolution complète.

Assez simple: une photo de la Tour Eiffel et de l' autre Nuit étoilée de Van Gogh. Il fait un bon travail rendant le nuage dans un style Van Gogh-ey, malgré l'absence de nuages ​​dans l'image originale. Il fait aussi un bon travail de traduction de la scène du jour à la nuit.

Je ne comprenais pas pourquoi il avait décidé de rendre la pointe de la tour Fiffel comme une colonne de feu. Cela a l'air cool, mais ce n'est pas vraiment justifiable à partir des données d'entrée. Puis j'ai réalisé que l'image de style avait treize longues bandes jaunes verticales, sous la forme de reflets dans l'eau. C'est une grappe assez massive, avec si peu de données d'entraînement. La pauvre chose a probablement appris que tout bord vertical à fort contraste doit être l'une de ces réflexions. Vous pouvez voir plus de rayures verticales externes dans les nuages.

nébuleuse-vangogh-composite

Cliquez ici pour la résolution complète.

Même tableau de Van Gogh, mais cette fois je lui ai donné des étoiles à peindre. Dans ce cas, la partie des piliers de la nébuleuse de l'Aigle. J'aime les résultats - bien que, encore une fois, vous pouvez voir son obsession des bandes jaunes. Chaque partie verticale du pilier devient une ligne jaune brillante et bancale. Il est également clairement contrarié par le vert, qui n'a pas eu lieu dans les données d'entraînement, et fait de son mieux pour se débarrasser en faveur du bleu et noir.

La technologie

Certains résultats sont extrêmement convaincants, bien que la technique ait des limites claires. Certaines images ont une composition moche, et le système a du mal avec des artistes plus abstraits comme Picasso - qui aimait bien à déformer son sujet, en dispersant ses caractéristiques. L'algorithme capte ses lignes angulaires et les couleurs qui s'affrontent, mais est toujours un esclave des valeurs de pixels de l'image. Il n'a pas la compréhension dont vous auriez besoin de dévier trop loin du matériel source.

Ce qui m'excite à propos de tout cela, c'est que je ne pense pas que ces limitations soient fondamentales.

L'approche utilisée ici - former un réseau sur une image et l'utiliser pour en construire une autre - est fondamentalement un hack. Cela donne au réseau très peu de données à utiliser. Une version plus avancée de cette application utiliserait un réseau qui contient des informations sur de nombreuses peintures, et peut-être même de vraies images, pour lui donner beaucoup de contexte sur l'image qu'il essaie de "peindre".

Une compréhension profonde du style ne peut exister que dans un contexte plus large. Vous ne pouvez pas dériver d'une seule image. Concevoir une architecture qui donne au système accès à des données plus larges pourrait lui permettre de dériver une compréhension plus «humaine» de l'image, et comment les artistes représentent différents éléments du monde réel. Un tel réseau pourrait être capable de produire des images plus abstraites et mieux composées. De tels algorithmes cesseraient d'être un jouet cool (comme celui-ci) et deviendraient un moyen de produire de l'art réel et original.

Ce qui est une pensée très particulière, à certains égards.

Faire vos propres images

Si vous obtenez un résultat décevant, vous pouvez jouer avec les options un peu pour essayer d'obtenir des résultats plus convaincants. La liste complète est sur le Github. Les plus importants sont

  • -content_weight -value Quelle est la pondération du terme de reconstruction de contenu. La valeur par défaut est 5e0.
  • -style_weight -value: Combien de poids donner à l'image de style. La valeur par défaut est 1e2.
  • -style_scale - value: Quelle taille de patchs d'image le système devrait-il analyser (plus grand devient plus abstrait). La valeur par défaut est 1.0.

Une fois que tout fonctionne à votre satisfaction, veuillez poster vos images les plus intéressantes dans les commentaires. Je suis vraiment intéressé de voir ce que vous venez avec.

Crédits image: peintre de cerveau humain via Shutterstock

In this article