Buckets:

mishig's picture
|
download
raw
16.8 kB

EulerDiscreteScheduler

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

EulerDiscreteScheduler[[diffusers.EulerDiscreteScheduler]]

diffusers.EulerDiscreteScheduler[[diffusers.EulerDiscreteScheduler]]

diffusers.EulerDiscreteScheduler(num_train_timesteps: int = 1000, beta_start: float = 0.0001, beta_end: float = 0.02, beta_schedule: str = 'linear', trained_betas: numpy.ndarray | list[float] | None = None, prediction_type: str = 'epsilon', interpolation_type: str = 'linear', use_karras_sigmas: bool | None = False, use_exponential_sigmas: bool | None = False, use_beta_sigmas: bool | None = False, sigma_min: float | None = None, sigma_max: float | None = None, timestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'linspace', timestep_type: typing.Literal['discrete', 'continuous'] = 'discrete', steps_offset: int = 0, rescale_betas_zero_snr: bool = False, final_sigmas_type: typing.Literal['zero', 'sigma_min'] = 'zero')

ソース

パラメータ:

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

beta_start (float、デフォルト値は 0.0001) : 推論の初期 beta 値。

beta_end (float、デフォルト値は 0.02) : 最終的な beta 値。

beta_schedule (Literal["linear", "scaled_linear", "squaredcos_cap_v2"]、デフォルトは"linear") : ベータスケジュールです。モデルのステップ処理において、ベータの範囲からベータのシーケンスへのマッピングを行います。"linear"、"scaled_linear"、または"squaredcos_cap_v2"から選択してください。

trained_betas (np.ndarray、任意) : beta_start と beta_end をバイパスして、ベータの配列を直接コンストラクタに渡す。

prediction_type (Literal["epsilon", "sample", "v_prediction"], defaults to "epsilon", optional) : Prediction type of the scheduler function; can be "epsilon" (predicts the noise of the diffusion process), "sample" (directly predicts the noisy sample) or "v_prediction"` (see section 2.4 of Imagen Video paper).

interpolation_type (Literal["linear", "log_linear"]、デフォルトは "linear"、任意) : スケジューラのデノイジングステップにおける中間シグマを計算するための補間タイプ。"linear" または "log_linear" のいずれかである必要があります。

use_karras_sigmas (bool, 任意, デフォルトは False) : サンプリングプロセス中のノイズスケジュールにおけるステップサイズに Karras シグマを使用するかどうか。True の場合、シグマはノイズレベルの列 {σi} に基づいて決定されます。

use_exponential_sigmas (bool、任意、デフォルトはFalse) : サンプリングプロセス中のノイズスケジュールにおいて、ステップサイズに指数シグマを使用するかどうか。

use_beta_sigmas (bool, optional, defaults to False) : Whether to use beta sigmas for step sizes in the noise schedule during the sampling process. Refer to Beta Sampling is All You Need for more information.

sigma_min (float, 任意) : ノイズスケジュールの最小 sigma 値です。指定しない場合、スケジュールの最後の sigma がデフォルトとして使用されます。

sigma_max (float, optional) : ノイズスケジュールの最大 sigma 値です。指定しない場合、スケジュールの最初の sigma がデフォルトとして使用されます。

timestep_spacing (Literal["linspace", "leading", "trailing"], defaults to "linspace") : The way the timesteps should be scaled. Refer to Table 2 of the Common Diffusion Noise Schedules and Sample Steps are Flawed for more information.

timestep_type (Literal["discrete", "continuous"]、デフォルトは"discrete") : 使用するタイムステップの種類。"discrete"または"continuous"を指定できます。

steps_offset (int、デフォルトは 0) : 一部のモデルファミリーで必要とされる、推論ステップに追加されるオフセットです。

rescale_betas_zero_snr (bool、デフォルトはFalse) : ベータを再スケーリングして、終端SNRをゼロにするかどうか。これにより、モデルは中間の明るさに限定されず、非常に明るく暗いサンプルを生成できるようになります。--offset_noiseとゆるく関連しています。

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

Euler スケジューラ。

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

add_noise[[diffusers.EulerDiscreteScheduler.add_noise]]

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

ソース

パラメータ:

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

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

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

戻り値: torch.Tensor

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

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

get_velocity[[diffusers.EulerDiscreteScheduler.get_velocity]]

get_velocity(sample: Tensor, noise: Tensor, timesteps: Tensor)

ソース

パラメータ:

sample (torch.Tensor) : 速度を計算する対象の入力サンプル。

noise (torch.Tensor) : サンプルに対応するノイズテンソル。

timesteps (torch.Tensor) : 速度を計算するタイムステップ。

戻り値: torch.Tensor

sqrt(alpha_prod) * noise - sqrt(1 - alpha_prod) * sample として計算される速度予測。

指定されたタイムステップにおける、与えられたサンプルとノイズの速度予測を計算します。

このメソッドは、v-predictionモデルで使用される速度予測を実装しています。この予測は、サンプルとノイズの線形結合を予測します。

index_for_timestep[[diffusers.EulerDiscreteScheduler.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番目のインデックスを返します。

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

scale_model_input[[diffusers.EulerDiscreteScheduler.scale_model_input]]

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

ソース

パラメータ:

sample (torch.Tensor) : スケールする入力サンプル。

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

戻り値: torch.Tensor

(sigma**2 + 1) ** 0.5 で割った、スケーリング済みの入力サンプル。

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

set_begin_index[[diffusers.EulerDiscreteScheduler.set_begin_index]]

set_begin_index(begin_index: int = 0)

ソース

パラメータ:

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

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

set_timesteps[[diffusers.EulerDiscreteScheduler.set_timesteps]]

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

ソース

パラメータ:

num_inference_steps (int, optional) : 事前学習済みモデルでサンプルを生成する際に使用される拡散ステップ数。None の場合、timesteps または sigmas を指定する必要があります。

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

timesteps (list[int], 任意) : 任意のタイムステップスケジュールをサポートするために使用されるカスタムタイムステップ。None の場合、timestep_spacing 属性に基づいてタイムステップが生成されます。timesteps が渡された場合、num_inference_steps と sigmas は None でなければならず、timestep_spacing 属性は無視されます。

sigmas (list[float], 任意) : 任意のタイムステップスケジュールをサポートするために使用されるカスタムシグマ。None の場合、関連するスケジューラーの属性に基づいてタイムステップとシグマが生成されます。sigmas が渡された場合、num_inference_steps と timesteps は None でなければならず、カスタムシグマスケジュールに基づいてタイムステップが生成されます。

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

ステップ[[diffusers.EulerDiscreteScheduler.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)

ソース

パラメータ:

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

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

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

s_churn (float、任意、デフォルトは0.0) : サンプリング中に追加されるノイズの量を制御する確率性パラメータです。値を大きくするとランダム性が高まります。

s_tmin (float、任意、デフォルトは 0.0) : 確率的性を適用するための最小タイムステップの閾値です。この値を超えるタイムステップにのみノイズが追加されます。

s_tmax (float、任意、デフォルトは inf) : 確率的性を適用するためのタイムステップの最大閾値。この値未満のタイムステップにのみノイズが追加されます。

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

generator (torch.Generator, 任意) : 再現可能なサンプリングのための乱数生成器。

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

戻り値: EulerDiscreteSchedulerOutput または tuple

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

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

EulerDiscreteSchedulerOutput[[diffusers.schedulers.scheduling_euler_discrete.EulerDiscreteSchedulerOutput]]

diffusers.schedulers.scheduling_euler_discrete.EulerDiscreteSchedulerOutput[[diffusers.schedulers.scheduling_euler_discrete.EulerDiscreteSchedulerOutput]]

diffusers.schedulers.scheduling_euler_discrete.EulerDiscreteSchedulerOutput(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:
16.8 kB
·
Xet hash:
76c30252a6f850d4c47414605d059e390be3a8a9efe5186c1562347b51fe12f7

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