はじめに
前回の続きです。touch-sp.hatenablog.com
「waifu-diffusion-v1-3-5」がdiffusersから使えるようになっていたのでさっそく使ってみました。
huggingface.co
元画像
ぱくたそから使わせて頂きました。こちらの画像です。
このポーズのイラストを作成してみます。
prompt(呪文)
こちらを参考にさせて頂きました。prompt
masterpiece high quality highly detailed kawaii princess white glowing skin kawaii face with blush blue eyes with eyelashes anime no background lim lighting
negative prompt
blender deformed mutated disfigured lowres blurred repetitive double mutated hands bad hands missing hands extra hands liquid hands poorly drawn hands mutated fingers bad fingers missing fingers extra fingers liquid fingers poorly drawn fingers partial head bad face small face partial face bad eyes missing eyes too big eyes bad eyebrows bad eyelashes bad nose missing nose bad mouth missing mouth open mouth bad ears thick lips bad legs missing legs extra legs bad arms missing arms extra arms low quality normal quality crown black and white
結果
つよつよPCで何枚も作成してから良さそうなものを抽出しました。使用したPCはこちらです。
Pythonスクリプト
以下のスクリプトで画像を大量生成しました。import os import argparse import datetime import torch from PIL import Image from diffusers import StableDiffusionImg2ImgPipeline parser = argparse.ArgumentParser() parser.add_argument( '--seed', type=int, default=200, help='the seed (for reproducible sampling)', ) parser.add_argument( '--n_samples', type=int, default=5, help='how many samples to produce for each given prompt', ) parser.add_argument( '--scale', action="store_true", help='if enabled, use some guidance_scales', ) parser.add_argument( '--negative_prompt', action="store_true", help='if enabled, use negative prompt', ) parser.add_argument( '--image', type=str, help='original image' ) opt = parser.parse_args() original_image = opt.image init_image = Image.open(original_image).convert("RGB").resize((512, 512)) if os.path.isfile('prompt.txt'): print('reading prompts from prompt.txt') with open('prompt.txt', 'r') as f: prompt = f.read().splitlines() prompt = ','.join(prompt) else: prompt = 'anime of tsundere moe kawaii beautiful girl' if opt.negative_prompt and os.path.isfile('negative_prompt.txt'): print('reading negative prompts from negative_prompt.txt') with open('negative_prompt.txt', 'r') as f: negative_prompt = f.read().splitlines() negative_prompt = ','.join(negative_prompt) else: negative_prompt = None print(f'prompt: {prompt}') print(f'negative prompt: {negative_prompt}') model_id = "./waifu-diffusion-v1-3-5" pipe = StableDiffusionImg2ImgPipeline.from_pretrained(model_id, torch_dtype=torch.float16) pipe = pipe.to("cuda") pipe.enable_attention_slicing() os.makedirs('results', exist_ok=True) now = datetime.datetime.today() now_str = now.strftime('%m%d_%H%M') if opt.scale: scale_list = [3.5, 5.5, 7.5, 9.5, 11.5] else: scale_list = [7.5] for i in range(opt.n_samples): for scale in scale_list: seed = opt.seed + i generator = torch.Generator(device="cuda").manual_seed(seed) image = pipe( prompt = prompt, negative_prompt = negative_prompt, image = init_image, generator = generator, guidance_scale = scale, num_images_per_prompt = 1).images[0] image.save(os.path.join('results', f'{now_str}_seed{seed}_scale{scale}.png'))
感想
残念ながら指の再現まではできませんでしたが、AIがイラストレーターの職を奪うというのが分かるような気がします。追記(v1-4)
2023年1月1日にv1-4が公開されています。そちらも試してみました。元画像はこちらです。
prompt
masterpiece best quality high quality absurdres kawaii princess white glowing skin kawaii face with blush blue eyes with eyelashes sweater turtleneck
negative prompt
worst quality low quality medium quality deleted lowres comic bad anatomy bad hands text error missing fingers extra digit fewer digits cropped jpeg artifacts signature watermark username blurry
パラメーター
seed: 216 guidance_scale: 7.5 strength: 0.8 num_inference_steps: 50