Diffusers documentation
EDMEulerScheduler
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
< source >( 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
< source >( original_samples: Tensornoise: Tensortimesteps: Tensor ) → torch.Tensor
Параметры
- original_samples (
torch.Tensor) — Исходные образцы, к которым будет добавлен шум. - noise (
torch.Tensor) — Тензор шума, который нужно добавить к исходным образцам. - timesteps (
torch.Tensor) — Шаги, на которых добавляется шум, определяющие уровень шума по расписанию.
Возвращает
torch.Tensor
Шумовые образцы с добавленным шумом, масштабированным в соответствии с расписанием шагов времени.
Добавьте шум к исходным образцам в соответствии с расписанием шума на указанных временных шагах.
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).
Найдите индекс заданного шага времени в расписании шагов времени.
precondition_inputs
< source >( sample: Tensorsigma: typing.Union[float, torch.Tensor] ) → torch.Tensor
Предварительно обработайте входной образец, масштабируя его в соответствии с формулировкой EDM.
precondition_noise
< source >( sigma: typing.Union[float, torch.Tensor] ) → torch.Tensor
Предварительно обработайте уровень шума, применив логарифмическое преобразование.
precondition_outputs
< source >( 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
< source >( sample: Tensortimestep: typing.Union[float, torch.Tensor] ) → torch.Tensor
Масштабирует входную величину модели денойзинга для соответствия алгоритму Эйлера. Обеспечивает взаимозаменяемость с планировщиками, которым необходимо масштабировать входную величину модели денойзинга в зависимости от текущего шага.
set_begin_index
< source >( begin_index: int = 0 )
Устанавливает начальный индекс для планировщика. Эта функция должна выполняться из конвейера перед инференсом.
set_timesteps
< source >( 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.
Устанавливает дискретные временные шаги, используемые для цепочки диффузии (выполняется перед инференсом).
шаг
< source >( 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
< source >( 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 планировщика.