Diffusers documentation
EulerDiscreteScheduler
EulerDiscreteScheduler
Планировщик Эйлера (алгоритм 2) описан в статье Elucidating the Design Space of Diffusion-Based Generative Models авторов Karras et al. Это быстрый планировщик, который часто позволяет получать качественные результаты за 20–30 шагов. Планировщик основан на исходной реализации k-diffusion, созданной Katherine Crowson.
EulerDiscreteScheduler
класс diffusers.EulerDiscreteScheduler
< source >( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: str = 'linear'trained_betas: numpy.ndarray | list[float] | None = Noneprediction_type: str = 'epsilon'interpolation_type: str = 'linear'use_karras_sigmas: bool | None = Falseuse_exponential_sigmas: bool | None = Falseuse_beta_sigmas: bool | None = Falsesigma_min: float | None = Nonesigma_max: float | None = Nonetimestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'linspace'timestep_type: typing.Literal['discrete', 'continuous'] = 'discrete'steps_offset: int = 0rescale_betas_zero_snr: bool = Falsefinal_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, необязательный) — Передайте массив betas непосредственно в конструктор, чтобы обойти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) — Использовать ли Karras sigmas для определения размеров шагов в расписании шума в процессе выборки. ЕслиTrue, значения сигм определяются согласно последовательности уровней шума {σi}. - use_exponential_sigmas (
bool, необязательный, по умолчаниюFalse) — Использовать ли экспоненциальные сигмы для размеров шагов в расписании шума во время процесса выборки. - use_beta_sigmas (
bool, optional, defaults toFalse) — 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, необязательный) — Минимальное значение сигмы для расписания шума. Если не указано, по умолчанию используется последняя сигма в расписании. - sigma_max (
float, необязательный) — Максимальное значение сигмы для расписания шума. Если не указано, по умолчанию используется первая сигма в расписании. - 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
< source >( original_samples: Tensornoise: Tensortimesteps: Tensor ) → torch.Tensor
Параметры
- original_samples (
torch.Tensor) — Исходные образцы, к которым будет добавлен шум. - noise (
torch.Tensor) — Тензор шума, который нужно добавить к исходным образцам. - timesteps (
torch.Tensor) — Шаги, на которых добавляется шум, определяющие уровень шума по расписанию.
Возвращает
torch.Tensor
Шумовые образцы с добавленным шумом, масштабированным в соответствии с расписанием шагов времени.
Добавьте шум к исходным образцам в соответствии с расписанием шума на указанных временных шагах.
get_velocity
< source >( sample: Tensornoise: Tensortimesteps: Tensor ) → torch.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
< 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 + 1) ** 0.5 для соответствия алгоритму Euler.
set_begin_index
< source >( begin_index: int = 0 )
Устанавливает начальный индекс для планировщика. Эта функция должна выполняться из конвейера перед инференсом.
set_timesteps
< source >( num_inference_steps: int = Nonedevice: typing.Union[str, torch.device] = Nonetimesteps: list[int] | None = Nonesigmas: list[float] | None = None )
Параметры
- num_inference_steps (
int, необязательный) — Количество шагов диффузии, используемое при генерации образцов с помощью предобученной модели. ЕслиNone, необходимо указатьtimestepsилиsigmas. - device (
strилиtorch.device, необязательный) — Устройство, на которое следует переместить шаги. ЕслиNone, шаги не перемещаются. - timesteps (
list[int], необязательный) — Пользовательские шаги (timesteps) для поддержки произвольного расписания. ЕслиNone, шаги будут сгенерированы на основе атрибутаtimestep_spacing. Если переданtimesteps,num_inference_stepsиsigmasдолжны бытьNone, а атрибутtimestep_spacingбудет проигнорирован. - sigmas (
list[float], необязательный) — Пользовательские сигмы, используемые для поддержки произвольного расписания шагов. ЕслиNone, шаги и сигмы будут сгенерированы на основе соответствующих атрибутов планировщика. Если переданыsigmas,num_inference_stepsиtimestepsдолжны бытьNone, а шаги будут сгенерированы на основе пользовательского расписания сигм.
Устанавливает дискретные временные шаги, используемые для цепочки диффузии (выполняется перед инференсом).
шаг
< 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 = True ) → EulerDiscreteSchedulerOutput 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, необязательный, по умолчанию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
< 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 планировщика.