Méthode de densification d’une base d’images 
utilisant du Deep Learning 
Robin NICOLET
ロバン・ニコレ
Département Informatique
I...
Ce constat est à l’origine de mon projet de recherche à ​Nayama’s Laboratory,
Graduation School of Information Science and...
Le réseau est entraîné à produire des résultats qui sont ensuite
comparés à la ​vraie image, générée à partir d’un modèle ...
et donc entièrement testée. Le lecteur peut trouver des exemples d’images générées                       
par cette moitié...
Les autres images sont obtenues en interpolant les encodages de façon
linéaire. La suite du projet aurait pour objectif d’...
Exemples de sprites des jeux Pokémon, utilisés pour ce projet.
J’ai fait le choix de travailler sur des sprites de jeux vi...
prend en entrée une image et donne en sortie un vecteur à deux dimensions
(contrefaçon ou pas) dont chacune contient un sc...
3.1 Modifications du CGAN 
Ma première tentative d’amélioration des images générées consistait à
introduire un mappage des...
par le discriminateur se font concurrence. Un peu comme si chacun tirait la
corde de son côté. Après de longues tentatives...
Où ​x, entre 0 et 1, représente la position de c​3 entre c​1 et c​2​, en pourcentage
du chemin parcouru.
4.1 Résultat actu...
5 Conclusion 
Ce PFE qui s’inscrit dans le cadre de mon échange académique à l’Université
de Tokyo a été pour moi l’occasi...
ANNEXES 
Exemples de résultat. ​Pour chaque image, de gauche à droite puis de haut en bas:
Sprite 1 et 9: originaux. Sprit...
Exemples sur nouvelles images.
On peut se rendre de l’​over-fitting présent sur les images d’avant.
Rapport de Synthese
Prochain SlideShare
Chargement dans…5
×

Rapport de Synthese

16 vues

Publié le

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
16
Sur SlideShare
0
Issues des intégrations
0
Intégrations
1
Actions
Partages
0
Téléchargements
1
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Rapport de Synthese

  1. 1. Méthode de densification d’une base d’images  utilisant du Deep Learning  Robin NICOLET ロバン・ニコレ Département Informatique INSA de Lyon 2016 Sous la responsabilité de : 中山英樹​ (Hideki NAKAYAMA) : The University of Tokyo Stefan DUFFNER : Département Informatique Résumé​: Ce PFE en recherche s'inscrit dans le cadre d'un échange académique avec l'université de Tokyo. La génération de contenu graphique en masse est très coûteuse et les jeux vidéo ne s'y trompent pas. Il est très fréquent que les éléments à caractère aléatoire partagent un petit nombre d’éléments graphiques. C'est pour faire face à cette contrainte que ce projet cherche à trouver une méthode deep learning pour créer artificiellement du contenu supplémentaire, à partir d'une collection d'images existante. Ce rapport présente deux méthodes qui tentent de répondre au problème. La première, qui dérive d'une publication précédente, sert de base pour la deuxième qui, malgré qu'elle soit inachevée, présente de bien meilleurs résultats. Mots-clés​: réseaux de neurones, images, recherche Abstract​: This graduation project was conducted during an academic exchange at The University of Tokyo. Mass production of graphic content is quite expensive and who knows that better than video game producers ? Frequently, one will come across randomly generated elements in a game that share the same graphic elements. This project aims to face this constraint, try and develop a deep learning method to artificially generate additional content from an existing collection of images. This report presents two methods trying to address this problem. The first one, which directly derives from a publication, becomes the foundation for the unfinished, yet already better, second method. Keywords​: neural networks, images, research 1 Introduction  Lorsqu’il s’agit de concevoir des environnements virtuels, la génération de contenu peut s’avérer être un enjeu de taille. Une grande partie de ce contenu est souvent généré de façon aléatoire car il ne serait pas raisonnable de produire celui-ci à la main. On peut noter le cas classique des RPG (jeux de rôle) dont les items gagnés par le joueur ont souvent des noms et des caractéristiques aléatoires. Cependant, ceux-ci partagent souvent un petit nombre d’illustrations. La raison est simple: il serait bien trop long et coûteux de créer assez d’illustrations différentes et la génération spontanée d’images de qualité est encore un problème ouvert.
  2. 2. Ce constat est à l’origine de mon projet de recherche à ​Nayama’s Laboratory, Graduation School of Information Science and Technology, The University of Tokyo​ . Ce laboratoire de recherche se concentre sur le ​deep learning​ , un sous-ensemble du machine learning. Illustration: L’objectif est de générer des images intermédiaires. L’objectif de recherche dans lequel s’inscrit ce projet est donc le suivant: à partir d’un ensemble d’images restreint, générer de nouvelles images, assez différentes pour être considérées comme distinctes de celles déjà existantes mais assez ressemblantes pour tenter de conserver l’unité graphique de l’ensemble des images. On suppose que l’on a le temps et les ressources d’entraîner le réseau spécifiquement pour chaque collection d’images. 1.1 Existant : Publications en relation avec le projet  Pour rester dans la synthèse, voici deux publications très proches de mon sujet de recherche. ● Learning to Generate Chairs, Tables and Cars with Convolutional Networks, Dosovitskiy et al., eprint arXiv:1411.5928, 11/2014 Ce papier se concentre sur l’étude d’un réseau de neurones entraîné à produire des images de chaises à partir de plusieurs paramètres d’entrée (type de chaise, rotation, déformation, zoom, etc…).
  3. 3. Le réseau est entraîné à produire des résultats qui sont ensuite comparés à la ​vraie image, générée à partir d’un modèle 3D. Les auteurs démontrent la capacité du réseau à construire une représentation intelligente (une qui permet une extrapolation) des images qu’il doit produire, en donnant des valeurs quelconques à des paramètres entraînés de façon discrète et en observant les résultats. Avec le recul, c’est de cette publication que ce projet se rapproche le plus. Et c’est sûrement de celle-ci que je partirais si commençais aujourd’hui, n’étant plus débutant en machine learning. ● Unsupervised representation learning with deep convolutional generative adversarial networks, Radford et al., eprint arXiv:1511.06434, 11/2015 Cette publication formalise une architecture de réseaux de neurones que les auteurs nomment DCGAN (​Deep Convolutional Generative Adversarial Network). Le but est de générer des images similaires à (lire: qui se fondent dans) la masse des images disponibles. Cette méthode mets deux réseaux en duels dans un scénario de police versus faux-monnayeur, où les images sont la monnaie. Ceci mène théoriquement à un cercle vertueux et permet la génération d’images réalistes. En pratique, outre le fait que ce genre d’architecture est assez instable à entraîner, la génération d’images naturelles par cette technique ne dupe rarement un être humain plus de quelques secondes.     1.2 Aperçu de l’état courant du projet  L’architecture actuelle ressemble à celle utilisée pour générer les chaises tout                      en étant pensée pour un problème moins supervisé et faisant usage de réseaux                          adversaires. Par manque de temps, l’architecture complète n’a pas pu être développée                       
  4. 4. et donc entièrement testée. Le lecteur peut trouver des exemples d’images générées                        par cette moitié d’architecture ci­dessous (d’autres sont disponibles en annexe):  Exemple de résultats. Sur la gauche, une transition linéaire d’une image à une autre. Sur la droite, des images “intermédiaire”.   Sur chaque série de résultats visible ci-dessus (18 images par série), les deux images de meilleure qualité sont les ​vraies images (violet). A côté, on trouve les images que le réseau a été ​entraîné à produire (orange). Elles sont le résultat d’un ​encodage qui sert de base à un réseau “peintre” qui ​génère une image à partir d’un encodage. Les autres images sont le résultat d’une transition linéaire uniforme du premier encodage vers le deuxième pour la partie gauche et non uniforme pour la partie droite (chaque ​dimension de l’encodage est interpolée aléatoirement). Illustration. Enchaînement encodeur/paintre
  5. 5. Les autres images sont obtenues en interpolant les encodages de façon linéaire. La suite du projet aurait pour objectif d’entraîner un réseau de neurones à interpoler deux codes afin de trouver de meilleurs résultat parmi l’ensemble des images générables par le réseau peintre. 2 Cadre détaillé du projet  Ce projet de fin d’études est un projet qui s’inscrit dans le cadre de ma dernière année à l’INSA de Lyon au département informatique, en échange à l’Université de Tokyo. Les masters japonais étant nécessairement des masters recherche, mon projet est devenu un projet de recherche avant même de commencer, au laboratoire Nakayama dans lequel j’ai été accepté. Ce laboratoire se concentre sur la résolution de problèmes nécessitant l’utilisation de techniques de machine learning et plus précisément de deep learning. En bref, le ​machine learning, ou apprentissage automatique en français, concerne l’ensemble des techniques algorithmiques essayant de réaliser des programmes qui apprennent et “comprennent” des concepts plus ou moins abstraits, souvent dans le but de réagir plus intelligemment face à des situations nouvelles. Reconnaissance d’écritures, vocale, d’images, prédiction météo, de recherche, d’entrée clavier, etc… autant d’exemples tout à fait illustrateur de problèmes qui sont “résolus” avec tes techniques de ​machine learning. Le ​deep learning, ou apprentissage en profondeur, concerne l’ensemble des méthodes tentant de représenter le problème avec un haut niveau d’abstraction. Typiquement, les données d’entrées vont être traitées en plusieurs fois, réduisant à chaque étape la quantité d’information transmise. Chaque niveau doit alors apprendre comment condenser l’information pour ne garder que ce qui est important pour le problème. En pratique, on constate que ce genre d’architecture, couplé à la montée en puissance des machines, a révolutionné le machine learning ces dernière années, en surpassant beaucoup d’autres méthodes, notamment en reconnaissance vocale et d’images. De par la nature de ma présence à l’Université de Tokyo et le fonctionnement de mon laboratoire, il m’est revenu la tâche de choisir mon propre sujet de projet. A l’issue de ma recherche de sujet et de la lecture de nombreuses publications, et suite à l’approbation collective de mon laboratoire et de l’école, me voici alors lancé sur le problème qu’est la génération d’images. J’ai décidé de travailler principalement sur des ​sprites de jeux vidéo. ​Sprite est un mot venant de l’anglais, utilisé dans le jeu vidéo pour désigner un élément graphique à l’écran, possédant possiblement plusieurs états ou non. Dans ce document ​sprite fera référence à ce genre d’images:
  6. 6. Exemples de sprites des jeux Pokémon, utilisés pour ce projet. J’ai fait le choix de travailler sur des sprites de jeux vidéo exclusivement car premièrement le jeu vidéo est une de mes passions, et deuxièmement car la taille des images est une grande contrainte. La quantité de variables nécessaire pour générer des images augmente considérablement avec la taille de celles-ci, augmentant les durées de calcul déjà très importantes. J’ai choisi les sprites des jeux Pokémon pour leur abondance, leur qualité et le fait que la plupart sont découpable en un carré de 64x64 pixels (px) en ne perdant pas ou peu d’information. Toutes les images utilisées ou générées au cours du projet ont la même taille de 64 64px sur 4 canaux: rouge, vert, bleu, alpha/opacité (RGBA). 3 Evolution du projet  Au début du projet je suis parti sur une architecture de type DCGAN (cf. deuxième publication dans l’introduction). Comme j’étais débutant en machine learning, une bonne partie du début du PFE a été consacrée à comprendre, apprendre les mécanismes en jeu et essayer d’adapter l’architecture à mon problème. Macro-architecture du DCGAN. L’architecture de type DCGAN fait intervenir deux réseaux, le générateur et le discriminateur. Le générateur génère des images à partir d’une source d’entropie, dans notre cas un vecteur à N dimensions dont les valeurs sont comprises entre 0 et 1. Ces images générées sont appelées ​contrefaçons. Ce générateur est composé de plusieurs couches déconvolutives avec rectification. Le discriminateur, qui est chargé de discerner les contrefaçons des vraies images,
  7. 7. prend en entrée une image et donne en sortie un vecteur à deux dimensions (contrefaçon ou pas) dont chacune contient un score; le plus haut score l’emporte. On peut noter que le générateur peut être considéré comme une fonction d’un ensemble Z, d’où sont pris les vecteurs aléatoires, vers l’ensemble des images RGBA. L’objectif de l’entraînement est alors de modifier les paramètres du générateur pour que l’ensemble généré soit compris dans “l’ensemble des images visuellement correct” par rapport à notre problème, qui est un sous-ensemble de l’ensemble de toutes les images. Premiers résultats du DCGAN. Pas encore de gestion de l’opacité (bleu). En mettant de côté le fond bleu et la qualité médiocre des premiers résultats, les images générées par un DCGAN sur des ensembles d’images variées sont souvent incompréhensibles pour un humain. Ce type de réseau est très bon pour générer des visages ou des nombres, car il existe souvent des centaines voir milliers d’images très similaires. Dans notre cas, ou le cas d’une banque d’images naturelles comme CIFAR, les images, même si elles sont rangées par classe, sont très variées. Il est souvent très rare dans ce genre de cas de générer des images cohérentes pour un humain. Cependant, le point fort du DCGAN et que les résultats peuvent se révéler très créatifs.      
  8. 8. 3.1 Modifications du CGAN  Ma première tentative d’amélioration des images générées consistait à introduire un mappage des vraies images dans les résultats. Le raisonnement derrière est que les vraies images sont par définition incluses dans l’ensemble des images correctes. L’ajout d’un buffer pour les images générées afin de pouvoir les donner au discriminateur sur plusieurs générations a aussi largement aidé à réduire les problèmes de dégénérations dans le duel discriminateur/générateur. Macro-architecture DCGAN + mappage + buffer Exemples d’interpolation linéaire avec cette architecture Le plus gros problème de cette architecture, et c’est peut être là où le manque d’expérience a frappé, est que la correction par le mappage et celle
  9. 9. par le discriminateur se font concurrence. Un peu comme si chacun tirait la corde de son côté. Après de longues tentatives pour améliorer la viabilité de ce système, je suis passé à autre système, même en sachant que je n’aurais peut-être pas le temps de finir. C’est ce qui a mené à l’architecture actuelle. 4 Architecture actuelle  Pour la deuxième approche, j’ai essayé de pallier aux points faibles de la précédente architecture. Premièrement, on sépare le générateur (qui change de nom pour ​peintre) du discriminateur, car bien que ce soit la partie essentielle à la génération de nouveau contenu, l’instabilité de l’entraînement peut s'avérer être un vrai problème. Nouvelle macro-architecture On sépare donc le processus en deux temps. Premièrement on entraîne un encodeur à compresser l’information d’une image en un code transmis au réseau peintre, qui est chargé de la repeindre. L’encodeur étant une succession de couche de convolution, on devrait pouvoir avoir une information suffisamment abstraite pour nous permettre d’interpoler les différents codes. Dans un deuxième temps, et celui-ci va rester théorique malheureusement, on entraîne un réseau mélangeur, probablement entraîné en DCGAN, dont l’objectif est d’apprendre à trouver quel chemin prendre d’un code C1 à un code C2, pour que le résultat conserve un style de qualité. Une fois ce réseau entraîné, on peut théoriquement calculer, deux composantes à la fois, n’importe quelle combinaison linéaire de plusieurs codes. Ce mélangeur peut être défini de cette façon:
  10. 10. Où ​x, entre 0 et 1, représente la position de c​3 entre c​1 et c​2​, en pourcentage du chemin parcouru. 4.1 Résultat actuels  Sans la deuxième partie prévue, les résultats sont similaires à ceux constatés par la publication sur la génération des chaises. La différence avec leur publication est principalement que l’encodage n’est pas supervisé. Premièrement, on remarque qu’il y a bien eu un travail d’abstraction dans l’encodeur. Voici par exemple un cas d’interpolation bien réussi: Interpolation. De gauche à droite, haut en bas. La première et dernière image sont les vraies. Adjacentes, on trouve les images sur lequel le réseau s’est entraîné. Pour la suite du raisonnement, on suppose qu’il n’est pas probable que la simple transition d’une image A vers une image B soit visuellement le meilleur résultat. De plus, nous ne cherchons pas à faire du morphisme, mais à générer du contenu de qualité, en nous aidant de l’existant.
  11. 11. 5 Conclusion  Ce PFE qui s’inscrit dans le cadre de mon échange académique à l’Université de Tokyo a été pour moi l’occasion de découvrir la recherche et le machine learning, notamment la génération d’images. La première solution développée pour répondre au problème de génération de contenu s’est révélée longue et infructueuse mais a servi de fondement, aussi bien au niveau des connaissances que de l’expérience, à une deuxième solution qui a montré de meilleurs résultats sans même être terminée. Si les objectifs de départ ne sont pas vraiment remplis, je garde en tête qu’il aurait fallu que je fasse mieux que les chercheurs qui travaillent actuellement sur le sujet, en moins de six mois, sans expérience. Je n’ai donc pas vraiment contribué à l’avancement de la recherche dans ce domaine par la parution d’une publication, mais je repars avec de nombreux acquis, dans des compétences que je n’avais même pas. Références  Unsupervised representation learning with deep convolutional generative adversarial networks, Radford et al., eprint arXiv:1511.06434, 11/2015 Learning to Generate Chairs, Tables and Cars with Convolutional Networks, Dosovitskiy et al., eprint arXiv:1411.5928, 11/2014
  12. 12. ANNEXES  Exemples de résultat. ​Pour chaque image, de gauche à droite puis de haut en bas: Sprite 1 et 9: originaux. Sprite 2 à 8: interp. uniforme. Sprite 10+: interp. aléatoire
  13. 13. Exemples sur nouvelles images. On peut se rendre de l’​over-fitting présent sur les images d’avant.

×