はじめに
前回の続きの記事になります。
今回は、画像から画像を作成する、つまり元画像に、コマンドでリクエストして画像を変更してもらうAI処理を試してみたいと思います。
これで絵が下手な人でも、プロ並みの絵が描けるかも・・・
例えば、こんな風にマレーシアの猿を浮世絵風に変えるみたいなことも出来ます。
![](/wp-content/uploads/2022/09/IT95_00.jpg)
準備
前回と同じなので、省きます。
(Hugging Faceのトークンを取得しておいてください。)
Google Calaboのプログラム
元になる画像ファイル
今回のプログラムは、「source.png」でファイルをアップロードしてお使いください。
セットアップ部分
#@title **セットアップ**
# ライブラリのインストール
! pip install transformers scipy ftfy
! git clone https://github.com/huggingface/diffusers.git
! pip install git+https://github.com/huggingface/diffusers.git
# アクセス・トークン設定
Access_Token=""#@param {type:"string"}
前準備
import torch
from diffusers import StableDiffusionImg2ImgPipeline
pipe = StableDiffusionImg2ImgPipeline.from_pretrained(
"CompVis/stable-diffusion-v1-4",
revision="fp16",
torch_dtype=torch.float16,
use_auth_token=Access_Token
).to("cuda")
出力用設定
import matplotlib.pyplot as plt
Num = 10 #@param {type:"number"}
Strength = 0.63 #@param {type:"slider", min:0, max:1, step:0.01}
Guidance_scale = 10.9 #@param {type:"slider", min:0, max:20, step:0.1}
Prompt = '' #@param {type:"string"}
画像生成部分
from PIL import Image
from torch import autocast
# 画像生成
init_image = Image.open("source.png").convert("RGB")
init_image = init_image.resize((512, 512))
# 生成
for i in range(Num):
with autocast("cuda"):
images = pipe(
prompt=Prompt,
init_image=init_image,
strength=Strength,
guidance_scale=Guidance_scale,
num_inference_steps=50,
generator=None,
)["sample"]
images[0].save(f"outputs_{i:04}.png")
# 表示
for i in range(Num):
plt.imshow(plt.imread(f'outputs_{i:04}.png'))
plt.axis('off')
plt.show()
パラメータは以下のとおり設定してみてください。
Prompt:画像への変更指示を書きます。
Strength:入力と出力の相違度
Guidance_scale:入力と出力の類似度
まとめ
いかがだったでしょうか。面白いですよね。
ぜひ色々とパラメータを変えて試してみてください。
コメント