Diffusers documentation

UNet1DModel

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

UNet1DModel

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

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

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

UNet1DModel

class diffusers.UNet1DModel

< >

( sample_size: int = 65536sample_rate: int | None = Nonein_channels: int = 2out_channels: int = 2extra_in_channels: int = 0time_embedding_type: str = 'fourier'time_embedding_dim: int | None = Noneflip_sin_to_cos: bool = Trueuse_timestep_embedding: bool = Falsefreq_shift: float = 0.0down_block_types: tuple[str, ...] = ('DownBlock1DNoSkip', 'DownBlock1D', 'AttnDownBlock1D')up_block_types: tuple[str, ...] = ('AttnUpBlock1D', 'UpBlock1D', 'UpBlock1DNoSkip')mid_block_type: str = 'UNetMidBlock1D'out_block_type: str = Noneblock_out_channels: tuple[int, ...] = (32, 32, 64)act_fn: str = Nonenorm_num_groups: int = 8layers_per_block: int = 1downsample_each_block: bool = False )

パラメータ

  • sample_size (int、省略可) — サンプルのデフォルトの長さ。実行時に適応可能である必要があります。
  • in_channels (int、省略可、デフォルトは 2) — 入力サンプルのチャネル数。
  • out_channels (int、省略可能、デフォルト値は 2)— 出力のチャネル数。
  • extra_in_channels (int、任意、デフォルト値は 0) — 最初のダウンブロックの入力に追加されるチャネル数。モデルが当初設計されたものよりもチャネル数が多い入力データを扱う場合に有用です。
  • time_embedding_type (str、任意、デフォルトは "fourier") — 使用する時間埋め込みの種類。
  • freq_shift (float、任意、デフォルト値は 0.0) — フーリエ時間埋め込み用の周波数シフト。
  • flip_sin_to_cos (bool、任意、デフォルトはFalse) — Fourier時間埋め込みにおいて、sinをcosに反転させるかどうかを指定します。
  • down_block_types (tuple[str]、任意、デフォルトは ("DownBlock1DNoSkip", "DownBlock1D", "AttnDownBlock1D")) — ダウンサンプリングブロックの型のタプルです。
  • up_block_types (tuple[str]、任意、デフォルトは("AttnUpBlock1D", "UpBlock1D", "UpBlock1DNoSkip")) — アップサンプルブロックの型のタプル。
  • block_out_channels (tuple[int]、任意、デフォルトは (32, 32, 64)) — ブロックの出力チャネルのタプル。
  • mid_block_type (str、任意、デフォルトは "UNetMidBlock1D") — UNet の中央部分に使用するブロックの種類。
  • out_block_type (str、任意、デフォルトは None) — UNet の任意の出力処理ブロック。
  • act_fn (str、省略可能、デフォルトは None) — UNet ブロックで使用する任意の活性化関数。
  • norm_num_groups (int, 任意、デフォルトは 8) — 正規化のグループ数。
  • layers_per_block (int、省略可、デフォルトは 1) — ブロックあたりのレイヤー数。
  • downsample_each_block (int、省略可能、デフォルトはFalse) — アップサンプリングなしで UNet を使用する実験的な機能です。

ノイズ付きサンプルとタイムステップを受け取り、サンプル形状の出力を返す1次元UNetモデルです。

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

forward

< >

( sample: Tensortimestep: typing.Union[torch.Tensor, float, int]return_dict: bool = True ) → UNet1DOutput or tuple

パラメータ

  • sample (torch.Tensor) — 以下の形状 (batch_size, num_channels, sample_size) を持つ、ノイズ付きの入力テンソルです。
  • timestep (torch.Tensor または float または int) — 入力のノイズ除去を行うステップ数。
  • return_dict (bool、任意、デフォルトは True) — True の場合、通常のタプルではなく UNet1DOutput を返します。

戻り値

UNet1DOutput または tuple

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

UNet1DModelのforwardメソッド。

UNet1DOutput

class diffusers.models.unets.unet_1d.UNet1DOutput

< >

( sample: Tensor )

パラメータ

  • sample (torch.Tensor、形状 (batch_size, num_channels, sample_size)) — モデルの最終層から出力される隠れ状態です。

UNet1DModelの出力。

Update on GitHub