HuggingFace Diffusers v0.14.0の新機能
「Diffusers v0.14.0」の新機能についてまとめました。
前回
1. Diffusers v0.14.0 のリリースノート
情報元となる「Diffusers 0.14.0」のリリースノートは、以下で参照できます。
2. ControlNet
「ControlNet」 を完全にサポートしました。論文の8つのコントロールモデル (depth、scribbles、edgesなど) すべて利用できます。他の実装の利点と最適化を利用することで、ControlNetの超高速実装になります。
「ControlNet」は、元の「Stable Diffusion」モデルの一部のレイヤーのコピーを、深度マップなどの追加信号で学習することで機能します。学習後、達成したい構成の強力なヒントとして深度マップを提供し、「Stable Diffusion」で詳細を埋めることができます。
現在、8つの公開されたコントロールモデルがあり、そのすべてが「runwayml/stable-diffusion-v1-5」で学習されています。
以下は、「depth」を使用する例です。
以下は、「scribbles」を使用する例です。
二次元絵を一貫性のあるリアルな写真に変換することもできます。
使用例は、次のとおりです。
from diffusers import StableDiffusionControlNetPipeline, ControlNetModel
import torch
# コントロールネットの準備
controlnet = ControlNetModel.from_pretrained(
"lllyasviel/sd-controlnet-canny",
torch_dtype=torch.float16
)
# パイプラインの準備
pipe = StableDiffusionControlNetPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5",
controlnet=controlnet,
torch_dtype=torch.float16
)
3. 超高解像度生成のためのVAEタイリング
「VAEタイリング」は、メモリを消費せずに超高解像度の画像を生成できます。プロセスの画像デコード段階でタイリングアプローチに従い、一度に画像の一部を生成してから、それらをすべてつなぎ合わせます。
使用例は、次のとおりです。
pipe.vae.enable_tiling()
これだけです。完全なコードは、次のとおりです。
import torch
from diffusers import StableDiffusionPipeline
# パイプラインの準備
pipe = StableDiffusionPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5",
revision="fp16",
torch_dtype=torch.float16,
use_auth_token=True
)
pipe = pipe.to("cuda")
pipe.enable_xformers_memory_efficient_attention()
pipe.vae.enable_tiling()
# 推論の実行
prompt = "a beautiful landscape photo"
image = pipe(
prompt,
width=4096,
height=2048,
num_inference_steps=10
).images[0]
image.save("4k_landscape.jpg")
次回
この記事が気に入ったらサポートをしてみませんか?