Diffusers documentation
HeunDiscreteScheduler
HeunDiscreteScheduler
Планировщик Хуна (алгоритм 1) взят из статьи Elucidating the Design Space of Diffusion-Based Generative Models авторов Karras et al. Планировщик перенесён из библиотеки k-diffusion и создан Katherine Crowson.
HeunDiscreteScheduler
класс diffusers.HeunDiscreteScheduler
< source >( num_train_timesteps: int = 1000beta_start: float = 0.00085beta_end: float = 0.012beta_schedule: str = 'linear'trained_betas: numpy.ndarray | list[float] | None = Noneprediction_type: str = 'epsilon'use_karras_sigmas: bool = Falseuse_exponential_sigmas: bool = Falseuse_beta_sigmas: bool = Falseclip_sample: bool = Falseclip_sample_range: float = 1.0timestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'linspace'steps_offset: int = 0 )
Параметры
- num_train_timesteps (
int, по умолчанию 1000) — Количество шагов диффузии для обучения модели. - beta_start (
float, по умолчанию 0.0001) — Начальное значениеbetaдля вывода. - beta_end (
float, по умолчанию 0.02) — Конечное значениеbeta. - beta_schedule (
"linear","scaled_linear","squaredcos_cap_v2"или"exp", по умолчанию"linear") — Расписание бета, отображающее диапазон бета в последовательность значений бета для шагов модели. Выберите одно из значений:linear,scaled_linear,squaredcos_cap_v2илиexp. - trained_betas (
np.ndarray, необязательный) — Передайте массив betas непосредственно в конструктор, чтобы обойтиbeta_startиbeta_end. - prediction_type (
"epsilon","sample", or"v_prediction", defaults to"epsilon", optional) — Prediction type of the scheduler function; can beepsilon(predicts the noise of the diffusion process),sample(directly predicts the noisy sample) orv_prediction` (see section 2.4 of Imagen Video paper). - clip_sample (
bool, по умолчаниюTrue) — Обрезает предсказанную выборку для численной стабильности. - clip_sample_range (
float, по умолчанию 1.0) — Максимальная величина для обрезки выборок. Действительно только приclip_sample=True. - 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. - timestep_spacing (
"linspace","leading", or"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. - steps_offset (
int, по умолчанию 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
Шумовые образцы с добавленным шумом, масштабированным в соответствии с расписанием шагов времени.
Добавьте шум к исходным образцам в соответствии с расписанием шума на указанных временных шагах.
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
Обеспечивает совместимость с планировщиками, которым необходимо масштабировать входную модель денуазинга в зависимости от текущего шага.
set_begin_index
< source >( begin_index: int = 0 )
Устанавливает начальный индекс для планировщика. Эта функция должна выполняться из конвейера перед инференсом.
set_timesteps
< source >( num_inference_steps: int | None = Nonedevice: typing.Union[str, torch.device] = Nonenum_train_timesteps: int | None = Nonetimesteps: list[int] | None = None )
Параметры
- num_inference_steps (
int, необязательный, по умолчаниюNone) — Количество шагов диффузии, используемое при генерации образцов с помощью предобученной модели. - device (
str,torch.device, необязательный, по умолчаниюNone) — Устройство, на которое следует переместить шаги (timesteps). ЕслиNone, шаги не перемещаются. - num_train_timesteps (
int, необязательный, по умолчаниюNone) — Количество шагов диффузии, используемых при обучении модели. ЕслиNone, используется атрибут по умолчаниюnum_train_timesteps. - timesteps (
list[int], необязательный) — Пользовательские timesteps, используемые для поддержки произвольного интервала между timesteps. ЕслиNone, timesteps будут сгенерированы на основе атрибутаtimestep_spacing. Если переданtimesteps,num_inference_stepsдолжен бытьNone, а атрибутtimestep_spacingбудет проигнорирован.
Устанавливает дискретные временные шаги, используемые для цепочки диффузии (выполняется перед инференсом).
шаг
< source >( model_output: typing.Union[torch.Tensor, numpy.ndarray]timestep: typing.Union[float, torch.Tensor]sample: typing.Union[torch.Tensor, numpy.ndarray]return_dict: bool = True ) → HeunDiscreteSchedulerOutput or tuple
Параметры
- model_output (
torch.Tensor) — Прямой вывод из обученной диффузионной модели. - timestep (
float) — Текущий дискретный шаг в цепочке диффузии. - sample (
torch.Tensor) — Текущий экземпляр сэмпла, созданный процессом диффузии. - return_dict (
bool) — Возвращать лиHeunDiscreteSchedulerOutputили кортеж.
Возвращает
HeunDiscreteSchedulerOutput или tuple
Если True, возвращается HeunDiscreteSchedulerOutput, иначе возвращается кортеж, первым элементом которого является тензор выборки.
Предскажите образец из предыдущего шага времени, обращая SDE. Эта функция распространяет процесс диффузии от выходов обученной модели (чаще всего — предсказанного шума).
SchedulerOutput
класс diffusers.schedulers.scheduling_utils.SchedulerOutput
< source >( prev_sample: Tensor )
Базовый класс для результата функции step планировщика.