見出し画像

HuggingFace Diffusers v0.18.0の新機能

「Diffusers v0.18.0」の新機能についてまとめました。


前回

1. Diffusers v0.18.0 のリリースノート

情報元となる「Diffusers 0.18.0」のリリースノートは、以下で参照できます。

2. Shape-E

「Shap-E」は、「Shap-E: Generating Conditional 3D Implicit Functions」で紹介された「OpenAI」の3D画像生成モデルです。diffusers では、Text-to-3D と Image-to-3Dをサポートします。

・Text-to-3D

import torch
from diffusers import ShapEPipeline
from diffusers.utils import export_to_gif

ckpt_id = "openai/shap-e"
pipe = ShapEPipeline.from_pretrained(repo).to("cuda")

guidance_scale = 15.0
prompt = "a shark"
images = pipe(
    prompt,
    guidance_scale=guidance_scale,
    num_inference_steps=64,
    size=256,
).images

gif_path = export_to_gif(images, "shark_3d.gif")

・Imge-to-3D

import torch
from diffusers import ShapEImg2ImgPipeline
from diffusers.utils import export_to_gif, load_image

ckpt_id = "openai/shap-e-img2img"
pipe = ShapEImg2ImgPipeline.from_pretrained(repo).to("cuda")

img_url = "https://hf.co/datasets/diffusers/docs-images/resolve/main/shap-e/corgi.png"
image = load_image(img_url)

generator = torch.Generator(device="cuda").manual_seed(0)
batch_size = 4
guidance_scale = 3.0

images = pipe(
    image, 
    num_images_per_prompt=batch_size, 
    generator=generator, 
    guidance_scale=guidance_scale,
    num_inference_steps=64, 
    size=256, 
    output_type="pil"
).images

gif_path = export_to_gif(images, "corgi_sampled_3d.gif")

詳しくは、公式ドキュメントを参照。

3. Consistency models

「Consistency models」は、高速な1ステップまたは数ステップの画像生成をサポートするdiffusersモデルです。 これは、「OpenAI」の「Consistency Models」によって提案されました。

import torch

from diffusers import ConsistencyModelPipeline

device = "cuda"

# cd_imagenet64_l2 チェックポイントの読み込み
model_id_or_path = "openai/diffusers-cd_imagenet64_l2"
pipe = ConsistencyModelPipeline.from_pretrained(model_id_or_path, torch_dtype=torch.float16)
pipe.to(device)

# Onestepサンプリング
image = pipe(num_inference_steps=1).images[0]
image.save("consistency_model_onestep_sample.png")

# Onestepサンプリング、クラス条件付き画像生成
# ImageNet-64 クラスラベル 145 はおお様ペンギンに対応
image = pipe(num_inference_steps=1, class_labels=145).images[0]
image.save("consistency_model_onestep_sample_penguin.png")

# Multistepサンプリング、クラス条件付き画像生成
# タイムステップは明示的に指定できる
# 以下の特定のタイムステップは、元の Github リポジトリからのもの
# https://github.com/openai/consistency_models/blob/main/scripts/launch.sh#L77
image = pipe(timesteps=[22, 0], class_labels=145).images[0]
image.save("consistency_model_multistep_sample_penguin.png")

詳しくは、公式ドキュメントを参照。

4. Video-to-Video

新チェックポイントを使用して、ウォーターマークのない動画を生成できるようになりました。

cerspense/zeroscope_v2_576w
cerspense/zeroscope_v2_XL

import torch
from diffusers import DiffusionPipeline
from diffusers.utils import export_to_video

pipe = DiffusionPipeline.from_pretrained("cerspense/zeroscope_v2_576w", torch_dtype=torch.float16)
pipe.enable_model_cpu_offload()

# メモリの最適化
pipe.unet.enable_forward_chunking(chunk_size=1, dim=1)
pipe.enable_vae_slicing()

prompt = "Darth Vader surfing a wave"
video_frames = pipe(prompt, num_frames=24).frames
video_path = export_to_video(video_frames)

詳しくは、公式ドキュメントを参照。

次回



この記事が気に入ったらサポートをしてみませんか?