Auteur: HE la source de Master of Science informatique appliquée à l'Université Fudan, lire, direction de la recherche de l'intelligence artificielle et l'apprentissage de la machine.
Réseau formule de confrontation (de GAN) est le modèle récent d'apprentissage profond chaud. Il suffit de lire récemment des documents disponibles dans ce domaine, j'ai couru un code d'GAN, puis écrit cet article pour introduire GAN.
Ce document est divisé en trois parties:
-
Le GAN d'origine introduire le principe de
-
Le même principe est très important DCGAN
-
Tensorflow DCGAN comment exécuter le code généré animation avatar comme indiqué dans le titre figure, ensemble de données fournies.
GAN Présentation générale Principe
En parlant de la première à regarder le cours GAN papier Ian Goodfellow Daniel génératives accusatoires Networks (arXiv: https: //arxiv.org/abs/1406.2661), ce document considéré comme un pionnier dans ce domaine.
Le principe de base du GAN est en fait très simple, ici pour générer une image comme un exemple. Supposons que nous ayons deux réseaux, G (Générateur) et D (discriminante). Comme son nom l'indique, leurs fonctions sont les suivantes:
-
G est une image générée au réseau, la réception d'un bruit aléatoire Z, le bruit généré par l'image, notée G (z).
-
D est un réseau de discrimination, de déterminer une image est pas « réel ». Ses paramètres d'entrée sont x, x représentant une image, la sortie D (x) représente la probabilité que x est l'image réelle, si elle vaut 1, il représente 100% de l'image réelle, et la sortie est 0, il ne peut pas être de vrais représentants images.
Au cours de la formation, le réseau a généré objectif de G est d'essayer de créer des images réalistes au réseau de la discrimination D. tromper Le but est d'essayer de D G images générées et des images réelles sont ouvertes. Ainsi, G et D constituent un « processus de jeu. » Dynamique de
Quel est le résultat du dernier match? A l'état idéal, G peut générer une image « réelle ones » suffisante G (z). D, il est difficile de déterminer si l'image générée G est pas le cas, et par conséquent D (G (z)) = 0,5.
Pour que notre objectif est atteint: nous avons obtenu un modèle génératif G, il peut être utilisé pour générer des images.
D'une manière générale un peu plus que le principe de base du GAN, comment utiliser le langage mathématique pour décrire? Extrait thèse directe formule ici:
Une simple analyse de cette formule:
-
Composé de formule deux ensemble. x représente une image réelle, z représente le bruit d'entrée du réseau G, et G (z) représente un réseau G image générée.
-
D (x) représente le réseau D pour déterminer la vraie image est réelle probabilité (parce que x est vrai, donc D, cette valeur plus proche de 1, plus). Et D (G (Z)) est déterminé si l'image générée G réelle probabilité réseau D.
-
Objectif G: mentionné ci-dessus, D (G (z)) est le réseau D G pour déterminer si l'image résultante réelle probabilité, G généré devrait vouloir que leur image « près possible du réel. » Autrement dit, G désiré D (G (z)) aussi grande que possible, alors V (D, G) devient plus petite. Nous voyons donc que l'équation est le premier symbole min_G.
-
L'objet de D: la capacité plus forte à D, D (x) devrait être plus grande, D (G (x)) devrait être plus petite. Dans ce cas, V (D, G) devient grande. Donc, la formule est de faire le plus pour D (max_D)
En dessous de cette image très bien décrit ce processus:
Alors, comment la formation descente D et G avec un gradient stochastique? Le document donne également l'algorithme:
Une partie du cercle boîte rouge ici est que nous voulons que l'attention supplémentaire. La première étape que nous formons D, D est l'espoir V (G, D) plus le meilleur, de sorte que le gradient est plus (croissant). La formation de la deuxième étape G, V (G, D) le plus faible possible, il est soustrait gradient (descente). Le processus de formation en alternance.
DCGAN Présentation générale Principe
Nous savons que la profondeur de l'apprentissage le meilleur modèle pour les applications de traitement d'images est CNN, CNN et comment la combinaison GAN? DCGAN ce domaine est l'une des meilleures tentatives (papier Adresse: Représentation Unsupervised apprentissage avec Deep convolutifs génératives accusatoires Networks)
principes DCGAN et GAN est le même, pas ici dans la répétition. Il vient au-dessus du G et D ont été remplacées par deux réseaux de neurones convolutionnel (CNN). Mais pas directement pour elle, DCGAN convolution structurale réseau de neurones a fait quelques changements pour améliorer la qualité et la vitesse de convergence de l'échantillon, ces changements sont les suivants:
-
Annuler toute couche de mise en commun. réseau G à l'aide de convolution Transpose (transposée couche convolutionnel) suréchantillonnée par le réseau D a été ajouté à la place de la mise en commun de pas de convolution.
-
Ils sont utilisés dans la normalisation des lots D et G
-
couche FC est supprimée, de sorte que le réseau devient réseau complet de convolution
-
réseau G RELU utilisé comme fonction d'activation, la dernière couche à l'aide du tanh
-
D réseau utilisé en tant que la fonction d'activation LeakyReLU
DCGAN un schéma d'un réseau G:
DCGAN à tensorflow
Eh bien, il dit un principe de passe, a déclaré le spot contenu partie intéressante de la pratique suivante.
DCGAN l'auteur original de l'image générée chambre LSUN avec DCGAN, ce n'est pas particulièrement intéressant. Avant l'Internet a vu un article "Chainer Yan I ra su Suites généré automatiquement - Qiita", est généré des portraits de dessins animés avec DCGAN, l'effet est le suivant:
Ceci est un contenu pratique très intéressant. Malheureusement, l'original est Chainer les gens utilisent ce cadre est pas grand-chose. Ici, nous sommes en tensorflow reproduire ce résultat.
Collect jeu de données d'origine
Tout d'abord, nous avons besoin de beaucoup d'image Anime grouille de reptiles, l'original est sur ce site: en rampant. J'ai essayé, j'ai trouvé dans mon environnement de réseau ne peut pas accéder à ce site, j'ai donc écrit un reptile simple, monter un célèbre site de la galerie de dessin animé: konachan.net - Konachan.com Fonds d'écran animés.
Code reptile est le suivant:
les demandes d'importationLe reptile probablement courir pour une journée, redescendit 120,000 images, quelque chose comme ceci:
Cela peut être vu à l'intérieur de l'image la plupart des plus en désordre, ne peut pas être directement utilisé comme données de formation, nous devons utiliser les bons outils, interception de formation avatar de caractère.
interception Avatar
Comme l'image d'origine et l'interception, directement sur l'outil de base OpenCV github: nagadomi / lbpcascade_animeface.
emballage simple sous le code:
Interception des données de caractère Avatar:
Cela peut être utilisé pour former jusqu'à!
Si vous ne voulez pas commencer à partir de zéro pour monter des images peut être utilisé directement, je reçois de bonnes données d'image (275m, environ plus de 50000 images), l'adresse disque réseau Baidu: https: //pan.baidu.com/s/1eSifHcA, le code d'extraction: g5qa.
formation
DCGAN à tensorflow ont déjà de bonnes roues artificielles: carpedm20 / DCGAN-tensorflow, nous utilisons directement les codes dessus.
Mais le code d'origine pour fournir un nombre limité de bases de données, comment former leurs propres données? En model.py on trouve quelques lignes de code pour lire les données:
si config.dataset == 'mnist': données_X, données_y = self.load_mnistUne telle logique de données de lecture est très claire, nous sommes dans le dossier fichier de données puis l'anime créer un nouveau dossier, l'image directement dans ce dossier, vous pouvez spécifier -dataset l'anime de l'exécution.
Exécuter la commande (Définition: Indique la taille de l'image résultante est 48x48, la taille de notre image est 96x96, a couru 300 époque):
python main.py --image_size 96 --output_size 48 --dataset l'anime --is_crop vrai --is_train vrai --epoch 300résultat
La première époque à la fin (seulement un peu aperçu):
5 après les résultats d'époque:
10ème époque:
200 époque, regarder de plus près des photos sont vraiment assez réels:
Ma carte sujet est générée à partir de l'époque 300e.
Résumé et suivi
Une brève introduction sur le principe de la GAN et DCGAN. Tensorflow faire et comment utiliser une simple démonstration de génération d'image.
-
Ian Goodfellow gamme pour un résumé GAN du ppt de travail, vraiment merveilleux, recommandé « exclusif | père GAN de pincements discours 2016 Regarder la scène: une gamme complète d'interprétation du réseau du principe de la confrontation et la génération future (ci-joint PPT)
-
document de synthèse GAN, inclure le code: https: //github.com/zhangqianhui/AdversarialNetsPapers.