Il y a quelques jours, je suis tombé sur un article qui prétendait montrer en image les rêves que fait Google quand il dort.
Le truc, c’est qu’en fait ça n’était pas l’un de ces pièges à clic du genre : « Vous n’imagineriez jamais ce qu’il a fait ensuite ».
C’était bien des images générées par les algorithmes créés par Google, pour l’analyse de la reconnaissance des images. Et le moins qu’on puisse dire, c’est que l’algorithme de Google a de l’imagination !
Ouah ! Sans déconner ? On en est déjà là ? L’intelligence artificielle pointe déjà le bout de son nez, mais par un biais impromptu ? C’est que ça m’a l’air intéressant tout ça !
Du coup, après quelques recherches, je suis tombé sur un blog Anglophone qui explique comment installer de quoi faire faire des rêves à Google sur son PC.
En gros, on fait tourner des scripts Python dans un linux tout bien configuré dans une Machine Virtuelle.
Comme c’est pas forcément évident et en Anglais, je vous donne un tutoriel qui fonctionne sans problèmes sous Windows 8.1 (j’imagine que pour Windows 8 et 7 ça doit être quasi pareil ^^ ).
Installer Docker
Tout d’abord, on va installer Docker. C’est un genre de logiciel de gestion de package.
Chaque package contient un OS et tous les modules qu’il faut pour faire tourner une application. Ce qui est cool c’est que comme il s’agit d’une version donnée de l’OS et des modules, on résout ainsi tout problème de compatibilité avec l’application qu’on veut y faire tourner.
Pour ce faire, on va récupérer le fichier d’installation pour Windows de Docker direct sur sa page github :
https://github.com/boot2docker/windows-installer/releases/tag/v1.7.1
On clique sur le lien « docker-install.exe » pour le télécharger et on double clique dessus une fois terminé pour que ça installe sur le PC les quelques éléments que voici :
- Le client Docker
- VirtualBox qui est un logiciel de gestion de machines virtuelles (En gros, un PC dans un PC, et ça peut même faire tourner OSX dans Windows ! Sisi !).
- Git qui est un logiciel de gestion de sources, c’est à dire que ça permet de télécharger les derniers fichiers à jours d’une application, en direct du cloud.
Perso, j’avais déjà virtualBox et Git d’installé, et je ne les ai pas désinstallés avant de lancer l’installation de Docker. Donc ne vous prenez pas la tête (je sais c’est pas très propre, mais j’ai eu la flemme 😉 ). Le principal, c’est que ça fonctionne.
Vous suivez le wizard de l’installateur (next, ok, …) et à la fin de l’installation, un raccourci « Boot2Docker Start » aura été créé sur le bureau.
Vous double cliquez dessus, ça ouvre un invité de commande (Un terminal sous Windows, vous savez, la boîte de dialogue dans laquelle c’est écrit en blanc sur fond noir ^^). Il faut ensuite attendre que le lancement de Docker soit terminé. ça sera quand vous verrez dans le terminal :
nomDutilisateurWindows@NOM-DU-PC $
Où « nomDutilisateurWindows » est votre nom d’utilisateur de votre Windows et « NOM-DU-PC » est le nom que vous avez donné à votre PC.
Là vous pouvez lancer cette commande à la suite du « $ » qui va vous permettre de vérifier si l’installation s’est bien déroulée :
docker version
ça devrait vous donner quelque chose comme ça :
$ docker version Client version: 1.7.1 Client API version: 1.19 Go version (client): go1.4.2 Git commit (client): 786b29d OS/Arch (client): windows/amd64 Server version: 1.7.1 Server API version: 1.19 Go version (server): go1.4.2 Git commit (server): 786b29d OS/Arch (server): linux/amd64
Hyper ! Votre client Docker fonctionne !
Vous avez donc mis en place le gestionnaire de machine virtuelle toute configurée qui va bien pour faire tourner les Scripts du Deep Dream de Google.
Ne fermez pas cette fenêtre, vous aurez besoin d’y revenir très bientôt ;).
Configurer Deep Dream
Vous allez pouvoir télécharger le conteneur Docker de notre ami Blogueur par le biais du lien ci-dessous. Cliquez sur le bouton « Download ZIP » en bas de la colonne de droite :
https://github.com/ryankennedyio/deep-dream-generator
Vous déplacez le fichier zip téléchargé dans un dossier « peu importe le nom mais moi je l’ai nommé deepdreamdocker » dans votre dossier personnel sous Windows (chez moi ça donne : « C:\Users\nomDutilisateurWindows\deepdreamdocker« ). Puis vous dé-Zippez l’archive à cette même place.
Vous retournez dans le terminal Docker que normalement vous n’avez pas fermé, puis vous tapez :
cd deepdreamdocker
Où « deepdreamdocker » est le nom du dossier que vous avez créé. La commande permet d’entrer dans ce nouveau dossier.
Ensuite, vous tapez :
docker build -t ryankennedy/deepdream
Où « ryankennedy » est le nom du blogueur qui a préparé tout ça pour que nous, pauvres mortels, utilisateurs de Windows, plus artistes que matheux, puissions aussi toucher du doigt la félicité de pouvoir faire rêver Google :D. J’imagine que n’importe quel mot à la place de « ryankennedy » fonctionnerait ici, mais j’ai préféré me la jouer « Si je fais tout comme il faut, ça va trop marcher ».
Là, c’est un peu long donc vous pouvez comme dirait l’auteur du blog :
go and get a coffee (or three).
ça peut prendre pas mal de temps vu que ça télécharge 3GB de données pour le conteneur.
à la fin, vous retrouverez le célèbre :
nomDutilisateurWindows@NOM-DU-PC $
Qui vous indiquera que tout s’est bien déroulé. Là aussi, ne fermez pas le terminal, vous allez encore en avoir besoin.
Lancer Deep Dream
Une fois que le Conteneur est tout bien construit, il faut le lancer en tapant la commande suivante dans le terminal :
docker run -d -p 443:8888 -e "PASSWORD=password" -v //c/Users/nomDutilisateurWindows/deepdream:/src ryankennedyio/deepdream
Attention, là c’est important : « //c/Users/nomDutilisateurWindows » est l’endroit de votre disque dur dans lequel le conteneur sera lancé. ça doit absolument être votre dossier personnel Windows.
Il faut respecter les lettres Majuscules.
Et « /deepdream » sera un nouveau dossier que vous aurez créé dans votre dossier personnel Windows.
Je n’ai pas tout compris, mais en gros, « //c/Users/nomDutilisateurWindows/deepdream » deviendra le dossier partagé dans lequel vous placerez les images avec lesquelles vous voulez jouer, parce qu’elles seront accessibles à l’application que vous venez de lancer.
Oui, c’est pas le même nouveau dossier que celui dans lequel j’ai extrait l’archive zip, et là encore, je ne pense pas que ça ait une grande importance. C’est pour avoir un dossier tout propre, et voir si ça créé un système de fichiers dans ce dossier nouvellement créé.
Rappelez-vous seulement qu’il faut que ça soit dans son dossier personnel Windows.
Si tout s’est bien passé, vous devriez voir une suite de caractères dans le terminal, juste après la ligne de commande pour lancer le conteneur.
Là, vous tapez :
boot2docker ip
ça doit vous donner une adress IP. Chez moi ça a donné :
192.168.59.103
il se peut que pour vous ça soit un peu différent ou pas ^^.
Ne fermez toujours pas le terminal. (Je ne sais pas si ça joue parce que je n’ai pas testé, mais j’ai dans l’idée, qu’il faut qu’il reste allumé pour que ça fonctionne correctement 😉 ).
Jouer avec Deep Dream
Vous allumez votre navigateur préféré (Pour moi c’est Google Chrome). Puis vous saisissez dans la barre d’url :
Où « 192.168.59.103 » est l’IP obtenue par la commande « boot2docker ip » tapée précédemment.
Attention, n’oubliez pas le « s » dans « https ».
Vous aurez une mise en garde de sécurité. Vous cliquez alors sur « Paramètres avancés », puis sur « Continuer vers le site 192.168.59.103 (dangereux) ».
Ne vous inquiétez pas, c’est votre conteneur, il est en local sur votre PC, ça n’a rien de dangereux.
Là on vous demande un mot de passe, vous tapez :
password
Puis vous cliquez sur le lien « dream.ipynb ».
Vous aurez un popUp qui dira qu’une certaine librairie n’a pas pu être chargée. Vous vous en foutez. Rien de grave, vous cliquez sur « OK ».
Là, vous voyez qu’on a un genre de page html avec en titre : « IP[y] Notebook ». En fait, ça permet de modifier et lancer des scripts Python directement dans le navigateur. Super simple, super cool, on est à deux doigts d’y arriver.
En haut, vous verrez un bouton « play », vous cliquez dessus environ 10 fois (ça lance les scripts les uns après les autres, pas besoin de comprendre.) jusqu’à ce qu’on arrive au Script suivant :
img = np.float32(PIL.Image.open('/src/input.jpg')) showarray(img)
C’est à ce moment là, que vous pouvez mettre une image (disons « picture.jpg« ) dans votre dossier « C:\Users\nomDutilisateurWindows\deepdream« , qui sera considéré par les scripts de votre application Deep Dream comme le dossier « /src« .
Ensuite, directement dans le navigateur vous tapez à la place de « input.jpg », le nom de l’image que vous avez préalablement placé dans le dossier « C:\Users\nomDutilisateurWindows\deepdream« . Dans mon cas ça sera « picture.jpg« , et le code donnera :
img = np.float32(PIL.Image.open('/src/picture.jpg')) showarray(img)
Vous remarquerez que j’ai juste changé « input » par « picture ».
Attention, il faut laisser le « /src » avant le nom de l’image.
Vous n’avez plus qu’à cliquer sur le bouton « play » d’en haut environ 12 fois, et laisser tourner les Scripts.
Vous verrez, l’image se modifier au fur et à mesure, et vous pourrez sauvegarder l’image à chacun des stades de sa modification (clic droit sur la photo qui se modifie, puis « Ouvrir l’image dans un nouvel onglet »).
Soyez gentil au début, mettez une image pas trop lourde, parce que vous pouvez faire planter le conteneur. (C’est ce qui vient de m’arriver).
Si cela arrive, vous retournez dans le terminal, puis vous tapez :
docker stop
Vous attendez, quelques secondes que votre conteneur « s’éteigne », puis vous reprenez à partir du chapitre « Lancer Deep Dream ». Et vous déroulez à nouveau le processus. (Hormis la création de dossier et le déplacement d’images).
Bon, là, on a appris à configurer tout ça en mode feignasse sans rien comprendre, je compte sur vous pour aller plus loin, et voici quelques pistes pour vous y aider :
- L’article du blog de recherche Google sur le sujet
- Une galerie d’images d’essais par les mecs de chez Google
- Le lien du Tutoriel en Anglais, pour ceux qui ont un Mac
Moi j’ai tenté avec cette image :
Et j’ai obtenu ça en une vingtaine de minutes :
À vous de jouer 🙂