Buckets:
DDIM
Denoising Diffusion Implicit Models (DDIM) от Jiaming Song, Chenlin Meng и Stefano Ermon.
Аннотация из статьи:
Модели вероятностного диффузионного шумоподавления (DDPM) обеспечивают генерацию изображений высокого качества без использования противоречивого обучения, однако для получения одного образца им необходимо симулировать цепь Маркова на протяжении множества шагов. Для ускорения процесса выборки мы предлагаем модели неявного диффузионного шумоподавления (DDIM) — более эффективный класс итеративных неявных вероятностных моделей, использующих ту же процедуру обучения, что и DDPM. В DDPM генеративный процесс определяется как обратный процессу марковской диффузии. Мы конструируем класс немарковских процессов диффузии, которые приводят к той же целевой функции обучения, но обратный процесс которых позволяет выполнять выборку значительно быстрее. На практике мы показываем, что DDIM способны генерировать образцы высокого качества в 10–50 раз быстрее по фактическому времени выполнения по сравнению с DDPM, позволяют находить баланс между вычислительными затратами и качеством образцов, а также выполняют семантически осмысленную интерполяцию изображений непосредственно в латентном пространстве.
Исходная кодовая база доступна по адресу ermongroup/ddim.
DDIMPipeline[[diffusers.DDIMPipeline]]
diffusers.DDIMPipeline[[diffusers.DDIMPipeline]]
diffusers.DDIMPipeline(unet: UNet2DModel, scheduler: DDIMScheduler)
Параметры:
unet (UNet2DModel) : UNet2DModel для удаления шума из закодированных латентов изображения.
scheduler (SchedulerMixin) : планировщик, используемый в сочетании с unet для удаления шума из закодированного изображения. Может быть одним из DDPMScheduler или DDIMScheduler.
Пайплайн для генерации изображений.
Эта модель наследуется от DiffusionPipeline. Общую документацию по методам, реализованным для всех пайплайнов (загрузка, сохранение, запуск на конкретном устройстве и т. д.), см. в документации родительского класса.
call[[diffusers.DDIMPipeline.call]]
__call__(batch_size: int = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, eta: float = 0.0, num_inference_steps: int = 50, use_clipped_model_output: bool | None = None, output_type: str | None = 'pil', return_dict: bool = True)
Параметры:
batch_size (int, необязательный, по умолчанию 1) : Количество изображений для генерации.
generator (torch.Generator, необязательный) : torch.Generator для обеспечения детерминированности генерации.
eta (float, optional, по умолчанию 0.0) : Соответствует параметру eta (η) из статьи DDIM. Применяется только к DDIMScheduler и игнорируется другими планировщиками. Значение 0 соответствует DDIM, а 1 — DDPM.
num_inference_steps (int, optional, по умолчанию 50) : Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода.
use_clipped_model_output (bool, необязательный, по умолчанию None) : Если True или False, см. документацию для DDIMScheduler.step(). Если None, в планировщик ничего не передаётся (используйте None для планировщиков, которые не поддерживают этот аргумент).
output_type (str, необязательный, по умолчанию "pil") : Формат вывода сгенерированного изображения. Выберите один из вариантов: "pil" (PIL.Image), "np" (np.array) или "pt" (torch.Tensor).
return_dict (bool, необязательный, по умолчанию True) : Возвращать ли ImagePipelineOutput вместо обычного кортежа.
Возвращает: ImagePipelineOutput или tuple
Если return_dict равно True, возвращается ImagePipelineOutput, иначе возвращается tuple, где первый элемент — это список с сгенерированными изображениями
Функция вызова конвейера для генерации.
Пример:
>>> from diffusers import DDIMPipeline
>>> import PIL.Image
>>> import numpy as np
>>> # load model and scheduler
>>> pipe = DDIMPipeline.from_pretrained("fusing/ddim-lsun-bedroom")
>>> # run pipeline in inference (sample random noise and denoise)
>>> image = pipe(eta=0.0, num_inference_steps=50)
>>> # process image to PIL
>>> image_processed = image.cpu().permute(0, 2, 3, 1)
>>> image_processed = (image_processed + 1.0) * 127.5
>>> image_processed = image_processed.numpy().astype(np.uint8)
>>> image_pil = PIL.Image.fromarray(image_processed[0])
>>> # save image
>>> image_pil.save("test.png")
ImagePipelineOutput[[diffusers.ImagePipelineOutput]]
diffusers.ImagePipelineOutput[[diffusers.ImagePipelineOutput]]
diffusers.ImagePipelineOutput(images: list[PIL.Image.Image] | numpy.ndarray)
Параметры:
images (List[PIL.Image.Image] или np.ndarray) : Список денойзированных изображений PIL длиной batch_size или массив NumPy формы (batch_size, height, width, num_channels).
Класс вывода для пайплайнов обработки изображений.
Xet Storage Details
- Size:
- 8.53 kB
- Xet hash:
- 7d96174fa6c34fe2730e5550879db7b80ef1e439ca1b4ca2483a843d39484b17
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.