Diffusers documentation
FlowMatchEulerDiscreteScheduler
FlowMatchEulerDiscreteScheduler
FlowMatchEulerDiscreteScheduler は、Stable Diffusion 3 で導入された flow-matching サンプリングに基づいています。
FlowMatchEulerDiscreteScheduler
class diffusers.FlowMatchEulerDiscreteScheduler
< source >( num_train_timesteps: int = 1000shift: float = 1.0use_dynamic_shifting: bool = Falsebase_shift: float | None = 0.5max_shift: float | None = 1.15base_image_seq_len: int = 256max_image_seq_len: int = 4096invert_sigmas: bool = Falseshift_terminal: float = Noneuse_karras_sigmas: bool = Falseuse_exponential_sigmas: bool = Falseuse_beta_sigmas: bool = Falsetime_shift_type: typing.Literal['exponential', 'linear'] = 'exponential'stochastic_sampling: bool = False )
パラメータ
- num_train_timesteps (
int、デフォルト値は 1000) — モデルを学習するための拡散ステップ数。 - shift (
float、デフォルト値: 1.0) — タイムステップスケジュールのシフト値です。 - use_dynamic_shifting (
bool、デフォルトは False) — 画像の解像度に基づいて、タイムステップシフトをオンザフライで適用するかどうかを指定します。 - base_shift (
float、デフォルト値: 0.5) — 画像生成を安定させるための値です。base_shiftを大きくすると、ばらつきが減少し、望ましい出力に一致した画像が生成されます。 - max_shift (
float、デフォルト値は 1.15) — 潜在ベクトルに許可される値の変化量です。max_shiftを大きくすると、より多くのバリエーションが促され、画像がより誇張されたり、スタイライズされたりする可能性があります。 - base_image_seq_len (
int、デフォルト値は 256) — ベース画像シーケンスの長さです。 - max_image_seq_len (
int、デフォルト値は 4096) — 画像シーケンスの最大長です。 - invert_sigmas (
bool、デフォルトは False) — シグマを反転するかどうか。 - shift_terminal (
float、デフォルトは None) — シフトされたタイムステップスケジュールの終了値です。 - use_karras_sigmas (
bool、デフォルトは False) — サンプリング中のノイズスケジュールにおけるステップサイズに、Karras シグマを使用するかどうかを指定します。 - use_exponential_sigmas (
bool、デフォルトは False) — サンプリング中のノイズスケジュールにおけるステップサイズに、指数関数的なシグマを使用するかどうかを指定します。 - use_beta_sigmas (
bool、デフォルトは False) — サンプリング時のノイズスケジュールにおけるステップサイズにベータシグマを使用するかどうかを指定します。 - time_shift_type (
str、デフォルトは “exponential”) — 適用する動的な解像度依存のタイムステップシフトの種類。“exponential” または “linear” のいずれかです。 - stochastic_sampling (
bool、デフォルトは False) — 確率的サンプリングを使用するかどうか。
Euler スケジューラ。
このモデルは SchedulerMixin および ConfigMixin を継承しています。読み込みや保存など、ライブラリがすべてのスケジューラに対して実装している汎用的なメソッドについては、スーパークラスのドキュメントを参照してください。
index_for_timestep
< source >( timestep: typing.Union[float, torch.FloatTensor]schedule_timesteps: typing.Optional[torch.FloatTensor] = None ) → int
与えられたタイムステップのインデックスを取得します。
scale_noise
< source >( sample: FloatTensortimestep: typing.Union[float, torch.FloatTensor]noise: typing.Optional[torch.FloatTensor] = None ) → torch.FloatTensor
フローマッチングにおけるフォワードプロセス
set_begin_index
< source >( begin_index: int = 0 )
スケジューラの開始インデックスを設定します。この関数は、推論の前にパイプラインから実行する必要があります。
スケジューラーのシフト値を設定します。
set_timesteps
< source >( num_inference_steps: int | None = Nonedevice: typing.Union[str, torch.device] = Nonesigmas: list[float] | None = Nonemu: float | None = Nonetimesteps: list[float] | None = None )
パラメータ
- num_inference_steps (
int, 任意) — 事前学習済みモデルでサンプルを生成する際に使用する拡散ステップ数です。 - device (
strまたはtorch.device、省略可) — timesteps を移動先とするデバイスです。Noneの場合、timesteps は移動されません。 - sigmas (
list[float]、任意) — 各拡散ステップで使用するシグマの自定义値。Noneの場合、シグマは自動的に計算されます。 - mu (
float, 省略可) — 解像度依存のタイムステップシフトを実行する際に、シグマに適用されるシフト量を決定します。 - timesteps (
list[float]、任意) — 各拡散ステップで使用する timesteps のカスタム値。Noneの場合、timesteps は自動的に計算されます。
拡散チェーンで使用される離散タイムステップを設定します(推論の実行前に実行する必要があります)。
ステップ
< source >( model_output: FloatTensortimestep: typing.Union[float, torch.FloatTensor]sample: FloatTensors_churn: float = 0.0s_tmin: float = 0.0s_tmax: float = infs_noise: float = 1.0generator: typing.Optional[torch.Generator] = Noneper_token_timesteps: typing.Optional[torch.Tensor] = Nonereturn_dict: bool = True ) → FlowMatchEulerDiscreteSchedulerOutput or tuple
パラメータ
- model_output (
torch.FloatTensor) — 学習済み拡散モデルからの直接の出力です。 - timestep (
float) — 拡散チェーンにおける現在の離散タイムステップ。 - sample (
torch.FloatTensor) — 拡散プロセスによって生成されたサンプルの現在のインスタンスです。 - s_churn (
float) — - s_tmin (
float) — - s_tmax (
float) — - s_noise (
float、デフォルト値: 1.0) — サンプルに追加されるノイズのスケール係数。 - generator (
torch.Generator、任意) — 乱数生成器です。 - per_token_timesteps (
torch.Tensor, 省略可) — サンプル内の各トークンに対するタイムステップです。 - return_dict (
bool、デフォルトはTrue) —FlowMatchEulerDiscreteSchedulerOutputを返すか、タプルを返すかを指定します。
戻り値
FlowMatchEulerDiscreteSchedulerOutput または tuple
True の場合、FlowMatchEulerDiscreteSchedulerOutput が返され、それ以外の場合は、最初の要素がサンプルテンソルであるタプルが返されます。
前のタイムステップのサンプルを、SDEを逆方向に適用することで予測します。この関数は、学習済みモデルの出力(多くの場合、予測されたノイズ)から拡散過程を伝播させます。
stretch_shift_to_terminal
< source >( t: Tensor ) → torch.Tensor
shift_terminal 設定値で終了するように、タイムステップスケジュールを伸縮およびシフトします。
time_shift
< source >( mu: floatsigma: floatt: Tensor ) → torch.Tensor
シグマに時間シフトを適用します。