HuggingFace Diffusers v0.26.0の新機能
「Diffusers v0.26.0」の新機能についてまとめました。
前回
1. Diffusers v0.26.0 のリリースノート
情報元となる「Diffusers 0.26.0」のリリースノートは、以下で参照できます。
2. I2VGenXL
「I2VGenXL」は、Image-to-Videoのパイプラインです。「I2VGen-XL: High-Quality Image-to-Video Synthesis via Cascaded Diffusion Models」で提案されています。
import torch
from diffusers import I2VGenXLPipeline
from diffusers.utils import export_to_gif, load_image
repo_id = "ali-vilab/i2vgen-xl"
pipeline = I2VGenXLPipeline.from_pretrained(repo_id, torch_dtype=torch.float16).to("cuda")
pipeline.enable_model_cpu_offload()
image_url = "https://huggingface.co/datasets/diffusers/docs-images/resolve/main/i2vgen_xl_images/img_0001.jpg"
image = load_image(image_url).convert("RGB")
prompt = "A green frog floats on the surface of the water on green lotus leaves, with several pink lotus flowers, in a Chinese painting style."
negative_prompt = "Distorted, discontinuous, Ugly, blurry, low resolution, motionless, static, disfigured, disconnected limbs, Ugly faces, incomplete arms"
generator = torch.manual_seed(8888)
frames = pipeline(
prompt=prompt,
image=image,
num_inference_steps=1,
negative_prompt=negative_prompt,
generator=generator,
decode_chunk_size=1
).frames
export_to_gif(frames[0], "i2v.gif")
詳しくは、ドキュメントを参照。
3. PIA
「PIA」は、状態画像に合わせて調整し、テキストによってモーションを制御するパーソナライズされた画像アニメーターです。特別な調整なしでさまざまなT2Iモデルと互換性があります。「PIA」は、画像アニメーション用の時間的アライメントレイヤーを備えたベースT2Iモデルを使用します。「PIA」の重要なコンポーネントは条件モジュールです。これは、潜在空間での個々のフレーム合成の外観情報を転送するため、動きの調整にさらに重点を置くことができます。「PIA: Your Personalized Image Animator via Plug-and-Play Modules in Text-to-Image Models」で紹介されています。
import torch
from diffusers import (
EulerDiscreteScheduler,
MotionAdapter,
PIAPipeline,
)
from diffusers.utils import export_to_gif, load_image
adapter = MotionAdapter.from_pretrained("openmmlab/PIA-condition-adapter")
pipe = PIAPipeline.from_pretrained("SG161222/Realistic_Vision_V6.0_B1_noVAE", motion_adapter=adapter, torch_dtype=torch.float16)
pipe.scheduler = EulerDiscreteScheduler.from_config(pipe.scheduler.config)
pipe.enable_model_cpu_offload()
pipe.enable_vae_slicing()
image = load_image(
"https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/pix2pix/cat_6.png?download=true"
)
image = image.resize((512, 512))
prompt = "cat in a field"
negative_prompt = "wrong white balance, dark, sketches,worst quality,low quality"
generator = torch.Generator("cpu").manual_seed(0)
output = pipe(image=image, prompt=prompt, generator=generator)
frames = output.frames[0]
export_to_gif(frames, "pia-animation.gif")
詳しくは、ドキュメントを参照。
4. Multiple IP-Adapters + Multiple reference images support (“Instant LoRA” Feature)
「IP-Adapter」は非常に人気が高まっているため、複数の「IP-Adapter」と複数の参照イメージの推論を実行するためのサポートを追加しました。
import torch
from diffusers import AutoPipelineForText2Image, DDIMScheduler
from transformers import CLIPVisionModelWithProjection
from diffusers.utils import load_image
image_encoder = CLIPVisionModelWithProjection.from_pretrained(
"h94/IP-Adapter",
subfolder="models/image_encoder",
torch_dtype=torch.float16,
)
pipeline = AutoPipelineForText2Image.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
torch_dtype=torch.float16,
image_encoder=image_encoder,
)
pipeline.scheduler = DDIMScheduler.from_config(pipeline.scheduler.config)
pipeline.load_ip_adapter("h94/IP-Adapter", subfolder="sdxl_models", weight_name=["ip-adapter-plus_sdxl_vit-h.safetensors", "ip-adapter-plus-face_sdxl_vit-h.safetensors"])
pipeline.set_ip_adapter_scale([0.7, 0.3])
pipeline.enable_model_cpu_offload()
face_image = load_image("https://huggingface.co/datasets/YiYiXu/testing-images/resolve/main/women_input.png")
style_folder = "https://huggingface.co/datasets/YiYiXu/testing-images/resolve/main/style_ziggy"
style_images = [load_image(f"{style_folder}/img{i}.png") for i in range(10)]
generator = torch.Generator(device="cpu").manual_seed(0)
image = pipeline(
prompt="wonderwoman",
ip_adapter_image=[style_images, face_image],
negative_prompt="monochrome, lowres, bad anatomy, worst quality, low quality",
num_inference_steps=50
generator=generator,
).images[0]
・Reference style images
詳しくは、ドキュメントを参照。
5. Single-file checkpoint loading
from_single_file() は読みやすさを向上させ、 from_pretrained() と同様のセマンティクスに従うようにリファクタリングされました。URL からの単一ファイルのチェックポイントと構成のロードのサポートも追加されました。
6. DPM Scheduler の修正
「DPM Scheduler」の修正が導入されたため、SDXLと併用して、「Euler Scheduler」よりも少ない手順で高品質のイメージを生成できるようになりました。