《Hidiffusion》img2imgノートブック

チュートリアル

ステップ0: 環境の準備

このステップでは、必要なライブラリをインストールし、環境を設定します。このステップは、実際にローカル環境やColabで実行する際に最初に行う必要があります。

!cd /content
!pip install -q hidiffusion
!pip install -q diffusers==0.25.0 transformers==4.27.4 accelerate==0.18.0 xformers==0.0.16rc425

ステップ1: ライブラリのインポート(改訂版)

ライブラリのインポートにhidiffusionの関連関数を追加します。

import torch
from PIL import Image
import numpy as np
import cv2
from diffusers import ControlNetModel, StableDiffusionXLControlNetImg2ImgPipeline, DDIMScheduler
from hidiffusion import apply_hidiffusion, remove_hidiffusion

ステップ2: モデルとスケジューラのロード

次に、ControlNetモデルとDDIMスケジューラをロードします。

controlnet = ControlNetModel.from_pretrained(
    "diffusers/controlnet-canny-sdxl-1.0", torch_dtype=torch.float16, variant="fp16"
).to("cuda")
scheduler = DDIMScheduler.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", subfolder="scheduler")

ステップ3: 画像変換パイプラインの設定

画像変換パイプラインを初期化します。

pipe = StableDiffusionXLControlNetImg2ImgPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
    controlnet=controlnet,
    scheduler=scheduler,
    torch_dtype=torch.float16,
).to("cuda")

パイプラインにhidiffusionを適用します。これにより、画像生成プロセスがさらに最適化されます。

apply_hidiffusion(pipe)

ステップ4: メモリ効率の良い機能の有効化

メモリ効率を考慮した機能を有効化します。

pipe.enable_xformers_memory_efficient_attention()
pipe.enable_vae_tiling()

ステップ5: 元の画像の読み込みとCannyエッジ検出

元の画像を読み込み、Cannyエッジ検出を使用して制御画像を生成します。

path = './assets/lara.jpeg'
ori_image = Image.open(path)
image = np.array(ori_image)
canny_edges = cv2.Canny(image, threshold1=50, threshold2=120)
canny_image = Image.fromarray(canny_edges).convert("RGB")

ステップ6: 画像生成のパラメータ設定と画像生成

画像生成に必要なパラメータを設定し、新しい画像を生成します。

controlnet_conditioning_scale = 0.5
prompt = "Lara Croft with brown hair, wearing a tank top and a brown backpack in a dark room with old-fashioned decor"
negative_prompt = "underexposed, poorly drawn hands, duplicate hands, overexposed, bad art"

result_image = pipe(
    prompt=prompt,
    image=ori_image,
    control_image=canny_image,
    height=1536,
    width=2048,
    strength=0.75,
    num_inference_steps=50,
    controlnet_conditioning_scale=controlnet_conditioning_scale,
    guidance_scale=7.5,
    negative_prompt=negative_prompt
).images[0]

ステップ7: 生成した画像の保存

生成した画像を保存します。

result_image.save("modified_lara.jpg")

ノートブック

Google Colab

コメント

タイトルとURLをコピーしました