Diffusers documentation

RePaintScheduler

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

RePaintScheduler

RePaintScheduler — это планировщик инпейнтинга на основе DDPM для инпейнтинга без обучения с экстремальными масками. Он предназначен для использования с RePaintPipeline и основан на статье RePaint: Inpainting using Denoising Diffusion Probabilistic Models Андреаса Лугмайра и соавторов.

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

Свободное инпейнтинг (восстановление изображений) — это задача добавления нового содержимого на изображение в областях, заданных произвольной бинарной маской. Большинство существующих подходов обучаются на определённом распределении масок, что ограничивает их способность к обобщению на невиденные типы масок. Кроме того, обучение с использованием поэлементных и перцептивных потерь часто приводит к простому текстуальному расширению в сторону отсутствующих областей, а не к семантически осмысленной генерации. В данной работе мы предлагаем RePaint: подход к инпейнтингу на основе вероятностной модели диффузионного шумоподавления (DDPM), применимый даже к экстремальным маскам. Мы используем предобученную безусловную DDPM в качестве генеративного априорного распределения. Для обусловливания процесса генерации мы изменяем только итерации обратной диффузии, сэмплируя немаскированные области с использованием информации из данного изображения. Поскольку эта техника не модифицирует и не обусловливает саму исходную сеть DDPM, модель генерирует изображения высокого качества и разнообразия для любой формы инпейнтинга. Мы проверяем наш метод как для лиц, так и для общего инпейнтинга изображений, используя стандартные и экстремальные маски. RePaint превосходит передовые авто регрессионные и GAN-подходы как минимум для пяти из шести распределений масок. Репозиторий на GitHub: этот http URL.

Оригинальная реализация доступна по адресу andreas128/RePaint.

RePaintScheduler

класс diffusers.RePaintScheduler

< >

( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: str = 'linear'eta: float = 0.0trained_betas: numpy.ndarray | None = Noneclip_sample: bool = True )

Параметры

  • num_train_timesteps (int, по умолчанию 1000) — Количество шагов диффузии для обучения модели.
  • beta_start (float, по умолчанию 0.0001) — Начальное значение beta для вывода.
  • beta_end (float, по умолчанию 0.02) — Конечное значение beta.
  • beta_schedule (str, по умолчанию "linear") — Расписание бета, отображающее диапазон значений бета в последовательность бета для шагов модели. Выберите одно из значений: linear, scaled_linear, squaredcos_cap_v2 или sigmoid.
  • eta (float, по умолчанию 0.0) — Вес шума, добавляемого на шаге диффузии. Значение 0.0 соответствует DDIM, а значение 1.0 — DDPM.
  • trained_betas (np.ndarray, необязательный) — Передайте массив betas непосредственно в конструктор, чтобы обойти beta_start и beta_end.
  • clip_sample (bool, по умолчанию True) — Ограничивает предсказанную выборку значениями от -1 до 1 для численной стабильности.

RePaintScheduler — это планировщик для inpainting DDPM внутри заданной маски.

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

add_noise

< >

( original_samples: Tensornoise: Tensortimesteps: IntTensor )

Параметры

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

Исключения

NotImplementedError

  • NotImplementedError — обучение RePaint следует выполнять с помощью DDPMScheduler.add_noise().

Укажите, что добавление шума для обучения RePaint не поддерживается этим планировщиком.

scale_model_input

< >

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

Параметры

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

Возвращает

torch.Tensor

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

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

set_timesteps

< >

( num_inference_steps: intjump_length: int = 10jump_n_sample: int = 10device: typing.Union[str, torch.device, NoneType] = None )

Параметры

  • num_inference_steps (int) — Количество шагов диффузии, используемых при генерации образцов с помощью предобученной модели.
  • jump_length (int, по умолчанию 10) — Количество шагов, выполняемых вперёд во времени перед откатом назад для одного прыжка («j» в статье RePaint). См. рисунки 9 и 10 в статье.
  • jump_n_sample (int, по умолчанию 10) — Количество раз, когда выполняется скачок во времени вперед для выбранного временного сэмпла. См. рисунки 9 и 10 в статье.
  • device (str или torch.device, необязательный) — Устройство, на которое следует переместить шаги. Если None, шаги не перемещаются.

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

шаг

< >

( model_output: Tensortimestep: intsample: Tensororiginal_image: Tensormask: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → RePaintSchedulerOutput or tuple[torch.Tensor, torch.Tensor]

Параметры

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

Возвращает

RePaintSchedulerOutput или tuple[torch.Tensor, torch.Tensor]

If return_dict is True, RePaintSchedulerOutput is returned, otherwise a tuple is returned where the first element is the previous sample and the second is the predicted original sample.

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

undo_step

< >

( sample: Tensortimestep: intgenerator: typing.Optional[torch.Generator] = None ) → torch.Tensor

Параметры

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

Возвращает

torch.Tensor

Образец на следующем шаге времени в цепочке диффузии.

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

RePaintSchedulerOutput

класс diffusers.schedulers.scheduling_repaint.RePaintSchedulerOutput

< >

( prev_sample: Tensorpred_original_sample: Tensor )

Параметры

  • 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 можно использовать для предпросмотра прогресса или для направленного генерирования.

Класс для вывода функции шага планировщика.

Update on GitHub