SlideShare une entreprise Scribd logo
1  sur  14
Télécharger pour lire hors ligne
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.
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…).
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                       
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
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:
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,
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.
 
   
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
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:
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.
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
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
Exemples sur nouvelles images.
On peut se rendre de l’​over-fitting présent sur les images d’avant.

Contenu connexe

En vedette

Exposición "La caja secreta de Snowhite"
Exposición "La caja secreta de Snowhite"Exposición "La caja secreta de Snowhite"
Exposición "La caja secreta de Snowhite"Anabel Lee
 
Curso práctico: Como crear y financiar una start up
Curso práctico:  Como crear y financiar una start upCurso práctico:  Como crear y financiar una start up
Curso práctico: Como crear y financiar una start upPedro Franco de Sarabia
 
Redéfinir les codes, bouleverser ses habitudes
Redéfinir les codes, bouleverser ses habitudesRedéfinir les codes, bouleverser ses habitudes
Redéfinir les codes, bouleverser ses habitudesLudovic Dublanchet
 
Trabajo Práctico de Cardozo y Silva
Trabajo Práctico de Cardozo y SilvaTrabajo Práctico de Cardozo y Silva
Trabajo Práctico de Cardozo y SilvaNe Yi
 
Protocolos de red
Protocolos de redProtocolos de red
Protocolos de redJose
 
Présentation coûts de la production des films en 2014
Présentation coûts de la production des films en 2014Présentation coûts de la production des films en 2014
Présentation coûts de la production des films en 2014LeCNC
 
Brochure de la oportunidad
Brochure de la oportunidadBrochure de la oportunidad
Brochure de la oportunidadNegocio en Redes
 
Presentacion final
Presentacion finalPresentacion final
Presentacion finalalexxra93
 
M sadin
M sadinM sadin
M sadinIRI
 
La Guerre des Roses Grazia Mai 2015
La Guerre des Roses Grazia Mai 2015La Guerre des Roses Grazia Mai 2015
La Guerre des Roses Grazia Mai 2015Cinquième Sens
 
Faut il craindre d'acheter ou de vendre en ligne ? Le point sur la fraude en ...
Faut il craindre d'acheter ou de vendre en ligne ? Le point sur la fraude en ...Faut il craindre d'acheter ou de vendre en ligne ? Le point sur la fraude en ...
Faut il craindre d'acheter ou de vendre en ligne ? Le point sur la fraude en ...Retis be
 
“EDIFICIO MONSEÑOR SALVATIERRA”
“EDIFICIO MONSEÑOR SALVATIERRA”“EDIFICIO MONSEÑOR SALVATIERRA”
“EDIFICIO MONSEÑOR SALVATIERRA”Andrés Hayes
 
Qui vivra liera Dossier partenariats
Qui vivra liera Dossier partenariatsQui vivra liera Dossier partenariats
Qui vivra liera Dossier partenariatsquivivraliera
 

En vedette (20)

Exposición "La caja secreta de Snowhite"
Exposición "La caja secreta de Snowhite"Exposición "La caja secreta de Snowhite"
Exposición "La caja secreta de Snowhite"
 
Proceso del caso 2
Proceso del caso 2Proceso del caso 2
Proceso del caso 2
 
Curso práctico: Como crear y financiar una start up
Curso práctico:  Como crear y financiar una start upCurso práctico:  Como crear y financiar una start up
Curso práctico: Como crear y financiar una start up
 
Redéfinir les codes, bouleverser ses habitudes
Redéfinir les codes, bouleverser ses habitudesRedéfinir les codes, bouleverser ses habitudes
Redéfinir les codes, bouleverser ses habitudes
 
Trabajo Práctico de Cardozo y Silva
Trabajo Práctico de Cardozo y SilvaTrabajo Práctico de Cardozo y Silva
Trabajo Práctico de Cardozo y Silva
 
Protocolos de red
Protocolos de redProtocolos de red
Protocolos de red
 
Présentation coûts de la production des films en 2014
Présentation coûts de la production des films en 2014Présentation coûts de la production des films en 2014
Présentation coûts de la production des films en 2014
 
Brochure de la oportunidad
Brochure de la oportunidadBrochure de la oportunidad
Brochure de la oportunidad
 
Presentacion final
Presentacion finalPresentacion final
Presentacion final
 
M sadin
M sadinM sadin
M sadin
 
Juego 18 wheels
Juego 18 wheelsJuego 18 wheels
Juego 18 wheels
 
Portfolio Print
Portfolio PrintPortfolio Print
Portfolio Print
 
La Guerre des Roses Grazia Mai 2015
La Guerre des Roses Grazia Mai 2015La Guerre des Roses Grazia Mai 2015
La Guerre des Roses Grazia Mai 2015
 
Faut il craindre d'acheter ou de vendre en ligne ? Le point sur la fraude en ...
Faut il craindre d'acheter ou de vendre en ligne ? Le point sur la fraude en ...Faut il craindre d'acheter ou de vendre en ligne ? Le point sur la fraude en ...
Faut il craindre d'acheter ou de vendre en ligne ? Le point sur la fraude en ...
 
Happyday
HappydayHappyday
Happyday
 
“EDIFICIO MONSEÑOR SALVATIERRA”
“EDIFICIO MONSEÑOR SALVATIERRA”“EDIFICIO MONSEÑOR SALVATIERRA”
“EDIFICIO MONSEÑOR SALVATIERRA”
 
Qui vivra liera Dossier partenariats
Qui vivra liera Dossier partenariatsQui vivra liera Dossier partenariats
Qui vivra liera Dossier partenariats
 
Guía impress 1
Guía impress 1Guía impress 1
Guía impress 1
 
Saphir - Exemples de réalisations
Saphir - Exemples de réalisationsSaphir - Exemples de réalisations
Saphir - Exemples de réalisations
 
Cuanto quieres ganarte
Cuanto quieres ganarteCuanto quieres ganarte
Cuanto quieres ganarte
 

Similaire à Rapport de Synthese

OpenCR__Rapport_soutenance_Finale
OpenCR__Rapport_soutenance_FinaleOpenCR__Rapport_soutenance_Finale
OpenCR__Rapport_soutenance_FinaleChady Dimachkie
 
Ideation phase: "As many ideas as I have"
Ideation phase: "As many ideas as I have"Ideation phase: "As many ideas as I have"
Ideation phase: "As many ideas as I have"charlesbail
 
Nos Systèmes by Fing : "Kit d'auto-évaluation des algorithmes"
Nos Systèmes by Fing : "Kit d'auto-évaluation des algorithmes"Nos Systèmes by Fing : "Kit d'auto-évaluation des algorithmes"
Nos Systèmes by Fing : "Kit d'auto-évaluation des algorithmes"Fing
 
Introduction à l’infographie
Introduction à l’infographieIntroduction à l’infographie
Introduction à l’infographieWiki Info Systeme
 
Scénographie des controverses 2013 à Sciences Po, Ecole de la Com
Scénographie des controverses 2013 à Sciences Po, Ecole de la ComScénographie des controverses 2013 à Sciences Po, Ecole de la Com
Scénographie des controverses 2013 à Sciences Po, Ecole de la ComStéphane Rouilly
 
Lire avec le Numérique
Lire avec le NumériqueLire avec le Numérique
Lire avec le NumériqueLaila Methnani
 
Dossier de Conception d'OPI - DreamTime
Dossier de Conception d'OPI - DreamTimeDossier de Conception d'OPI - DreamTime
Dossier de Conception d'OPI - DreamTimeRoyer Sophie
 
Les Metiers de l'Intelligence Artificielle
Les Metiers de l'Intelligence ArtificielleLes Metiers de l'Intelligence Artificielle
Les Metiers de l'Intelligence ArtificielleErol GIRAUDY
 
Introduction à l'ergonomie - Drupal Lyon
Introduction à l'ergonomie - Drupal LyonIntroduction à l'ergonomie - Drupal Lyon
Introduction à l'ergonomie - Drupal LyonOlivier Lorrain
 
Correction examen-java-avancé-1
Correction examen-java-avancé-1Correction examen-java-avancé-1
Correction examen-java-avancé-1vangogue
 

Similaire à Rapport de Synthese (20)

OpenCR__Rapport_soutenance_Finale
OpenCR__Rapport_soutenance_FinaleOpenCR__Rapport_soutenance_Finale
OpenCR__Rapport_soutenance_Finale
 
Ideation phase: "As many ideas as I have"
Ideation phase: "As many ideas as I have"Ideation phase: "As many ideas as I have"
Ideation phase: "As many ideas as I have"
 
Nos Systèmes by Fing : "Kit d'auto-évaluation des algorithmes"
Nos Systèmes by Fing : "Kit d'auto-évaluation des algorithmes"Nos Systèmes by Fing : "Kit d'auto-évaluation des algorithmes"
Nos Systèmes by Fing : "Kit d'auto-évaluation des algorithmes"
 
Introduction à l’infographie
Introduction à l’infographieIntroduction à l’infographie
Introduction à l’infographie
 
Digest billets
Digest billetsDigest billets
Digest billets
 
Scénographie des controverses 2013 à Sciences Po, Ecole de la Com
Scénographie des controverses 2013 à Sciences Po, Ecole de la ComScénographie des controverses 2013 à Sciences Po, Ecole de la Com
Scénographie des controverses 2013 à Sciences Po, Ecole de la Com
 
Bahan ajar bahasa visual
Bahan ajar bahasa visualBahan ajar bahasa visual
Bahan ajar bahasa visual
 
Lire avec le Numérique
Lire avec le NumériqueLire avec le Numérique
Lire avec le Numérique
 
Dossier de Conception d'OPI - DreamTime
Dossier de Conception d'OPI - DreamTimeDossier de Conception d'OPI - DreamTime
Dossier de Conception d'OPI - DreamTime
 
Formation ps
Formation psFormation ps
Formation ps
 
Challenge meccano jeffrey
Challenge meccano jeffreyChallenge meccano jeffrey
Challenge meccano jeffrey
 
Programmer canope rouen_2
Programmer canope rouen_2Programmer canope rouen_2
Programmer canope rouen_2
 
Traitement de l'image
Traitement de l'imageTraitement de l'image
Traitement de l'image
 
Reconnaissance de formes
Reconnaissance de formesReconnaissance de formes
Reconnaissance de formes
 
Les Metiers de l'Intelligence Artificielle
Les Metiers de l'Intelligence ArtificielleLes Metiers de l'Intelligence Artificielle
Les Metiers de l'Intelligence Artificielle
 
Les Tice pour les Nuls
Les Tice pour les NulsLes Tice pour les Nuls
Les Tice pour les Nuls
 
Tutoriel_SCRATCH_Document-Navigateur_V1
Tutoriel_SCRATCH_Document-Navigateur_V1Tutoriel_SCRATCH_Document-Navigateur_V1
Tutoriel_SCRATCH_Document-Navigateur_V1
 
Introduction à l'ergonomie - Drupal Lyon
Introduction à l'ergonomie - Drupal LyonIntroduction à l'ergonomie - Drupal Lyon
Introduction à l'ergonomie - Drupal Lyon
 
Digital lab brief
Digital lab   briefDigital lab   brief
Digital lab brief
 
Correction examen-java-avancé-1
Correction examen-java-avancé-1Correction examen-java-avancé-1
Correction examen-java-avancé-1
 

Rapport de Synthese

  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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.
  • 14. Exemples sur nouvelles images. On peut se rendre de l’​over-fitting présent sur les images d’avant.