Diffusers documentation
FlowMatchEulerDiscreteScheduler
FlowMatchEulerDiscreteScheduler
FlowMatchEulerDiscreteScheduler основан на сэмплировании flow-matching, представленном в Stable Diffusion 3.
FlowMatchEulerDiscreteScheduler
класс 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 sigmas для определения размеров шагов в расписании шума при сэмплировании. - use_exponential_sigmas (
bool, по умолчанию False) — Использовать ли экспоненциальные сигмы для размеров шагов в расписании шума при сэмплировании. - use_beta_sigmas (
bool, по умолчанию False) — Использовать ли бета-сигмы для шагов в расписании шума при сэмплировании. - time_shift_type (
str, по умолчанию “exponential”) — Тип сдвига шагов времени, зависящего от динамического разрешения, который необходимо применить. Допустимые значения: “exponential” или “linear”. - stochastic_sampling (
bool, по умолчанию False) — Использовать ли стохастическую выборку.
Планировщик Эйлера.
Эта модель наследуется от 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
Прямой процесс в flow-matching
set_begin_index
< source >( begin_index: int = 0 )
Устанавливает начальный индекс для планировщика. Эта функция должна выполняться из конвейера перед инференсом.
set_shift
< source >( shift: float )
Устанавливает значение сдвига для планировщика.
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, необязательный) — Устройство, на которое следует переместить шаги. ЕслиNone, шаги не перемещаются. - 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
Примените сдвиг по времени к сигмам.