Diffusers documentation
QwenImage
QwenImage
Qwen-Image от команды Qwen — это базовая модель генерации изображений в серии Qwen, демонстрирующая значительный прогресс в сложном рендеринге текста и точном редактировании изображений. Эксперименты подтверждают высокие общие возможности как в генерации, так и в редактировании изображений, с выдающимися результатами в рендеринге текста, особенно для китайского языка.
Qwen-Image доступен в следующих вариантах:
| тип модели | идентификатор модели |
|---|---|
| Qwen-Image | Qwen/Qwen-Image |
| Qwen-Image-Edit | Qwen/Qwen-Image-Edit |
| Qwen-Image-Edit Plus | Qwen/Qwen-Image-Edit-2509 |
См. руководство Кэширование, чтобы ускорить инференс за счёт сохранения и повторного использования промежуточных результатов.
LoRA для более быстрого вывода
Используйте LoRA из lightx2v/Qwen-Image-Lightning, чтобы ускорить инференс за счёт уменьшения количества шагов. См. фрагмент кода ниже:
Code
from diffusers import DiffusionPipeline, FlowMatchEulerDiscreteScheduler
import torch
import math
ckpt_id = "Qwen/Qwen-Image"
# From
# https://github.com/ModelTC/Qwen-Image-Lightning/blob/342260e8f5468d2f24d084ce04f55e101007118b/generate_with_diffusers.py#L82C9-L97C10
scheduler_config = {
"base_image_seq_len": 256,
"base_shift": math.log(3), # We use shift=3 in distillation
"invert_sigmas": False,
"max_image_seq_len": 8192,
"max_shift": math.log(3), # We use shift=3 in distillation
"num_train_timesteps": 1000,
"shift": 1.0,
"shift_terminal": None, # set shift_terminal to None
"stochastic_sampling": False,
"time_shift_type": "exponential",
"use_beta_sigmas": False,
"use_dynamic_shifting": True,
"use_exponential_sigmas": False,
"use_karras_sigmas": False,
}
scheduler = FlowMatchEulerDiscreteScheduler.from_config(scheduler_config)
pipe = DiffusionPipeline.from_pretrained(
ckpt_id, scheduler=scheduler, dtype=torch.bfloat16
).to("cuda") # or "mps", "xpu", "cpu"
pipe.load_lora_weights(
"lightx2v/Qwen-Image-Lightning", weight_name="Qwen-Image-Lightning-8steps-V1.0.safetensors"
)
prompt = "a tiny astronaut hatching from an egg on the moon, Ultra HD, 4K, cinematic composition."
negative_prompt = " "
image = pipe(
prompt=prompt,
negative_prompt=negative_prompt,
width=1024,
height=1024,
num_inference_steps=8,
true_cfg_scale=1.0,
generator=torch.manual_seed(0),
).images[0]
image.save("qwen_fewsteps.png")Параметр
guidance_scaleв пайплайне предусмотрен для поддержки будущих моделей с дистиллированным guidance, когда они появятся. Обратите внимание, что передачаguidance_scaleв пайплайн не имеет эффекта. Чтобы включить classifier-free guidance, передайтеtrue_cfg_scaleиnegative_prompt(даже пустой отрицательный промпт, например ” ”), это должно активировать вычисления classifier-free guidance.
Множественные изображения-ссылки с QwenImageEditPlusPipeline
С помощью QwenImageEditPlusPipeline можно передать несколько изображений в качестве входных эталонных.
import torch
from PIL import Image
from diffusers import QwenImageEditPlusPipeline
from diffusers.utils import load_image
pipe = QwenImageEditPlusPipeline.from_pretrained(
"Qwen/Qwen-Image-Edit-2509", dtype=torch.bfloat16
).to("cuda") # or "mps", "xpu", "cpu"
image_1 = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/grumpy.jpg")
image_2 = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/peng.png")
image = pipe(
image=[image_1, image_2],
prompt='''put the penguin and the cat at a game show called "Qwen Edit Plus Games"''',
num_inference_steps=50
).images[0]Производительность
torch.compile
Использование torch.compile для трансформера обеспечивает ускорение примерно в 2,4 раза (A100 80GB: 4.70s → 1.93s):
import torch
from diffusers import QwenImagePipeline
pipe = QwenImagePipeline.from_pretrained("Qwen/Qwen-Image", dtype=torch.bfloat16).to("cuda") # or "mps", "xpu", "cpu"
pipe.transformer = torch.compile(pipe.transformer)
# First call triggers compilation (~7s overhead)
# Subsequent calls run at ~2.4x faster
image = pipe("a cat", num_inference_steps=50).images[0]Пакетный вывод с промптами переменной длины
При использовании classifier-free guidance (CFG) с промптами разной длины пайплайн корректно обрабатывает заполнение (padding) с помощью маскирования внимания. Это гарантирует, что токены заполнения не влияют на сгенерированный вывод.
# CFG with different prompt lengths works correctly
image = pipe(
prompt="A cat",
negative_prompt="blurry, low quality, distorted",
true_cfg_scale=3.5,
num_inference_steps=50,
).images[0]Подробные сценарии и результаты бенчмарков приведены в этом gist.
QwenImagePipeline
класс diffusers.QwenImagePipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLQwenImagetext_encoder: Qwen2_5_VLForConditionalGenerationtokenizer: Qwen2Tokenizertransformer: QwenImageTransformer2DModel )
Параметры
- transformer (QwenImageTransformer2DModel) — Архитектура условного Transformer (MMDiT) для удаления шума из закодированных латентов изображения.
- scheduler (FlowMatchEulerDiscreteScheduler) —
планировщик, используемый в связке с
transformerдля удаления шума из закодированных латентов изображения. - vae (AutoencoderKL) — Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
- text_encoder (
Qwen2.5-VL-7B-Instruct) — Qwen2.5-VL-7B-Instruct, а именно вариант Qwen2.5-VL-7B-Instruct. - tokenizer (
Qwen2Tokenizer) — токенизатор класса https://huggingface.co/docs/transformers/en/model_doc/qwen2#transformers.Qwen2Tokenizer
Пайплайн QwenImage для генерации изображений по тексту.
__call__
< source >( prompt: str | list[str] = Nonenegative_prompt: str | list[str] = Nonetrue_cfg_scale: float = 4.0height: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 50sigmas: list[float] | None = Noneguidance_scale: float | None = Nonenum_images_per_prompt: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_mask: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Trueattention_kwargs: dict[str, typing.Any] | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 512 ) → ~pipelines.qwenimage.QwenImagePipelineOutput or tuple
Параметры
- prompt (
strилиlist[str], необязательный) — Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передатьprompt_embedsвместо него. - negative_prompt (
strorlist[str], необязательный) — Промпт или промпты, которые не должны направлять генерацию изображения. Если не задан, необходимо передатьnegative_prompt_embeds. Игнорируется, если не используется guidance (то есть игнорируется, еслиtrue_cfg_scaleне больше1). - true_cfg_scale (
float, необязательный, по умолчанию 1.0) — Масштаб направляющего сигнала, определенный в Classifier-Free Diffusion Guidance.true_cfg_scaleопределяется какwиз уравнения 2 статьи Imagen Paper. Classifier-free guidance включается при установкеtrue_cfg_scale > 1и заданномnegative_prompt. Более высокий масштаб направляющего сигнала способствует генерации изображений, тесно связанных с текстовымprompt, обычно за счет снижения качества изображения. - height (
int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Высота генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов. - width (
int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Ширина генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов. - num_inference_steps (
int, необязательный, по умолчанию 50) — Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода. - sigmas (
list[float], необязательный) — Пользовательские сигмы для процесса удаления шума в планировщиках, поддерживающих аргументsigmasв их методеset_timesteps. Если не задано, будет использоваться поведение по умолчанию при передачеnum_inference_steps. - guidance_scale (
float, необязательный, по умолчанию None) — Значение масштаба руководства (guidance scale) для моделей с дистиллированным руководством. В отличие от традиционного classifier-free guidance, где масштаб руководства применяется во время вывода через масштабирование предсказания шума, модели с дистиллированным руководством принимают масштаб руководства непосредственно как входной параметр во время прямого прохода. Масштаб руководства активируется при установкеguidance_scale > 1. Более высокое значение масштаба руководства способствует генерации изображений, тесно связанных с текстовымprompt, обычно за счёт снижения качества изображения. Этот параметр в конвейере предназначен для поддержки будущих моделей с дистиллированным руководством, когда они появятся. Он игнорируется, если не используются модели с дистиллированным руководством. Для включения традиционного classifier-free guidance передайтеtrue_cfg_scale > 1.0иnegative_prompt(даже пустой отрицательный промпт, например ” ”, должен активировать вычисления classifier-free guidance). - num_images_per_prompt (
int, необязательный, по умолчанию 1) — Количество изображений, генерируемых для каждого промпта. - generator (
torch.Generatorилиlist[torch.Generator], необязательный) — Один или список генераторов torch для обеспечения детерминированности генерации. - latents (
torch.Tensor, необязательный) — Предварительно сгенерированные зашумлённые латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Позволяет корректировать один и тот же процесс генерации с помощью различных промптов. Если не заданы, тензор латентов будет сгенерирован путём выборки с использованием переданного случайногоgenerator. - prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргументаprompt. - prompt_embeds_mask (
torch.Tensor, необязательный) — Маска внимания дляprompt_embeds. - negative_prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не передано, negative_prompt_embeds будет сгенерировано из входного аргументаnegative_prompt. - negative_prompt_embeds_mask (
torch.Tensor, необязательный) — Маска внимания дляnegative_prompt_embeds. - output_type (
str, необязательный, по умолчанию"pil") — Формат вывода сгенерированного изображения. Выберите один из вариантов: PIL:PIL.Image.Imageилиnp.array. - return_dict (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли возвращать~pipelines.qwenimage.QwenImagePipelineOutputвместо обычного кортежа. - attention_kwargs (
dict, необязательный) — Словарь kwargs, который при указании передается вAttentionProcessor, определенный вself.processorв diffusers.models.attention_processor. - 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, по умолчанию 512) — максимальная длина последовательности, используемая сprompt.
Возвращает
~pipelines.qwenimage.QwenImagePipelineOutput или tuple
~pipelines.qwenimage.QwenImagePipelineOutput, если return_dict равно True, иначе tuple. При возврате кортежа первым элементом является список с сгенерированными изображениями.
Функция, вызываемая при обращении к конвейеру для генерации.
Примеры:
>>> import torch
>>> from diffusers import QwenImagePipeline
>>> pipe = QwenImagePipeline.from_pretrained("Qwen/Qwen-Image", torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")
>>> prompt = "A cat holding a sign that says hello world"
>>> # Depending on the variant being used, the pipeline call will slightly vary.
>>> # Refer to the pipeline documentation for more details.
>>> image = pipe(prompt, num_inference_steps=50).images[0]
>>> image.save("qwenimage.png")encode_prompt
< source >( prompt: str | list[str]device: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1prompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_mask: typing.Optional[torch.Tensor] = Nonemax_sequence_length: int = 1024 )
Параметры
- prompt (
strилиlist[str], необязательный) — промпт для кодирования - device — (
torch.device): устройство torch - num_images_per_prompt (
int) — количество изображений, которые должны быть сгенерированы для каждого промпта - prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргументаprompt.
QwenImageImg2ImgPipeline
класс diffusers.QwenImageImg2ImgPipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLQwenImagetext_encoder: Qwen2_5_VLForConditionalGenerationtokenizer: Qwen2Tokenizertransformer: QwenImageTransformer2DModel )
Параметры
- transformer (QwenImageTransformer2DModel) — Архитектура условного Transformer (MMDiT) для удаления шума из закодированных латентов изображения.
- scheduler (FlowMatchEulerDiscreteScheduler) —
планировщик, используемый в связке с
transformerдля удаления шума из закодированных латентов изображения. - vae (AutoencoderKL) — Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
- text_encoder (
Qwen2.5-VL-7B-Instruct) — Qwen2.5-VL-7B-Instruct, а именно вариант Qwen2.5-VL-7B-Instruct. - tokenizer (
Qwen2Tokenizer) — токенизатор класса https://huggingface.co/docs/transformers/en/model_doc/qwen2#transformers.Qwen2Tokenizer
Пайплайн QwenImage для генерации изображений по тексту.
__call__
< source >( prompt: str | list[str] = Nonenegative_prompt: str | list[str] = Nonetrue_cfg_scale: float = 4.0image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Noneheight: int | None = Nonewidth: int | None = Nonestrength: float = 0.6num_inference_steps: int = 50sigmas: list[float] | None = Noneguidance_scale: float | None = Nonenum_images_per_prompt: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_mask: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Trueattention_kwargs: dict[str, typing.Any] | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 512 ) → ~pipelines.qwenimage.QwenImagePipelineOutput or tuple
Параметры
- prompt (
strилиlist[str], необязательный) — Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передатьprompt_embedsвместо него. - negative_prompt (
strorlist[str], необязательный) — Промпт или промпты, которые не должны направлять генерацию изображения. Если не задан, необходимо передатьnegative_prompt_embeds. Игнорируется, если не используется guidance (то есть игнорируется, еслиtrue_cfg_scaleне больше1). - image (
torch.Tensor,PIL.Image.Image,np.ndarray,list[torch.Tensor],list[PIL.Image.Image]илиlist[np.ndarray]) —Image, массив numpy или тензор, представляющие пакет изображений, который будет использоваться в качестве начальной точки. Для массивов numpy и тензоров pytorch ожидаемый диапазон значений составляет[0, 1]. Если передан тензор или список тензоров, ожидаемая форма должна быть(B, C, H, W)или(C, H, W). Если передан массив numpy или список массивов, ожидаемая форма должна быть(B, H, W, C)или(H, W, C). Также можно передавать латенты изображений в качествеimage, но при прямой передаче латентов они не кодируются повторно. - true_cfg_scale (
float, необязательный, по умолчанию 1.0) — Масштаб направляющего сигнала, определенный в Classifier-Free Diffusion Guidance.true_cfg_scaleопределяется какwиз уравнения 2 статьи Imagen Paper. Classifier-free guidance включается при установкеtrue_cfg_scale > 1и заданномnegative_prompt. Более высокий масштаб направляющего сигнала способствует генерации изображений, тесно связанных с текстовымprompt, обычно за счет снижения качества изображения. - height (
int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Высота генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов. - width (
int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Ширина генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов. - strength (
float, необязательный, по умолчанию 1.0) — Определяет степень трансформации исходногоimage. Значение должно находиться в диапазоне от 0 до 1.imageиспользуется как стартовая точка, и чем вышеstrength, тем больше шума добавляется. Количество шагов денойзинга зависит от количества шума, добавленного изначально. Когдаstrengthравно 1, добавляется максимальное количество шума, и процесс денойзинга выполняется в течение полного числа итераций, указанного вnum_inference_steps. Значение 1 по сути игнорируетimage. - num_inference_steps (
int, необязательный, по умолчанию 50) — Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода. - sigmas (
list[float], необязательный) — Пользовательские сигмы для процесса удаления шума в планировщиках, поддерживающих аргументsigmasв их методеset_timesteps. Если не задано, будет использоваться поведение по умолчанию при передачеnum_inference_steps. - guidance_scale (
float, необязательный, по умолчанию None) — Значение масштаба руководства (guidance scale) для моделей с дистиллированным руководством. В отличие от традиционного classifier-free guidance, где масштаб руководства применяется во время вывода через масштабирование предсказания шума, модели с дистиллированным руководством принимают масштаб руководства непосредственно как входной параметр во время прямого прохода. Масштаб руководства активируется при установкеguidance_scale > 1. Более высокое значение масштаба руководства способствует генерации изображений, тесно связанных с текстовымprompt, обычно за счёт снижения качества изображения. Этот параметр в конвейере предназначен для поддержки будущих моделей с дистиллированным руководством, когда они появятся. Он игнорируется, если не используются модели с дистиллированным руководством. Для включения традиционного classifier-free guidance передайтеtrue_cfg_scale > 1.0иnegative_prompt(даже пустой отрицательный промпт, например ” ”, должен активировать вычисления classifier-free guidance). - num_images_per_prompt (
int, необязательный, по умолчанию 1) — Количество изображений, генерируемых для каждого промпта. - generator (
torch.Generatorилиlist[torch.Generator], необязательный) — Один или список генераторов torch для обеспечения детерминированности генерации. - latents (
torch.Tensor, необязательный) — Предварительно сгенерированные зашумлённые латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Позволяет корректировать один и тот же процесс генерации с помощью различных промптов. Если не заданы, тензор латентов будет сгенерирован путём выборки с использованием переданного случайногоgenerator. - prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргументаprompt. - prompt_embeds_mask (
torch.Tensor, необязательный) — Маска внимания дляprompt_embeds. - negative_prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не передано, negative_prompt_embeds будет сгенерировано из входного аргументаnegative_prompt. - negative_prompt_embeds_mask (
torch.Tensor, необязательный) — Маска внимания дляnegative_prompt_embeds. - output_type (
str, необязательный, по умолчанию"pil") — Формат вывода сгенерированного изображения. Выберите один из вариантов: PIL:PIL.Image.Imageилиnp.array. - return_dict (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли возвращать~pipelines.qwenimage.QwenImagePipelineOutputвместо обычного кортежа. - attention_kwargs (
dict, необязательный) — Словарь kwargs, который при указании передается вAttentionProcessor, определенный вself.processorв diffusers.models.attention_processor. - 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, по умолчанию 512) — максимальная длина последовательности, используемая сprompt.
Возвращает
~pipelines.qwenimage.QwenImagePipelineOutput или tuple
~pipelines.qwenimage.QwenImagePipelineOutput, если return_dict равно True, иначе tuple. При возврате кортежа первым элементом является список с сгенерированными изображениями.
Функция, вызываемая при обращении к конвейеру для генерации.
Примеры:
>>> import torch
>>> from diffusers import QwenImageImg2ImgPipeline
>>> from diffusers.utils import load_image
>>> pipe = QwenImageImg2ImgPipeline.from_pretrained("Qwen/Qwen-Image", torch_dtype=torch.bfloat16)
>>> pipe = pipe.to("cuda")
>>> url = "https://raw.githubusercontent.com/CompVis/stable-diffusion/main/assets/stable-samples/img2img/sketch-mountains-input.jpg"
>>> init_image = load_image(url).resize((1024, 1024))
>>> prompt = "cat wizard, gandalf, lord of the rings, detailed, fantasy, cute, adorable, Pixar, Disney"
>>> images = pipe(prompt=prompt, negative_prompt=" ", image=init_image, strength=0.95).images[0]
>>> images.save("qwenimage_img2img.png")encode_prompt
< source >( prompt: str | list[str]device: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1prompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_mask: typing.Optional[torch.Tensor] = Nonemax_sequence_length: int = 1024 )
Параметры
- prompt (
strилиlist[str], необязательный) — промпт для кодирования - device — (
torch.device): устройство torch - num_images_per_prompt (
int) — количество изображений, которые должны быть сгенерированы для каждого промпта - prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргументаprompt.
QwenImageInpaintPipeline
класс diffusers.QwenImageInpaintPipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLQwenImagetext_encoder: Qwen2_5_VLForConditionalGenerationtokenizer: Qwen2Tokenizertransformer: QwenImageTransformer2DModel )
Параметры
- transformer (QwenImageTransformer2DModel) — Архитектура условного Transformer (MMDiT) для удаления шума из закодированных латентов изображения.
- scheduler (FlowMatchEulerDiscreteScheduler) —
планировщик, используемый в связке с
transformerдля удаления шума из закодированных латентов изображения. - vae (AutoencoderKL) — Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
- text_encoder (
Qwen2.5-VL-7B-Instruct) — Qwen2.5-VL-7B-Instruct, а именно вариант Qwen2.5-VL-7B-Instruct. - tokenizer (
Qwen2Tokenizer) — токенизатор класса https://huggingface.co/docs/transformers/en/model_doc/qwen2#transformers.Qwen2Tokenizer
Пайплайн QwenImage для генерации изображений по тексту.
__call__
< source >( prompt: str | list[str] = Nonenegative_prompt: str | list[str] = Nonetrue_cfg_scale: float = 4.0image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonemask_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonemasked_image_latents: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Noneheight: int | None = Nonewidth: int | None = Nonepadding_mask_crop: int | None = Nonestrength: float = 0.6num_inference_steps: int = 50sigmas: list[float] | None = Noneguidance_scale: float | None = Nonenum_images_per_prompt: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_mask: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Trueattention_kwargs: dict[str, typing.Any] | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 512 ) → ~pipelines.qwenimage.QwenImagePipelineOutput or tuple
Параметры
- prompt (
strилиlist[str], необязательный) — Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передатьprompt_embedsвместо него. - negative_prompt (
strorlist[str], необязательный) — Промпт или промпты, которые не должны направлять генерацию изображения. Если не задан, необходимо передатьnegative_prompt_embeds. Игнорируется, если не используется guidance (то есть игнорируется, еслиtrue_cfg_scaleне больше1). - image (
torch.Tensor,PIL.Image.Image,np.ndarray,list[torch.Tensor],list[PIL.Image.Image]илиlist[np.ndarray]) —Image, массив numpy или тензор, представляющие пакет изображений, который будет использоваться в качестве начальной точки. Для массивов numpy и тензоров pytorch ожидаемый диапазон значений составляет[0, 1]. Если передан тензор или список тензоров, ожидаемая форма должна быть(B, C, H, W)или(C, H, W). Если передан массив numpy или список массивов, ожидаемая форма должна быть(B, H, W, C)или(H, W, C). Также можно передавать латенты изображений в качествеimage, но при прямой передаче латентов они не кодируются повторно. - true_cfg_scale (
float, необязательный, по умолчанию 1.0) — Масштаб направляющего сигнала, определенный в Classifier-Free Diffusion Guidance.true_cfg_scaleопределяется какwиз уравнения 2 статьи Imagen Paper. Classifier-free guidance включается при установкеtrue_cfg_scale > 1и заданномnegative_prompt. Более высокий масштаб направляющего сигнала способствует генерации изображений, тесно связанных с текстовымprompt, обычно за счет снижения качества изображения. - mask_image (
torch.Tensor,PIL.Image.Image,np.ndarray,list[torch.Tensor],list[PIL.Image.Image]илиlist[np.ndarray]) —Image, массив numpy или тензор, представляющие пакет изображений для маскированияimage. Белые пиксели в маске перекрашиваются, а чёрные сохраняются. Еслиmask_image— это изображение PIL, оно преобразуется в один канал (яркость) перед использованием. Если это массив numpy или тензор pytorch, он должен содержать один цветовой канал (L) вместо трёх, поэтому ожидаемая форма для тензора pytorch —(B, 1, H, W),(B, H, W),(1, H, W),(H, W). А для массива numpy —(B, H, W, 1),(B, H, W),(H, W, 1)или(H, W). - masked_image_latents (
torch.Tensor,list[torch.Tensor]) —Tensor, представляющий пакет изображений для маскированияimage, сгенерированного VAE. Если не указано, тензор маскированных латентов будет сгенерирован с помощьюmask_image. - height (
int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Высота генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов. - width (
int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Ширина генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов. - padding_mask_crop (
int, необязательный, по умолчаниюNone) — Размер поля, которое добавляется при обрезке изображения и маски. ЕслиNone, обрезка не применяется к изображению и mask_image. Еслиpadding_mask_cropне равноNone, сначала находится прямоугольная область с тем же соотношением сторон, что и у изображения, содержащая всю замаскированную область, а затем эта область расширяется на величинуpadding_mask_crop. После этого изображение и mask_image обрезаются по расширенной области перед масштабированием до исходного размера изображения для inpainting. Это полезно, когда замаскированная область мала, а изображение велико и содержит информацию, не относящуюся к inpainting, например фон. - strength (
float, необязательный, по умолчанию 1.0) — Определяет степень трансформации исходногоimage. Значение должно находиться в диапазоне от 0 до 1.imageиспользуется как стартовая точка, и чем вышеstrength, тем больше шума добавляется. Количество шагов денойзинга зависит от количества шума, добавленного изначально. Когдаstrengthравно 1, добавляется максимальное количество шума, и процесс денойзинга выполняется в течение полного числа итераций, указанного вnum_inference_steps. Значение 1 по сути игнорируетimage. - num_inference_steps (
int, необязательный, по умолчанию 50) — Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода. - sigmas (
list[float], необязательный) — Пользовательские сигмы для процесса удаления шума в планировщиках, поддерживающих аргументsigmasв их методеset_timesteps. Если не задано, будет использоваться поведение по умолчанию при передачеnum_inference_steps. - guidance_scale (
float, необязательный, по умолчанию None) — Значение масштаба руководства (guidance scale) для моделей с дистиллированным руководством. В отличие от традиционного classifier-free guidance, где масштаб руководства применяется во время вывода через масштабирование предсказания шума, модели с дистиллированным руководством принимают масштаб руководства непосредственно как входной параметр во время прямого прохода. Масштаб руководства активируется при установкеguidance_scale > 1. Более высокое значение масштаба руководства способствует генерации изображений, тесно связанных с текстовымprompt, обычно за счёт снижения качества изображения. Этот параметр в конвейере предназначен для поддержки будущих моделей с дистиллированным руководством, когда они появятся. Он игнорируется, если не используются модели с дистиллированным руководством. Для включения традиционного classifier-free guidance передайтеtrue_cfg_scale > 1.0иnegative_prompt(даже пустой отрицательный промпт, например ” ”, должен активировать вычисления classifier-free guidance). - num_images_per_prompt (
int, необязательный, по умолчанию 1) — Количество изображений, генерируемых для каждого промпта. - generator (
torch.Generatorилиlist[torch.Generator], необязательный) — Один или список генераторов torch для обеспечения детерминированности генерации. - latents (
torch.Tensor, необязательный) — Предварительно сгенерированные зашумлённые латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Позволяет корректировать один и тот же процесс генерации с помощью различных промптов. Если не заданы, тензор латентов будет сгенерирован путём выборки с использованием переданного случайногоgenerator. - prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргументаprompt. - prompt_embeds_mask (
torch.Tensor, необязательный) — Маска внимания дляprompt_embeds. - negative_prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не передано, negative_prompt_embeds будет сгенерировано из входного аргументаnegative_prompt. - negative_prompt_embeds_mask (
torch.Tensor, необязательный) — Маска внимания дляnegative_prompt_embeds. - output_type (
str, необязательный, по умолчанию"pil") — Формат вывода сгенерированного изображения. Выберите один из вариантов: PIL:PIL.Image.Imageилиnp.array. - return_dict (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли возвращать~pipelines.qwenimage.QwenImagePipelineOutputвместо обычного кортежа. - attention_kwargs (
dict, необязательный) — Словарь kwargs, который при указании передается вAttentionProcessor, определенный вself.processorв diffusers.models.attention_processor. - 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, по умолчанию 512) — максимальная длина последовательности, используемая сprompt.
Возвращает
~pipelines.qwenimage.QwenImagePipelineOutput или tuple
~pipelines.qwenimage.QwenImagePipelineOutput, если return_dict равно True, иначе tuple. При возврате кортежа первым элементом является список с сгенерированными изображениями.
Функция, вызываемая при обращении к конвейеру для генерации.
Примеры:
>>> import torch
>>> from diffusers import QwenImageInpaintPipeline
>>> from diffusers.utils import load_image
>>> pipe = QwenImageInpaintPipeline.from_pretrained("Qwen/Qwen-Image", torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")
>>> prompt = "Face of a yellow cat, high resolution, sitting on a park bench"
>>> img_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png"
>>> mask_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png"
>>> source = load_image(img_url)
>>> mask = load_image(mask_url)
>>> image = pipe(prompt=prompt, negative_prompt=" ", image=source, mask_image=mask, strength=0.85).images[0]
>>> image.save("qwenimage_inpainting.png")encode_prompt
< source >( prompt: str | list[str]device: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1prompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_mask: typing.Optional[torch.Tensor] = Nonemax_sequence_length: int = 1024 )
Параметры
- prompt (
strилиlist[str], необязательный) — промпт для кодирования - device — (
torch.device): устройство torch - num_images_per_prompt (
int) — количество изображений, которые должны быть сгенерированы для каждого промпта - prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргументаprompt.
QwenImageEditPipeline
класс diffusers.QwenImageEditPipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLQwenImagetext_encoder: Qwen2_5_VLForConditionalGenerationtokenizer: Qwen2Tokenizerprocessor: Qwen2VLProcessortransformer: QwenImageTransformer2DModel )
Параметры
- transformer (QwenImageTransformer2DModel) — Архитектура условного Transformer (MMDiT) для удаления шума из закодированных латентов изображения.
- scheduler (FlowMatchEulerDiscreteScheduler) —
планировщик, используемый в связке с
transformerдля удаления шума из закодированных латентов изображения. - vae (AutoencoderKL) — Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
- text_encoder (
Qwen2.5-VL-7B-Instruct) — Qwen2.5-VL-7B-Instruct, а именно вариант Qwen2.5-VL-7B-Instruct. - tokenizer (
Qwen2Tokenizer) — токенизатор класса https://huggingface.co/docs/transformers/en/model_doc/qwen2#transformers.Qwen2Tokenizer
Пайплайн Qwen-Image-Edit для редактирования изображений.
__call__
< source >( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneprompt: str | list[str] = Nonenegative_prompt: str | list[str] = Nonetrue_cfg_scale: float = 4.0height: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 50sigmas: list[float] | None = Noneguidance_scale: float | None = Nonenum_images_per_prompt: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_mask: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Trueattention_kwargs: dict[str, typing.Any] | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 512 ) → ~pipelines.qwenimage.QwenImagePipelineOutput or tuple
Параметры
- image (
torch.Tensor,PIL.Image.Image,np.ndarray,list[torch.Tensor],list[PIL.Image.Image]илиlist[np.ndarray]) —Image, массив numpy или тензор, представляющие пакет изображений, который будет использоваться в качестве начальной точки. Для массивов numpy и тензоров pytorch ожидаемый диапазон значений составляет[0, 1]. Если передан тензор или список тензоров, ожидаемая форма должна быть(B, C, H, W)или(C, H, W). Если передан массив numpy или список массивов, ожидаемая форма должна быть(B, H, W, C)или(H, W, C). Также можно передавать латенты изображений в качествеimage, но при прямой передаче латентов они не кодируются повторно. - prompt (
strилиlist[str], необязательный) — Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передатьprompt_embedsвместо него. - negative_prompt (
strorlist[str], необязательный) — Промпт или промпты, которые не должны направлять генерацию изображения. Если не задан, необходимо передатьnegative_prompt_embeds. Игнорируется, если не используется guidance (то есть игнорируется, еслиtrue_cfg_scaleне больше1). - true_cfg_scale (
float, необязательный, по умолчанию 1.0) — true_cfg_scale (float, необязательный, по умолчанию 1.0): масштаб направляющего сигнала, определенный в Classifier-Free Diffusion Guidance.true_cfg_scaleопределяется какwиз уравнения 2. в Imagen Paper. Направляющий сигнал без классификатора включается при установкеtrue_cfg_scale > 1и заданномnegative_prompt. Более высокий масштаб направляющего сигнала способствует генерации изображений, тесно связанных с текстовымprompt, обычно за счет снижения качества изображения. - height (
int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Высота генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов. - width (
int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Ширина генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов. - num_inference_steps (
int, необязательный, по умолчанию 50) — Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода. - sigmas (
list[float], необязательный) — Пользовательские сигмы для процесса удаления шума в планировщиках, поддерживающих аргументsigmasв их методеset_timesteps. Если не задано, будет использоваться поведение по умолчанию при передачеnum_inference_steps. - guidance_scale (
float, необязательный, по умолчанию None) — Значение масштаба руководства (guidance scale) для моделей с дистиллированным руководством. В отличие от традиционного classifier-free guidance, где масштаб руководства применяется во время вывода через масштабирование предсказания шума, модели с дистиллированным руководством принимают масштаб руководства непосредственно как входной параметр во время прямого прохода. Масштаб руководства активируется при установкеguidance_scale > 1. Более высокое значение масштаба руководства способствует генерации изображений, тесно связанных с текстовымprompt, обычно за счёт снижения качества изображения. Этот параметр в конвейере предназначен для поддержки будущих моделей с дистиллированным руководством, когда они появятся. Он игнорируется, если не используются модели с дистиллированным руководством. Для включения традиционного classifier-free guidance передайтеtrue_cfg_scale > 1.0иnegative_prompt(даже пустой отрицательный промпт, например ” ”, должен активировать вычисления classifier-free guidance). - num_images_per_prompt (
int, необязательный, по умолчанию 1) — Количество изображений, генерируемых для каждого промпта. - generator (
torch.Generatorилиlist[torch.Generator], необязательный) — Один или список генераторов torch для обеспечения детерминированности генерации. - latents (
torch.Tensor, необязательный) — Предварительно сгенерированные зашумлённые латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Позволяет корректировать один и тот же процесс генерации с помощью различных промптов. Если не заданы, тензор латентов будет сгенерирован путём выборки с использованием переданного случайногоgenerator. - prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргументаprompt. - prompt_embeds_mask (
torch.Tensor, необязательный) — Маска внимания дляprompt_embeds. - negative_prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не передано, negative_prompt_embeds будет сгенерировано из входного аргументаnegative_prompt. - negative_prompt_embeds_mask (
torch.Tensor, необязательный) — Маска внимания дляnegative_prompt_embeds. - output_type (
str, необязательный, по умолчанию"pil") — Формат вывода сгенерированного изображения. Выберите один из вариантов: PIL:PIL.Image.Imageилиnp.array. - return_dict (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли возвращать~pipelines.qwenimage.QwenImagePipelineOutputвместо обычного кортежа. - attention_kwargs (
dict, необязательный) — Словарь kwargs, который при указании передается вAttentionProcessor, определенный вself.processorв diffusers.models.attention_processor. - 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, по умолчанию 512) — максимальная длина последовательности, используемая сprompt.
Возвращает
~pipelines.qwenimage.QwenImagePipelineOutput или tuple
~pipelines.qwenimage.QwenImagePipelineOutput, если return_dict равно True, иначе tuple. При возврате кортежа первым элементом является список с сгенерированными изображениями.
Функция, вызываемая при обращении к конвейеру для генерации.
Примеры:
>>> import torch
>>> from PIL import Image
>>> from diffusers import QwenImageEditPipeline
>>> from diffusers.utils import load_image
>>> pipe = QwenImageEditPipeline.from_pretrained("Qwen/Qwen-Image-Edit", torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")
>>> image = load_image(
... "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/yarn-art-pikachu.png"
... ).convert("RGB")
>>> prompt = (
... "Make Pikachu hold a sign that says 'Qwen Edit is awesome', yarn art style, detailed, vibrant colors"
... )
>>> # Depending on the variant being used, the pipeline call will slightly vary.
>>> # Refer to the pipeline documentation for more details.
>>> image = pipe(image, prompt, num_inference_steps=50).images[0]
>>> image.save("qwenimage_edit.png")encode_prompt
< source >( prompt: str | list[str]image: typing.Optional[torch.Tensor] = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1prompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_mask: typing.Optional[torch.Tensor] = Nonemax_sequence_length: int = 1024 )
Параметры
- prompt (
strилиlist[str], необязательный) — промпт для кодирования - image (
torch.Tensor, необязательный) — изображение для кодирования - device — (
torch.device): устройство torch - num_images_per_prompt (
int) — количество изображений, которые должны быть сгенерированы для каждого промпта - prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргументаprompt.
QwenImageEditInpaintPipeline
класс diffusers.QwenImageEditInpaintPipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLQwenImagetext_encoder: Qwen2_5_VLForConditionalGenerationtokenizer: Qwen2Tokenizerprocessor: Qwen2VLProcessortransformer: QwenImageTransformer2DModel )
Параметры
- transformer (QwenImageTransformer2DModel) — Архитектура условного Transformer (MMDiT) для удаления шума из закодированных латентов изображения.
- scheduler (FlowMatchEulerDiscreteScheduler) —
планировщик, используемый в связке с
transformerдля удаления шума из закодированных латентов изображения. - vae (AutoencoderKL) — Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
- text_encoder (
Qwen2.5-VL-7B-Instruct) — Qwen2.5-VL-7B-Instruct, а именно вариант Qwen2.5-VL-7B-Instruct. - tokenizer (
Qwen2Tokenizer) — токенизатор класса https://huggingface.co/docs/transformers/en/model_doc/qwen2#transformers.Qwen2Tokenizer
Пайплайн Qwen-Image-Edit для редактирования изображений.
__call__
< source >( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneprompt: str | list[str] = Nonenegative_prompt: str | list[str] = Nonemask_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonemasked_image_latents: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonetrue_cfg_scale: float = 4.0height: int | None = Nonewidth: int | None = Nonepadding_mask_crop: int | None = Nonestrength: float = 0.6num_inference_steps: int = 50sigmas: list[float] | None = Noneguidance_scale: float | None = Nonenum_images_per_prompt: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_mask: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Trueattention_kwargs: dict[str, typing.Any] | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 512 ) → ~pipelines.qwenimage.QwenImagePipelineOutput or tuple
Параметры
- image (
torch.Tensor,PIL.Image.Image,np.ndarray,list[torch.Tensor],list[PIL.Image.Image]илиlist[np.ndarray]) —Image, массив numpy или тензор, представляющие пакет изображений, который будет использоваться в качестве начальной точки. Для массивов numpy и тензоров pytorch ожидаемый диапазон значений составляет[0, 1]. Если передан тензор или список тензоров, ожидаемая форма должна быть(B, C, H, W)или(C, H, W). Если передан массив numpy или список массивов, ожидаемая форма должна быть(B, H, W, C)или(H, W, C). Также можно передавать латенты изображений в качествеimage, но при прямой передаче латентов они не кодируются повторно. - prompt (
strилиlist[str], необязательный) — Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передатьprompt_embedsвместо него. - negative_prompt (
strorlist[str], необязательный) — Промпт или промпты, которые не должны направлять генерацию изображения. Если не задан, необходимо передатьnegative_prompt_embeds. Игнорируется, если не используется guidance (то есть игнорируется, еслиtrue_cfg_scaleне больше1). - true_cfg_scale (
float, необязательный, по умолчанию 1.0) — true_cfg_scale (float, необязательный, по умолчанию 1.0): масштаб направляющего сигнала, определенный в Classifier-Free Diffusion Guidance.true_cfg_scaleопределяется какwиз уравнения 2. в Imagen Paper. Направляющий сигнал без классификатора включается при установкеtrue_cfg_scale > 1и заданномnegative_prompt. Более высокий масштаб направляющего сигнала способствует генерации изображений, тесно связанных с текстовымprompt, обычно за счет снижения качества изображения. - mask_image (
torch.Tensor,PIL.Image.Image,np.ndarray,list[torch.Tensor],list[PIL.Image.Image]илиlist[np.ndarray]) —Image, массив numpy или тензор, представляющие пакет изображений для маскированияimage. Белые пиксели в маске перекрашиваются, а чёрные сохраняются. Еслиmask_image— это изображение PIL, оно преобразуется в один канал (яркость) перед использованием. Если это массив numpy или тензор pytorch, он должен содержать один цветовой канал (L) вместо трёх, поэтому ожидаемая форма для тензора pytorch —(B, 1, H, W),(B, H, W),(1, H, W),(H, W). А для массива numpy —(B, H, W, 1),(B, H, W),(H, W, 1)или(H, W). - masked_image_latents (
torch.Tensor,list[torch.Tensor]) —Tensor, представляющий пакет изображений для маскированияimage, сгенерированного VAE. Если не указано, тензор маскированных латентов будет сгенерирован с помощьюmask_image. - height (
int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Высота генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов. - width (
int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Ширина генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов. - padding_mask_crop (
int, необязательный, по умолчаниюNone) — Размер поля, которое добавляется при обрезке изображения и маски. ЕслиNone, обрезка не применяется к изображению и mask_image. Еслиpadding_mask_cropне равноNone, сначала находится прямоугольная область с тем же соотношением сторон, что и у изображения, содержащая всю замаскированную область, а затем эта область расширяется на величинуpadding_mask_crop. После этого изображение и mask_image обрезаются по расширенной области перед масштабированием до исходного размера изображения для inpainting. Это полезно, когда замаскированная область мала, а изображение велико и содержит информацию, не относящуюся к inpainting, например фон. - strength (
float, необязательный, по умолчанию 1.0) — Определяет степень трансформации исходногоimage. Значение должно находиться в диапазоне от 0 до 1.imageиспользуется как стартовая точка, и чем вышеstrength, тем больше шума добавляется. Количество шагов денойзинга зависит от количества шума, добавленного изначально. Когдаstrengthравно 1, добавляется максимальное количество шума, и процесс денойзинга выполняется в течение полного числа итераций, указанного вnum_inference_steps. Значение 1 по сути игнорируетimage. - num_inference_steps (
int, необязательный, по умолчанию 50) — Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода. - sigmas (
list[float], необязательный) — Пользовательские сигмы для процесса удаления шума в планировщиках, поддерживающих аргументsigmasв их методеset_timesteps. Если не задано, будет использоваться поведение по умолчанию при передачеnum_inference_steps. - guidance_scale (
float, необязательный, по умолчанию None) — Значение масштаба руководства (guidance scale) для моделей с дистиллированным руководством. В отличие от традиционного classifier-free guidance, где масштаб руководства применяется во время вывода через масштабирование предсказания шума, модели с дистиллированным руководством принимают масштаб руководства непосредственно как входной параметр во время прямого прохода. Масштаб руководства активируется при установкеguidance_scale > 1. Более высокое значение масштаба руководства способствует генерации изображений, тесно связанных с текстовымprompt, обычно за счёт снижения качества изображения. Этот параметр в конвейере предназначен для поддержки будущих моделей с дистиллированным руководством, когда они появятся. Он игнорируется, если не используются модели с дистиллированным руководством. Для включения традиционного classifier-free guidance передайтеtrue_cfg_scale > 1.0иnegative_prompt(даже пустой отрицательный промпт, например ” ”, должен активировать вычисления classifier-free guidance). - num_images_per_prompt (
int, необязательный, по умолчанию 1) — Количество изображений, генерируемых для каждого промпта. - generator (
torch.Generatorилиlist[torch.Generator], необязательный) — Один или список генераторов torch для обеспечения детерминированности генерации. - latents (
torch.Tensor, необязательный) — Предварительно сгенерированные зашумлённые латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Позволяет корректировать один и тот же процесс генерации с помощью различных промптов. Если не заданы, тензор латентов будет сгенерирован путём выборки с использованием переданного случайногоgenerator. - prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргументаprompt. - prompt_embeds_mask (
torch.Tensor, необязательный) — Маска внимания дляprompt_embeds. - negative_prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не передано, negative_prompt_embeds будет сгенерировано из входного аргументаnegative_prompt. - negative_prompt_embeds_mask (
torch.Tensor, необязательный) — Маска внимания дляnegative_prompt_embeds. - output_type (
str, необязательный, по умолчанию"pil") — Формат вывода сгенерированного изображения. Выберите один из вариантов: PIL:PIL.Image.Imageилиnp.array. - return_dict (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли возвращать~pipelines.qwenimage.QwenImagePipelineOutputвместо обычного кортежа. - attention_kwargs (
dict, необязательный) — Словарь kwargs, который при указании передается вAttentionProcessor, определенный вself.processorв diffusers.models.attention_processor. - 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, по умолчанию 512) — максимальная длина последовательности, используемая сprompt.
Возвращает
~pipelines.qwenimage.QwenImagePipelineOutput или tuple
~pipelines.qwenimage.QwenImagePipelineOutput, если return_dict равно True, иначе tuple. При возврате кортежа первым элементом является список с сгенерированными изображениями.
Функция, вызываемая при обращении к конвейеру для генерации.
Примеры:
>>> import torch
>>> from PIL import Image
>>> from diffusers import QwenImageEditInpaintPipeline
>>> from diffusers.utils import load_image
>>> pipe = QwenImageEditInpaintPipeline.from_pretrained("Qwen/Qwen-Image-Edit", torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")
>>> prompt = "Face of a yellow cat, high resolution, sitting on a park bench"
>>> img_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png"
>>> mask_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png"
>>> source = load_image(img_url)
>>> mask = load_image(mask_url)
>>> image = pipe(
... prompt=prompt, negative_prompt=" ", image=source, mask_image=mask, strength=1.0, num_inference_steps=50
... ).images[0]
>>> image.save("qwenimage_inpainting.png")encode_prompt
< source >( prompt: str | list[str]image: typing.Optional[torch.Tensor] = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1prompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_mask: typing.Optional[torch.Tensor] = Nonemax_sequence_length: int = 1024 )
Параметры
- prompt (
strилиlist[str], необязательный) — промпт для кодирования - image (
torch.Tensor, необязательный) — изображение для кодирования - device — (
torch.device): устройство torch - num_images_per_prompt (
int) — количество изображений, которые должны быть сгенерированы для каждого промпта - prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргументаprompt.
QwenImageControlNetPipeline
класс diffusers.QwenImageControlNetPipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLQwenImagetext_encoder: Qwen2_5_VLForConditionalGenerationtokenizer: Qwen2Tokenizertransformer: QwenImageTransformer2DModelcontrolnet: diffusers.models.controlnets.controlnet_qwenimage.QwenImageControlNetModel | diffusers.models.controlnets.controlnet_qwenimage.QwenImageMultiControlNetModel )
Параметры
- transformer (QwenImageTransformer2DModel) — Архитектура условного Transformer (MMDiT) для удаления шума из закодированных латентов изображения.
- scheduler (FlowMatchEulerDiscreteScheduler) —
планировщик, используемый в связке с
transformerдля удаления шума из закодированных латентов изображения. - vae (AutoencoderKL) — Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
- text_encoder (
Qwen2.5-VL-7B-Instruct) — Qwen2.5-VL-7B-Instruct, а именно вариант Qwen2.5-VL-7B-Instruct. - tokenizer (
Qwen2Tokenizer) — токенизатор класса https://huggingface.co/docs/transformers/en/model_doc/qwen2#transformers.Qwen2Tokenizer
Пайплайн QwenImage для генерации изображений по тексту.
__call__
< source >( prompt: str | list[str] = Nonenegative_prompt: str | list[str] = Nonetrue_cfg_scale: float = 4.0height: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 50sigmas: list[float] | None = Noneguidance_scale: float | None = Nonecontrol_guidance_start: float | list[float] = 0.0control_guidance_end: float | list[float] = 1.0control_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonecontrolnet_conditioning_scale: float | list[float] = 1.0num_images_per_prompt: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_mask: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Trueattention_kwargs: dict[str, typing.Any] | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 512 ) → ~pipelines.qwenimage.QwenImagePipelineOutput or tuple
Параметры
- prompt (
strилиlist[str], необязательный) — Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передатьprompt_embedsвместо него. - negative_prompt (
strorlist[str], необязательный) — Промпт или промпты, которые не должны направлять генерацию изображения. Если не задан, необходимо передатьnegative_prompt_embeds. Игнорируется, если не используется guidance (то есть игнорируется, еслиtrue_cfg_scaleне больше1). - true_cfg_scale (
float, необязательный, по умолчанию 1.0) — Масштаб направляющего сигнала, определенный в Classifier-Free Diffusion Guidance.true_cfg_scaleопределяется какwиз уравнения 2 статьи Imagen Paper. Classifier-free guidance включается при установкеtrue_cfg_scale > 1и заданномnegative_prompt. Более высокий масштаб направляющего сигнала способствует генерации изображений, тесно связанных с текстовымprompt, обычно за счет снижения качества изображения. - height (
int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Высота генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов. - width (
int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Ширина генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов. - num_inference_steps (
int, необязательный, по умолчанию 50) — Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода. - sigmas (
list[float], необязательный) — Пользовательские сигмы для процесса удаления шума в планировщиках, поддерживающих аргументsigmasв их методеset_timesteps. Если не задано, будет использоваться поведение по умолчанию при передачеnum_inference_steps. - guidance_scale (
float, необязательный, по умолчанию None) — Значение масштаба руководства (guidance scale) для моделей с дистиллированным руководством. В отличие от традиционного classifier-free guidance, где масштаб руководства применяется во время вывода через масштабирование предсказания шума, модели с дистиллированным руководством принимают масштаб руководства непосредственно как входной параметр во время прямого прохода. Масштаб руководства активируется при установкеguidance_scale > 1. Более высокое значение масштаба руководства способствует генерации изображений, тесно связанных с текстовымprompt, обычно за счёт снижения качества изображения. Этот параметр в конвейере предназначен для поддержки будущих моделей с дистиллированным руководством, когда они появятся. Он игнорируется, если не используются модели с дистиллированным руководством. Для включения традиционного classifier-free guidance передайтеtrue_cfg_scale > 1.0иnegative_prompt(даже пустой отрицательный промпт, например ” ”, должен активировать вычисления classifier-free guidance). - control_guidance_start (
floatилиlist[float], необязательный, по умолчанию 0.0) — Доля от общего числа шагов, с которой ControlNet начинает применяться. - control_guidance_end (
floatилиlist[float], необязательный, по умолчанию 1.0) — Доля от общего числа шагов, на которой ControlNet прекращает применяться. - control_image (
PipelineImageInput, необязательный) — Условие входа ControlNet, задающее направление для генерации. - controlnet_conditioning_scale (
floatилиlist[float], необязательный, по умолчанию 1.0) — Выводы ControlNet умножаются наcontrolnet_conditioning_scaleперед добавлением к остаточному соединению в исходномtransformer. - num_images_per_prompt (
int, необязательный, по умолчанию 1) — Количество изображений, генерируемых для каждого промпта. - generator (
torch.Generatorилиlist[torch.Generator], необязательный) — Один или список генераторов torch для обеспечения детерминированности генерации. - latents (
torch.Tensor, необязательный) — Предварительно сгенерированные зашумлённые латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Позволяет корректировать один и тот же процесс генерации с помощью различных промптов. Если не заданы, тензор латентов будет сгенерирован путём выборки с использованием переданного случайногоgenerator. - prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргументаprompt. - prompt_embeds_mask (
torch.Tensor, необязательный) — Маска внимания дляprompt_embeds. - negative_prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не передано, negative_prompt_embeds будет сгенерировано из входного аргументаnegative_prompt. - negative_prompt_embeds_mask (
torch.Tensor, необязательный) — Маска внимания дляnegative_prompt_embeds. - output_type (
str, необязательный, по умолчанию"pil") — Формат вывода сгенерированного изображения. Выберите один из вариантов: PIL:PIL.Image.Imageилиnp.array. - return_dict (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли возвращать~pipelines.qwenimage.QwenImagePipelineOutputвместо обычного кортежа. - attention_kwargs (
dict, необязательный) — Словарь kwargs, который при указании передается вAttentionProcessor, определенный вself.processorв diffusers.models.attention_processor. - 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, по умолчанию 512) — максимальная длина последовательности, используемая сprompt.
Возвращает
~pipelines.qwenimage.QwenImagePipelineOutput или tuple
~pipelines.qwenimage.QwenImagePipelineOutput, если return_dict равно True, иначе tuple. При возврате кортежа первым элементом является список с сгенерированными изображениями.
Функция, вызываемая при обращении к конвейеру для генерации.
Примеры:
>>> import torch
>>> from diffusers.utils import load_image
>>> from diffusers import QwenImageControlNetModel, QwenImageMultiControlNetModel, QwenImageControlNetPipeline
>>> # QwenImageControlNetModel
>>> controlnet = QwenImageControlNetModel.from_pretrained(
... "InstantX/Qwen-Image-ControlNet-Union", torch_dtype=torch.bfloat16
... )
>>> pipe = QwenImageControlNetPipeline.from_pretrained(
... "Qwen/Qwen-Image", controlnet=controlnet, torch_dtype=torch.bfloat16
... )
>>> pipe.to("cuda")
>>> prompt = "Aesthetics art, traditional asian pagoda, elaborate golden accents, sky blue and white color palette, swirling cloud pattern, digital illustration, east asian architecture, ornamental rooftop, intricate detailing on building, cultural representation."
>>> negative_prompt = " "
>>> control_image = load_image(
... "https://huggingface.co/InstantX/Qwen-Image-ControlNet-Union/resolve/main/conds/canny.png"
... )
>>> # Depending on the variant being used, the pipeline call will slightly vary.
>>> # Refer to the pipeline documentation for more details.
>>> image = pipe(
... prompt,
... negative_prompt=negative_prompt,
... control_image=control_image,
... controlnet_conditioning_scale=1.0,
... num_inference_steps=30,
... true_cfg_scale=4.0,
... ).images[0]
>>> image.save("qwenimage_cn_union.png")
>>> # QwenImageMultiControlNetModel
>>> controlnet = QwenImageControlNetModel.from_pretrained(
... "InstantX/Qwen-Image-ControlNet-Union", torch_dtype=torch.bfloat16
... )
>>> controlnet = QwenImageMultiControlNetModel([controlnet])
>>> pipe = QwenImageControlNetPipeline.from_pretrained(
... "Qwen/Qwen-Image", controlnet=controlnet, torch_dtype=torch.bfloat16
... )
>>> pipe.to("cuda")
>>> prompt = "Aesthetics art, traditional asian pagoda, elaborate golden accents, sky blue and white color palette, swirling cloud pattern, digital illustration, east asian architecture, ornamental rooftop, intricate detailing on building, cultural representation."
>>> negative_prompt = " "
>>> control_image = load_image(
... "https://huggingface.co/InstantX/Qwen-Image-ControlNet-Union/resolve/main/conds/canny.png"
... )
>>> # Depending on the variant being used, the pipeline call will slightly vary.
>>> # Refer to the pipeline documentation for more details.
>>> image = pipe(
... prompt,
... negative_prompt=negative_prompt,
... control_image=[control_image, control_image],
... controlnet_conditioning_scale=[0.5, 0.5],
... num_inference_steps=30,
... true_cfg_scale=4.0,
... ).images[0]
>>> image.save("qwenimage_cn_union_multi.png")encode_prompt
< source >( prompt: str | list[str]device: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1prompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_mask: typing.Optional[torch.Tensor] = Nonemax_sequence_length: int = 1024 )
Параметры
- prompt (
strилиlist[str], необязательный) — промпт для кодирования - device — (
torch.device): устройство torch - num_images_per_prompt (
int) — количество изображений, которые должны быть сгенерированы для каждого промпта - prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргументаprompt.
QwenImageEditPlusPipeline
класс diffusers.QwenImageEditPlusPipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLQwenImagetext_encoder: Qwen2_5_VLForConditionalGenerationtokenizer: Qwen2Tokenizerprocessor: Qwen2VLProcessortransformer: QwenImageTransformer2DModel )
Параметры
- transformer (QwenImageTransformer2DModel) — Архитектура условного Transformer (MMDiT) для удаления шума из закодированных латентов изображения.
- scheduler (FlowMatchEulerDiscreteScheduler) —
планировщик, используемый в связке с
transformerдля удаления шума из закодированных латентов изображения. - vae (AutoencoderKL) — Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
- text_encoder (
Qwen2.5-VL-7B-Instruct) — Qwen2.5-VL-7B-Instruct, а именно вариант Qwen2.5-VL-7B-Instruct. - tokenizer (
Qwen2Tokenizer) — токенизатор класса https://huggingface.co/docs/transformers/en/model_doc/qwen2#transformers.Qwen2Tokenizer
Пайплайн Qwen-Image-Edit для редактирования изображений.
__call__
< source >( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneprompt: str | list[str] = Nonenegative_prompt: str | list[str] = Nonetrue_cfg_scale: float = 4.0height: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 50sigmas: list[float] | None = Noneguidance_scale: float | None = Nonenum_images_per_prompt: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_mask: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Trueattention_kwargs: dict[str, typing.Any] | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 512 ) → ~pipelines.qwenimage.QwenImagePipelineOutput or tuple
Параметры
- image (
torch.Tensor,PIL.Image.Image,np.ndarray,list[torch.Tensor],list[PIL.Image.Image]илиlist[np.ndarray]) —Image, массив numpy или тензор, представляющие пакет изображений, который будет использоваться в качестве начальной точки. Для массивов numpy и тензоров pytorch ожидаемый диапазон значений составляет[0, 1]. Если передан тензор или список тензоров, ожидаемая форма должна быть(B, C, H, W)или(C, H, W). Если передан массив numpy или список массивов, ожидаемая форма должна быть(B, H, W, C)или(H, W, C). Также можно передавать латенты изображений в качествеimage, но при прямой передаче латентов они не кодируются повторно. - prompt (
strилиlist[str], необязательный) — Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передатьprompt_embedsвместо него. - negative_prompt (
strorlist[str], необязательный) — Промпт или промпты, которые не должны направлять генерацию изображения. Если не задан, необходимо передатьnegative_prompt_embeds. Игнорируется, если не используется guidance (то есть игнорируется, еслиtrue_cfg_scaleне больше1). - true_cfg_scale (
float, необязательный, по умолчанию 1.0) — true_cfg_scale (float, необязательный, по умолчанию 1.0): масштаб направляющего сигнала, определенный в Classifier-Free Diffusion Guidance.true_cfg_scaleопределяется какwиз уравнения 2. в Imagen Paper. Направляющий сигнал без классификатора включается при установкеtrue_cfg_scale > 1и заданномnegative_prompt. Более высокий масштаб направляющего сигнала способствует генерации изображений, тесно связанных с текстовымprompt, обычно за счет снижения качества изображения. - height (
int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Высота генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов. - width (
int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Ширина генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов. - num_inference_steps (
int, необязательный, по умолчанию 50) — Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода. - sigmas (
list[float], необязательный) — Пользовательские сигмы для процесса удаления шума в планировщиках, поддерживающих аргументsigmasв их методеset_timesteps. Если не задано, будет использоваться поведение по умолчанию при передачеnum_inference_steps. - guidance_scale (
float, необязательный, по умолчанию None) — Значение масштаба руководства (guidance scale) для моделей с дистиллированным руководством. В отличие от традиционного classifier-free guidance, где масштаб руководства применяется во время вывода через масштабирование предсказания шума, модели с дистиллированным руководством принимают масштаб руководства непосредственно как входной параметр во время прямого прохода. Масштаб руководства активируется при установкеguidance_scale > 1. Более высокое значение масштаба руководства способствует генерации изображений, тесно связанных с текстовымprompt, обычно за счёт снижения качества изображения. Этот параметр в конвейере предназначен для поддержки будущих моделей с дистиллированным руководством, когда они появятся. Он игнорируется, если не используются модели с дистиллированным руководством. Для включения традиционного classifier-free guidance передайтеtrue_cfg_scale > 1.0иnegative_prompt(даже пустой отрицательный промпт, например ” ”, должен активировать вычисления classifier-free guidance). - num_images_per_prompt (
int, необязательный, по умолчанию 1) — Количество изображений, генерируемых для каждого промпта. - generator (
torch.Generatorилиlist[torch.Generator], необязательный) — Один или список генераторов torch для обеспечения детерминированности генерации. - latents (
torch.Tensor, необязательный) — Предварительно сгенерированные зашумлённые латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Позволяет корректировать один и тот же процесс генерации с помощью различных промптов. Если не заданы, тензор латентов будет сгенерирован путём выборки с использованием переданного случайногоgenerator. - prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргументаprompt. - prompt_embeds_mask (
torch.Tensor, необязательный) — Маска внимания дляprompt_embeds. - negative_prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не передано, negative_prompt_embeds будет сгенерировано из входного аргументаnegative_prompt. - negative_prompt_embeds_mask (
torch.Tensor, необязательный) — Маска внимания дляnegative_prompt_embeds. - output_type (
str, необязательный, по умолчанию"pil") — Формат вывода сгенерированного изображения. Выберите один из вариантов: PIL:PIL.Image.Imageилиnp.array. - return_dict (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли возвращать~pipelines.qwenimage.QwenImagePipelineOutputвместо обычного кортежа. - attention_kwargs (
dict, необязательный) — Словарь kwargs, который при указании передается вAttentionProcessor, определенный вself.processorв diffusers.models.attention_processor. - 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, по умолчанию 512) — максимальная длина последовательности, используемая сprompt.
Возвращает
~pipelines.qwenimage.QwenImagePipelineOutput или tuple
~pipelines.qwenimage.QwenImagePipelineOutput, если return_dict равно True, иначе tuple. При возврате кортежа первым элементом является список с сгенерированными изображениями.
Функция, вызываемая при обращении к конвейеру для генерации.
Примеры:
>>> import torch
>>> from PIL import Image
>>> from diffusers import QwenImageEditPlusPipeline
>>> from diffusers.utils import load_image
>>> pipe = QwenImageEditPlusPipeline.from_pretrained("Qwen/Qwen-Image-Edit-2509", torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")
>>> image = load_image(
... "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/yarn-art-pikachu.png"
... ).convert("RGB")
>>> prompt = (
... "Make Pikachu hold a sign that says 'Qwen Edit is awesome', yarn art style, detailed, vibrant colors"
... )
>>> # Depending on the variant being used, the pipeline call will slightly vary.
>>> # Refer to the pipeline documentation for more details.
>>> image = pipe(image, prompt, num_inference_steps=50).images[0]
>>> image.save("qwenimage_edit_plus.png")encode_prompt
< source >( prompt: str | list[str]image: typing.Optional[torch.Tensor] = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1prompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_mask: typing.Optional[torch.Tensor] = Nonemax_sequence_length: int = 1024 )
Параметры
- prompt (
strилиlist[str], необязательный) — промпт для кодирования - image (
torch.Tensor, необязательный) — изображение для кодирования - device — (
torch.device): устройство torch - num_images_per_prompt (
int) — количество изображений, которые должны быть сгенерированы для каждого промпта - prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргументаprompt.
QwenImageLayeredPipeline
класс diffusers.QwenImageLayeredPipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLQwenImagetext_encoder: Qwen2_5_VLForConditionalGenerationtokenizer: Qwen2Tokenizerprocessor: Qwen2VLProcessortransformer: QwenImageTransformer2DModel )
Параметры
- transformer (QwenImageTransformer2DModel) — Архитектура условного Transformer (MMDiT) для удаления шума из закодированных латентов изображения.
- scheduler (FlowMatchEulerDiscreteScheduler) —
планировщик, используемый в связке с
transformerдля удаления шума из закодированных латентов изображения. - vae (AutoencoderKL) — Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
- text_encoder (
Qwen2.5-VL-7B-Instruct) — Qwen2.5-VL-7B-Instruct, а именно вариант Qwen2.5-VL-7B-Instruct. - tokenizer (
Qwen2Tokenizer) — токенизатор класса https://huggingface.co/docs/transformers/en/model_doc/qwen2#transformers.Qwen2Tokenizer
Пайплайн Qwen-Image-Layered для разложения изображений.
__call__
< source >( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneprompt: str | list[str] = Nonenegative_prompt: str | list[str] = Nonetrue_cfg_scale: float = 4.0layers: int | None = 4num_inference_steps: int = 50sigmas: list[float] | None = Noneguidance_scale: float | None = Nonenum_images_per_prompt: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_mask: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Trueattention_kwargs: dict[str, typing.Any] | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 512resolution: int = 640cfg_normalize: bool = Falseuse_en_prompt: bool = False ) → ~pipelines.qwenimage.QwenImagePipelineOutput or tuple
Параметры
- image (
torch.Tensor,PIL.Image.Image,np.ndarray,list[torch.Tensor],list[PIL.Image.Image]илиlist[np.ndarray]) —Image, массив numpy или тензор, представляющие пакет изображений, который будет использоваться в качестве начальной точки. Для массивов numpy и тензоров pytorch ожидаемый диапазон значений составляет[0, 1]. Если передан тензор или список тензоров, ожидаемая форма должна быть(B, C, H, W)или(C, H, W). Если передан массив numpy или список массивов, ожидаемая форма должна быть(B, H, W, C)или(H, W, C). Также можно передавать латенты изображений в качествеimage, но при прямой передаче латентов они не кодируются повторно. - prompt (
strилиlist[str], необязательный) — Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передатьprompt_embedsвместо него. - negative_prompt (
strorlist[str], необязательный) — Промпт или промпты, которые не должны направлять генерацию изображения. Если не задан, необходимо передатьnegative_prompt_embeds. Игнорируется, если не используется guidance (то есть игнорируется, еслиtrue_cfg_scaleне больше1). - true_cfg_scale (
float, необязательный, по умолчанию 1.0) — true_cfg_scale (float, необязательный, по умолчанию 1.0): масштаб направляющего сигнала, определенный в Classifier-Free Diffusion Guidance.true_cfg_scaleопределяется какwиз уравнения 2. в Imagen Paper. Направляющий сигнал без классификатора включается при установкеtrue_cfg_scale > 1и заданномnegative_prompt. Более высокий масштаб направляющего сигнала способствует генерации изображений, тесно связанных с текстовымprompt, обычно за счет снижения качества изображения. - layers (
int, необязательный, по умолчанию 4) — Количество латентных слоёв, генерируемых для послойного вывода. - num_inference_steps (
int, необязательный, по умолчанию 50) — Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода. - sigmas (
list[float], необязательный) — Пользовательские сигмы для процесса удаления шума в планировщиках, поддерживающих аргументsigmasв их методеset_timesteps. Если не задано, будет использоваться поведение по умолчанию при передачеnum_inference_steps. - guidance_scale (
float, необязательный, по умолчанию None) — Значение масштаба руководства (guidance scale) для моделей с дистиллированным руководством. В отличие от традиционного classifier-free guidance, где масштаб руководства применяется во время вывода через масштабирование предсказания шума, модели с дистиллированным руководством принимают масштаб руководства непосредственно как входной параметр во время прямого прохода. Масштаб руководства активируется при установкеguidance_scale > 1. Более высокое значение масштаба руководства способствует генерации изображений, тесно связанных с текстовымprompt, обычно за счёт снижения качества изображения. Этот параметр в конвейере предназначен для поддержки будущих моделей с дистиллированным руководством, когда они появятся. Он игнорируется, если не используются модели с дистиллированным руководством. Для включения традиционного classifier-free guidance передайтеtrue_cfg_scale > 1.0иnegative_prompt(даже пустой отрицательный промпт, например ” ”, должен активировать вычисления classifier-free guidance). - num_images_per_prompt (
int, необязательный, по умолчанию 1) — Количество изображений, генерируемых для каждого промпта. - generator (
torch.Generatorилиlist[torch.Generator], необязательный) — Один или список генераторов torch для обеспечения детерминированности генерации. - latents (
torch.Tensor, необязательный) — Предварительно сгенерированные зашумлённые латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Позволяет корректировать один и тот же процесс генерации с помощью различных промптов. Если не заданы, тензор латентов будет сгенерирован путём выборки с использованием переданного случайногоgenerator. - prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргументаprompt. - prompt_embeds_mask (
torch.Tensor, необязательный) — Маска внимания дляprompt_embeds. - negative_prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не передано, negative_prompt_embeds будет сгенерировано из входного аргументаnegative_prompt. - negative_prompt_embeds_mask (
torch.Tensor, необязательный) — Маска внимания дляnegative_prompt_embeds. - output_type (
str, необязательный, по умолчанию"pil") — Формат вывода сгенерированного изображения. Выберите один из вариантов: PIL:PIL.Image.Imageилиnp.array. - return_dict (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли возвращать~pipelines.qwenimage.QwenImagePipelineOutputвместо обычного кортежа. - attention_kwargs (
dict, необязательный) — Словарь kwargs, который при указании передается вAttentionProcessor, определенный вself.processorв diffusers.models.attention_processor. - 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, по умолчанию 512) — максимальная длина последовательности, используемая сprompt. - resolution (
int, необязательный, по умолчанию 640) — использование другого значения из набора (640, 1024) для определения разрешения условия и вывода - cfg_normalize (
bool, необязательный, по умолчаниюFalse) — включает ли нормализацию cfg. - use_en_prompt (
bool, необязательный, по умолчаниюFalse) — язык автоматической подписи, если пользователь не предоставляет её
Возвращает
~pipelines.qwenimage.QwenImagePipelineOutput или tuple
~pipelines.qwenimage.QwenImagePipelineOutput, если return_dict равно True, иначе tuple. При возврате кортежа первым элементом является список с сгенерированными изображениями.
Функция, вызываемая при обращении к конвейеру для генерации.
Примеры:
>>> import torch
>>> from PIL import Image
>>> from diffusers import QwenImageLayeredPipeline
>>> from diffusers.utils import load_image
>>> pipe = QwenImageLayeredPipeline.from_pretrained("Qwen/Qwen-Image-Layered", torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")
>>> image = load_image(
... "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/yarn-art-pikachu.png"
... ).convert("RGBA")
>>> prompt = ""
>>> # Depending on the variant being used, the pipeline call will slightly vary.
>>> # Refer to the pipeline documentation for more details.
>>> images = pipe(
... image,
... prompt,
... num_inference_steps=50,
... true_cfg_scale=4.0,
... layers=4,
... resolution=640,
... cfg_normalize=False,
... use_en_prompt=True,
... ).images[0]
>>> for i, image in enumerate(images):
... image.save(f"{i}.out.png")encode_prompt
< source >( prompt: str | list[str]device: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1prompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_mask: typing.Optional[torch.Tensor] = Nonemax_sequence_length: int = 1024 )
Параметры
- prompt (
strилиlist[str], необязательный) — промпт для кодирования - device — (
torch.device): устройство torch - num_images_per_prompt (
int) — количество изображений, которые должны быть сгенерированы для каждого промпта - prompt_embeds (
torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргументаprompt.
QwenImagePipelineOutput
класс diffusers.pipelines.qwenimage.pipeline_output.QwenImagePipelineOutput
< source >( images: list[PIL.Image.Image] | numpy.ndarray )
Класс вывода для пайплайнов Stable Diffusion.