Buckets:

hf-doc-build/doc / diffusers /main /ja /api /models /controlnet_sd3.md
mishig's picture
|
download
raw
10.4 kB

SD3ControlNetModel

SD3ControlNetModel は、Stable Diffusion 3 向けの ControlNet の実装です。

ControlNetモデルは、Lvmin Zhang、Anyi Rao、Maneesh Agrawala による Adding Conditional Control to Text-to-Image Diffusion Models で紹介されました。エッジマップ、深度マップ、セグメンテーションマップ、ポーズ検出用のキーポイントなどの追加入力に対してモデルを条件付けすることで、テキストから画像を生成する際の制御性を高めます。

論文の抄録は以下の通りです:

本稿では、大規模な事前学習済みテキストから画像への拡散モデルに空間的条件付け制御を追加するためのニューラルネットワークアーキテクチャであるControlNetを提案します。ControlNetは、実運用可能な大規模拡散モデルを固定し、数十億枚の画像で事前学習された深く頑健なエンコーディング層を強力なバックボーンとして再利用することで、多様な条件付け制御のセットを学習します。このニューラルアーキテクチャは、「ゼロ畳み込み」(ゼロ初期化された畳み込み層)によって接続されており、パラメータをゼロから段階的に増加させ、有害なノイズがファインチューニングに影響を与えないことを保証します。Stable Diffusionを用いて、エッジ、深度、セグメンテーション、人間のポーズなどの様々な条件付け制御を、プロンプトの有無にかかわらず、単一または複数の条件を用いてテストしました。ControlNetの学習は、小規模(<50k)および大規模(>1m)のデータセットのいずれにおいても頑健であることが示されています。広範な結果から、ControlNetは画像拡散モデルの制御に関するより幅広いアプリケーションを促進し得ることが示されました。

元の形式から読み込む

デフォルトでは、SD3ControlNetModelはfrom_pretrained()で読み込む必要があります。

from diffusers import StableDiffusion3ControlNetPipeline
from diffusers.models import SD3ControlNetModel, SD3MultiControlNetModel

controlnet = SD3ControlNetModel.from_pretrained("InstantX/SD3-Controlnet-Canny")
pipe = StableDiffusion3ControlNetPipeline.from_pretrained("stabilityai/stable-diffusion-3-medium-diffusers", controlnet=controlnet)

SD3ControlNetModel[[diffusers.SD3ControlNetModel]]

diffusers.SD3ControlNetModel[[diffusers.SD3ControlNetModel]]

diffusers.SD3ControlNetModel(sample_size: int = 128, patch_size: int = 2, in_channels: int = 16, num_layers: int = 18, attention_head_dim: int = 64, num_attention_heads: int = 18, joint_attention_dim: int = 4096, caption_projection_dim: int = 1152, pooled_projection_dim: int = 2048, out_channels: int = 16, pos_embed_max_size: int = 96, extra_conditioning_channels: int = 0, dual_attention_layers: tuple[int, ...] = (), qk_norm: str | None = None, pos_embed_type: str | None = 'sincos', use_pos_embed: bool = True, force_zeros_for_pooled_projection: bool = True)

ソース

パラメータ:

sample_size (int、デフォルトは128) : 潜在変数の幅/高さです。これは位置埋め込みの数を学習するために使用されるため、トレーニング中は固定されます。

patch_size (int、デフォルトは2) : 入力データを小さなパッチに変換するためのパッチサイズ。

in_channels (int、デフォルトは16) : 入力における潜在チャネルの数。

num_layers (int、デフォルトは18) : 使用するtransformerブロックの層数。

attention_head_dim (int、デフォルトは64) : 各ヘッドのチャネル数。

num_attention_heads (int、デフォルトは18) : マルチヘッドアテンションで使用するヘッド数。

joint_attention_dim (int、デフォルトは4096) : 結合テキスト・画像アテンションに使用する埋め込み次元数。

caption_projection_dim (int、デフォルトは1152) : キャプション埋め込みの埋め込み次元数。

pooled_projection_dim (int、デフォルトは2048) : プールされたテキスト投影の埋め込み次元です。

out_channels (int、デフォルトは16) : 出力の潜在チャネル数。

pos_embed_max_size (int、デフォルトは96) : 位置埋め込みの最大潜在高さ/幅。

extra_conditioning_channels (int、デフォルトは0) : patch embedding の条件付けに使用する追加チャネル数。

dual_attention_layers (tuple[int, ...]、デフォルトは()) : 使用するdual-stream transformerブロックの数。

qk_norm (str、任意、デフォルトはNone) : attention層のqueryとkeyに使用する正規化。Noneの場合、正規化は使用されません。

pos_embed_type (str、デフォルトは "sincos") : 使用する位置埋め込みの種類。"sincos" と None から選択します。

use_pos_embed (bool、デフォルトはTrue) : 位置埋め込みを使用するかどうか。

force_zeros_for_pooled_projection (bool、デフォルトはTrue) : プールされた投影埋め込みにゼロを強制するかどうか。これは、ControlNet モデルの設定値を読み取ることで、パイプライン内で処理されます。

Stable Diffusion 3用のControlNetモデル。

enable_forward_chunking[[diffusers.SD3ControlNetModel.enable_forward_chunking]]

enable_forward_chunking(chunk_size: int | None = None, dim: int = 0)

ソース

パラメータ:

chunk_size (int, optional) : フィードフォワード層のチャンクサイズ。指定しない場合、dim次元の各テンソルに対してフィードフォワード層を個別に実行します。

dim (int、optional、デフォルトは0) : フィードフォワード計算をチャンク分割する次元です。dim=0(バッチ)またはdim=1(シーケンス長)のいずれかを選択します。

フィードフォワードチャンク分割を使用するようにアテンションプロセッサを設定します。

forward[[diffusers.SD3ControlNetModel.forward]]

forward(hidden_states: Tensor, controlnet_cond: Tensor, conditioning_scale: float = 1.0, encoder_hidden_states: Tensor = None, pooled_projections: Tensor = None, timestep: LongTensor = None, joint_attention_kwargs: dict[str, typing.Any] | None = None, return_dict: bool = True)

ソース

パラメータ:

hidden_states (torch.Tensor、shape (batch size, channel, height, width)) : 入力 hidden_states。

controlnet_cond (torch.Tensor) : 形状が (batch_size, sequence_length, hidden_size) の条件付き入力テンソル。

conditioning_scale (float、デフォルトは1.0) : ControlNet の出力に対するスケール係数。

encoder_hidden_states (torch.Tensor、shape (batch size, sequence_len, embed_dims)) : 使用する条件埋め込み(プロンプトなどの入力条件から計算される埋め込み)。

pooled_projections (torch.Tensor、shape (batch_size, projection_dim)) : 入力条件の埋め込みから投影された埋め込み。

timestep ( torch.LongTensor) : デノイジングステップを示すために使用されます。

joint_attention_kwargs (dict, 任意) : 指定された場合、diffusers.models.attention_processor の self.processor で定義されている AttentionProcessor に渡される kwargs の辞書です。

return_dict (bool、任意、デフォルトはTrue) : プレーンなタプルではなく~models.transformer_2d.Transformer2DModelOutputを返すかどうか。

戻り値:

return_dict が True の場合、~models.transformer_2d.Transformer2DModelOutput が返され、それ以外の場合は、最初の要素がサンプルテンソルである tuple が返されます。

SD3Transformer2DModelのforwardメソッド。

fuse_qkv_projections[[diffusers.SD3ControlNetModel.fuse_qkv_projections]]

fuse_qkv_projections()

ソース

融合されたQKV投影を有効にします。自己注意(self-attention)モジュールでは、すべての投影行列(つまり、クエリ、キー、バリュー)が融合されます。相互注意(cross-attention)モジュールでは、キーとバリューの投影行列が融合されます。

> このAPIは🧪実験的です。

unfuse_qkv_projections[[diffusers.SD3ControlNetModel.unfuse_qkv_projections]]

unfuse_qkv_projections()

ソース

有効化されている場合、融合された QKV 投影を無効にします。

> このAPIは🧪実験的です。

SD3ControlNetOutput[[diffusers.models.controlnets.SD3ControlNetOutput]]

diffusers.models.controlnets.SD3ControlNetOutput[[diffusers.models.controlnets.SD3ControlNetOutput]]

diffusers.models.controlnets.SD3ControlNetOutput(controlnet_block_samples: tuple[torch.Tensor])

ソース

Xet Storage Details

Size:
10.4 kB
·
Xet hash:
7fef4cbfa5c1309ac2da31f7e69c087aa9cc29e772573a2f3476c1f775336668

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.