【SDXL 1.0】 Zoe-Depth ControlNet が Diffusers から公開されたのでさっそく使ってみました

huggingface.co

はじめに

以前から「Depth」の ControlNet は公開されていました。
touch-sp.hatenablog.com


新たに「 Zoe-Depth」の ControlNet が公開されたので使ってみました。

元画像

こちらで作成した画像を使用しました。「girl.png」として保存しています。


Zoe-Depth画像の作成

このようにしました。
timmのインストールが必要です。

pip install timm==0.6.7
import torch
import numpy as np
from PIL import Image
from diffusers.utils import load_image

torch.hub.help(
    "intel-isl/MiDaS",
    "DPT_BEiT_L_384",
    force_reload=True
    ) 
model_zoe_n = torch.hub.load(
    "isl-org/ZoeDepth",
    "ZoeD_NK",
    pretrained=True
    ).to("cuda")

image = load_image("girl.png")

depth_numpy = model_zoe_n.infer_pil(image)  # return: numpy.ndarray

from zoedepth.utils.misc import colorize
colored = colorize(depth_numpy) # numpy.ndarray => numpy.ndarray

# gamma correction
img = colored / 255
img = np.power(img, 2.2)
img = (img * 255).astype(np.uint8)

Image.fromarray(img).save("zoe_depth.png")

実行

from diffusers import ControlNetModel, StableDiffusionXLControlNetPipeline
from diffusers.utils import load_image
import torch

controlnet = ControlNetModel.from_pretrained(
    "diffusers/controlnet-zoe-depth-sdxl-1.0",
    use_safetensors=True,
    torch_dtype=torch.float16,
    ).to("cuda")
pipe = StableDiffusionXLControlNetPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
    controlnet=controlnet,
    variant="fp16",
    use_safetensors=True,
    torch_dtype=torch.float16,
    ).to("cuda")

prompt = "anime style, ultra detailed, super fine illustration, pretty girl, fountain background"
negative_prompt = "worst quality, low quality"
controlnet_conditioning_scale = 0.55
depth_image = load_image("zoe_depth.png")

for i in range(20):
    seed = 10000 * (i + 1)
    generator = torch.manual_seed(seed)

    image = pipe(
        prompt=prompt,
        negative_prompt=negative_prompt, 
        image=depth_image, 
        num_inference_steps=30, 
        controlnet_conditioning_scale=controlnet_conditioning_scale,
        generator=generator
        ).images[0]

    image.save(f"seed{seed}.png")

結果





このエントリーをはてなブックマークに追加