Buckets:

mishig's picture
|
download
raw
14.6 kB

EDMEulerScheduler

Karras らの論文 Elucidating the Design Space of Diffusion-Based Generative Models に記載されている Euler スケジューラー(アルゴリズム 2)の Karras 定式化です。これは高速なスケジューラーであり、多くの場合、20〜30 ステップで良好な出力を生成できます。このスケジューラーは、Katherine Crowson による元の k-diffusion 実装に基づいています。

EDMEulerScheduler[[diffusers.EDMEulerScheduler]]

diffusers.EDMEulerScheduler[[diffusers.EDMEulerScheduler]]

diffusers.EDMEulerScheduler(sigma_min: float = 0.002, sigma_max: float = 80.0, sigma_data: float = 0.5, sigma_schedule: typing.Literal['karras', 'exponential'] = 'karras', num_train_timesteps: int = 1000, prediction_type: typing.Literal['epsilon', 'v_prediction'] = 'epsilon', rho: float = 7.0, final_sigmas_type: typing.Literal['zero', 'sigma_min'] = 'zero')

ソース

パラメータ:

sigma_min (float、任意、デフォルトは0.002) : sigma スケジュールにおける最小ノイズ量。EDM 論文 [1] では 0.002 に設定されており、適切な範囲は [0, 10] です。

sigma_max (float、任意、デフォルトは80.0) : sigma スケジュールにおける最大ノイズ量。EDM 論文 [1] では 80.0 に設定されており、適切な範囲は [0.2, 80.0] です。

sigma_data (float、任意、デフォルトは 0.5) : データ分布の標準偏差です。EDM の論文 [1] では 0.5 に設定されています。

sigma_schedule (Literal["karras", "exponential"]、任意、デフォルトは"karras") : sigmasを計算するためのシグマスケジュール。デフォルトでは、EDM論文(https://huggingface.co/papers/2206.00364)で導入されたスケジュールを使用します。`"exponential"`スケジュールは、このモデルに組み込まれています:https://huggingface.co/stabilityai/cosxl。

num_train_timesteps (int、任意、デフォルトは1000) : モデルを学習するための拡散ステップ数。

prediction_type (Literal["epsilon", "v_prediction"], 任意、デフォルトは "epsilon") : スケジューラ関数の予測タイプ。"epsilon" は拡散プロセスのノイズを予測し、"v_prediction" は Imagen Video 論文のセクション 2.4 を参照してください。

rho (float、任意、デフォルトは7.0) : Karras sigma スケジュールの計算に使用される rho パラメータです。EDM の論文 [1] では 7.0 に設定されています。

final_sigmas_type (Literal["zero", "sigma_min"], 任意, デフォルトは "zero") : サンプリングプロセス中のノイズスケジュールにおける最終的な sigma 値。"sigma_min" の場合、最終的な sigma は学習スケジュールの最後の sigma と同じになります。"zero" の場合、最終的な sigma は 0 に設定されます。

Karras et al. 2022 [1] に示された EDM 定式化における Euler スケジューラーを実装します。

[1] Karras, Tero, et al. "Elucidating the Design Space of Diffusion-Based Generative Models." https://huggingface.co/papers/2206.00364

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

add_noise[[diffusers.EDMEulerScheduler.add_noise]]

add_noise(original_samples: Tensor, noise: Tensor, timesteps: Tensor)

ソース

パラメータ:

original_samples (torch.Tensor) : ノイズが加えられる元のサンプル。

noise (torch.Tensor) : 元のサンプルに追加するノイズのテンソル。

timesteps (torch.Tensor) : ノイズを追加するタイムステップ。スケジュールに基づいてノイズレベルを決定します。

戻り値: torch.Tensor

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

指定されたタイムステップにおけるノイズスケジュールに従って、元のサンプルにノイズを追加します。

index_for_timestep[[diffusers.EDMEulerScheduler.index_for_timestep]]

index_for_timestep(timestep: typing.Union[float, torch.Tensor], schedule_timesteps: typing.Optional[torch.Tensor] = None)

ソース

パラメータ:

timestep (float または torch.Tensor) : スケジュール内で検索するタイムステップの値。

schedule_timesteps (torch.Tensor, 任意) : 検索対象のタイムステップスケジュール。None の場合は self.timesteps を使用します。

戻り値: int

スケジュールにおけるタイムステップのインデックスです。最初のステップでは、スケジュールの途中から開始する場合(画像から画像への生成など)にシグマをスキップすることを避けるため、複数の一致が存在する場合は2番目のインデックスを返します。

与えられたタイムステップのタイムステップスケジュールにおけるインデックスを特定します。

precondition_inputs[[diffusers.EDMEulerScheduler.precondition_inputs]]

precondition_inputs(sample: Tensor, sigma: typing.Union[float, torch.Tensor])

ソース

パラメータ:

sample (torch.Tensor) : 事前処理を行う入力サンプルテンソル。

sigma (float または torch.Tensor) : 現在の sigma(ノイズレベル)の値。

戻り値: torch.Tensor

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

EDMの定式化に従ってスケーリングすることにより、入力サンプルを事前処理します。

precondition_noise[[diffusers.EDMEulerScheduler.precondition_noise]]

precondition_noise(sigma: typing.Union[float, torch.Tensor])

ソース

パラメータ:

sigma (float または torch.Tensor) : 事前処理を行う sigma(ノイズレベル)の値。

戻り値: torch.Tensor

0.25 * log(sigma) として計算される事前条件付きノイズ値。

対数変換を適用して、ノイズレベルを事前処理します。

precondition_outputs[[diffusers.EDMEulerScheduler.precondition_outputs]]

precondition_outputs(sample: Tensor, model_output: Tensor, sigma: typing.Union[float, torch.Tensor])

ソース

パラメータ:

sample (torch.Tensor) : 入力サンプルのテンソル。

model_output (torch.Tensor) : 学習済み拡散モデルからの直接の出力です。

sigma (float または torch.Tensor) : 現在の sigma(ノイズレベル)の値。

戻り値: torch.Tensor

スキップ接続と出力スケーリングを組み合わせることで計算されるノイズ除去済みサンプル。

EDMの定式化に従って、モデルの出力を事前処理します。

scale_model_input[[diffusers.EDMEulerScheduler.scale_model_input]]

scale_model_input(sample: Tensor, timestep: typing.Union[float, torch.Tensor])

ソース

パラメータ:

sample (torch.Tensor) : 入力サンプルのテンソル。

timestep (float または torch.Tensor) : 拡散チェーンにおける現在のタイムステップ。

戻り値: torch.Tensor

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

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

set_begin_index[[diffusers.EDMEulerScheduler.set_begin_index]]

set_begin_index(begin_index: int = 0)

ソース

パラメータ:

begin_index (int、デフォルトは0) : スケジューラの開始インデックス。

スケジューラの開始インデックスを設定します。この関数は、推論の前にパイプラインから実行する必要があります。

set_timesteps[[diffusers.EDMEulerScheduler.set_timesteps]]

set_timesteps(num_inference_steps: int = None, device: typing.Union[str, torch.device] = None, sigmas: typing.Union[list[float], torch.Tensor, NoneType] = None)

ソース

パラメータ:

num_inference_steps (int, 任意) : 事前学習済みモデルでサンプルを生成する際に使用される拡散ステップ数。

device (str または torch.device、任意) : timesteps を移動先とするデバイスです。None の場合、timesteps は移動されません。

sigmas (torch.Tensor | list[float], 任意) : 去噪プロセスで使用されるカスタムシグマ。num_inference_stepsが渡された場合のデフォルトの動作が使用されます。

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

ステップ[[diffusers.EDMEulerScheduler.step]]

step(model_output: Tensor, timestep: typing.Union[float, torch.Tensor], sample: Tensor, s_churn: float = 0.0, s_tmin: float = 0.0, s_tmax: float = inf, s_noise: float = 1.0, generator: typing.Optional[torch.Generator] = None, return_dict: bool = True, pred_original_sample: typing.Optional[torch.Tensor] = None)

ソース

パラメータ:

model_output (torch.Tensor) : 学習済み拡散モデルからの直接の出力です。

timestep (float または torch.Tensor) : 拡散チェーンにおける現在の離散タイムステップ。

sample (torch.Tensor) : 拡散プロセスによって生成されたサンプルの現在のインスタンス。

s_churn (float、任意、デフォルトは0.0) : 各ステップで加える確率的ノイズの量です。値が大きいほど、より多くのノイズが加えられます。

s_tmin (float、任意、デフォルトは0.0) : この閾値を下回る sigma にはノイズが追加されません。

s_tmax (float、任意、デフォルトはfloat("inf")) : この閾値を超えると、ノイズが追加されません。

s_noise (float、任意、デフォルトは1.0) : サンプルに追加されるノイズのスケール係数。

generator (torch.Generator, 任意) : 再現性のために使用する乱数生成器。

return_dict (bool, 任意, デフォルトは True) : EDMEulerSchedulerOutput を返すか、タプルを返すかを指定します。

pred_original_sample (torch.Tensor, 任意) : 前回のステップからの予測されたノイズ除去済みサンプルです。指定された場合、再計算をスキップします。

戻り値: EDMEulerSchedulerOutput または tuple

return_dict が True の場合、EDMEulerSchedulerOutput が返され、それ以外の場合は、最初の要素が前回のサンプルテンソル、2番目の要素が予測された元のサンプルテンソルであるタプルが返されます。

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

EDMEulerSchedulerOutput[[diffusers.schedulers.scheduling_edm_euler.EDMEulerSchedulerOutput]]

diffusers.schedulers.scheduling_edm_euler.EDMEulerSchedulerOutput[[diffusers.schedulers.scheduling_edm_euler.EDMEulerSchedulerOutput]]

diffusers.schedulers.scheduling_edm_euler.EDMEulerSchedulerOutput(prev_sample: Tensor, pred_original_sample: typing.Optional[torch.Tensor] = None)

ソース

パラメータ:

prev_sample (torch.Tensor、画像の場合は (batch_size, num_channels, height, width) の形状) : 前のタイムステップの計算済みサンプル (x_{t-1})。prev_sample は、デノイジングループの次のモデル入力として使用する必要があります。

pred_original_sample (torch.Tensor、画像の場合は形状 (batch_size, num_channels, height, width)) : 現在のタイムステップにおけるモデルの出力に基づいて予測された、ノイズ除去されたサンプル (x_{0})。pred_original_sample は、進捗のプレビューやガイダンスに使用できます。

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

Xet Storage Details

Size:
14.6 kB
·
Xet hash:
d559f7a640ac06125716bde934338177c700e27991516a9c6df3c8319ab896e9

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.