Diffusers documentation

EulerDiscreteScheduler

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

EulerDiscreteScheduler

Планировщик Эйлера (алгоритм 2) описан в статье Elucidating the Design Space of Diffusion-Based Generative Models авторов Karras et al. Это быстрый планировщик, который часто позволяет получать качественные результаты за 20–30 шагов. Планировщик основан на исходной реализации k-diffusion, созданной Katherine Crowson.

EulerDiscreteScheduler

класс diffusers.EulerDiscreteScheduler

< >

( 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, необязательный) — Передайте массив betas непосредственно в конструктор, чтобы обойти 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, значения сигм определяются согласно последовательности уровней шума {σ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_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) — Определяет, следует ли перемасштабировать беты для нулевого конечного SNR. Это позволяет модели генерировать очень яркие и тёмкие образцы, а не ограничиваться образцами со средней яркостью. Непосредственно связано с --offset_noise.
  • final_sigmas_type (Literal["zero", "sigma_min"], по умолчанию "zero") — Значение финального sigma для расписания шума в процессе сэмплирования. Если указано "sigma_min", финальное sigma совпадает с последним sigma в расписании обучения. Если указано "zero", финальное sigma устанавливается в 0.

Планировщик Эйлера.

Эта модель наследуется от SchedulerMixin и ConfigMixin. Общую документацию по методам, которые библиотека реализует для всех планировщиков (например, загрузка и сохранение), см. в документации суперкласса.

add_noise

< >

( original_samples: Tensornoise: Tensortimesteps: Tensor ) → torch.Tensor

Параметры

  • original_samples (torch.Tensor) — Исходные образцы, к которым будет добавлен шум.
  • noise (torch.Tensor) — Тензор шума, который нужно добавить к исходным образцам.
  • timesteps (torch.Tensor) — Шаги, на которых добавляется шум, определяющие уровень шума по расписанию.

Возвращает

torch.Tensor

Шумовые образцы с добавленным шумом, масштабированным в соответствии с расписанием шагов времени.

Добавьте шум к исходным образцам в соответствии с расписанием шума на указанных временных шагах.

get_velocity

< >

( sample: Tensornoise: Tensortimesteps: Tensor ) → torch.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

< >

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

Параметры

  • timestep (float или torch.Tensor) — Значение шага, которое нужно найти в расписании.
  • schedule_timesteps (torch.Tensor, необязательный) — Расписание временных шагов, в котором выполняется поиск. Если None, используется self.timesteps.

Возвращает

int

Индекс шага времени в расписании. Для самого первого шага возвращает второй индекс, если существует несколько совпадений, чтобы избежать пропуска сигмы при начале с середины расписания (например, для image-to-image).

Найдите индекс заданного шага времени в расписании шагов времени.

scale_model_input

< >

( sample: Tensortimestep: typing.Union[float, torch.Tensor] ) → torch.Tensor

Параметры

  • sample (torch.Tensor) — Входной образец, подлежащий масштабированию.
  • timestep (float или torch.Tensor) — Текущий шаг в цепочке диффузии.

Возвращает

torch.Tensor

Масштабированный входной образец, делённый на (sigma**2 + 1) ** 0.5.

Обеспечивает совместимость с планировщиками, которым необходимо масштабировать входную данные модели денуазинга в зависимости от текущего шага. Масштабирует входные данные модели денуазинга с помощью (sigma**2 + 1) ** 0.5 для соответствия алгоритму Euler.

set_begin_index

< >

( begin_index: int = 0 )

Параметры

  • begin_index (int, по умолчанию 0) — Начальный индекс для планировщика.

Устанавливает начальный индекс для планировщика. Эта функция должна выполняться из конвейера перед инференсом.

set_timesteps

< >

( 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, необязательный) — Устройство, на которое следует переместить шаги. Если None, шаги не перемещаются.
  • timesteps (list[int], необязательный) — Пользовательские шаги (timesteps) для поддержки произвольного расписания. Если None, шаги будут сгенерированы на основе атрибута timestep_spacing. Если передан timesteps, num_inference_steps и sigmas должны быть None, а атрибут timestep_spacing будет проигнорирован.
  • sigmas (list[float], необязательный) — Пользовательские сигмы, используемые для поддержки произвольного расписания шагов. Если None, шаги и сигмы будут сгенерированы на основе соответствующих атрибутов планировщика. Если переданы sigmas, num_inference_steps и timesteps должны быть None, а шаги будут сгенерированы на основе пользовательского расписания сигм.

Устанавливает дискретные временные шаги, используемые для цепочки диффузии (выполняется перед инференсом).

шаг

< >

( 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, иначе возвращается кортеж, где первый элемент — это тензор выборки, а второй — предсказанная исходная выборка.

Предскажите образец из предыдущего шага времени, обращая SDE. Эта функция распространяет процесс диффузии от выходов обученной модели (чаще всего — предсказанного шума).

EulerDiscreteSchedulerOutput

класс diffusers.schedulers.scheduling_euler_discrete.EulerDiscreteSchedulerOutput

< >

( 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 планировщика.

Update on GitHub