César Schwartz

Introduction aux DCGAN

1- Introdution et expliction vulgarisé du fonctionnement.

2- Installation préalable ( Ubuntu, Cuda, CuDNN, Torch(lua)/pytoch(python)

3- Fonctionnement, et expérimentation.

4- Informations/liens pour approfondir.

1) Introdution et expliction vulgarisé du fonctionnement.

Introduit en 2015 par 3 chercheurs et ingénénieur dont Soumith Chintala ( directeur de recherche IA chez Facebook ), Alec Radford et Luke Metz, le Deep Convolutional Generative Adversarial Networks est l'un des design les plus populaire pour le Generative adversarial networks (GAN). Elle fait partis du machine learning, soit d'un type d'intelligence Artificiels.

Contrairement à un programme traditionnelle ou le développeur écrit des règles que l’ordinateur va suivre, les réseaux de neurones vont se nourrir des données qu’on lui donne ( des images, peintures…) par lequel il apprendra les règles grâce à ses données.

Le Gan (Generative Adversarial Networks) est un arrangement de deux réseaux de neurones. Il y a le réseau Générateur et le réseau Discriminateur. Le Générateur va fabriquer les peintures. Le réseau Discriminateur va essayer de dire si la peinture générée vient du jeu de peintures initiales qui ont été collectés au départ. Le réseau Discriminateur va regarder les peintures générées par le Générateur et les comparer à ce qu’il sait des peintures réelles. Sa tâche est de différencier les images réelles des images générées. La tâche du Générateur est de produire une image que le Discriminateur pense être réelle et non générée. Le but du Générateur est de tromper le Discriminateur, et le but du Discriminateur est de ne pas être trompé par le Générateur. Quand ils démarrent, les deux Réseaux sont nuls dans leurs tâches. Le Générateur va faire de mauvaises peintures, et le Discriminateur ne fait que deviner de manière aléatoire. Au fur et à mesure, ils deviennent meilleurs dans leur tâche respective.

Ainsi des images « fake » (en plus du dataset donné au départ) sont créé par les 2 neurones.

le papier des créateurs du DCGAN. Important !

http://pads.ustensile.be/ether//up/f6816c192f1f648d050d36ef2cb6ac99.pdf

2) Installations préalable ( Ubuntu, Cuda, CuDNN, Torch(lua)/pytoch(python).

Tout d'abord, afin d'installé un GAN et le faire fonctionné, il est nécessaire d'avoir un ordinateur récent tournant sur linux (Ubuntu) ou mac. (avec une carte graphique nvidia si possible)

Pour ma part j'ai du installé linux "Ubuntu"

Ayant un pc portable tournant sur Windows, et ne pouvant installer en dual-boot linux par manque de place sur mon disque dure, et parceque c'est aussi plus compliqué (besoin de rédemarrer l'ordinateur à zero etc...) je l'ai installé sur une clée USB.

https://lecrabeinfo.net/installer-ubuntu-18-04-lts-dual-boot-windows-10.html

"Si jamais vous voulez l'installer en dual-boot assez facilement. L'avantage étant que le Dual-boot marche plus rapidement que sur une clée usb, l'installation est de même plus facile"

https://lecrabeinfo.net/installer-ubuntu-18-04-lts-dual-boot-windows-10.html

Sinon : Il faut tout d'abord booter un ubuntu ( 14.04 ou supérieur) sur une clée usb (3.0 si possible) avec au minimum 8go de mémoire. (voir lien si dessous pour installer un boot Ubuntu. Seulement les première lignes.)

https://lecrabeinfo.net/installer-ubuntu-18-04-lts-dual-boot-windows-10.html

Il vous faudra ensuite une 2ème clée usb de 32go minimum (optimal) pour installer le système dessus.

L'installation d'un système d'exploitation sur une clée usb est un casse-tête, mais j'ai finalement réussi, après une dizaines de problèmes sur les différents processus tous différents en fonction de la version utilisé etc..

J'ai préféré utiliser la dernière version d'ubuntu 18.04 pour plus tard, la plus compliqué car il y'a peut de documentation sur le sujet.

Si vous voulez utilisé une version inférieur, se référer au lien si dessous (contient tout pour installer les préalables d'installation d'un GAN sur votre ordinateur).

https://github.com/robbiebarrat/art-DCGAN/blob/master/INSTALL.md

Il faudra alors brancher les 2 clées usb sur votre ordinateur, une contenant le boot et l'autre qui deviendra votre main disc pour Ubuntu.

tuto si dessous :

"Ne pas créé de partition swap lors de l'installation seulement un /"

pour toutes les versions sauf la 18.04

https://doc.ubuntu-fr.org/tutoriel/installation_sur_disque_usb

pour la denière version (18.04) :

https://forum.ubuntu-fr.org/viewtopic.php?id=2024502

Après l'installation d'ubuntu sur USB:

Il faut installer CUDA et Cudnn si vous avez une carte graphque nvidia (marche bien mieux et est beaucoup plus rapide).

Voir si dessous pour toutes les versions sauf la 18.04. Sachant qu'a partir de la version 18.04 il n'est plus possible d'installer Torch ( language lua) ce qui est problématique car la plus part des tutos et documentations, codes son sous Torch. Sinon, si vous continué avec la 18.04, il vous faudra installer pytoch (language python). (Cela ma pris des jours pour trouver ce problème, qu'on ne pouvait pas installer torch sur la 18, car il n'est plus dévellopé, mais le futur se fera probablement avec pytoch.

https://github.com/robbiebarrat/art-DCGAN/blob/master/INSTALL.md

Pour Pytorch, voir les tutos si dessous, il vous montrera la suite des installations, notamment d'un DCGAN ou GAN. Vous rencontreré probablement des problèmes, mais il faut s'accrcocher au début.

https://pytorch.org/tutorials/

Si vous n'avez pas de carte graphique, ou que vous ne voulez pas l'utiliser, mettre un 0 dans ngpu, à l'initiation du code pour le DCGAN.

3) Fonctionnement, et expérimentations.

Aujourd'hui le DCGAN fait ses introdutions dans l'art notamment avec l'artiste Robbie barrat qui l'a introduit.

Un bonne article sur lui et son Art : https://yalepaprika.com/articles/the-artist-the-curator-and-the-neural-net-a-conversation-with-robbie-barrat/?fbclid=IwAR2Yr9nMm3dxrla2phQ5XoDWjFj8u2b6ky58lPjhJpst6nB7tQ77-DqTKhQ

exemples de ses dernier travaux et expérimentations :

explication rapide du GAN par Robbie Barrat en vidéo (pour la présentation de son expositions en février 2019 à paris)

Barrat / Barrot , Infinite Skulls #2 // Apprentissage des crânes par le GAN from L'Avant Galerie Vossen on Vimeo.

Tuto de l'un des créateurs du DCGAN Pour le faire fonctionner et expérimenter ( requis Torch) :

https://github.com/soumith/dcgan.torch

si vous utiliser Pytorch et la 18.04 Ubuntu :

https://pytorch.org/tutorials/beginner/dcgan_faces_tutorial.html

Les tutos sont très complet et/mais complexe. Vous apprendrez les bases du fonctionnement du DCGAN ( code, descriminateurs/génrateurs, boucles ...)

Mes expérimentations:

Après plusieurs heures d'apprentissage, j'en suis arrivé à faire marcher la machine et qu'elle apprenne de ma data (images...) Au tout début le DCGAN à marché mais le résultat n'a rien donné (même sortie d'image qu'a l'entrer).Plus tard, après plusieurs boucles, la machine à construit des fakes images qu'elle à appris sur la data intial résulatant du combat déscriminateur contre générateur.

images à venir, (je n'est pas ma clée usb ubuntu sur moi, soit mon résultat et autres fichier).

4) Informations/liens pour approfondir.

Il existe pas mal de vidéos sur internet sur le sujet de l'installation des préalables pour utiliser un DCGAN/GAN

liens utiles :

https://medium.com/@keisukeumezawa/dcgan-generate-the-images-with-deep-convolutinal-gan-55edf947c34b

https://github.com/soumith

https://github.com/robbiebarrat/art-DCGAN

pour convertir du Torch en Pytorch : https://github.com/clcarwin/convert_torch_to_pytorch