Diffusers documentation

ScoreSdeVeScheduler

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

ScoreSdeVeScheduler

ScoreSdeVeScheduler は、分散爆発型確率微分方程式(SDE)スケジューラーです。Yang Song、Jascha Sohl-Dickstein、Diederik P. Kingma、Abhishek Kumar、Stefano Ermon、Ben Poole による論文 Score-Based Generative Modeling through Stochastic Differential Equations で紹介されました。

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

データからノイズを作るのは容易ですが、ノイズからデータを作るのが生成モデリングです。本稿では、ノイズを徐々に注入することで複雑なデータ分布を既知の事前分布へ滑らかに変換する確率微分方程式(SDE)と、ノイズを徐々に除去することで事前分布をデータ分布へ変換する対応する逆時間SDEを提案します。重要なのは、逆時間SDEが、擾乱されたデータ分布の時間依存勾配場(別名、スコア)にのみ依存する点です。スコアベースの生成モデリングの進歩を活用することで、ニューラルネットワークを用いてこれらのスコアを正確に推定し、数値SDEソルバーを用いてサンプルを生成できます。本フレームワークは、スコアベースの生成モデリングや拡散確率モデリングの従来の手法を包含し、新しいサンプリング手順や新しいモデリング機能を実現することを示します。特に、離散化された逆時間SDEの進化における誤差を補正するための予測子-補正子フレームワークを導入します。また、SDEと同じ分布からサンプリングする等価なニューラルODEを導出し、これにより厳密な尤度計算とサンプリング効率の向上が可能になります。さらに、クラス条件付き生成、画像インペインティング、カラー化に関する実験で示すように、スコアベースモデルを用いた逆問題の解法を新たに提供します。複数のアーキテクチャの改善と組み合わせることで、CIFAR-10における無条件画像生成でInception score 9.89、FID 2.20という記録的な性能を達成し、2.99 bits/dimという競争力のある尤度を示すとともに、スコアベースの生成モデルから初めて1024 x 1024の高忠実度画像生成を実現しました。

ScoreSdeVeScheduler

class diffusers.ScoreSdeVeScheduler

< >

( num_train_timesteps: int = 2000snr: float = 0.15sigma_min: float = 0.01sigma_max: float = 1348.0sampling_eps: float = 1e-05correct_steps: int = 1 )

パラメータ

  • num_train_timesteps (int、デフォルト値は 2000) — モデルを学習するための拡散ステップ数。
  • snr (float、デフォルト値 0.15) — model_output サンプル(ネットワーク由来)からランダムノイズへのステップを重み化する係数です。
  • sigma_min (float、デフォルト値 0.01) — サンプリング手順における sigma シーケンスの初期ノイズスケールです。最小 sigma は、データの分布を反映するべきです。
  • sigma_max (float、デフォルト値: 1348.0) — モデルに渡される連続タイムステップの範囲に使用される最大値です。
  • sampling_eps (float、デフォルト値は 1e-5) — タイムステップが 1 から epsilon へ段階的に減少するサンプリングの終了値です。
  • correct_steps (int、デフォルトは 1) — 生成されたサンプルに対して実行される補正ステップの数です。

ScoreSdeVeScheduler は、分散爆発型確率微分方程式(SDE)スケジューラーです。

このモデルは SchedulerMixin および ConfigMixin を継承しています。読み込みや保存など、ライブラリがすべてのスケジューラに対して実装している汎用的なメソッドについては、スーパークラスのドキュメントを参照してください。

add_noise

< >

( original_samples: Tensornoise: Tensortimesteps: Tensor ) → torch.Tensor

パラメータ

  • original_samples (torch.Tensor) — ノイズが加えられる元のサンプルです。
  • noise (torch.Tensor) — 元のサンプルに追加するノイズのテンソル。
  • timesteps (torch.Tensor) — ノイズを追加するタイムステップ。スケジュールに基づいてノイズレベルを決定します。

戻り値

torch.Tensor

タイムステップスケジュールに従ってスケーリングされたノイズが加えられたノイズ付きサンプル。

指定されたタイムステップにおけるノイズスケジュールに従って、元のサンプルにノイズを追加します。これはフォワード拡散プロセスです。

get_adjacent_sigma

< >

( timesteps: Tensort: Tensor ) → torch.Tensor

パラメータ

  • timesteps (torch.Tensor) — 離散的なタイムステップのインデックスを格納したテンソル。
  • t (torch.Tensor) — 連続的なタイムステップ値のテンソルです。

戻り値

torch.Tensor

隣接する(直前の)タイムステップインデックスの sigma 値。

直前のタイムステップインデックスに対応するシグマ値を返します。タイムステップがゼロ(直前のタイムステップが存在しない)の場合、ゼロを返します。

scale_model_input

< >

( sample: Tensortimestep: int | None = None ) → torch.Tensor

パラメータ

  • sample (torch.Tensor) — 入力サンプルです。
  • timestep (int, 任意) — 拡散チェーンにおける現在のタイムステップ。

戻り値

torch.Tensor

スケーリングされた入力サンプル。

現在のタイムステップに応じて、デノイジングモデルの入力をスケーリングする必要があるスケジューラーとの相互運用性を保証します。

set_sigmas

< >

( num_inference_steps: intsigma_min: float | None = Nonesigma_max: float | None = Nonesampling_eps: float | None = None )

パラメータ

  • num_inference_steps (int) — 事前学習済みモデルでサンプルを生成する際に使用する拡散ステップの数。
  • sigma_min (float, 省略可) — 初期ノイズスケール値(スケジューラーのインスタンス化時に指定された値を上書きします)。
  • sigma_max (float, 任意) — 最終的なノイズスケール値(スケジューラーのインスタンス化時に指定された値を上書きします)。
  • sampling_eps (float、省略可) — 最終タイムステップの値(スケジューラーのインスタンス化時に指定された値を上書きします)。

拡散チェーンで使用されるノイズスケールを設定します(推論の実行前に呼び出します)。driftとdiffusionの重みを制御します。

set_timesteps

< >

( num_inference_steps: intsampling_eps: float | None = Nonedevice: typing.Union[str, torch.device, NoneType] = None )

パラメータ

  • num_inference_steps (int) — 事前学習済みモデルでサンプルを生成する際に使用する拡散ステップの数。
  • sampling_eps (float、省略可) — 最終タイムステップの値(スケジューラーのインスタンス化時に指定された値を上書きします)。
  • device (str または torch.device、省略可) — timesteps を移動先とするデバイスです。None の場合、timesteps は移動されません。

拡散チェーンで使用される連続タイムステップを設定します(推論の実行前に実行します)。

step_correct

< >

( model_output: Tensorsample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → SchedulerOutput or tuple

パラメータ

  • model_output (torch.Tensor) — 学習済み拡散モデルからの直接の出力です。
  • sample (torch.Tensor) — 拡散プロセスによって生成されたサンプルの現在のインスタンス。
  • generator (torch.Generator、任意) — 乱数生成器です。
  • return_dict (bool、省略可、デフォルトはTrue) — tupleではなくSchedulerOutputを返すかどうか。

戻り値

SchedulerOutput または tuple

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

ネットワークのmodel_outputに基づいて、予測されたサンプルを修正します。これは、前のタイムステップの予測を行った後に繰り返し実行されることがよくあります。

step_pred

< >

( model_output: Tensortimestep: intsample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → SdeVeOutput or tuple

パラメータ

  • model_output (torch.Tensor) — 学習済み拡散モデルからの直接の出力です。
  • timestep (int) — 拡散チェーンにおける現在の離散タイムステップ。
  • sample (torch.Tensor) — 拡散プロセスによって生成されたサンプルの現在のインスタンス。
  • generator (torch.Generator、任意) — 乱数生成器です。
  • return_dict (bool、省略可、デフォルトは True) — SdeVeOutput を返すか、tuple を返すかを指定します。

戻り値

SdeVeOutput または tuple

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

前のタイムステップのサンプルを、SDEを逆方向に適用することで予測します。この関数は、学習済みモデルの出力(多くの場合、予測されたノイズ)から拡散過程を伝播させます。

SdeVeOutput

クラス diffusers.schedulers.scheduling_sde_ve.SdeVeOutput

< >

( prev_sample: Tensorprev_sample_mean: Tensor )

パラメータ

  • prev_sample(画像の場合、torch.Tensor、形状 (batch_size, num_channels, height, width)) — 前のタイムステップの計算済みサンプル (x_{t-1})。prev_sample は、デノイジングループにおける次のモデル入力として使用します。
  • prev_sample_mean(画像の場合、torch.Tensor、形状 (batch_size, num_channels, height, width))— 過去のタイムステップにわたる prev_sample の平均。

スケジューラーのstep関数の出力用のクラス。

Update on GitHub