Diffusers documentation
FluxControlNetModel
FluxControlNetModel
FluxControlNetModel は、Flux.1 向けの 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は画像拡散モデルの制御に関するより幅広いアプリケーションを促進し得ることが示されました。
元の形式から読み込む
デフォルトでは、FluxControlNetModelはfrom_pretrained()で読み込む必要があります。
from diffusers import FluxControlNetPipeline
from diffusers.models import FluxControlNetModel, FluxMultiControlNetModel
controlnet = FluxControlNetModel.from_pretrained("InstantX/FLUX.1-dev-Controlnet-Canny")
pipe = FluxControlNetPipeline.from_pretrained("black-forest-labs/FLUX.1-dev", controlnet=controlnet)
controlnet = FluxControlNetModel.from_pretrained("InstantX/FLUX.1-dev-Controlnet-Canny")
controlnet = FluxMultiControlNetModel([controlnet])
pipe = FluxControlNetPipeline.from_pretrained("black-forest-labs/FLUX.1-dev", controlnet=controlnet)FluxControlNetModel
クラス diffusers.FluxControlNetModel
< source >( patch_size: int = 1in_channels: int = 64num_layers: int = 19num_single_layers: int = 38attention_head_dim: int = 128num_attention_heads: int = 24joint_attention_dim: int = 4096pooled_projection_dim: int = 768guidance_embeds: bool = Falseaxes_dims_rope: list[int] = [16, 56, 56]num_mode: int = Noneconditioning_embedding_channels: int = None )
forward
< source >( hidden_states: Tensorcontrolnet_cond: Tensorcontrolnet_mode: Tensor = Noneconditioning_scale: float = 1.0encoder_hidden_states: Tensor = Nonepooled_projections: Tensor = Nonetimestep: LongTensor = Noneimg_ids: Tensor = Nonetxt_ids: Tensor = Noneguidance: Tensor = Nonejoint_attention_kwargs: dict[str, typing.Any] | None = Nonereturn_dict: bool = True )
パラメータ
- hidden_states (
torch.FloatTensor、形状(batch size, channel, height, width)) — 入力となるhidden_states。 - controlnet_cond (
torch.Tensor) —(batch_size, sequence_length, hidden_size)の形状を持つ条件付き入力テンソルです。 - controlnet_mode (
torch.Tensor) —(batch_size, 1)の形状を持つモードテンソル。 - conditioning_scale (
float、デフォルト値は1.0) — ControlNet の出力に対するスケール係数です。 - encoder_hidden_states (
torch.FloatTensor、shape(batch size, sequence_len, embed_dims)) — 使用する条件埋め込み(プロンプトなどの入力条件から計算される埋め込み)。 - pooled_projections (
torch.FloatTensor、shape(batch_size, projection_dim)) — 入力条件の埋め込みから投影された埋め込みです。 - timestep (
torch.LongTensor) — デノイジングステップを示すために使用されます。 - img_ids (
torch.Tensor) — 画像トークンの位置ID。 - txt_ids (
torch.Tensor) — テキストトークンの位置IDです。 - guidance (
torch.Tensor, 任意) — モデルのガイダンス蒸留版で使用するガイダンススケールテンソル。 - joint_attention_kwargs (
dict、省略可) — 指定された場合、diffusers.models.attention_processor で定義されているself.processor配下のAttentionProcessorに渡される kwargs の辞書です。 - return_dict (
bool、任意、デフォルトはTrue) — プレーンなタプルではなく~models.transformer_2d.Transformer2DModelOutputを返すかどうか。
FluxTransformer2DModelのforwardメソッド。
FluxControlNetOutput
クラス diffusers.models.controlnets.FluxControlNetOutput
< source >( controlnet_block_samples: tuple[torch.Tensor]controlnet_single_block_samples: tuple[torch.Tensor] )