Diffusers documentation
CMStochasticIterativeScheduler
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
< source >( 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
< source >( original_samples: Tensornoise: Tensortimesteps: Tensor ) → torch.Tensor
Параметры
- original_samples (
torch.Tensor) — Исходные образцы, к которым будет добавлен шум. - noise (
torch.Tensor) — Тензор шума, который нужно добавить к исходным образцам. - timesteps (
torch.Tensor) — Шаги, на которых добавляется шум, определяющие уровень шума по расписанию.
Возвращает
torch.Tensor
Шумовые образцы с добавленным шумом, масштабированным в соответствии с расписанием шагов времени.
Добавьте шум к исходным образцам в соответствии с расписанием шума на указанных временных шагах.
get_scalings
< source >( sigma: Tensor ) → tuple[torch.Tensor, torch.Tensor]
Вычисляет коэффициенты масштабирования для вывода модели согласованности.
get_scalings_for_boundary_condition
< source >( sigma: Tensor ) → tuple[torch.Tensor, torch.Tensor]
Получает масштабы, используемые в параметризации модели согласованности (из Приложения C статьи) для обеспечения граничного условия.
>
epsilonв уравнениях дляc_skipиc_outзадан какsigma_min.
index_for_timestep
< source >( 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
< source >( sample: Tensortimestep: typing.Union[float, torch.Tensor] ) → torch.Tensor
Масштабирует вход модели согласованности на (sigma**2 + sigma_data**2) ** 0.5.
set_begin_index
< source >( begin_index: int = 0 )
Устанавливает начальный индекс для планировщика. Эта функция должна выполняться из конвейера перед инференсом.
set_timesteps
< source >( 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
< source >( sigmas: float | numpy.ndarray ) → np.ndarray
Получает масштабированные временные шаги из сигм Karras для ввода в модель согласованности.
шаг
< source >( 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
< source >( prev_sample: Tensor )
Класс результата для функции step планировщика.