Buckets:

mishig's picture
|
download
raw
9.55 kB

DiT

Масштабируемые диффузионные модели на основе трансформеров (DiT) — работа Уильяма Пиблса и Сэйнинга Ши.

Аннотация из статьи:

Мы исследуем новый класс диффузионных моделей, основанных на архитектуре трансформера. Мы обучаем латентные диффузионные модели изображений, заменяя обычно используемый U-Net-бэкбон трансформером, работающим с латентными патчами. Мы анализируем масштабируемость наших Diffusion Transformers (DiTs) с точки зрения сложности прямого прохода, измеряемой в Gflops. Мы обнаруживаем, что DiTs с более высоким значением Gflops — за счёт увеличения глубины/ширины трансформера или увеличения количества входных токенов — последовательно демонстрируют более низкий FID. Помимо хороших свойств масштабируемости, наши самые большие модели DiT-XL/2 превосходят все предыдущие диффузионные модели на бенчмарках ImageNet 512x512 и 256x256 с классовым условием, достигая передового значения FID 2.27 на последнем из них.

Исходный код можно найти в facebookresearch/dit.

Обязательно ознакомьтесь с руководством по планировщикам, чтобы узнать, как исследовать баланс между скоростью и качеством планировщика, а также с разделом повторное использование компонентов в разных конвейерах, чтобы узнать, как эффективно загружать одни и те же компоненты в несколько конвейеров.

DiTPipeline[[diffusers.DiTPipeline]]

diffusers.DiTPipeline[[diffusers.DiTPipeline]]

diffusers.DiTPipeline(transformer: DiTTransformer2DModel, vae: AutoencoderKL, scheduler: KarrasDiffusionSchedulers, id2label: dict[int, str] | None = None)

Источник

Параметры:

transformer (DiTTransformer2DModel) : класс, использующий DiTTransformer2DModel для удаления шума из закодированных латентов изображения. Изначально в конфигурации публиковался как Transformer2DModel, но это несоответствие можно игнорировать.

vae (AutoencoderKL) : Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.

scheduler (DDIMScheduler) : планировщик, используемый в связке с transformer для удаления шума из закодированных латентов изображения.

Pipeline для генерации изображений на основе Transformer-архитектуры вместо UNet.

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

call[[diffusers.DiTPipeline.call]]

__call__(class_labels: list[int], guidance_scale: float = 4.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, num_inference_steps: int = 50, output_type: str | None = 'pil', return_dict: bool = True)

Источник

Параметры:

class_labels (list[int]) : список меток классов ImageNet для изображений, которые будут сгенерированы.

guidance_scale (float, optional, по умолчанию 4.0) : Более высокое значение guidance scale побуждает модель генерировать изображения, тесно связанные с текстовым prompt, за счёт снижения качества изображения. Guidance scale активируется, когда guidance_scale > 1.

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

num_inference_steps (int, optional, по умолчанию 250) : Количество шагов денойзинга. Как правило, большее количество шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода.

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 DiTPipeline, DPMSolverMultistepScheduler
>>> import torch

>>> pipe = DiTPipeline.from_pretrained("facebook/DiT-XL-2-256", torch_dtype=torch.float16)
>>> pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)
>>> pipe = pipe.to("cuda")

>>> # pick words from Imagenet class labels
>>> pipe.labels  # to print all available words

>>> # pick words that exist in ImageNet
>>> words = ["white shark", "umbrella"]

>>> class_ids = pipe.get_label_ids(words)

>>> generator = torch.manual_seed(33)
>>> output = pipe(class_labels=class_ids, num_inference_steps=25, generator=generator)

>>> image = output.images[0]  # label 'white shark'

get_label_ids[[diffusers.DiTPipeline.get_label_ids]]

get_label_ids(label: str | list[str])

Источник

Параметры:

label (str или dict из str) : Строки меток, которые будут сопоставлены с идентификаторами классов.

Возвращает: list из int

Идентификаторы классов, которые будут обработаны конвейером.

Соответствие строк меток ImageNet идентификаторам классов.

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:
9.55 kB
·
Xet hash:
f483266b69e3a0e7a377c0cbc64a955f8d17f3d9fceb0ed6b1201b09dffcb4a7

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