[PYTHON] Comment changer l'image générée de GAN en une image de haute qualité à votre goût

1.Tout d'abord

Normalement, l '** image générée par le modèle GAN entraîné ** est un mélange de ** images préférées, d'images que vous n'aimez pas et d'images cassées **, et ne peut pas être visualisée telle quelle. ** Par conséquent, cette fois, je vais vous présenter comment changer facilement l'image générée de GAN ** en une image de haute qualité à votre goût **.

Le modèle entraîné de GAN utilisé cette fois est ** TF-Hub Progressive GAN **. Le code a été créé avec ** Goole colab ** et publié sur ** Github ** (** lien ici ** )) Donc, si vous le souhaitez, veuillez jouer avec tout en prenant un verre.

2. Comment faites-vous cela?

Le modèle GAN formé ne peut pas être modifié car ** le vecteur d'entrée et l'image de sortie sont déjà déterminés sur une base un-à-un **. Alors que devons-nous faire. Modifiez le vecteur d'entrée.

Lorsqu'un vecteur aléatoire est entré dans le modèle GAN et qu'une image est générée, s'il y a une ** image cassée ou une image que vous n'aimez pas **, le vecteur correspondant est accumulé dans le ** vecteur moins **, et ** votre préférence. S'il existe une image ** de, le vecteur correspondant est stocké dans ** plus vecteur **.

Ensuite, le prochain vecteur à entrer dans le modèle GAN est ** vecteur aléatoire + moyenne de la moyenne vectorielle plus du vecteur moins **. En répétant cela, mystérieusement, l'image générée de GAN sera ** transformée en une image de haute qualité à votre goût **.

3. Mettre en œuvre

Tout d'abord, installez et importez la bibliothèque, définissez les fonctions et téléchargez le modèle. Voir google colab pour plus de détails.

Tout d'abord, initialisez-le.

#Initialisation de l'apprentissage
tf.random.set_seed(80)  
vectors = tf.zeros([5,512])
plus_vector = tf.zeros([1,512])
minus_vector = tf.zeros([1,512])

Étant donné que la ** fonction Form ** de google colab est utilisée, le code ne peut pas être vu dans l'état initial, mais vous pouvez voir le code en cliquant sur l'interface utilisateur. L'état initial est plus facile à utiliser.

#@title please, you change the selected action if you need. 
vec_0 = 'nothing' #@param ['plus', 'nothing', 'minus']
vec_1 = 'nothing' #@param ['plus', 'nothing', 'minus']
vec_2 = 'nothing' #@param ['plus', 'nothing', 'minus']
vec_3 = 'nothing' #@param ['plus', 'nothing', 'minus']
vec_4 = 'nothing' #@param ['plus', 'nothing', 'minus']
vec = [vec_0, vec_1, vec_2, vec_3, vec_4]

for i in range(len(vectors)):
    if vec[i] == 'plus':
      plus_vector = tf.concat([plus_vector, tf.reshape(vectors[i],[1,512])],axis=0)

    if vec[i] == 'minus':
      minus_vector = tf.concat([minus_vector, tf.reshape(vectors[i],[1,512])], axis=0)

print('number of plus_vector = ', len(plus_vector)-1)
print('number of minus_vector = ', len(minus_vector)-1)

plus_vector_mean = tf.reduce_mean(plus_vector, axis=0) # plus_Prenez la moyenne du vecteur
minus_vector_mean = tf.reduce_mean(minus_vector, axis=0)  # minus_Prenez la moyenne du vecteur

vectors = tf.random.normal([5, 512])  #Acquisition de vecteurs aléatoires
vectors = vectors + plus_vector_mean - minus_vector_mean  #Correction vectorielle
display_images(vectors)

En raison de la ** fonction Form **, les variables ** vec_0 à vec_4 ** contiendront la chaîne ** ('plus', 'rien', 'moins') sélectionnée dans l'interface utilisateur. Si la chaîne est ** 'plus' **, le vecteur correspondant est stocké dans ** plus_vector **, et s'il est ** 'minus' **, le vecteur correspondant est stocké dans ** minus_vector **. Tout ce que vous avez à faire maintenant est de prendre la moyenne avec tf.reduce_mean () et d'ajouter ou de soustraire du vecteur aléatoire.

** La première fois que vous exécutez le code sans modifier aucun paramètre **. ** À partir de la deuxième fois **, regardez les 5 images générées, et à votre propre discrétion ** s'il faut mettre le vecteur moins ** (moins), ** s'il faut mettre le vecteur plus ** (plus), ** quoi Décidez s'il y a ** (rien), ** modifiez les paramètres **, puis ** exécutez le code **. Répétez cela plusieurs fois.

スクリーンショット 2020-06-23 18.29.57.png

Ce qui s'affiche est le résultat d'essayer une douzaine de fois. L'interface utilisateur s'exécute dans son état initial. Ceci est le résultat de la sélection de 5 vecteurs plus (femelle de votre choix) et 8 vecteurs moins (image brisée). Certes, il n'y a que des femmes qui aiment ça (rires).

Recommended Posts

Comment changer l'image générée de GAN en une image de haute qualité à votre goût
[Go] Créez une commande CLI pour changer l'extension de l'image
Comment calculer la volatilité d'une marque
Comment vérifier en Python si l'un des éléments d'une liste est dans une autre liste
[Ubuntu] Comment supprimer tout le contenu du répertoire
[python] Remplacez le nom du fichier image par un numéro de série
(Note) Comment passer le chemin de votre propre module
Comment trouver le coefficient de mise à l'échelle d'une ondelette bipolaire
Comment connecter le contenu de la liste dans une chaîne de caractères
Comment déterminer l'existence d'un élément sélénium en Python
Comment modifier le niveau de journalisation d'Azure SDK pour Python
Comment changer la couleur du seul bouton pressé avec Tkinter
Comment vérifier la taille de la mémoire d'une variable en Python
Créez le thème de Pythonista 3 comme Monokai (comment créer votre propre thème)
Comment vérifier la taille de la mémoire d'un dictionnaire en Python
Comment trouver l'adresse mémoire de la valeur de la trame de données Pandas
Comment afficher le résultat de sortie de la commande man Linux dans un fichier
Comment obtenir les coordonnées de sommet d'une entité dans ArcPy
J'ai résumé comment changer les paramètres de démarrage de GRUB et GRUB2
[NNabla] Comment supprimer le niveau intermédiaire d'un réseau prédéfini
[EC2] Comment faire une capture d'écran de votre smartphone avec du sélénium
Comment couper la partie inférieure droite de l'image avec Python OpenCV
Comment envoyer une image visualisée des données créées en Python à Typetalk
[Introduction à Python] Comment trier efficacement le contenu d'une liste avec le tri par liste
[Reconnaissance d'image] Comment lire le résultat de l'annotation automatique avec VoTT
[NNabla] Comment ajouter une couche de quantification à la couche intermédiaire d'un modèle entraîné
Comment créer un wrapper qui préserve la signature de la fonction à envelopper
Comment lire une vidéo tout en regardant le nombre d'images (Mac)
Script pour changer la description de fasta
Comment vérifier la version de Django
Comment enregistrer les informations de point caractéristique de l'image dans un fichier et l'utiliser pour la mise en correspondance
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python
Comment mentionner un groupe d'utilisateurs avec une notification de mou, comment vérifier l'ID d'un groupe d'utilisateurs
[Circuit x Python] Comment trouver la fonction de transfert d'un circuit en utilisant Lcapy
[NNabla] Comment obtenir la sortie (variable) de la couche intermédiaire du réseau construit
Comment compter le nombre d'éléments dans Django et sortir dans le modèle
[python] Comment trier par le Nth Mth élément d'un tableau multidimensionnel
Un mémorandum expliquant comment exécuter la commande magique! Sudo dans Jupyter Notebook
[Numpy, scipy] Comment calculer la racine carrée d'une matrice Elmeet à valeur semi-régulière
Changer le bloc de données des données d'achat de pandas (produit ID X) en dictionnaire
Comment changer l'apparence du champ de clé étrangère non sélectionné dans le formulaire modèle de Django
Comment faire un Raspberry Pi qui parle les tweets d'un utilisateur spécifié
L'histoire d'un technicien de haut niveau essayant de prédire la survie du Titanic
Comment obtenir une liste de fichiers dans le même répertoire avec python
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
Comment trouver la zone du diagramme de Boronoi
Comment coder un drone en utilisant la reconnaissance d'image
J'ai essayé de corriger la forme trapézoïdale de l'image
Modifiez le point décimal de la journalisation de, à.
Comment identifier l'élément avec le plus petit nombre de caractères dans une liste Python?
[Ruby] Comment remplacer uniquement une partie de la chaîne de caractères correspondant à l'expression régulière?
L'explication la plus simple au monde sur la création de LINE BOT (1) [Account preparation]
[NNabla] Comment ajouter une nouvelle couche entre les couches intermédiaires d'un réseau pré-construit
Un mémo sur la façon de surmonter le problème difficile de la capture d'effets avec l'IA
Comment trouver le premier élément qui correspond aux critères de la liste Python
Lire la source Python-Markdown: Comment créer un analyseur
Comment connaître le numéro de port du service xinetd
Remarques sur l'utilisation d'AIST Spacon ABCI
Un mémo pour comprendre visuellement l'axe des pandas.
Comment créer un sous-menu avec le plug-in [Blender]
La décision de scikit-learn Comment visualiser un modèle en bois