Diffusers documentation
DiT
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
< source >( transformer: DiTTransformer2DModelvae: AutoencoderKLscheduler: KarrasDiffusionSchedulersid2label: dict[int, str] | None = None )
Параметры
- transformer (DiTTransformer2DModel) —
Класс
DiTTransformer2DModel, используемый для денойзинга закодированных латентов изображения. Изначально в конфигурации публиковался какTransformer2DModel, но это несоответствие можно игнорировать. - vae (AutoencoderKL) — модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
- scheduler (DDIMScheduler) —
планировщик, используемый в связке с
transformerдля удаления шума из закодированных латентов изображения.
Pipeline для генерации изображений на основе Transformer-архитектуры вместо UNet.
Эта модель наследуется от DiffusionPipeline. Общую документацию по методам, реализованным для всех пайплайнов (загрузка, сохранение, запуск на конкретном устройстве и т. д.), см. в документации родительского класса.
__call__
< source >( 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
< source >( label: str | list[str] ) → list of int
Соответствие строк меток ImageNet идентификаторам классов.
ImagePipelineOutput
класс diffusers.ImagePipelineOutput
< source >( images: list[PIL.Image.Image] | numpy.ndarray )
Класс вывода для пайплайнов обработки изображений.