ここの手続きを実行する。
https://software-data-mining.com/google-colaboratory及び学習済みstyleganによる人物画像生成/
My Driveの半角スペースは不要
ドライブの移動は%が必要
%cd /content/drive/MyDrive/
ドライブ関係は使い方が変わる
https://qiita.com/kado_u/items/45b76f9a6f920bf0f786
%cd test
https://karaage.hatenadiary.jp/entry/2018/12/17/073000
from google.colab import drive
drive.mount('/content/drive')
%cd '/content/drive/MyDrive/styleGUN2'
!git clone https://github.com/NVlabs/stylegan2.git
%tensorflow_version 1.x
import tensorflow
import sys
sys.path.insert(0, "/content/drive/MyDrive/styleGUN2/stylegan2")
import dnnlib
ダウンロードしたファイルを、自分の環境にアップロード
https://drive.google.com/drive/folders/1yanUI9m4b4PWzR0eurKNq6JR1Bbfbh6L
# Copyright (c) 2019, NVIDIA Corporation. All rights reserved.
#
# This work is made available under the Nvidia Source Code License-NC.
# To view a copy of this license, visit
# https://nvlabs.github.io/stylegan2/license.html
import argparse
import numpy as np
import PIL.Image
import dnnlib
import dnnlib.tflib as tflib
import re
import sys
import pretrained_networks
#----------------------------------------------------------------------------
def expand_seed(seeds, vector_size):
result = []
for seed in seeds:
rnd = np.random.RandomState(seed)
result.append( rnd.randn(1, vector_size) )
return result
def generate_images(Gs, seeds, truncation_psi):
noise_vars = [var for name, var in Gs.components.synthesis.vars.items() \
if name.startswith('noise')]
Gs_kwargs = dnnlib.EasyDict()
Gs_kwargs.output_transform = dict(func=tflib.convert_images_to_uint8, nchw_to_nhwc=True)
Gs_kwargs.randomize_noise = False
if truncation_psi is not None:
Gs_kwargs.truncation_psi = truncation_psi
for seed_idx, seed in enumerate(seeds):
print('Generating image for seed %d/%d ...' % (seed_idx, len(seeds)))
rnd = np.random.RandomState()
tflib.set_vars({var: rnd.randn(*var.shape.as_list()) for var in noise_vars}) # [height, width]
images = Gs.run(seed, None, **Gs_kwargs) # [minibatch, height, width, channel]
path = f"/content/drive/MyDrive/styleGUN2/stylegan2/output/image{seed_idx}.png"
PIL.Image.fromarray(images[0], 'RGB').save(path)
sc = dnnlib.SubmitConfig()
sc.num_gpus = 1
sc.submit_target = dnnlib.SubmitTarget.LOCAL
sc.local.do_not_copy_source_files = True
sc.run_dir_root = "/content/drive/My Drive/stylegan2"
sc.run_desc = 'generate-images'
network_pkl = '/content/drive/MyDrive/styleGUN2/stylegan2/models/stylegan2-ffhq-config-f.pkl'
print('Loading networks from "%s"...' % network_pkl)
_G, _D, Gs = pretrained_networks.load_networks(network_pkl)
vector_size = Gs.input_shape[1:][0]
seeds = expand_seed( [6900,6920], vector_size)
#generate_images(Gs, seeds,truncation_psi=0.5)
print(seeds[0].shape)
STEPS = 100
diff = seeds[1] - seeds[0]
step = diff / STEPS
current = seeds[0].copy()
seeds2 = []
for i in range(STEPS):
seeds2.append(current)
current = current + step
generate_images(Gs, seeds2,truncation_psi=0.5)
|