SDXL TURBOとGradioを使ってWebインターフェースを作ってみました。
仕組みは画像をアップロードして、プロンプトを入力するとそれに沿った画像が作成されます。
Gradio
今回はGradioというアプリケーションを使って作成しました。
すごく簡単にWebインターフェースが作れます。
どんなのができた?
実際に作ったのはこれ。
このプロンプトとともに画像がパッパッって変わっていく様子が良いですね。結構、これはこれで使えるなと思います。
左上にプロンプトを入力するたびに画像が変わっていく様子がわかると思います。
それではコード。
コード
今回はGoogle colabでGPUを使っています。
インストール
以下をインストールします。Google colabでは前に”!”を付けます。
pip install diffusers transformers accelerate --upgrade
pip install gradio
pip install Pillow
コード
import gradio as gr
from diffusers import AutoPipelineForImage2Image
import torch
from PIL import Image
# Diffusers パイプラインを初期化
image_to_image_pipe = AutoPipelineForImage2Image.from_pretrained("stabilityai/sdxl-turbo", torch_dtype=torch.float16).to("cuda")
# 画像を修正する関数
def modify_image_with_prompt(prompt, init_image):
init_image = Image.fromarray(init_image.astype('uint8'), 'RGB')
with torch.no_grad():
modified_image = image_to_image_pipe(prompt=prompt, image=init_image, num_inference_steps=2, strength=0.5, guidance_scale=0.0).images[0]
return modified_image
# Gradio インターフェースを作成
iface = gr.Interface(
fn=modify_image_with_prompt, # 使用する関数
inputs=[gr.Textbox(label="Text Prompt for Image Modification"), gr.Image(label="Initial Image for Modification")], # 入力タイプ:テキストと画像
outputs=gr.Image(label="Modified Image"), # 出力タイプ:画像
title="Image Modification with Text Prompt", # インターフェースのタイトル
live=True
)
iface.launch()
strength=0.5の数字を変えることで、画像の変更具合を調整できます。1に近くすればより大きく変わります。ただ、あまり大きくすると画像から画像の意味がないくらい変わってしまうので、0.5ぐらいがいいかもしれないです。