Buckets:

mishig's picture
|
download
raw
17.6 kB

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]]

diffusers.EDMEulerScheduler[[diffusers.EDMEulerScheduler]]

diffusers.EDMEulerScheduler(sigma_min: float = 0.002, sigma_max: float = 80.0, sigma_data: float = 0.5, sigma_schedule: typing.Literal['karras', 'exponential'] = 'karras', num_train_timesteps: int = 1000, prediction_type: typing.Literal['epsilon', 'v_prediction'] = 'epsilon', rho: float = 7.0, final_sigmas_type: typing.Literal['zero', 'sigma_min'] = 'zero')

Источник

Параметры:

sigma_min (float, optional, по умолчанию 0.002) : Минимальная величина шума в расписании сигм. В статье EDM [1] это значение было установлено в 0.002; разумный диапазон — [0, 10].

sigma_max (float, optional, по умолчанию 80.0) : Максимальная величина шума в расписании сигм. В статье EDM [1] это значение было установлено в 80.0; разумный диапазон — [0.2, 80.0].

sigma_data (float, необязательный, по умолчанию 0.5) : Стандартное отклонение распределения данных. В статье EDM [1] это значение установлено в 0.5.

sigma_schedule (Literal["karras", "exponential"], optional, по умолчанию "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, optional, по умолчанию 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[[diffusers.EDMEulerScheduler.add_noise]]

add_noise(original_samples: Tensor, noise: Tensor, timesteps: Tensor)

Источник

Параметры:

original_samples (torch.Tensor) : исходные образцы, к которым будет добавлен шум.

noise (torch.Tensor) : тензор шума, который нужно добавить к исходным образцам.

timesteps (torch.Tensor) : Шаги, на которых добавляется шум, определяющие уровень шума по расписанию.

Возвращает: torch.Tensor

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

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

index_for_timestep[[diffusers.EDMEulerScheduler.index_for_timestep]]

index_for_timestep(timestep: typing.Union[float, torch.Tensor], schedule_timesteps: typing.Optional[torch.Tensor] = None)

Источник

Параметры:

timestep (float или torch.Tensor) : значение шага времени, которое нужно найти в расписании.

schedule_timesteps (torch.Tensor, необязательный) : Расписание временных шагов, в котором выполняется поиск. Если None, используется self.timesteps.

Возвращает: int

Индекс шага времени в расписании. Для самого первого шага возвращает второй индекс, если существует несколько совпадений, чтобы избежать пропуска сигмы при начале с середины расписания (например, для image-to-image).

Найдите индекс заданного шага времени в расписании шагов времени.

precondition_inputs[[diffusers.EDMEulerScheduler.precondition_inputs]]

precondition_inputs(sample: Tensor, sigma: typing.Union[float, torch.Tensor])

Источник

Параметры:

sample (torch.Tensor) : входной тензор образца для предварительной обработки.

sigma (float или torch.Tensor) : текущее значение сигмы (уровня шума).

Возвращает: torch.Tensor

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

Предварительно обработайте входной образец, масштабируя его в соответствии с формулировкой EDM.

precondition_noise[[diffusers.EDMEulerScheduler.precondition_noise]]

precondition_noise(sigma: typing.Union[float, torch.Tensor])

Источник

Параметры:

sigma (float или torch.Tensor) : значение сигмы (уровня шума) для предварительной обработки.

Возвращает: torch.Tensor

Значение предобусловленного шума, вычисленное как 0.25 * log(sigma).

Предварительно обработайте уровень шума, применив логарифмическое преобразование.

precondition_outputs[[diffusers.EDMEulerScheduler.precondition_outputs]]

precondition_outputs(sample: Tensor, model_output: Tensor, sigma: typing.Union[float, torch.Tensor])

Источник

Параметры:

sample (torch.Tensor) : Тензор входной выборки.

model_output (torch.Tensor) : Прямой вывод из обученной диффузионной модели.

sigma (float или torch.Tensor) : текущее значение сигмы (уровня шума).

Возвращает: torch.Tensor

Образец после шумоподавления, вычисленный путём объединения skip-соединения и масштабирования вывода.

Предварительно обрабатывайте выходные модели в соответствии с формулировкой EDM.

scale_model_input[[diffusers.EDMEulerScheduler.scale_model_input]]

scale_model_input(sample: Tensor, timestep: typing.Union[float, torch.Tensor])

Источник

Параметры:

sample (torch.Tensor) : Тензор входной выборки.

timestep (float или torch.Tensor) : Текущий шаг (timestep) в цепочке диффузии.

Возвращает: torch.Tensor

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

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

set_begin_index[[diffusers.EDMEulerScheduler.set_begin_index]]

set_begin_index(begin_index: int = 0)

Источник

Параметры:

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

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

set_timesteps[[diffusers.EDMEulerScheduler.set_timesteps]]

set_timesteps(num_inference_steps: int = None, device: typing.Union[str, torch.device] = None, sigmas: 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.

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

шаг[[diffusers.EDMEulerScheduler.step]]

step(model_output: Tensor, timestep: typing.Union[float, torch.Tensor], sample: Tensor, s_churn: float = 0.0, s_tmin: float = 0.0, s_tmax: float = inf, s_noise: float = 1.0, generator: typing.Optional[torch.Generator] = None, return_dict: bool = True, pred_original_sample: typing.Optional[torch.Tensor] = None)

Источник

Параметры:

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]]

diffusers.schedulers.scheduling_edm_euler.EDMEulerSchedulerOutput[[diffusers.schedulers.scheduling_edm_euler.EDMEulerSchedulerOutput]]

diffusers.schedulers.scheduling_edm_euler.EDMEulerSchedulerOutput(prev_sample: Tensor, pred_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 можно использовать для предпросмотра прогресса или для guidance.

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

Xet Storage Details

Size:
17.6 kB
·
Xet hash:
03e72536a0e0be499a7871a4aa5329e03418950fc57acaf181e85780a559e35a

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.