Diffusers documentation

CMStochasticIterativeScheduler

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

and get access to the augmented documentation experience

to get started

CMStochasticIterativeScheduler

Consistency Models авторов Янга Сонга, Прафулла Дхаривала, Марка Чена и Ильи Сутскевера представили многошаговый и одношаговый планировщик (алгоритм 1), способный генерировать качественные образцы за один или небольшое количество шагов.

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

Модели диффузии значительно продвинули области генерации изображений, аудио и видео, но они зависят от итеративного процесса выборки, что приводит к медленной генерации. Чтобы преодолеть это ограничение, мы предлагаем consistency models — новое семейство моделей, которые генерируют образцы высокого качества, напрямую отображая шум в данные. По своей конструкции они поддерживают быструю генерацию за один шаг, при этом позволяя многошаговую выборку для обмена вычислительных ресурсов на качество образцов. Они также поддерживают редактирование данных в режиме zero-shot, такое как inpainting изображений, колоризация и суперразрешение, без необходимости явного обучения на этих задачах. Consistency models можно обучать либо путём дистилляции предобученных диффузионных моделей, либо как самостоятельные генеративные модели. В ходе обширных экспериментов мы демонстрируем, что они превосходят существующие техники дистилляции для диффузионных моделей при одношаговой и малошаговой выборке, достигая нового state-of-the-art значения FID 3.55 на CIFAR-10 и 6.20 на ImageNet 64x64 для генерации за один шаг. При обучении в изоляции consistency models становятся новым семейством генеративных моделей, которые могут превосходить существующие одношаговые, неадверсариальные генеративные модели на стандартных бенчмарках, таких как CIFAR-10, ImageNet 64x64 и LSUN 256x256.

Исходный код можно найти в openai/consistency_models.

CMStochasticIterativeScheduler

класс diffusers.CMStochasticIterativeScheduler

< >

( num_train_timesteps: int = 40sigma_min: float = 0.002sigma_max: float = 80.0sigma_data: float = 0.5s_noise: float = 1.0rho: float = 7.0clip_denoised: bool = True )

Параметры

  • num_train_timesteps (int, по умолчанию 40) — Количество шагов диффузии для обучения модели.
  • sigma_min (float, по умолчанию 0.002) — Минимальная величина шума в расписании сигм. По умолчанию 0.002, как в исходной реализации.
  • sigma_max (float, по умолчанию 80.0) — Максимальная величина шума в расписании сигм. По умолчанию 80.0, как в исходной реализации.
  • sigma_data (float, по умолчанию 0.5) — Стандартное отклонение распределения данных из статьи EDM paper. По умолчанию 0.5, как в исходной реализации.
  • s_noise (float, по умолчанию 1.0) — Количество дополнительного шума для компенсации потери деталей при сэмплировании. Разумный диапазон — [1.000, 1.011]. По умолчанию 1.0, как в исходной реализации.
  • rho (float, по умолчанию 7.0) — Параметр для вычисления расписания сигм Karras из статьи EDM paper. По умолчанию 7.0, как в исходной реализации.
  • clip_denoised (bool, по умолчанию True) — Определяет, следует ли ограничивать значения денойзированных выходов диапазоном (-1, 1).
  • timesteps (list или np.ndarray или torch.Tensor, необязательно) — Явный график временных шагов, который можно указать по желанию. Ожидается, что временные шаги будут заданы в порядке возрастания.

Многошаговая и одношаговая выборка для моделей согласованности.

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

add_noise

< >

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

Параметры

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

Возвращает

torch.Tensor

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

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

get_scalings

< >

( sigma: Tensor ) → tuple[torch.Tensor, torch.Tensor]

Параметры

  • sigma (torch.Tensor) — Текущее значение сигмы в расписании шума.

Возвращает

tuple[torch.Tensor, torch.Tensor]

Кортеж, содержащий c_skip (масштабирование для входного образца) и c_out (масштабирование для вывода модели).

Вычисляет коэффициенты масштабирования для вывода модели согласованности.

get_scalings_for_boundary_condition

< >

( sigma: Tensor ) → tuple[torch.Tensor, torch.Tensor]

Параметры

  • sigma (torch.Tensor) — Текущее значение sigma в расписании Karras.

Возвращает

tuple[torch.Tensor, torch.Tensor]

Кортеж из двух элементов, где c_skip (веса текущего образца) — первый элемент, а c_out (веса вывода модели согласованности) — второй.

Получает масштабы, используемые в параметризации модели согласованности (из Приложения C статьи) для обеспечения граничного условия.

> epsilon в уравнениях для c_skip и c_out задан как sigma_min.

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 + sigma_data**2) ** 0.5.

set_begin_index

< >

( begin_index: int = 0 )

Параметры

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

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

set_timesteps

< >

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

Параметры

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

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

sigma_to_t

< >

( sigmas: float | numpy.ndarray ) → np.ndarray

Параметры

  • sigmas (float или np.ndarray) — Одиночное значение Karras sigma или массив значений Karras sigma.

Возвращает

np.ndarray

Массив шагов времени с масштабированным входом.

Получает масштабированные временные шаги из сигм Karras для ввода в модель согласованности.

шаг

< >

( model_output: Tensortimestep: typing.Union[float, torch.Tensor]sample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → CMStochasticIterativeSchedulerOutput or tuple

Параметры

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

Возвращает

CMStochasticIterativeSchedulerOutput или tuple

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

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

CMStochasticIterativeSchedulerOutput

класс diffusers.schedulers.scheduling_consistency_models.CMStochasticIterativeSchedulerOutput

< >

( prev_sample: Tensor )

Параметры

  • prev_sample (torch.Tensor формы (batch_size, num_channels, height, width) для изображений) — Вычисленная выборка (x_{t-1}) предыдущего шага. prev_sample следует использовать как следующий вход модели в цикле шумоподавления.

Класс результата для функции step планировщика.

Update on GitHub