[PYTHON] [Introduction à StyleGAN] Mayuyu et l'anime ont souri ♬

C'est comme le titre. Cette fois, j'ai essayé de voir si Mayuyu et le visage d'anime, que j'ai appris par moi-même, souriraient comme indiqué ci-dessous. 【référence】 Essayez de mélanger Satoshi Fukuzawa avec StyleGan

De la conclusion, j'ai obtenu l'image de sourire suivante et j'ai réussi ♬ mayuyu_smile11.gif Vous serez guéri ♬

Ce que j'ai fait

・ Apprenez votre propre image ・ Générer une image de sourire et créer une vidéo ・ Essayez une image de visage animée

・ Apprenez votre propre image

Mayuyu a utilisé les données npy précédentes comme la dernière fois. D'un autre côté, j'ai essayé d'aligner l'image du visage d'anime de la même manière, mais je ne pouvais pas aligner parce que le visage était fait trop différemment. Cependant, j'ai également appris les images de visage d'anime. En conséquence, il semble que l'apprentissage était possible, et j'ai pu obtenir npy qui peut produire les images suivantes.

1 2
simple3_.png simple3_.png

Bien sûr, j'ai également essayé le mixage en utilisant ces images. Pourtant,. .. .. Le résultat est le suivant

Mixing in projected latent space simple3_.png
simple3_.png simple_method10_1_dr1024.gif

Il semble que l'espace latent de la cartographie ait été pollué par l'homme. Cette tendance est similaire lors du mélange avec un visage humain. Je vais laisser l'image non encollée cette fois.

・ Générer une image de sourire et créer une vidéo

Le principe est le suivant en termes simples.

latent_vector = np.load('./latent/mayuyu.npy')
coeff = [-1,-0.8,-0.6,-0.4,-0.2, 0,0.2,0.4,0.6,0.8, 1]
direction = np.load('ffhq_dataset/latent_directions/smile.npy')
new_latent_vector[:8] = (latent_vector + coeff*direction)[:8]
smile_image = generate_image(new_latent_vector)

Générez une image de sourire avec ce nouveau new_latent_vector. Donc, le code ressemble à ceci: J'ai mis le code ci-dessous. StyleGAN/mayuyu_smile.py

import os
import pickle
import numpy as np
import PIL.Image
import dnnlib
import dnnlib.tflib as tflib
import config
import sys
from PIL import Image, ImageDraw
from encoder.generator_model import Generator
import matplotlib.pyplot as plt

tflib.init_tf()
fpath = './weight_files/tensorflow/karras2019stylegan-ffhq-1024x1024.pkl'
with open(fpath, mode='rb') as f:
    generator_network, discriminator_network, Gs_network  = pickle.load(f)

generator = Generator(Gs_network, batch_size=1, randomize_noise=False)

def generate_image(latent_vector):
    latent_vector = latent_vector.reshape((1, 18, 512))
    generator.set_dlatents(latent_vector)
    img_array = generator.generate_images()[0]
    img = PIL.Image.fromarray(img_array, 'RGB')
    return img.resize((256, 256))

def move_and_show(latent_vector, direction, coeffs):
    for i, coeff in enumerate(coeffs):
        new_latent_vector = latent_vector.copy()
        new_latent_vector[:8] = (latent_vector + coeff*direction)[:8]
        plt.imshow(generate_image(new_latent_vector))
        plt.pause(1)
        plt.savefig("./results/example{}.png ".format(i))
        plt.close()

mayuyu = np.load('./latent/mayuyu.npy')
smile_direction = np.load('ffhq_dataset/latent_directions/smile.npy')
move_and_show(mayuyu, smile_direction, [-1,-0.8,-0.6,-0.4,-0.2, 0,0.2,0.4,0.6,0.8, 1])

s=22
images = []
for i in range(0,11,1):
    im = Image.open(config.result_dir+'/example'+str(i)+'.png') 
    im =im.resize(size=(640,480), resample=Image.NEAREST)
    images.append(im)
for i in range(10,0,-1):
    im = Image.open(config.result_dir+'/example'+str(i)+'.png') 
    im =im.resize(size=(640, 480), resample=Image.NEAREST)
    images.append(im)     
images[0].save(config.result_dir+'/mayuyu_smile{}.gif'.format(11), save_all=True, append_images=images[1:s], duration=100*2, loop=0) 

De cette façon, M. Trump sourit également. trump_smile11.gif

・ Essayez une image de visage animée

Comme mentionné ci-dessus, npy a pu générer une image de visage animée, alors utilisez-la pour défier votre sourire. Le résultat est le suivant, je ris. .. .. Merveille anime_smile11.gif face_smile11.gif .. .. .. Cependant, le problème est ... .. .. Cela signifie qu'il n'y a que quelque chose qui semble être

Résumé

・ J'ai essayé d'apprendre des images d'anime ・ J'ai essayé mon propre apprentissage "Mayuyu et anime souri"

・ Bien que ce soit presque terminé, je vais l'essayer avec une image animée avec un peu plus de bouche. ・ Faisons une soi-disant formation d'images d'anime ・ Je souhaite créer un npy à utiliser de la même manière que smile.npy.

Recommended Posts

[Introduction à StyleGAN] Mayuyu et l'anime ont souri ♬
Comprendre et mettre en œuvre Style GAN
[Introduction à Python3 Jour 1] Programmation et Python
Introduction au Deep Learning ~ Pliage et mise en commun ~
[Introduction à AWS] Conversion de texte-voix et lecture ♪
Introduction à la définition de la fonction Thano et à la différenciation automatique
[Introduction à StyleGAN2] Apprentissage indépendant avec 10 visages d'anime ♬
[Introduction à Python3, jour 22] Chapitre 11 Traitement parallèle et mise en réseau (11.1 à 11.3)
[Introduction à l'application Udemy Python3 +] 64. Espace de noms et portée
[Introduction à Python3 Jour 11] Chapitre 6 Objets et classes (6.1-6.2)
Introduction à l'apprentissage profond ~ Fonction de localisation et de perte ~
[Introduction au PID] J'ai essayé de contrôler et de jouer ♬