Diffusers documentation

DiT

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.43.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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

< >

( transformer: DiTTransformer2DModelvae: AutoencoderKLscheduler: KarrasDiffusionSchedulersid2label: dict[int, str] | None = None )

Параметры

  • transformer (DiTTransformer2DModel) — Класс DiTTransformer2DModel, используемый для денойзинга закодированных латентов изображения. Изначально в конфигурации публиковался как Transformer2DModel, но это несоответствие можно игнорировать.
  • vae (AutoencoderKL) — модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
  • scheduler (DDIMScheduler) — планировщик, используемый в связке с transformer для удаления шума из закодированных латентов изображения.

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

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

__call__

< >

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

Параметры

  • class_labels (list[int]) — список меток классов ImageNet для изображений, которые будут сгенерированы.
  • guidance_scale (float, необязательный, по умолчанию 4.0) — Более высокое значение guidance scale побуждает модель генерировать изображения, тесно связанные с текстовым prompt, в ущерб качеству изображения. Guidance scale включается, когда guidance_scale > 1.
  • generator (torch.Generator, необязательный) — torch.Generator для обеспечения детерминированности генерации.
  • num_inference_steps (int, необязательный, по умолчанию 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

< >

( label: str | list[str] ) → list of int

Параметры

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

Возвращает

list из int

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

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

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).

Класс вывода для пайплайнов обработки изображений.

Update on GitHub