公開日:2022年12月31日
最終更新日:2023年3月7日
はじめに
「Stable Diffusion」などの画像生成AIはきれいな画像を作成してくれますが必ずしも希望の画像を作成してくれません。たとえば人物の姿勢などを指定することは難しい時があります。そういう時は文章(呪文)をあれこれいじるより元画像を用意して「img2img」を使った方が楽です。元画像
ぱくたそから使わせて頂きました。こちらの画像です。
上半身だけになるように切り取らせて頂きました。
結果
首を左に少し傾けた姿勢が保たれているのがわかります。プリンセス風
prompt = "beautiful princess, beautiful face, beautiful hair beautiful clothes, artstation, octane render" n_propmt = "bad, deformed, ugly, bad anatomy, duplicate"
呪文はこちらを参考にさせて頂きました。
金髪美女
prompt = "portrait of a blonde woman in a white sweater, handsome girl, diffused natural skin glow" n_propmt = "bad, deformed, ugly, bad anatomy, duplicate"
呪文はこちらを参考にさせて頂きました。
使用したスクリプト
import torch from PIL import Image from diffusers import StableDiffusionDepth2ImgPipeline from argparse import ArgumentParser parser = ArgumentParser() parser.add_argument('--image', type=str, help='original image' ) args = parser.parse_args() original_image = args.image pipe = StableDiffusionDepth2ImgPipeline.from_pretrained( "./stable-diffusion-2-depth", torch_dtype=torch.float16, ) pipe = pipe.to("cuda") pipe.enable_attention_slicing() init_image = Image.open(original_image).convert('RGB').resize((512, 512)) prompt = "portrait of a blonde woman in a white sweater, handsome girl, diffused natural skin glow" n_propmt = "bad, deformed, ugly, bad anotomy, duplicate" for s in range(1, 10): strength = s / 10 image = init_image image = pipe( prompt=prompt, image=image, negative_prompt=n_propmt, strength=strength).images[0] image.save(f'result_strength{strength}.png')
おまけ(trinart_stable_diffusion_v2)
結果
呪文はこちらのものを使用させて頂きました。Pythonスクリプト
from diffusers import StableDiffusionImg2ImgPipeline from PIL import Image from argparse import ArgumentParser parser = ArgumentParser() parser.add_argument('--image', type=str, help='original image' ) args = parser.parse_args() original_image = args.image init_image = Image.open(original_image).convert("RGB").resize((512, 512)) revision_list = ['60k', '95k', '115k'] for revision in revision_list: pipe = StableDiffusionImg2ImgPipeline.from_pretrained( "./trinart_stable_diffusion_v2", revision= f'diffusers-{revision}') pipe.to("cuda") pipe.enable_attention_slicing() image = pipe( prompt = 'cute cat ear maid', image = init_image, strength = 0.75, guidance_scale = 7.5).images[0] image.save(f'result_{revision}.png')
おまけ(waifu-diffusion-v1-3-5)
新しい記事を書きました。touch-sp.hatenablog.com
おまけ②(ControlNet)
ControlNetを使った記事を書きました。touch-sp.hatenablog.com