Diffusers documentation

CogView3Plus

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

and get access to the augmented documentation experience

to get started

CogView3Plus

CogView3: Finer and Faster Text-to-Image Generation via Relay Diffusion от Tsinghua University & ZhipuAI, авторы: Wendi Zheng, Jiayan Teng, Zhuoyi Yang, Weihan Wang, Jidong Chen, Xiaotao Gu, Yuxiao Dong, Ming Ding, Jie Tang.

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

Недавние достижения в области генеративных систем «текст в изображение» были во многом обусловлены диффузионными моделями. Однако одностадийные диффузионные модели «текст в изображение» по-прежнему сталкиваются с трудностями в плане вычислительной эффективности и детализации изображений. Для решения этой проблемы мы предлагаем CogView3 — инновационный каскадный фреймворк, повышающий производительность диффузионных моделей «текст в изображение». CogView3 — первая модель, реализующая релейную диффузию в области генерации изображений по тексту: задача выполняется путем создания изображений с низким разрешением, за которым следует супер-разрешение на основе релейного подхода. Этот метод не только обеспечивает конкурентоспособные результаты генерации изображений по тексту, но и значительно снижает затраты на обучение и инференс. Наши экспериментальные результаты показывают, что CogView3 превосходит SDXL — текущую передовую открытую диффузионную модель «текст в изображение» — на 77,0% по оценкам людей, при этом требуя лишь около 1/2 времени инференса. Дистиллированная версия CogView3 достигает сопоставимой производительности, используя лишь 1/10 времени инференса SDXL.

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

Этот конвейер был предложен пользователем zRzRzRzRzRzRzR. Исходная кодовая база доступна здесь. Исходные веса можно найти по адресу hf.co/THUDM.

CogView3PlusPipeline

класс diffusers.CogView3PlusPipeline

< >

( tokenizer: T5Tokenizertext_encoder: T5EncoderModelvae: AutoencoderKLtransformer: CogView3PlusTransformer2DModelscheduler: diffusers.schedulers.scheduling_ddim_cogvideox.CogVideoXDDIMScheduler | diffusers.schedulers.scheduling_dpm_cogvideox.CogVideoXDPMScheduler )

Параметры

  • vae (AutoencoderKL) — Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
  • text_encoder (T5EncoderModel) — Замороженный текстовый энкодер. CogView3Plus использует T5; конкретно вариант t5-v1_1-xxl.
  • tokenizer (T5Tokenizer) — токенизатор класса T5Tokenizer.
  • transformer (CogView3PlusTransformer2DModel) — Модель CogView3PlusTransformer2DModel, управляемая текстом, для удаления шума из закодированных латентов изображения.
  • scheduler (SchedulerMixin) — планировщик, используемый в связке с transformer для удаления шума из закодированных латентов изображения.

Pipeline для генерации изображений по тексту с использованием CogView3Plus.

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

__call__

< >

( prompt: str | list[str] | None = Nonenegative_prompt: str | list[str] | None = Noneheight: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 50timesteps: list[int] | None = Noneguidance_scale: float = 5.0num_images_per_prompt: int = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.FloatTensor] = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneoriginal_size: tuple[int, int] | None = Nonecrops_coords_top_left: tuple = (0, 0)output_type: str = 'pil'return_dict: bool = Truecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 224 ) → CogView3PipelineOutput or tuple

Параметры

  • prompt (str или list[str], необязательный) — Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передать prompt_embeds.
  • negative_prompt (str or list[str], необязательный) — Промпт или промпты, которые не должны направлять генерацию изображения. Если не задан, необходимо передать negative_prompt_embeds. Игнорируется, если не используется направляющее поле (то есть игнорируется, если guidance_scale меньше 1).
  • height (int, необязательный, по умолчанию self.transformer.config.sample_size * self.vae_scale_factor) — Высота генерируемого изображения в пикселях. Если не указано, устанавливается значение 1024.
  • width (int, необязательный, по умолчанию self.transformer.config.sample_size * self.vae_scale_factor) — Ширина генерируемого изображения в пикселях. Если не указано, устанавливается значение 1024.
  • num_inference_steps (int, необязательный, по умолчанию 50) — Количество шагов денойзинга. Обычно большее число шагов денойзинга приводит к изображению более высокого качества, но за счет более медленного вывода.
  • timesteps (list[int], необязательный) — Пользовательские шаги для процесса удаления шума в планировщиках, поддерживающих аргумент timesteps в методе set_timesteps. Если не задан, будет использоваться поведение по умолчанию при передаче num_inference_steps. Значения должны быть в порядке убывания.
  • guidance_scale (float, необязательный, по умолчанию 5.0) — Масштаб руководства, определенный в Classifier-Free Diffusion Guidance. guidance_scale определяется как w из уравнения 2 статьи Imagen Paper. Масштаб руководства включается при установке guidance_scale > 1. Более высокое значение масштаба руководства способствует генерации изображений, тесно связанных с текстом prompt, обычно за счет снижения качества изображения.
  • num_images_per_prompt (int, необязательный, по умолчанию 1) — Количество изображений, генерируемых для каждого промпта.
  • eta (float, необязательный, по умолчанию 0.0) — Соответствует параметру eta (η) из статьи DDIM. Применяется только к DDIMScheduler и игнорируется другими планировщиками.
  • generator (torch.Generator или list[torch.Generator], необязательный) — Один или список генераторов torch для обеспечения детерминированности генерации.
  • latents (torch.FloatTensor, необязательный) — Предварительно сгенерированные зашумлённые латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Позволяет корректировать один и тот же процесс генерации с помощью различных промптов. Если не заданы, тензор латентов будет сгенерирован путём выборки с использованием переданного случайного generator.
  • prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
  • negative_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не передано, negative_prompt_embeds будет сгенерировано из входного аргумента negative_prompt.
  • original_size (tuple[int], необязательный, по умолчанию (1024, 1024)) — Если original_size не совпадает с target_size, изображение будет выглядеть как уменьшенное или увеличенное. По умолчанию original_size равно (height, width), если не указано иное. Является частью микроусловий SDXL, как описано в разделе 2.2 https://huggingface.co/papers/2307.01952.
  • crops_coords_top_left (tuple[int], необязательный, по умолчанию (0, 0)) — crops_coords_top_left можно использовать для генерации изображения, которое выглядит как «обрезанное» из позиции crops_coords_top_left вниз. Как правило, хорошо центрированные изображения получаются при установке crops_coords_top_left в (0, 0). Является частью микроусловий SDXL, описанных в разделе 2.2 статьи https://huggingface.co/papers/2307.01952.
  • output_type (str, необязательный, по умолчанию "pil") — Формат вывода сгенерированного изображения. Выберите один из вариантов: PIL: PIL.Image.Image или np.array.
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать объект ~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput вместо простого кортежа.
  • callback_on_step_end (Callable, необязательный) — Функция, вызываемая в конце каждого шага денойзинга во время инференса. Функция вызывается со следующими аргументами: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs будет содержать список всех тензоров, как указано в callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, необязательный) — Список тензорных входных данных для функции callback_on_step_end. Тензоры, указанные в списке, будут переданы в качестве аргумента callback_kwargs. Вы сможете включать только переменные, перечисленные в атрибуте ._callback_tensor_inputs вашего класса пайплайна.
  • max_sequence_length (int, по умолчанию 224) — Максимальная длина последовательности в закодированном запросе. Можно установить другие значения, но это может привести к ухудшению результатов.

Возвращает

CogView3PipelineOutput или tuple

CogView3PipelineOutput, если return_dict равно True, иначе tuple. При возврате кортежа первым элементом является список с сгенерированными изображениями.

Функция, вызываемая при обращении к конвейеру для генерации.

Примеры:

>>> import torch
>>> from diffusers import CogView3PlusPipeline

>>> pipe = CogView3PlusPipeline.from_pretrained("THUDM/CogView3-Plus-3B", torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")

>>> prompt = "A photo of an astronaut riding a horse on mars"
>>> image = pipe(prompt).images[0]
>>> image.save("output.png")

encode_prompt

< >

( prompt: str | list[str]negative_prompt: str | list[str] | None = Nonedo_classifier_free_guidance: bool = Truenum_images_per_prompt: int = 1prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonemax_sequence_length: int = 224device: typing.Optional[torch.device] = Nonedtype: typing.Optional[torch.dtype] = None )

Параметры

  • prompt (str или list[str], необязательный) — промпт для кодирования
  • negative_prompt (str or list[str], необязательный) — Промпт или промпты, которые не должны направлять генерацию изображения. Если не задан, необходимо передать negative_prompt_embeds. Игнорируется, если не используется направляющее поле (то есть игнорируется, если guidance_scale меньше 1).
  • do_classifier_free_guidance (bool, необязательный, по умолчанию True) — Использовать ли classifier free guidance.
  • num_images_per_prompt (int, необязательный, по умолчанию 1) — Количество изображений, которые должны быть сгенерированы для каждого промпта. Устройство torch, на котором должны размещаться результирующие эмбеддинги
  • prompt_embeds (torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
  • negative_prompt_embeds (torch.Tensor, необязательный) — Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не передано, negative_prompt_embeds будет сгенерировано из входного аргумента negative_prompt.
  • max_sequence_length (int, по умолчанию 224) — Максимальная длина последовательности в закодированном запросе. Можно установить другие значения, но это может привести к ухудшению результатов.
  • device — (torch.device, необязательный): устройство torch
  • dtype — (torch.dtype, необязательный): torch dtype

Кодирует промпт в скрытые состояния текстового энкодера.

CogView3PipelineOutput

класс diffusers.pipelines.cogview3.pipeline_output.CogView3PipelineOutput

< >

( images: list[PIL.Image.Image] | numpy.ndarray )

Параметры

  • images (list[PIL.Image.Image] или np.ndarray) — список денойзированных изображений PIL длиной batch_size или массив numpy с формой (batch_size, height, width, num_channels). Изображения PIL или массив numpy представляют денойзированные изображения диффузионного конвейера.

Класс вывода для пайплайнов CogView3.

Update on GitHub