Diffusers documentation
SanaControlNetModel
SanaControlNetModel
ControlNetモデルは、Lvmin Zhang、Anyi Rao、Maneesh Agrawala による Adding Conditional Control to Text-to-Image Diffusion Models で紹介されました。エッジマップ、深度マップ、セグメンテーションマップ、ポーズ検出用のキーポイントなどの追加入力に対してモデルを条件付けすることで、テキストから画像を生成する際の制御性を高めます。
論文の抄録は以下の通りです:
本稿では、大規模な事前学習済みテキストから画像への拡散モデルに空間的条件付け制御を追加するためのニューラルネットワークアーキテクチャであるControlNetを提案します。ControlNetは、実運用可能な大規模拡散モデルを固定し、数十億枚の画像で事前学習された深く頑健なエンコーディング層を強力なバックボーンとして再利用することで、多様な条件付け制御のセットを学習します。このニューラルアーキテクチャは、「ゼロ畳み込み」(ゼロ初期化された畳み込み層)によって接続されており、パラメータをゼロから段階的に増加させ、有害なノイズがファインチューニングに影響を与えないことを保証します。Stable Diffusionを用いて、エッジ、深度、セグメンテーション、人間のポーズなどの様々な条件付け制御を、プロンプトの有無にかかわらず、単一または複数の条件を用いてテストしました。ControlNetの学習は、小規模(<50k)および大規模(>1m)のデータセットのいずれにおいても頑健であることが示されています。広範な結果から、ControlNetは画像拡散モデルの制御に関するより幅広いアプリケーションを促進し得ることが示されました。
このモデルは ishan24 によって提供されました。❤️ 元のコードベースは NVlabs/Sana で確認でき、公式の ControlNet チェックポイントは Efficient-Large-Model の Hub プロファイルで確認できます。
SanaControlNetModel
class diffusers.SanaControlNetModel
< source >( in_channels: int = 32out_channels: int | None = 32num_attention_heads: int = 70attention_head_dim: int = 32num_layers: int = 7num_cross_attention_heads: int | None = 20cross_attention_head_dim: int | None = 112cross_attention_dim: int | None = 2240caption_channels: int = 2304mlp_ratio: float = 2.5dropout: float = 0.0attention_bias: bool = Falsesample_size: int = 32patch_size: int = 1norm_elementwise_affine: bool = Falsenorm_eps: float = 1e-06interpolation_scale: int | None = None )
forward
< source >( hidden_states: Tensorencoder_hidden_states: Tensortimestep: LongTensorcontrolnet_cond: Tensorconditioning_scale: float = 1.0encoder_attention_mask: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneattention_kwargs: dict[str, typing.Any] | None = Nonereturn_dict: bool = True ) → ~models.transformer_2d.Transformer2DModelOutput or tuple
パラメータ
- hidden_states (
torch.Tensor、形状(batch_size, channel, height, width)) — 入力となるhidden_states。 - encoder_hidden_states (
torch.Tensor) — 使用する条件埋め込み(プロンプトなどの入力条件から計算される埋め込み)。 - timestep (
torch.LongTensor) — デノイジングステップを示すために使用されます。 - controlnet_cond (
torch.Tensor) — ControlNet の条件付き入力テンソルです。 - conditioning_scale (
float、任意、デフォルトは1.0) — ControlNet の出力に対するスケール係数です。 - encoder_attention_mask (
torch.Tensor, 任意) —encoder_hidden_statesに適用されるアテンションマスク。 - attention_mask (
torch.Tensor, 任意) —hidden_statesに適用されるアテンションマスク。 - attention_kwargs (
dict, 省略可) — 指定された場合、diffusers.models.attention_processor で定義されているself.processor内のAttentionProcessorに渡される kwargs 辞書です。 - return_dict (
bool、任意、デフォルトはTrue) — プレーンなタプルではなく~models.transformer_2d.Transformer2DModelOutputを返すかどうか。
戻り値
~models.transformer_2d.Transformer2DModelOutput または tuple
return_dict が True の場合、~models.transformer_2d.Transformer2DModelOutput が返され、それ以外の場合は通常の tuple が返されます。
SanaControlNetOutput
class diffusers.models.controlnets.controlnet_sana.SanaControlNetOutput
< source >( controlnet_block_samples: tuple[torch.Tensor] )