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
新チェックポイントを使用して、ウォーターマークのない動画を生成できるようになりました。
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)
詳しくは、公式ドキュメントを参照。
次回
この記事が気に入ったらサポートをしてみませんか?