Diffusers documentation
EulerDiscreteScheduler
EulerDiscreteScheduler
Euler スケジューラ(アルゴリズム 2)は、Karras らによる Elucidating the Design Space of Diffusion-Based Generative Models 論文に由来します。これは高速なスケジューラであり、多くの場合、20〜30 ステップで良好な出力を生成できます。このスケジューラは、Katherine Crowson による元の k-diffusion 実装に基づいています。
EulerDiscreteScheduler
class diffusers.EulerDiscreteScheduler
< source >( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: str = 'linear'trained_betas: numpy.ndarray | list[float] | None = Noneprediction_type: str = 'epsilon'interpolation_type: str = 'linear'use_karras_sigmas: bool | None = Falseuse_exponential_sigmas: bool | None = Falseuse_beta_sigmas: bool | None = Falsesigma_min: float | None = Nonesigma_max: float | None = Nonetimestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'linspace'timestep_type: typing.Literal['discrete', 'continuous'] = 'discrete'steps_offset: int = 0rescale_betas_zero_snr: bool = Falsefinal_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 sigmas を使用するかどうか。Trueの場合、sigmas はノイズレベルの列 {σi} に基づいて決定されます。 - use_exponential_sigmas (
bool、任意、デフォルトはFalse) — サンプリング処理中のノイズスケジュールにおけるステップサイズに、指数関数的なシグマを使用するかどうかを指定します。 - use_beta_sigmas (
bool, optional, defaults toFalse) — 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, 任意) — ノイズスケジュールにおけるシグマの最大値です。指定しない場合、スケジュールの最初のシグマがデフォルトとして使用されます。 - 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) — betas を再スケーリングして、終端 SNR をゼロにするかどうかを指定します。これにより、モデルは中間の明るさに限定されず、非常に明るく暗いサンプルを生成できるようになります。--offset_noiseとゆるく関連しています。 - final_sigmas_type (
Literal["zero", "sigma_min"]、デフォルトは"zero") — サンプリングプロセス中のノイズスケジュールにおける最終的なsigma値。"sigma_min"の場合、最終的なsigmaは学習スケジュールの最後のsigmaと同じになります。"zero"の場合、最終的なsigmaは0に設定されます。
Euler スケジューラ。
このモデルは SchedulerMixin および ConfigMixin を継承しています。読み込みや保存など、ライブラリがすべてのスケジューラに対して実装している汎用的なメソッドについては、スーパークラスのドキュメントを参照してください。
add_noise
< source >( original_samples: Tensornoise: Tensortimesteps: Tensor ) → torch.Tensor
指定されたタイムステップにおけるノイズスケジュールに従って、元のサンプルにノイズを追加します。
get_velocity
< source >( sample: Tensornoise: Tensortimesteps: Tensor ) → torch.Tensor
指定されたタイムステップにおける、与えられたサンプルとノイズの速度予測を計算します。
このメソッドは、v-predictionモデルで使用される速度予測を実装します。この予測は、サンプルとノイズの線形結合を予測します。
index_for_timestep
< source >( timestep: typing.Union[float, torch.Tensor]schedule_timesteps: typing.Optional[torch.Tensor] = None ) → int
与えられたタイムステップのタイムステップスケジュールにおけるインデックスを特定します。
scale_model_input
< source >( sample: Tensortimestep: typing.Union[float, torch.Tensor] ) → torch.Tensor
現在のタイムステップに応じて、デノイジングモデルの入力をスケーリングする必要があるスケジューラとの相互運用性を保証します。Eulerアルゴリズムに合わせるため、デノイジングモデルの入力を(sigma**2 + 1) ** 0.5倍にスケーリングします。
set_begin_index
< source >( begin_index: int = 0 )
スケジューラの開始インデックスを設定します。この関数は、推論の前にパイプラインから実行する必要があります。
set_timesteps
< source >( num_inference_steps: int = Nonedevice: typing.Union[str, torch.device] = Nonetimesteps: list[int] | None = Nonesigmas: list[float] | None = None )
パラメータ
- num_inference_steps (
int, 省略可) — 事前学習済みモデルでサンプルを生成する際に使用する拡散ステップ数。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でなければならず、カスタムシグマスケジュールに基づいてタイムステップが生成されます。
拡散チェーンで使用される離散タイムステップを設定します(推論の実行前に実行する必要があります)。
ステップ
< source >( model_output: Tensortimestep: typing.Union[float, torch.Tensor]sample: Tensors_churn: float = 0.0s_tmin: float = 0.0s_tmax: float = infs_noise: float = 1.0generator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → EulerDiscreteSchedulerOutput or tuple
パラメータ
- 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
class diffusers.schedulers.scheduling_euler_discrete.EulerDiscreteSchedulerOutput
< source >( prev_sample: Tensorpred_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関数の出力用のクラス。