Diffusers documentation
CogView3Plus
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
< source >( 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__
< source >( 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 (
strorlist[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
< source >( 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 (
strorlist[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
< source >( images: list[PIL.Image.Image] | numpy.ndarray )
Класс вывода для пайплайнов CogView3.