Diffusers documentation

UNetMotionModel

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

UNetMotionModel

UNetモデルは、Ronneberger らによって生体医用画像のセグメンテーションのために最初に提案されましたが、入力と同じサイズの画像を出力するため、🤗 Diffusers でも広く使用されています。実際の拡散プロセスを担うため、拡散システムにおいて最も重要なコンポーネントの一つです。🤗 Diffusers には、次元数や条件付きモデルかどうかによって異なる複数の UNet モデルのバリアントがあります。ここでは 2D UNet モデルについて説明します。

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

深層ネットワークの成功した学習には、数千枚のラベル付き訓練サンプルが必要であるという点について、大きな合意がある。本論文では、データ拡張を強力に活用することで、利用可能なラベル付きサンプルをより効率的に使用するためのネットワークと学習戦略を提案する。このアーキテクチャは、コンテキストを捉えるための縮小パスと、正確な位置特定を可能にする対称的な拡大パスで構成される。このようなネットワークは、非常に少ない画像からエンドツーエンドで学習でき、電子顕微鏡スタックにおける神経構造のセグメンテーションに関するISBIチャレンジにおいて、従来の最良手法(スライディングウィンドウ型畳み込みネットワーク)を上回ることを示す。透過光顕微鏡画像(位相差およびDIC)で学習させた同じネットワークを用いて、これらのカテゴリにおいてISBIセルトラッキングチャレンジ2015を大幅な差で制覇した。さらに、このネットワークは高速である。最新のGPUでは、512x512画像のセグメンテーションに1秒未満しかかからない。完全な実装(Caffeベース)と学習済みネットワークは、http://lmb.informatik.uni-freiburg.de/people/ronneber/u-netで入手可能である。

UNetMotionModel

クラス diffusers.UNetMotionModel

< >

( sample_size: int | None = Nonein_channels: int = 4out_channels: int = 4down_block_types: tuple[str, ...] = ('CrossAttnDownBlockMotion', 'CrossAttnDownBlockMotion', 'CrossAttnDownBlockMotion', 'DownBlockMotion')up_block_types: tuple[str, ...] = ('UpBlockMotion', 'CrossAttnUpBlockMotion', 'CrossAttnUpBlockMotion', 'CrossAttnUpBlockMotion')block_out_channels: tuple[int, ...] = (320, 640, 1280, 1280)layers_per_block: int | tuple[int] = 2downsample_padding: int = 1mid_block_scale_factor: float = 1act_fn: str = 'silu'norm_num_groups: int = 32norm_eps: float = 1e-05cross_attention_dim: int = 1280transformer_layers_per_block: int | tuple[int] | tuple[tuple] = 1reverse_transformer_layers_per_block: int | tuple[int] | tuple[tuple] | None = Nonetemporal_transformer_layers_per_block: int | tuple[int] | tuple[tuple] = 1reverse_temporal_transformer_layers_per_block: int | tuple[int] | tuple[tuple] | None = Nonetransformer_layers_per_mid_block: int | tuple[int] | None = Nonetemporal_transformer_layers_per_mid_block: int | tuple[int] | None = 1use_linear_projection: bool = Falsenum_attention_heads: int | tuple[int, ...] = 8motion_max_seq_length: int = 32motion_num_attention_heads: int | tuple[int, ...] = 8reverse_motion_num_attention_heads: int | tuple[int, ...] | tuple[tuple[int, ...], ...] | None = Noneuse_motion_mid_block: bool = Truemid_block_layers: int = 1encoder_hid_dim: int | None = Noneencoder_hid_dim_type: str | None = Noneaddition_embed_type: str | None = Noneaddition_time_embed_dim: int | None = Noneprojection_class_embeddings_input_dim: int | None = Nonetime_cond_proj_dim: int | None = None )

ノイズ付きサンプル、条件付き状態、およびタイムステップを受け取り、サンプル形状の出力を返す、修正された条件付き2D UNetモデルです。

このモデルは ModelMixin を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存など)については、スーパークラスのドキュメントを参照してください。

disable_freeu

< >

( )

FreeUメカニズムを無効にします。

enable_forward_chunking

< >

( chunk_size: int | None = Nonedim: int = 0 )

パラメータ

  • chunk_size (int, 任意) — フィードフォワード層のチャンクサイズです。指定しない場合、dim 次元の各テンソルに対してフィードフォワード層を個別に実行します。
  • dim (int, 任意、デフォルトは 0) — フィードフォワード計算をチャンク分割する次元を指定します。dim=0 (バッチ) または dim=1 (シーケンス長) のいずれかを選択してください。

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

enable_freeu

< >

( s1: floats2: floatb1: floatb2: float )

パラメータ

  • s1 (float) — ステージ1のスケーリング係数。スキップ特徴量の寄与を減衰するために使用します。これにより、強化されたノイズ除去プロセスにおける「過剰平滑化効果」を緩和します。
  • s2 (float) — ステージ 2 のスケーリング係数で、スキップ特徴量の寄与を減衰するために使用します。これにより、強化されたノイズ除去プロセスにおける「過剰平滑化効果」を軽減します。
  • b1 (float) — ステージ1のスケーリング係数。バックボーン特徴の寄与を強調するために使用します。
  • b2 (float) — バックボーン特徴の寄与を強調するためのステージ2のスケーリング係数。

https://huggingface.co/papers/2309.11497 の FreeU メカニズムを有効にします。

スケーリング係数の後ろの接尾辞は、それらが適用されるステージブロックを表しています。

Stable Diffusion v1、v2、Stable Diffusion XLなどの異なるパイプラインで良好に動作することが知られている値の組み合わせについては、公式リポジトリを参照してください。

forward

< >

( sample: Tensortimestep: typing.Union[torch.Tensor, float, int]encoder_hidden_states: Tensortimestep_cond: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonecross_attention_kwargs: dict[str, typing.Any] | None = Noneadded_cond_kwargs: dict[str, torch.Tensor] | None = Nonedown_block_additional_residuals: tuple[torch.Tensor] | None = Nonemid_block_additional_residual: typing.Optional[torch.Tensor] = Nonereturn_dict: bool = True ) → UNetMotionOutput or tuple

パラメータ

  • sample (torch.Tensor) — 以下の形状 (batch, num_frames, channel, height, width を持つノイズ付き入力テンソル。
  • timestep (torch.Tensor または float または int) — 入力のノイズ除去を行うステップ数。
  • encoder_hidden_states (torch.Tensor) — (batch, sequence_length, feature_dim) の形状を持つエンコーダーの隠れ状態です。
  • timestep_cond — (torch.Tensor、任意、デフォルトは None): timestep 用の条件埋め込みです。指定された場合、これらの埋め込みは self.time_embedding レイヤーを通過したサンプルと加算され、timestep 埋め込みが得られます。
  • attention_mask (torch.Tensor、任意、デフォルトは None) — encoder_hidden_states に適用される、形状が (batch, key_tokens) のアテンションマスクです。1 の場合はマスクが保持され、0 の場合は破棄されます。マスクはバイアスに変換され、「破棄」対象のトークンに対応するアテンションスコアに大きな負の値が加算されます。
  • cross_attention_kwargs (dict、省略可) — 指定された場合、diffusers.models.attention_processor で定義されている self.processor 配下の AttentionProcessor に渡される kwargs の辞書です。
  • added_cond_kwargs (dict、任意) — モデルの条件付けに使用される、追加の埋め込み(テキスト埋め込みや時間埋め込みなど)の辞書です。
  • down_block_additional_residuals — (tuple of torch.Tensor, optional): 指定された場合、ダウンブロックの残差に追加されるテンソルのタプルです。
  • mid_block_additional_residual — (torch.Tensor, 任意): 指定された場合、中央の unet ブロックの残差に追加されるテンソルです。
  • return_dict (bool、省略可能、デフォルトは True) — UNetMotionOutput を返すか、プレーンなタプルを返すかを指定します。

戻り値

UNetMotionOutput または tuple

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

UNetMotionModel の forward メソッド。

freeze_unet2d_params

< >

( )

UNet2DConditionModel の重みのみを凍結し、モーションモジュールは凍結解除したままファインチューニングを行います。

fuse_qkv_projections

< >

( )

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

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

set_default_attn_processor

< >

( )

カスタムアテンションプロセッサを無効にし、デフォルトのアテンション実装を設定します。

unfuse_qkv_projections

< >

( )

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

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

UNet3DConditionOutput

class diffusers.models.unets.unet_3d_condition.UNet3DConditionOutput

< >

( sample: Tensor )

パラメータ

  • sample (torch.Tensor、形状 (batch_size, num_channels, num_frames, height, width)) — encoder_hidden_states 入力を条件とする隠れ状態の出力。モデルの最終層の出力です。

UNet3DConditionModelの出力です。

Update on GitHub