Diffusers documentation

DDPMScheduler

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

DDPMScheduler

Denoising Diffusion Probabilistic Models (DDPM) авторов Джонатана Хо, Аджая Джейна и Питера Аббеля предлагает модель на основе диффузии с тем же названием. В контексте библиотеки 🤗 Diffusers DDPM обозначает дискретный планировщик удаления шума из статьи, а также соответствующий пайплайн.

Аннотация из статьи:

Мы представляем результаты синтеза изображений высокого качества с использованием диффузионных вероятностных моделей, класса латентных переменных, вдохновлённого соображениями из неравновесной термодинамики. Наши лучшие результаты получены путём обучения на взвешенной вариационной границе, спроектированной на основе новой связи между диффузионными вероятностными моделями и сопоставлением скоростей сглаживания шума с динамикой Ланжевена. Наши модели естественным образом допускают схему прогрессивного сжимающего декодирования с потерями, которую можно интерпретировать как обобщение авторегрессионного декодирования. На безусловном наборе данных CIFAR10 мы получаем Inception score 9,46 и FID score 3,17, являющийся лучшим на данный момент. На LSUN 256x256 мы получаем качество образцов, сопоставимое с ProgressiveGAN. Наша реализация доступна по адресу этот URL.

DDPMScheduler

класс diffusers.DDPMScheduler

< >

( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: typing.Literal['linear', 'scaled_linear', 'squaredcos_cap_v2', 'sigmoid'] = 'linear'trained_betas: numpy.ndarray | list[float] | None = Nonevariance_type: typing.Literal['fixed_small', 'fixed_small_log', 'fixed_large', 'fixed_large_log', 'learned', 'learned_range'] = 'fixed_small'clip_sample: bool = Trueprediction_type: typing.Literal['epsilon', 'sample', 'v_prediction'] = 'epsilon'thresholding: bool = Falsedynamic_thresholding_ratio: float = 0.995clip_sample_range: float = 1.0sample_max_value: float = 1.0timestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'leading'steps_offset: int = 0rescale_betas_zero_snr: bool = False )

Параметры

  • num_train_timesteps (int, по умолчанию 1000) — Количество шагов диффузии для обучения модели.
  • beta_start (float, по умолчанию 0.0001) — Начальное значение beta для вывода.
  • beta_end (float, по умолчанию 0.02) — Конечное значение beta.
  • beta_schedule ("linear", "scaled_linear", "squaredcos_cap_v2" или "sigmoid", по умолчанию "linear") — Расписание beta, отображающее диапазон beta в последовательность значений beta для шагов модели.
  • trained_betas (np.ndarray, необязательный) — Массив бета-значений для прямой передачи в конструктор без использования beta_start и beta_end.
  • variance_type ("fixed_small", "fixed_small_log", "fixed_large", "fixed_large_log", "learned" или "learned_range", по умолчанию "fixed_small") — Ограничивает дисперсию при добавлении шума к денойзированному образцу.
  • clip_sample (bool, по умолчанию True) — Обрезает предсказанную выборку для численной стабильности.
  • clip_sample_range (float, по умолчанию 1.0) — Максимальная величина для обрезки выборок. Действительно только при clip_sample=True.
  • prediction_type ("epsilon", "sample", or "v_prediction", defaults to "epsilon") — 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).
  • thresholding (bool, по умолчанию False) — Использовать ли метод «динамического порогового значения». Этот метод не подходит для моделей диффузии в латентном пространстве, таких как Stable Diffusion.
  • dynamic_thresholding_ratio (float, по умолчанию 0.995) — Коэффициент для метода динамического порогового значения. Действительно только при thresholding=True.
  • sample_max_value (float, по умолчанию 1.0) — Пороговое значение для динамического порогового выделения. Действительно только при thresholding=True.
  • timestep_spacing ("linspace", "leading", or "trailing", defaults to "leading") — 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.
  • steps_offset (int, по умолчанию 0) — Смещение, добавляемое к шагам инференса, как требуется некоторыми семействами моделей.
  • rescale_betas_zero_snr (bool, по умолчанию False) — Определяет, следует ли перемасштабировать беты для нулевого конечного SNR. Это позволяет модели генерировать очень яркие и тёмкие образцы, а не ограничиваться образцами со средней яркостью. Непосредственно связано с --offset_noise.

DDPMScheduler исследует связи между сопоставлением скоров денойзинга и сэмплированием по динамике Ланжевена.

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

add_noise

< >

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

Параметры

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

Возвращает

torch.Tensor

Шумные образцы.

Добавьте шум к исходным образцам в соответствии с величиной шума на каждом шаге (это процесс прямой диффузии).

get_velocity

< >

( sample: Tensornoise: Tensortimesteps: IntTensor ) → torch.Tensor

Параметры

  • sample (torch.Tensor) — Входной образец.
  • noise (torch.Tensor) — Тензор шума.
  • timesteps (torch.IntTensor) — Шаги для вычисления скорости.

Возвращает

torch.Tensor

Вычисленная скорость.

Вычислите предсказание скорости из выборки и шума согласно формуле скорости.

previous_timestep

< >

( timestep: int ) → int or torch.Tensor

Параметры

  • timestep (int) — Текущий шаг.

Возвращает

int или torch.Tensor

Предыдущий шаг по времени.

Вычислите предыдущий шаг временной шкалы в цепочке диффузии.

scale_model_input

< >

( sample: Tensortimestep: int | None = None ) → torch.Tensor

Параметры

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

Возвращает

torch.Tensor

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

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

set_timesteps

< >

( num_inference_steps: int = Nonedevice: typing.Union[str, torch.device] = Nonetimesteps: list[int] | None = None )

Параметры

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

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

шаг

< >

( model_output: Tensortimestep: intsample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → DDPMSchedulerOutput or tuple

Параметры

  • model_output (torch.Tensor) — Прямой вывод из обученной диффузионной модели.
  • timestep (int) — Текущий дискретный шаг в цепочке диффузии.
  • sample (torch.Tensor) — Текущий экземпляр сэмпла, созданный процессом диффузии.
  • generator (torch.Generator, необязательный) — Генератор случайных чисел.
  • return_dict (bool, по умолчанию True) — Определяет, возвращать ли DDPMSchedulerOutput или tuple.

Возвращает

DDPMSchedulerOutput или tuple

If return_dict is True, DDPMSchedulerOutput is returned, otherwise a tuple is returned where the first element is the sample tensor.

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

DDPMSchedulerOutput

класс diffusers.schedulers.scheduling_ddpm.DDPMSchedulerOutput

< >

( 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