Buckets:

mishig's picture
|
download
raw
19.7 kB

EulerDiscreteScheduler

Планировщик Эйлера (алгоритм 2) описан в статье Elucidating the Design Space of Diffusion-Based Generative Models авторов Karras et al. Это быстрый планировщик, который часто позволяет получать качественные результаты за 20–30 шагов. Планировщик основан на исходной реализации k-diffusion, созданной Katherine Crowson.

EulerDiscreteScheduler[[diffusers.EulerDiscreteScheduler]]

diffusers.EulerDiscreteScheduler[[diffusers.EulerDiscreteScheduler]]

diffusers.EulerDiscreteScheduler(num_train_timesteps: int = 1000, beta_start: float = 0.0001, beta_end: float = 0.02, beta_schedule: str = 'linear', trained_betas: numpy.ndarray | list[float] | None = None, prediction_type: str = 'epsilon', interpolation_type: str = 'linear', use_karras_sigmas: bool | None = False, use_exponential_sigmas: bool | None = False, use_beta_sigmas: bool | None = False, sigma_min: float | None = None, sigma_max: float | None = None, timestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'linspace', timestep_type: typing.Literal['discrete', 'continuous'] = 'discrete', steps_offset: int = 0, rescale_betas_zero_snr: bool = False, final_sigmas_type: typing.Literal['zero', 'sigma_min'] = 'zero')

Источник

Параметры:

num_train_timesteps (int, по умолчанию 1000) : Количество шагов диффузии для обучения модели.

beta_start (float, по умолчанию 0.0001) : начальное значение beta для инференса.

beta_end (float, по умолчанию 0.02) : Итоговое значение beta.

beta_schedule (Literal["linear", "scaled_linear", "squaredcos_cap_v2"], по умолчанию "linear") : Расписание бета, отображение диапазона бета в последовательность значений бета для шагов модели. Выберите одно из значений: "linear", "scaled_linear" или "squaredcos_cap_v2".

trained_betas (np.ndarray, необязательный) : Передайте массив бета непосредственно в конструктор, чтобы обойти beta_start и beta_end.

prediction_type (Literal["epsilon", "sample", "v_prediction"], defaults to "epsilon", optional) : Prediction type of the scheduler function; can be "epsilon" (predicts the noise of the diffusion process), "sample" (directly predicts the noisy sample) or "v_prediction"` (see section 2.4 of Imagen Video paper).

interpolation_type (Literal["linear", "log_linear"], по умолчанию "linear", необязательный) : Тип интерполяции для вычисления промежуточных сигм на шагах денойзинга планировщика. Должно быть одним из "linear" или "log_linear".

use_karras_sigmas (bool, необязательный, по умолчанию False) : Использовать ли сигмы Карраса для размеров шагов в расписании шума во время процесса выборки. Если True, сигмы определяются согласно последовательности уровней шума {σi}.

use_exponential_sigmas (bool, необязательный, по умолчанию False) : Использовать ли экспоненциальные сигмы для размеров шагов в расписании шума во время процесса выборки.

use_beta_sigmas (bool, optional, defaults to False) : Whether to use beta sigmas for step sizes in the noise schedule during the sampling process. Refer to Beta Sampling is All You Need for more information.

sigma_min (float, optional) : Минимальное значение сигмы для расписания шума. Если не указано, по умолчанию используется последняя сигма в расписании.

sigma_max (float, optional) : Максимальное значение сигмы для расписания шума. Если не указано, по умолчанию используется первая сигма в расписании.

timestep_spacing (Literal["linspace", "leading", "trailing"], defaults to "linspace") : The way the timesteps should be scaled. Refer to Table 2 of the Common Diffusion Noise Schedules and Sample Steps are Flawed for more information.

timestep_type (Literal["discrete", "continuous"], по умолчанию "discrete") : Тип используемых шагов времени. Может быть "discrete" или "continuous".

steps_offset (int, по умолчанию 0) : Смещение, добавляемое к шагам инференса, как требуется некоторыми семействами моделей.

rescale_betas_zero_snr (bool, по умолчанию False) : Нужно ли перемасштабировать беты для нулевого конечного SNR. Это позволяет модели генерировать очень яркие и тёмные образцы, а не ограничиваться образцами со средней яркостью. Непосредственно связано с --offset_noise.

final_sigmas_type (Literal["zero", "sigma_min"], по умолчанию "zero") : конечное значение sigma для расписания шума в процессе выборки. Если указано "sigma_min", конечное sigma совпадает с последним sigma в расписании обучения. Если указано "zero", конечное sigma устанавливается в 0.

Планировщик Эйлера.

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

add_noise[[diffusers.EulerDiscreteScheduler.add_noise]]

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

Источник

Параметры:

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

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

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

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

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

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

get_velocity[[diffusers.EulerDiscreteScheduler.get_velocity]]

get_velocity(sample: Tensor, noise: Tensor, timesteps: Tensor)

Источник

Параметры:

sample (torch.Tensor) : Входной образец, для которого вычисляется скорость.

noise (torch.Tensor) : тензор шума, соответствующий образцу.

timesteps (torch.Tensor) : Шаги, на которых вычисляется скорость.

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

Предсказание скорости, вычисляемое как sqrt(alpha_prod) * noise - sqrt(1 - alpha_prod) * sample.

Вычислите предсказание скорости для данного примера и шума на указанных временных шагах.

Этот метод реализует предсказание скорости, используемое в моделях v-prediction, которые предсказывают линейную комбинацию выборки и шума.

index_for_timestep[[diffusers.EulerDiscreteScheduler.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).

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

scale_model_input[[diffusers.EulerDiscreteScheduler.scale_model_input]]

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

Источник

Параметры:

sample (torch.Tensor) : входной образец, подлежащий масштабированию.

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

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

Масштабированный входной образец, делённый на (sigma**2 + 1) ** 0.5.

Обеспечивает совместимость с планировщиками, которым необходимо масштабировать входную данные модели денуазинга в зависимости от текущего шага. Масштабирует входные данные модели денуазинга с помощью (sigma**2 + 1) ** 0.5 для соответствия алгоритму Euler.

set_begin_index[[diffusers.EulerDiscreteScheduler.set_begin_index]]

set_begin_index(begin_index: int = 0)

Источник

Параметры:

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

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

set_timesteps[[diffusers.EulerDiscreteScheduler.set_timesteps]]

set_timesteps(num_inference_steps: int = None, device: typing.Union[str, torch.device] = None, timesteps: list[int] | None = None, sigmas: list[float] | None = None)

Источник

Параметры:

num_inference_steps (int, optional) : Количество шагов диффузии, используемое при генерации образцов с помощью предобученной модели. Если None, необходимо указать timesteps или sigmas.

device (str или torch.device, необязательный) : Устройство, на которое следует переместить шаги. Если None, шаги не перемещаются.

timesteps (list[int], optional) : Пользовательские шаги (timesteps) для поддержки произвольного расписания. Если None, шаги будут сгенерированы на основе атрибута timestep_spacing. Если передан timesteps, num_inference_steps и sigmas должны быть None, а атрибут timestep_spacing будет проигнорирован.

sigmas (list[float], optional) : Пользовательские сигмы для поддержки произвольного расписания временных шагов. Если None, временные шаги и сигмы будут сгенерированы на основе соответствующих атрибутов планировщика. Если переданы sigmas, num_inference_steps и timesteps должны быть None, а временные шаги будут сгенерированы на основе пользовательского расписания сигм.

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

шаг[[diffusers.EulerDiscreteScheduler.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)

Источник

Параметры:

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

timestep (float или torch.Tensor) : текущий дискретный шаг времени в цепочке диффузии.

sample (torch.Tensor) : Текущая инстанция сэмпла, созданная процессом диффузии.

s_churn (float, необязательный, по умолчанию 0.0) : Параметр стохастичности, управляющий количеством шума, добавляемого во время выборки. Более высокие значения увеличивают случайность.

s_tmin (float, optional, по умолчанию 0.0) : Минимальный порог шага для применения стохастичности. Шум добавляется только к шагам, превышающим это значение.

s_tmax (float, optional, по умолчанию inf) : Максимальный порог шага для применения стохастичности. Шум добавляется только к шагам, значения которых меньше этого порога.

s_noise (float, необязательный, по умолчанию 1.0) : Коэффициент масштабирования шума, добавляемого к образцу.

generator (torch.Generator, необязательный) : генератор случайных чисел для воспроизводимой выборки.

return_dict (bool, необязательный, по умолчанию True) : Возвращать ли EulerDiscreteSchedulerOutput или кортеж.

Возвращает: EulerDiscreteSchedulerOutput или tuple

Если return_dict равно True, возвращается EulerDiscreteSchedulerOutput, иначе возвращается кортеж, где первый элемент — это тензор выборки, а второй — предсказанная исходная выборка.

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

EulerDiscreteSchedulerOutput[[diffusers.schedulers.scheduling_euler_discrete.EulerDiscreteSchedulerOutput]]

diffusers.schedulers.scheduling_euler_discrete.EulerDiscreteSchedulerOutput[[diffusers.schedulers.scheduling_euler_discrete.EulerDiscreteSchedulerOutput]]

diffusers.schedulers.scheduling_euler_discrete.EulerDiscreteSchedulerOutput(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:
19.7 kB
·
Xet hash:
542475e5f51c15c07aefcc1917b127bced9e44214bb0a2090ef1efa2121efa1b

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