Diffusers documentation

EDMEulerScheduler

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

EDMEulerScheduler

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

EDMEulerScheduler

класс diffusers.EDMEulerScheduler

< >

( sigma_min: float = 0.002sigma_max: float = 80.0sigma_data: float = 0.5sigma_schedule: typing.Literal['karras', 'exponential'] = 'karras'num_train_timesteps: int = 1000prediction_type: typing.Literal['epsilon', 'v_prediction'] = 'epsilon'rho: float = 7.0final_sigmas_type: typing.Literal['zero', 'sigma_min'] = 'zero' )

Параметры

  • sigma_min (float, необязательный, по умолчанию 0.002) — Минимальная величина шума в расписании сигм. В статье EDM [1] это значение было установлено в 0.002; разумный диапазон — [0, 10].
  • sigma_max (float, необязательный, по умолчанию 80.0) — Максимальная величина шума в расписании сигм. В статье EDM [1] это значение было установлено в 80.0; разумный диапазон — [0.2, 80.0].
  • sigma_data (float, необязательный, по умолчанию 0.5) — Стандартное отклонение распределения данных. В статье EDM [1] это значение установлено равным 0.5.
  • sigma_schedule (Literal["karras", "exponential"], необязательный, по умолчанию "karras") — Расписание сигм для вычисления sigmas. По умолчанию используется расписание, предложенное в статье EDM (https://huggingface.co/papers/2206.00364). Расписание "exponential" было добавлено в эту модель: https://huggingface.co/stabilityai/cosxl.
  • num_train_timesteps (int, необязательный, по умолчанию 1000) — Количество шагов диффузии для обучения модели.
  • prediction_type (Literal["epsilon", "v_prediction"], необязательный, по умолчанию "epsilon") — Тип предсказания функции планировщика. "epsilon" предсказывает шум диффузионного процесса, а "v_prediction" (см. раздел 2.4 статьи Imagen Video).
  • rho (float, необязательный, по умолчанию 7.0) — Параметр rho, используемый для вычисления расписания сигм Karras, который установлен в 7.0 в статье EDM [1].
  • final_sigmas_type (Literal["zero", "sigma_min"], необязательный, по умолчанию "zero") — Значение конечного sigma для расписания шума в процессе выборки. Если указано "sigma_min", конечное значение sigma совпадает с последним sigma в расписании обучения. Если указано "zero", конечное значение sigma устанавливается в 0.

Реализует планировщик Эйлера в формулировке EDM, представленной в работе Karras et al. 2022 [1].

[1] Karras, Tero, et al. «Elucidating the Design Space of Diffusion-Based Generative Models». https://huggingface.co/papers/2206.00364

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

add_noise

< >

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

Параметры

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

Возвращает

torch.Tensor

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

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

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).

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

precondition_inputs

< >

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

Параметры

  • sample (torch.Tensor) — Входной тензор выборки для предварительной обработки.
  • sigma (float или torch.Tensor) — Текущее значение сигмы (уровня шума).

Возвращает

torch.Tensor

Масштабированный входной образец.

Предварительно обработайте входной образец, масштабируя его в соответствии с формулировкой EDM.

precondition_noise

< >

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

Параметры

  • sigma (float или torch.Tensor) — Значение сигмы (уровня шума) для предварительной обработки.

Возвращает

torch.Tensor

Значение предобусловленного шума, вычисленное как 0.25 * log(sigma).

Предварительно обработайте уровень шума, применив логарифмическое преобразование.

precondition_outputs

< >

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

Параметры

  • sample (torch.Tensor) — Входной тензор выборки.
  • model_output (torch.Tensor) — Прямой вывод из обученной диффузионной модели.
  • sigma (float или torch.Tensor) — Текущее значение сигмы (уровня шума).

Возвращает

torch.Tensor

Образец после шумоподавления, вычисленный путём объединения skip-соединения и масштабирования вывода.

Предварительно обрабатывайте выходные модели в соответствии с формулировкой EDM.

scale_model_input

< >

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

Параметры

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

Возвращает

torch.Tensor

Масштабированный входной образец.

Масштабирует входную величину модели денойзинга для соответствия алгоритму Эйлера. Обеспечивает взаимозаменяемость с планировщиками, которым необходимо масштабировать входную величину модели денойзинга в зависимости от текущего шага.

set_begin_index

< >

( begin_index: int = 0 )

Параметры

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

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

set_timesteps

< >

( num_inference_steps: int = Nonedevice: typing.Union[str, torch.device] = Nonesigmas: typing.Union[list[float], torch.Tensor, NoneType] = None )

Параметры

  • num_inference_steps (int, необязательный) — Количество шагов диффузии, используемое при генерации образцов с помощью предобученной модели.
  • device (str или torch.device, необязательный) — Устройство, на которое следует переместить шаги. Если None, шаги не перемещаются.
  • sigmas (torch.Tensor | list[float], необязательный) — Пользовательские сигмы для процесса удаления шума. Если не заданы, будет использоваться поведение по умолчанию при передаче num_inference_steps.

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

шаг

< >

( 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 = Truepred_original_sample: typing.Optional[torch.Tensor] = None ) → EDMEulerSchedulerOutput 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, необязательный, по умолчанию float("inf")) — Максимальный порог сигмы, выше которого шум не добавляется.
  • s_noise (float, необязательный, по умолчанию 1.0) — Коэффициент масштабирования шума, добавляемого к образцу.
  • generator (torch.Generator, необязательный) — Генератор случайных чисел для воспроизводимости.
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, возвращать ли объект EDMEulerSchedulerOutput или кортеж.
  • pred_original_sample (torch.Tensor, необязательный) — Предсказанный денойзированный образец из предыдущего шага. Если указан, пересчёт пропускается.

Возвращает

EDMEulerSchedulerOutput или tuple

Если return_dict равно True, возвращается EDMEulerSchedulerOutput, в противном случае возвращается кортеж, где первый элемент — это тензор предыдущей выборки, а второй — тензор предсказанной исходной выборки.

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

EDMEulerSchedulerOutput

класс diffusers.schedulers.scheduling_edm_euler.EDMEulerSchedulerOutput

< >

( 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