Buckets:
DDPMScheduler
Denoising Diffusion Probabilistic Models (DDPM) авторов Джонатана Хо, Аджая Джейна и Питера Аббеля предлагает модель на основе диффузии с тем же названием. В контексте библиотеки 🤗 Diffusers DDPM обозначает дискретный планировщик удаления шума из статьи, а также соответствующий пайплайн.
Аннотация из статьи:
Мы представляем результаты синтеза изображений высокого качества с использованием диффузионных вероятностных моделей, класса латентных переменных, вдохновлённого соображениями из неравновесной термодинамики. Наши лучшие результаты получены путём обучения на взвешенной вариационной границе, спроектированной на основе новой связи между диффузионными вероятностными моделями и сопоставлением скоростей сглаживания шума с динамикой Ланжевена. Наши модели естественным образом допускают схему прогрессивного сжимающего декодирования с потерями, которую можно интерпретировать как обобщение авторегрессионного декодирования. На безусловном наборе данных CIFAR10 мы получаем Inception score 9,46 и FID score 3,17, являющийся лучшим на данный момент. На LSUN 256x256 мы получаем качество образцов, сопоставимое с ProgressiveGAN. Наша реализация доступна по адресу этот URL.
DDPMScheduler[[diffusers.DDPMScheduler]]
diffusers.DDPMScheduler[[diffusers.DDPMScheduler]]
diffusers.DDPMScheduler(num_train_timesteps: int = 1000, beta_start: float = 0.0001, beta_end: float = 0.02, beta_schedule: typing.Literal['linear', 'scaled_linear', 'squaredcos_cap_v2', 'sigmoid'] = 'linear', trained_betas: numpy.ndarray | list[float] | None = None, variance_type: typing.Literal['fixed_small', 'fixed_small_log', 'fixed_large', 'fixed_large_log', 'learned', 'learned_range'] = 'fixed_small', clip_sample: bool = True, prediction_type: typing.Literal['epsilon', 'sample', 'v_prediction'] = 'epsilon', thresholding: bool = False, dynamic_thresholding_ratio: float = 0.995, clip_sample_range: float = 1.0, sample_max_value: float = 1.0, timestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'leading', steps_offset: int = 0, rescale_betas_zero_snr: bool = False)
Параметры:
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" или "sigmoid", по умолчанию "linear") : расписание beta, отображение диапазона beta в последовательность значений beta для шагов модели.
trained_betas (np.ndarray, необязательный) : Массив бета-значений для прямой передачи в конструктор без использования beta_start и beta_end.
variance_type ("fixed_small", "fixed_small_log", "fixed_large", "fixed_large_log", "learned" или "learned_range", по умолчанию "fixed_small") : Обрезает дисперсию при добавлении шума к денойзированному образцу.
clip_sample (bool, по умолчанию True) : Обрезает предсказанную выборку для обеспечения численной стабильности.
clip_sample_range (float, по умолчанию 1.0) : Максимальная величина для обрезки выборок. Действительно только при clip_sample=True.
prediction_type ("epsilon", "sample", or "v_prediction", defaults to "epsilon") : 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).
thresholding (bool, по умолчанию False) : Использовать ли метод «динамического порога». Этот метод не подходит для моделей диффузии в латентном пространстве, таких как Stable Diffusion.
dynamic_thresholding_ratio (float, по умолчанию 0.995) : Коэффициент для метода динамического порогового значения. Действительно только при thresholding=True.
sample_max_value (float, по умолчанию 1.0) : Пороговое значение для динамического порогового выделения. Действительно только при thresholding=True.
timestep_spacing ("linspace", "leading", or "trailing", defaults to "leading") : 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) : Смещение, добавляемое к шагам инференса, как требуется некоторыми семействами моделей.
rescale_betas_zero_snr (bool, по умолчанию False) : Нужно ли перемасштабировать беты для нулевого конечного SNR. Это позволяет модели генерировать очень яркие и тёмные образцы, а не ограничиваться образцами со средней яркостью. Непосредственно связано с --offset_noise.
DDPMScheduler исследует связи между сопоставлением скоров денойзинга и сэмплированием по динамике Ланжевена.
Эта модель наследуется от SchedulerMixin и ConfigMixin. Общие методы, которые библиотека реализует для всех планировщиков, такие как загрузка и сохранение, описаны в документации суперкласса.
add_noise[[diffusers.DDPMScheduler.add_noise]]
add_noise(original_samples: Tensor, noise: Tensor, timesteps: IntTensor)
Параметры:
original_samples (torch.Tensor) : исходные образцы, к которым будет добавлен шум.
noise (torch.Tensor) : Шум, который нужно добавить к образцам.
timesteps (torch.IntTensor) : Шаги, указывающие уровень шума для каждого примера.
Возвращает: torch.Tensor
Шумные образцы.
Добавьте шум к исходным образцам в соответствии с величиной шума на каждом шаге (это процесс прямой диффузии).
get_velocity[[diffusers.DDPMScheduler.get_velocity]]
get_velocity(sample: Tensor, noise: Tensor, timesteps: IntTensor)
Параметры:
sample (torch.Tensor) : Входной образец.
noise (torch.Tensor) : Тензор шума.
timesteps (torch.IntTensor) : Шаги для вычисления скорости.
Возвращает: torch.Tensor
Вычисленная скорость.
Вычислите предсказание скорости из выборки и шума согласно формуле скорости.
previous_timestep[[diffusers.DDPMScheduler.previous_timestep]]
previous_timestep(timestep: int)
Параметры:
timestep (int) : Текущий шаг.
Возвращает: int или torch.Tensor
Предыдущий шаг по времени.
Вычислите предыдущий шаг временной шкалы в цепочке диффузии.
scale_model_input[[diffusers.DDPMScheduler.scale_model_input]]
scale_model_input(sample: Tensor, timestep: int | None = None)
Параметры:
sample (torch.Tensor) : Входной образец.
timestep (int, необязательный) : Текущий шаг в цепочке диффузии.
Возвращает: torch.Tensor
Масштабированный входной образец.
Обеспечивает совместимость с планировщиками, которым необходимо масштабировать входную модель денуазинга в зависимости от текущего шага.
set_timesteps[[diffusers.DDPMScheduler.set_timesteps]]
set_timesteps(num_inference_steps: int = None, device: typing.Union[str, torch.device] = None, timesteps: list[int] | None = None)
Параметры:
num_inference_steps (int, optional) : Количество шагов диффузии, используемое при генерации образцов с помощью предобученной модели. Если используется, timesteps должно быть None.
device (str или torch.device, необязательный) : Устройство, на которое следует переместить шаги. Если None, шаги не перемещаются.
timesteps (list[int], optional) : Пользовательские шаги (timesteps) для поддержки произвольного интервала между ними. Если None, используется стандартная стратегия равномерного распределения шагов. Если передан параметр timesteps, num_inference_steps должен быть None.
Устанавливает дискретные временные шаги, используемые для цепочки диффузии (выполняется перед инференсом).
шаг[[diffusers.DDPMScheduler.step]]
step(model_output: Tensor, timestep: int, sample: Tensor, generator: typing.Optional[torch.Generator] = None, return_dict: bool = True)
Параметры:
model_output (torch.Tensor) : Прямой вывод из обученной диффузионной модели.
timestep (int) : Текущий дискретный шаг времени в цепочке диффузии.
sample (torch.Tensor) : Текущая инстанция сэмпла, созданная процессом диффузии.
generator (torch.Generator, необязательный) : генератор случайных чисел.
return_dict (bool, по умолчанию True) : Возвращать ли DDPMSchedulerOutput или tuple.
Возвращает: DDPMSchedulerOutput или tuple
If return_dict is True, DDPMSchedulerOutput is returned, otherwise a tuple is returned where the first element is the sample tensor.
Предскажите образец из предыдущего шага времени, обращая SDE. Эта функция распространяет процесс диффузии от выходов обученной модели (чаще всего — предсказанного шума).
DDPMSchedulerOutput[[diffusers.schedulers.scheduling_ddpm.DDPMSchedulerOutput]]
diffusers.schedulers.scheduling_ddpm.DDPMSchedulerOutput[[diffusers.schedulers.scheduling_ddpm.DDPMSchedulerOutput]]
diffusers.schedulers.scheduling_ddpm.DDPMSchedulerOutput(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:
- 15.4 kB
- Xet hash:
- 0c46b22fafc9ac618bc0f0ccb084ad31447df6e46f26f962602669934719380e
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.