Buckets:
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]]
diffusers.UNetMotionModel[[diffusers.UNetMotionModel]]
diffusers.UNetMotionModel(sample_size: int | None = None, in_channels: int = 4, out_channels: int = 4, down_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] = 2, downsample_padding: int = 1, mid_block_scale_factor: float = 1, act_fn: str = 'silu', norm_num_groups: int = 32, norm_eps: float = 1e-05, cross_attention_dim: int = 1280, transformer_layers_per_block: int | tuple[int] | tuple[tuple] = 1, reverse_transformer_layers_per_block: int | tuple[int] | tuple[tuple] | None = None, temporal_transformer_layers_per_block: int | tuple[int] | tuple[tuple] = 1, reverse_temporal_transformer_layers_per_block: int | tuple[int] | tuple[tuple] | None = None, transformer_layers_per_mid_block: int | tuple[int] | None = None, temporal_transformer_layers_per_mid_block: int | tuple[int] | None = 1, use_linear_projection: bool = False, num_attention_heads: int | tuple[int, ...] = 8, motion_max_seq_length: int = 32, motion_num_attention_heads: int | tuple[int, ...] = 8, reverse_motion_num_attention_heads: int | tuple[int, ...] | tuple[tuple[int, ...], ...] | None = None, use_motion_mid_block: bool = True, mid_block_layers: int = 1, encoder_hid_dim: int | None = None, encoder_hid_dim_type: str | None = None, addition_embed_type: str | None = None, addition_time_embed_dim: int | None = None, projection_class_embeddings_input_dim: int | None = None, time_cond_proj_dim: int | None = None)
ノイズ付きサンプル、条件付き状態、およびタイムステップを受け取り、サンプル形状の出力を返す、修正された条件付き2D UNetモデル。
このモデルは ModelMixin を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存など)については、スーパークラスのドキュメントを参照してください。
disable_freeu[[diffusers.UNetMotionModel.disable_freeu]]
disable_freeu()
FreeUメカニズムを無効にします。
enable_forward_chunking[[diffusers.UNetMotionModel.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(シーケンス長)のいずれかを選択します。
フィードフォワードチャンク分割を使用するようにアテンションプロセッサを設定します。
enable_freeu[[diffusers.UNetMotionModel.enable_freeu]]
enable_freeu(s1: float, s2: float, b1: float, b2: 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[[diffusers.UNetMotionModel.forward]]
forward(sample: Tensor, timestep: typing.Union[torch.Tensor, float, int], encoder_hidden_states: Tensor, timestep_cond: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, cross_attention_kwargs: dict[str, typing.Any] | None = None, added_cond_kwargs: dict[str, torch.Tensor] | None = None, down_block_additional_residuals: tuple[torch.Tensor] | None = None, mid_block_additional_residual: typing.Optional[torch.Tensor] = None, return_dict: bool = True)
パラメータ:
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): タイムステップ用の条件埋め込み。指定された場合、これらの埋め込みはself.time_embedding層を通過したサンプルに足し合わされ、タイムステップ埋め込みが得られます。
attention_mask (torch.Tensor, 任意、デフォルトはNone) : 形状(batch, key_tokens)のattention maskがencoder_hidden_statesに適用されます。1の場合はマスクが保持され、0の場合は破棄されます。マスクはバイアスに変換され、「破棄」トークンに対応するattention scoreに大きな負の値が加算されます。
cross_attention_kwargs (dict, 任意) : 指定された場合、diffusers.models.attention_processor の self.processor で定義されている AttentionProcessor に渡される kwargs の辞書です。
added_cond_kwargs (dict, 任意) : モデルを条件付けするために使用される、追加の埋め込み(テキスト埋め込みや時間埋め込みなど)の辞書。
down_block_additional_residuals : (tuple of torch.Tensor, 任意): 指定された場合、ダウンブロックの残差に追加されるテンソルのタプル。
mid_block_additional_residual : (torch.Tensor, 任意): 指定された場合、中央の unet ブロックの残差に追加されるテンソル。
return_dict (bool、任意、デフォルトはTrue) : プレーンなタプルではなくUNetMotionOutputを返すかどうか。
戻り値: UNetMotionOutput または tuple
return_dict が True の場合、UNetMotionOutput が返され、それ以外の場合は、最初の要素がサンプルテンソルである tuple が返されます。
UNetMotionModel の forward メソッド。
freeze_unet2d_params[[diffusers.UNetMotionModel.freeze_unet2d_params]]
freeze_unet2d_params()
UNet2DConditionModel の重みだけを凍結し、モーションモジュールは凍結せずにファインチューニングできるようにします。
fuse_qkv_projections[[diffusers.UNetMotionModel.fuse_qkv_projections]]
fuse_qkv_projections()
融合されたQKV投影を有効にします。自己注意(self-attention)モジュールでは、すべての投影行列(つまり、クエリ、キー、バリュー)が融合されます。相互注意(cross-attention)モジュールでは、キーとバリューの投影行列が融合されます。
> このAPIは🧪実験的です。
set_default_attn_processor[[diffusers.UNetMotionModel.set_default_attn_processor]]
set_default_attn_processor()
カスタムアテンションプロセッサを無効にし、デフォルトのアテンション実装を設定します。
unfuse_qkv_projections[[diffusers.UNetMotionModel.unfuse_qkv_projections]]
unfuse_qkv_projections()
有効化されている場合、融合された QKV 投影を無効にします。
> このAPIは🧪実験的です。
UNet3DConditionOutput[[diffusers.models.unets.unet_3d_condition.UNet3DConditionOutput]]
diffusers.models.unets.unet_3d_condition.UNet3DConditionOutput[[diffusers.models.unets.unet_3d_condition.UNet3DConditionOutput]]
diffusers.models.unets.unet_3d_condition.UNet3DConditionOutput(sample: Tensor)
パラメータ:
sample (torch.Tensor、shape (batch_size, num_channels, num_frames, height, width)) : encoder_hidden_states 入力で条件付けられた隠れ状態の出力。モデルの最終層の出力です。
UNet3DConditionModelの出力です。
Xet Storage Details
- Size:
- 13 kB
- Xet hash:
- d17923763a082ac5c2b552c715d6f0caee66f8251e3ee12cba6d7181da852b15
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.