Diffusers documentation
QwenImage
QwenImage
Qwen-Image, del equipo Qwen, es un modelo base de generación de imágenes de la serie Qwen que logra avances significativos en el renderizado de texto complejo y la edición precisa de imágenes. Los experimentos muestran capacidades generales sólidas tanto en la generación como en la edición de imágenes, con un rendimiento excepcional en el renderizado de texto, especialmente para el chino.
Qwen-Image está disponible en las siguientes variantes:
| tipo de modelo | id del modelo |
|---|---|
| Qwen-Image | Qwen/Qwen-Image |
| Qwen-Image-Edit | Qwen/Qwen-Image-Edit |
| Qwen-Image-Edit Plus | Qwen/Qwen-Image-Edit-2509 |
Consulte la guía de Caching para acelerar la inferencia almacenando y reutilizando salidas intermedias.
LoRA para una inferencia más rápida
Usa un LoRA de lightx2v/Qwen-Image-Lightning para acelerar la inferencia reduciendo el
número de pasos. Consulta el fragmento de código a continuación:
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")El parámetro
guidance_scaleen el pipeline está ahí para soportar futuros modelos destilados con guía cuando aparezcan. Tenga en cuenta que pasarguidance_scaleal pipeline no tiene efecto. Para habilitar la guía sin clasificador, pasetrue_cfg_scaleynegative_prompt(incluso un prompt negativo vacío como ” ”) debería habilitar los cálculos de guía sin clasificador.
Referencia de múltiples imágenes con QwenImageEditPlusPipeline
Con QwenImageEditPlusPipeline, se pueden proporcionar varias imágenes como referencia de entrada.
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]Rendimiento
torch.compile
El uso de torch.compile en el transformer proporciona una aceleración de ~2.4x (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]Inferencia por lotes con prompts de longitud variable
Al usar la guía sin clasificador (CFG) con prompts de diferentes longitudes, el pipeline maneja correctamente el relleno mediante la enmascaración de atención. Esto garantiza que los tokens de relleno no influyan en la salida generada.
# 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]Para obtener los scripts y resultados de las pruebas de rendimiento detalladas, consulte este gist.
QwenImagePipeline
clase diffusers.QwenImagePipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLQwenImagetext_encoder: Qwen2_5_VLForConditionalGenerationtokenizer: Qwen2Tokenizertransformer: QwenImageTransformer2DModel )
Parámetros
- transformer (QwenImageTransformer2DModel) — Arquitectura Conditional Transformer (MMDiT) para desruidar los latentes de imagen codificados.
- scheduler (FlowMatchEulerDiscreteScheduler) —
Un scheduler para usar en combinación con
transformerpara desruidar los latentes de imagen codificados. - vae (AutoencoderKL) — Modelo de Variational Auto-Encoder (VAE) para codificar y decodificar imágenes a partir de y hacia representaciones latentes.
- text_encoder (
Qwen2.5-VL-7B-Instruct) — Qwen2.5-VL-7B-Instruct, específicamente la variante Qwen2.5-VL-7B-Instruct. - tokenizer (
Qwen2Tokenizer) — Tokenizer de la clase https://huggingface.co/docs/transformers/en/model_doc/qwen2#transformers.Qwen2Tokenizer
El pipeline QwenImage para la generación de imágenes a partir de texto.
__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[str] = ['latents']max_sequence_length: int = 512 ) → ~pipelines.qwenimage.QwenImagePipelineOutput or tuple
Parámetros
- prompt (
strolist[str], opcional) — El prompt o los prompts para guiar la generación de la imagen. Si no se define, hay que pasarprompt_embedsen su lugar. - negative_prompt (
strolist[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasarnegative_prompt_embedsen su lugar. Se ignora cuando no se usa guía (es decir, se ignora sitrue_cfg_scaleno es mayor que1). - true_cfg_scale (
float, opcional, valor predeterminado 1.0) — Escala de guía definida en Classifier-Free Diffusion Guidance.true_cfg_scalese define comowde la ecuación 2 de Imagen Paper. La guía libre de clasificador se habilita estableciendotrue_cfg_scale > 1y proporcionando unnegative_prompt. Una escala de guía más alta fomenta la generación de imágenes estrechamente vinculadas al textoprompt, generalmente a costa de una menor calidad de imagen. - height (
int, opcional, por defecto self.unet.config.sample_size * self.vae_scale_factor) — La altura en píxeles de la imagen generada. Por defecto, se establece en 1024 para obtener los mejores resultados. - width (
int, opcional, valor predeterminado self.unet.config.sample_size * self.vae_scale_factor) — El ancho en píxeles de la imagen generada. Por defecto, se establece en 1024 para obtener los mejores resultados. - num_inference_steps (
int, opcional, valor predeterminado 50) — El número de pasos de desruido. Más pasos de desruido suelen conducir a una imagen de mayor calidad a costa de una inferencia más lenta. - sigmas (
list[float], opcional) — Sigmas personalizados para usar en el proceso de desruido con programadores que admiten un argumentosigmasen su métodoset_timesteps. Si no se define, se usará el comportamiento predeterminado cuando se pasenum_inference_steps. - guidance_scale (
float, opcional, valor predeterminado None) — Un valor de escala de guía para modelos destilados de guía. A diferencia de la guía libre de clasificador tradicional, donde la escala de guía se aplica durante la inferencia mediante el reescalado de la predicción de ruido, los modelos destilados de guía toman la escala de guía directamente como un parámetro de entrada durante la pasada hacia adelante. La escala de guía se habilita estableciendoguidance_scale > 1. Una escala de guía más alta fomenta la generación de imágenes que están estrechamente vinculadas alpromptde texto, generalmente a costa de una menor calidad de imagen. Este parámetro en el pipeline está presente para soportar futuros modelos destilados de guía cuando aparezcan. Se ignora cuando no se utilizan modelos destilados de guía. Para habilitar la guía libre de clasificador tradicional, pasetrue_cfg_scale > 1.0ynegative_prompt(incluso un prompt negativo vacío como ” ” debería habilitar los cálculos de guía libre de clasificador). - num_images_per_prompt (
int, opcional, valor predeterminado 1) — El número de imágenes que se generarán por indicación. - generator (
torch.Generatorolist[torch.Generator], opcional) — Un generador o una lista de generadores de torch para hacer la generación determinista. - latents (
torch.Tensor, opcional) — Latentes ruidosos pregenerados, muestreados de una distribución gaussiana, que se usarán como entradas para la generación de imágenes. Se pueden utilizar para ajustar la misma generación con diferentes prompts. Si no se proporcionan, se generará un tensor de latentes mediante muestreo usando elgeneratoraleatorio suministrado. - prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporcionan, las incrustaciones de texto se generarán a partir del argumento de entradaprompt. - prompt_embeds_mask (
torch.Tensor, opcional) — Máscara de atención paraprompt_embeds. - negative_prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto negativo pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, negative_prompt_embeds se generará a partir del argumento de entradanegative_prompt. - negative_prompt_embeds_mask (
torch.Tensor, opcional) — Máscara de atención paranegative_prompt_embeds. - output_type (
str, opcional, valor predeterminado"pil") — El formato de salida de la imagen generada. Elija entre PIL:PIL.Image.Imageonp.array. - return_dict (
bool, opcional, valor predeterminadoTrue) — Indica si se debe devolver un~pipelines.qwenimage.QwenImagePipelineOutputen lugar de una tupla simple. - attention_kwargs (
dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa alAttentionProcessordefinido enself.processordentro de diffusers.models.attention_processor. - callback_on_step_end (
Callable, opcional) — Una función que se llama al final de cada paso de desruido durante la inferencia. La función se llama con los siguientes argumentos:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargsincluirá una lista de todos los tensores especificados porcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, opcional) — La lista de entradas de tensor para la funcióncallback_on_step_end. Los tensores especificados en la lista se pasarán como argumentocallback_kwargs. Solo podrás incluir variables listadas en el atributo._callback_tensor_inputsde tu clase de pipeline. - max_sequence_length (
intpor defecto 512) — Longitud máxima de la secuencia para usar con elprompt.
Devuelve
~pipelines.qwenimage.QwenImagePipelineOutput o tuple
~pipelines.qwenimage.QwenImagePipelineOutput si return_dict es True, de lo contrario una tuple. Al devolver una tupla, el primer elemento es una lista con las imágenes generadas.
Función invocada al llamar a la pipeline para la generación.
Ejemplos:
>>> 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 )
Parámetros
- prompt (
strolist[str], opcional) — prompt a codificar - device — (
torch.device): dispositivo de torch - num_images_per_prompt (
int) — número de imágenes que deben generarse por prompt - prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporcionan, las incrustaciones de texto se generarán a partir del argumento de entradaprompt.
QwenImageImg2ImgPipeline
clase diffusers.QwenImageImg2ImgPipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLQwenImagetext_encoder: Qwen2_5_VLForConditionalGenerationtokenizer: Qwen2Tokenizertransformer: QwenImageTransformer2DModel )
Parámetros
- transformer (QwenImageTransformer2DModel) — Arquitectura Conditional Transformer (MMDiT) para desruidar los latentes de imagen codificados.
- scheduler (FlowMatchEulerDiscreteScheduler) —
Un scheduler para usar en combinación con
transformerpara desruidar los latentes de imagen codificados. - vae (AutoencoderKL) — Modelo de Variational Auto-Encoder (VAE) para codificar y decodificar imágenes a partir de y hacia representaciones latentes.
- text_encoder (
Qwen2.5-VL-7B-Instruct) — Qwen2.5-VL-7B-Instruct, específicamente la variante Qwen2.5-VL-7B-Instruct. - tokenizer (
Qwen2Tokenizer) — Tokenizer de la clase https://huggingface.co/docs/transformers/en/model_doc/qwen2#transformers.Qwen2Tokenizer
El pipeline QwenImage para la generación de imágenes a partir de texto.
__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[str] = ['latents']max_sequence_length: int = 512 ) → ~pipelines.qwenimage.QwenImagePipelineOutput or tuple
Parámetros
- prompt (
strolist[str], opcional) — El prompt o los prompts para guiar la generación de la imagen. Si no se define, hay que pasarprompt_embedsen su lugar. - negative_prompt (
strolist[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasarnegative_prompt_embedsen su lugar. Se ignora cuando no se usa guía (es decir, se ignora sitrue_cfg_scaleno es mayor que1). - image (
torch.Tensor,PIL.Image.Image,np.ndarray,list[torch.Tensor],list[PIL.Image.Image]olist[np.ndarray]) —Image, array de numpy o tensor que representa un lote de imágenes para usarse como punto de partida. Tanto para arrays de numpy como para tensors de pytorch, el rango de valores esperado está entre[0, 1]Si es un tensor o una lista de tensors, la forma esperada debe ser(B, C, H, W)o(C, H, W). Si es un array de numpy o una lista de arrays, la forma esperada debe ser(B, H, W, C)o(H, W, C)También puede aceptar latentes de imagen comoimage, pero si se pasan latentes directamente, no se vuelven a codificar. - true_cfg_scale (
float, opcional, valor predeterminado 1.0) — Escala de guía definida en Classifier-Free Diffusion Guidance.true_cfg_scalese define comowde la ecuación 2 de Imagen Paper. La guía libre de clasificador se habilita estableciendotrue_cfg_scale > 1y proporcionando unnegative_prompt. Una escala de guía más alta fomenta la generación de imágenes estrechamente vinculadas al textoprompt, generalmente a costa de una menor calidad de imagen. - height (
int, opcional, por defecto self.unet.config.sample_size * self.vae_scale_factor) — La altura en píxeles de la imagen generada. Por defecto, se establece en 1024 para obtener los mejores resultados. - width (
int, opcional, valor predeterminado self.unet.config.sample_size * self.vae_scale_factor) — El ancho en píxeles de la imagen generada. Por defecto, se establece en 1024 para obtener los mejores resultados. - strength (
float, opcional, valor predeterminado 1.0) — Indica el grado en que se transforma laimagede referencia. Debe estar entre 0 y 1.imagese utiliza como punto de partida y se añade más ruido a medida que aumenta elstrength. El número de pasos de desruido depende de la cantidad de ruido añadido inicialmente. Cuandostrengthes 1, el ruido añadido es máximo y el proceso de desruido se ejecuta durante el número completo de iteraciones especificado ennum_inference_steps. Un valor de 1 ignora esencialmenteimage. - num_inference_steps (
int, opcional, valor predeterminado 50) — El número de pasos de desruido. Más pasos de desruido suelen conducir a una imagen de mayor calidad a costa de una inferencia más lenta. - sigmas (
list[float], opcional) — Sigmas personalizados para usar en el proceso de desruido con programadores que admiten un argumentosigmasen su métodoset_timesteps. Si no se define, se usará el comportamiento predeterminado cuando se pasenum_inference_steps. - guidance_scale (
float, opcional, valor predeterminado None) — Un valor de escala de guía para modelos destilados de guía. A diferencia de la guía libre de clasificador tradicional, donde la escala de guía se aplica durante la inferencia mediante el reescalado de la predicción de ruido, los modelos destilados de guía toman la escala de guía directamente como un parámetro de entrada durante la pasada hacia adelante. La escala de guía se habilita estableciendoguidance_scale > 1. Una escala de guía más alta fomenta la generación de imágenes que están estrechamente vinculadas alpromptde texto, generalmente a costa de una menor calidad de imagen. Este parámetro en el pipeline está presente para soportar futuros modelos destilados de guía cuando aparezcan. Se ignora cuando no se utilizan modelos destilados de guía. Para habilitar la guía libre de clasificador tradicional, pasetrue_cfg_scale > 1.0ynegative_prompt(incluso un prompt negativo vacío como ” ” debería habilitar los cálculos de guía libre de clasificador). - num_images_per_prompt (
int, opcional, valor predeterminado 1) — El número de imágenes que se generarán por indicación. - generator (
torch.Generatorolist[torch.Generator], opcional) — Un generador o una lista de generadores de torch para hacer la generación determinista. - latents (
torch.Tensor, opcional) — Latentes ruidosos pregenerados, muestreados de una distribución gaussiana, que se usarán como entradas para la generación de imágenes. Se pueden utilizar para ajustar la misma generación con diferentes prompts. Si no se proporcionan, se generará un tensor de latentes mediante muestreo usando elgeneratoraleatorio suministrado. - prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporcionan, las incrustaciones de texto se generarán a partir del argumento de entradaprompt. - prompt_embeds_mask (
torch.Tensor, opcional) — Máscara de atención paraprompt_embeds. - negative_prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto negativo pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, negative_prompt_embeds se generará a partir del argumento de entradanegative_prompt. - negative_prompt_embeds_mask (
torch.Tensor, opcional) — Máscara de atención paranegative_prompt_embeds. - output_type (
str, opcional, valor predeterminado"pil") — El formato de salida de la imagen generada. Elija entre PIL:PIL.Image.Imageonp.array. - return_dict (
bool, opcional, valor predeterminadoTrue) — Indica si se debe devolver un~pipelines.qwenimage.QwenImagePipelineOutputen lugar de una tupla simple. - attention_kwargs (
dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa alAttentionProcessordefinido enself.processordentro de diffusers.models.attention_processor. - callback_on_step_end (
Callable, opcional) — Una función que se llama al final de cada paso de desruido durante la inferencia. La función se llama con los siguientes argumentos:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargsincluirá una lista de todos los tensores especificados porcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, opcional) — La lista de entradas de tensor para la funcióncallback_on_step_end. Los tensores especificados en la lista se pasarán como argumentocallback_kwargs. Solo podrás incluir variables listadas en el atributo._callback_tensor_inputsde tu clase de pipeline. - max_sequence_length (
intpor defecto 512) — Longitud máxima de la secuencia para usar con elprompt.
Devuelve
~pipelines.qwenimage.QwenImagePipelineOutput o tuple
~pipelines.qwenimage.QwenImagePipelineOutput si return_dict es True, de lo contrario una tuple. Al devolver una tupla, el primer elemento es una lista con las imágenes generadas.
Función invocada al llamar a la pipeline para la generación.
Ejemplos:
>>> 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 )
Parámetros
- prompt (
strolist[str], opcional) — prompt a codificar - device — (
torch.device): dispositivo de torch - num_images_per_prompt (
int) — número de imágenes que deben generarse por prompt - prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporcionan, las incrustaciones de texto se generarán a partir del argumento de entradaprompt.
QwenImageInpaintPipeline
clase diffusers.QwenImageInpaintPipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLQwenImagetext_encoder: Qwen2_5_VLForConditionalGenerationtokenizer: Qwen2Tokenizertransformer: QwenImageTransformer2DModel )
Parámetros
- transformer (QwenImageTransformer2DModel) — Arquitectura Conditional Transformer (MMDiT) para desruidar los latentes de imagen codificados.
- scheduler (FlowMatchEulerDiscreteScheduler) —
Un scheduler para usar en combinación con
transformerpara desruidar los latentes de imagen codificados. - vae (AutoencoderKL) — Modelo de Variational Auto-Encoder (VAE) para codificar y decodificar imágenes a partir de y hacia representaciones latentes.
- text_encoder (
Qwen2.5-VL-7B-Instruct) — Qwen2.5-VL-7B-Instruct, específicamente la variante Qwen2.5-VL-7B-Instruct. - tokenizer (
Qwen2Tokenizer) — Tokenizer de la clase https://huggingface.co/docs/transformers/en/model_doc/qwen2#transformers.Qwen2Tokenizer
El pipeline QwenImage para la generación de imágenes a partir de texto.
__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[str] = ['latents']max_sequence_length: int = 512 ) → ~pipelines.qwenimage.QwenImagePipelineOutput or tuple
Parámetros
- prompt (
strolist[str], opcional) — El prompt o los prompts para guiar la generación de la imagen. Si no se define, hay que pasarprompt_embedsen su lugar. - negative_prompt (
strolist[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasarnegative_prompt_embedsen su lugar. Se ignora cuando no se usa guía (es decir, se ignora sitrue_cfg_scaleno es mayor que1). - image (
torch.Tensor,PIL.Image.Image,np.ndarray,list[torch.Tensor],list[PIL.Image.Image]olist[np.ndarray]) —Image, array de numpy o tensor que representa un lote de imágenes para usarse como punto de partida. Tanto para arrays de numpy como para tensors de pytorch, el rango de valores esperado está entre[0, 1]Si es un tensor o una lista de tensors, la forma esperada debe ser(B, C, H, W)o(C, H, W). Si es un array de numpy o una lista de arrays, la forma esperada debe ser(B, H, W, C)o(H, W, C)También puede aceptar latentes de imagen comoimage, pero si se pasan latentes directamente, no se vuelven a codificar. - true_cfg_scale (
float, opcional, valor predeterminado 1.0) — Escala de guía definida en Classifier-Free Diffusion Guidance.true_cfg_scalese define comowde la ecuación 2 de Imagen Paper. La guía libre de clasificador se habilita estableciendotrue_cfg_scale > 1y proporcionando unnegative_prompt. Una escala de guía más alta fomenta la generación de imágenes estrechamente vinculadas al textoprompt, generalmente a costa de una menor calidad de imagen. - mask_image (
torch.Tensor,PIL.Image.Image,np.ndarray,list[torch.Tensor],list[PIL.Image.Image]olist[np.ndarray]) —Image, array de numpy o tensor que representa un lote de imágenes para enmascararimage. Los píxeles blancos de la máscara se repintan, mientras que los píxeles negros se conservan. Simask_imagees una imagen PIL, se convierte a un solo canal (luminancia) antes de su uso. Si es un array de numpy o un tensor de pytorch, debe contener un solo canal de color (L) en lugar de 3, por lo que la forma esperada para un tensor de pytorch sería(B, 1, H, W),(B, H, W),(1, H, W),(H, W). Y para un array de numpy sería(B, H, W, 1),(B, H, W),(H, W, 1)o(H, W). - masked_image_latents (
torch.Tensor,list[torch.Tensor]) —Tensorque representa un lote de imágenes para enmascarar laimagegenerada por el VAE. Si no se proporciona, el tensor de latentes de la máscara se generará mediantemask_image. - height (
int, opcional, por defecto self.unet.config.sample_size * self.vae_scale_factor) — La altura en píxeles de la imagen generada. Por defecto, se establece en 1024 para obtener los mejores resultados. - width (
int, opcional, valor predeterminado self.unet.config.sample_size * self.vae_scale_factor) — El ancho en píxeles de la imagen generada. Por defecto, se establece en 1024 para obtener los mejores resultados. - padding_mask_crop (
int, opcional, valor predeterminadoNone) — El tamaño del margen en el recorte que se aplicará a la imagen y la máscara. Si esNone, no se aplica ningún recorte a image y mask_image. Sipadding_mask_cropno esNone, primero se busca una región rectangular con la misma relación de aspecto que la imagen y que contenga toda el área enmascarada, y luego se expande esa área en función depadding_mask_crop. A continuación, la imagen y mask_image se recortan según el área expandida antes de redimensionarlas al tamaño original de la imagen para el inpainting. Esto es útil cuando el área enmascarada es pequeña mientras que la imagen es grande y contiene información irrelevante para el inpainting, como el fondo. - strength (
float, opcional, valor predeterminado 1.0) — Indica el grado en que se transforma laimagede referencia. Debe estar entre 0 y 1.imagese utiliza como punto de partida y se añade más ruido a medida que aumenta elstrength. El número de pasos de desruido depende de la cantidad de ruido añadido inicialmente. Cuandostrengthes 1, el ruido añadido es máximo y el proceso de desruido se ejecuta durante el número completo de iteraciones especificado ennum_inference_steps. Un valor de 1 ignora esencialmenteimage. - num_inference_steps (
int, opcional, valor predeterminado 50) — El número de pasos de desruido. Más pasos de desruido suelen conducir a una imagen de mayor calidad a costa de una inferencia más lenta. - sigmas (
list[float], opcional) — Sigmas personalizados para usar en el proceso de desruido con programadores que admiten un argumentosigmasen su métodoset_timesteps. Si no se define, se usará el comportamiento predeterminado cuando se pasenum_inference_steps. - guidance_scale (
float, opcional, valor predeterminado None) — Un valor de escala de guía para modelos destilados de guía. A diferencia de la guía libre de clasificador tradicional, donde la escala de guía se aplica durante la inferencia mediante el reescalado de la predicción de ruido, los modelos destilados de guía toman la escala de guía directamente como un parámetro de entrada durante la pasada hacia adelante. La escala de guía se habilita estableciendoguidance_scale > 1. Una escala de guía más alta fomenta la generación de imágenes que están estrechamente vinculadas alpromptde texto, generalmente a costa de una menor calidad de imagen. Este parámetro en el pipeline está presente para soportar futuros modelos destilados de guía cuando aparezcan. Se ignora cuando no se utilizan modelos destilados de guía. Para habilitar la guía libre de clasificador tradicional, pasetrue_cfg_scale > 1.0ynegative_prompt(incluso un prompt negativo vacío como ” ” debería habilitar los cálculos de guía libre de clasificador). - num_images_per_prompt (
int, opcional, valor predeterminado 1) — El número de imágenes que se generarán por indicación. - generator (
torch.Generatorolist[torch.Generator], opcional) — Un generador o una lista de generadores de torch para hacer la generación determinista. - latents (
torch.Tensor, opcional) — Latentes ruidosos pregenerados, muestreados de una distribución gaussiana, que se usarán como entradas para la generación de imágenes. Se pueden utilizar para ajustar la misma generación con diferentes prompts. Si no se proporcionan, se generará un tensor de latentes mediante muestreo usando elgeneratoraleatorio suministrado. - prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporcionan, las incrustaciones de texto se generarán a partir del argumento de entradaprompt. - prompt_embeds_mask (
torch.Tensor, opcional) — Máscara de atención paraprompt_embeds. - negative_prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto negativo pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, negative_prompt_embeds se generará a partir del argumento de entradanegative_prompt. - negative_prompt_embeds_mask (
torch.Tensor, opcional) — Máscara de atención paranegative_prompt_embeds. - output_type (
str, opcional, valor predeterminado"pil") — El formato de salida de la imagen generada. Elija entre PIL:PIL.Image.Imageonp.array. - return_dict (
bool, opcional, valor predeterminadoTrue) — Indica si se debe devolver un~pipelines.qwenimage.QwenImagePipelineOutputen lugar de una tupla simple. - attention_kwargs (
dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa alAttentionProcessordefinido enself.processordentro de diffusers.models.attention_processor. - callback_on_step_end (
Callable, opcional) — Una función que se llama al final de cada paso de desruido durante la inferencia. La función se llama con los siguientes argumentos:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargsincluirá una lista de todos los tensores especificados porcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, opcional) — La lista de entradas de tensor para la funcióncallback_on_step_end. Los tensores especificados en la lista se pasarán como argumentocallback_kwargs. Solo podrás incluir variables listadas en el atributo._callback_tensor_inputsde tu clase de pipeline. - max_sequence_length (
intpor defecto 512) — Longitud máxima de la secuencia para usar con elprompt.
Devuelve
~pipelines.qwenimage.QwenImagePipelineOutput o tuple
~pipelines.qwenimage.QwenImagePipelineOutput si return_dict es True, de lo contrario una tuple. Al devolver una tupla, el primer elemento es una lista con las imágenes generadas.
Función invocada al llamar a la pipeline para la generación.
Ejemplos:
>>> 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 )
Parámetros
- prompt (
strolist[str], opcional) — prompt a codificar - device — (
torch.device): dispositivo de torch - num_images_per_prompt (
int) — número de imágenes que deben generarse por prompt - prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporcionan, las incrustaciones de texto se generarán a partir del argumento de entradaprompt.
QwenImageEditPipeline
clase diffusers.QwenImageEditPipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLQwenImagetext_encoder: Qwen2_5_VLForConditionalGenerationtokenizer: Qwen2Tokenizerprocessor: Qwen2VLProcessortransformer: QwenImageTransformer2DModel )
Parámetros
- transformer (QwenImageTransformer2DModel) — Arquitectura Conditional Transformer (MMDiT) para desruidar los latentes de imagen codificados.
- scheduler (FlowMatchEulerDiscreteScheduler) —
Un scheduler para usar en combinación con
transformerpara desruidar los latentes de imagen codificados. - vae (AutoencoderKL) — Modelo de Variational Auto-Encoder (VAE) para codificar y decodificar imágenes a partir de y hacia representaciones latentes.
- text_encoder (
Qwen2.5-VL-7B-Instruct) — Qwen2.5-VL-7B-Instruct, específicamente la variante Qwen2.5-VL-7B-Instruct. - tokenizer (
Qwen2Tokenizer) — Tokenizer de la clase https://huggingface.co/docs/transformers/en/model_doc/qwen2#transformers.Qwen2Tokenizer
El pipeline Qwen-Image-Edit para la edición de imágenes.
__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[str] = ['latents']max_sequence_length: int = 512 ) → ~pipelines.qwenimage.QwenImagePipelineOutput or tuple
Parámetros
- image (
torch.Tensor,PIL.Image.Image,np.ndarray,list[torch.Tensor],list[PIL.Image.Image]olist[np.ndarray]) —Image, array de numpy o tensor que representa un lote de imágenes para usarse como punto de partida. Tanto para arrays de numpy como para tensors de pytorch, el rango de valores esperado está entre[0, 1]Si es un tensor o una lista de tensors, la forma esperada debe ser(B, C, H, W)o(C, H, W). Si es un array de numpy o una lista de arrays, la forma esperada debe ser(B, H, W, C)o(H, W, C)También puede aceptar latentes de imagen comoimage, pero si se pasan latentes directamente, no se vuelven a codificar. - prompt (
strolist[str], opcional) — El prompt o los prompts para guiar la generación de la imagen. Si no se define, hay que pasarprompt_embedsen su lugar. - negative_prompt (
strolist[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasarnegative_prompt_embedsen su lugar. Se ignora cuando no se usa guía (es decir, se ignora sitrue_cfg_scaleno es mayor que1). - true_cfg_scale (
float, opcional, valor predeterminado 1.0) — true_cfg_scale (float, opcional, valor predeterminado 1.0): Escala de guía definida en Classifier-Free Diffusion Guidance.true_cfg_scalese define comowde la ecuación 2. de Imagen Paper. La guía sin clasificador se activa estableciendotrue_cfg_scale > 1y proporcionando unnegative_prompt. Una escala de guía más alta fomenta la generación de imágenes estrechamente vinculadas al textoprompt, generalmente a costa de una menor calidad de imagen. - height (
int, opcional, por defecto self.unet.config.sample_size * self.vae_scale_factor) — La altura en píxeles de la imagen generada. Por defecto, se establece en 1024 para obtener los mejores resultados. - width (
int, opcional, valor predeterminado self.unet.config.sample_size * self.vae_scale_factor) — El ancho en píxeles de la imagen generada. Por defecto, se establece en 1024 para obtener los mejores resultados. - num_inference_steps (
int, opcional, valor predeterminado 50) — El número de pasos de desruido. Más pasos de desruido suelen conducir a una imagen de mayor calidad a costa de una inferencia más lenta. - sigmas (
list[float], opcional) — Sigmas personalizados para usar en el proceso de desruido con programadores que admiten un argumentosigmasen su métodoset_timesteps. Si no se define, se usará el comportamiento predeterminado cuando se pasenum_inference_steps. - guidance_scale (
float, opcional, valor predeterminado None) — Un valor de escala de guía para modelos destilados de guía. A diferencia de la guía libre de clasificador tradicional, donde la escala de guía se aplica durante la inferencia mediante el reescalado de la predicción de ruido, los modelos destilados de guía toman la escala de guía directamente como un parámetro de entrada durante la pasada hacia adelante. La escala de guía se habilita estableciendoguidance_scale > 1. Una escala de guía más alta fomenta la generación de imágenes que están estrechamente vinculadas alpromptde texto, generalmente a costa de una menor calidad de imagen. Este parámetro en el pipeline está presente para soportar futuros modelos destilados de guía cuando aparezcan. Se ignora cuando no se utilizan modelos destilados de guía. Para habilitar la guía libre de clasificador tradicional, pasetrue_cfg_scale > 1.0ynegative_prompt(incluso un prompt negativo vacío como ” ” debería habilitar los cálculos de guía libre de clasificador). - num_images_per_prompt (
int, opcional, valor predeterminado 1) — El número de imágenes que se generarán por indicación. - generator (
torch.Generatorolist[torch.Generator], opcional) — Un generador o una lista de generadores de torch para hacer la generación determinista. - latents (
torch.Tensor, opcional) — Latentes ruidosos pregenerados, muestreados de una distribución gaussiana, que se usarán como entradas para la generación de imágenes. Se pueden utilizar para ajustar la misma generación con diferentes prompts. Si no se proporcionan, se generará un tensor de latentes mediante muestreo usando elgeneratoraleatorio suministrado. - prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporcionan, las incrustaciones de texto se generarán a partir del argumento de entradaprompt. - prompt_embeds_mask (
torch.Tensor, opcional) — Máscara de atención paraprompt_embeds. - negative_prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto negativo pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, negative_prompt_embeds se generará a partir del argumento de entradanegative_prompt. - negative_prompt_embeds_mask (
torch.Tensor, opcional) — Máscara de atención paranegative_prompt_embeds. - output_type (
str, opcional, valor predeterminado"pil") — El formato de salida de la imagen generada. Elija entre PIL:PIL.Image.Imageonp.array. - return_dict (
bool, opcional, valor predeterminadoTrue) — Indica si se debe devolver un~pipelines.qwenimage.QwenImagePipelineOutputen lugar de una tupla simple. - attention_kwargs (
dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa alAttentionProcessordefinido enself.processordentro de diffusers.models.attention_processor. - callback_on_step_end (
Callable, opcional) — Una función que se llama al final de cada paso de desruido durante la inferencia. La función se llama con los siguientes argumentos:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargsincluirá una lista de todos los tensores especificados porcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, opcional) — La lista de entradas de tensor para la funcióncallback_on_step_end. Los tensores especificados en la lista se pasarán como argumentocallback_kwargs. Solo podrás incluir variables listadas en el atributo._callback_tensor_inputsde tu clase de pipeline. - max_sequence_length (
intpor defecto 512) — Longitud máxima de la secuencia para usar con elprompt.
Devuelve
~pipelines.qwenimage.QwenImagePipelineOutput o tuple
~pipelines.qwenimage.QwenImagePipelineOutput si return_dict es True, de lo contrario una tuple. Al devolver una tupla, el primer elemento es una lista con las imágenes generadas.
Función invocada al llamar a la pipeline para la generación.
Ejemplos:
>>> 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 )
Parámetros
- prompt (
strolist[str], opcional) — prompt a codificar - image (
torch.Tensor, opcional) — imagen que se va a codificar - device — (
torch.device): dispositivo de torch - num_images_per_prompt (
int) — número de imágenes que deben generarse por prompt - prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporcionan, las incrustaciones de texto se generarán a partir del argumento de entradaprompt.
QwenImageEditInpaintPipeline
clase diffusers.QwenImageEditInpaintPipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLQwenImagetext_encoder: Qwen2_5_VLForConditionalGenerationtokenizer: Qwen2Tokenizerprocessor: Qwen2VLProcessortransformer: QwenImageTransformer2DModel )
Parámetros
- transformer (QwenImageTransformer2DModel) — Arquitectura Conditional Transformer (MMDiT) para desruidar los latentes de imagen codificados.
- scheduler (FlowMatchEulerDiscreteScheduler) —
Un scheduler para usar en combinación con
transformerpara desruidar los latentes de imagen codificados. - vae (AutoencoderKL) — Modelo de Variational Auto-Encoder (VAE) para codificar y decodificar imágenes a partir de y hacia representaciones latentes.
- text_encoder (
Qwen2.5-VL-7B-Instruct) — Qwen2.5-VL-7B-Instruct, específicamente la variante Qwen2.5-VL-7B-Instruct. - tokenizer (
Qwen2Tokenizer) — Tokenizer de la clase https://huggingface.co/docs/transformers/en/model_doc/qwen2#transformers.Qwen2Tokenizer
El pipeline Qwen-Image-Edit para la edición de imágenes.
__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[str] = ['latents']max_sequence_length: int = 512 ) → ~pipelines.qwenimage.QwenImagePipelineOutput or tuple
Parámetros
- image (
torch.Tensor,PIL.Image.Image,np.ndarray,list[torch.Tensor],list[PIL.Image.Image]olist[np.ndarray]) —Image, array de numpy o tensor que representa un lote de imágenes para usarse como punto de partida. Tanto para arrays de numpy como para tensors de pytorch, el rango de valores esperado está entre[0, 1]Si es un tensor o una lista de tensors, la forma esperada debe ser(B, C, H, W)o(C, H, W). Si es un array de numpy o una lista de arrays, la forma esperada debe ser(B, H, W, C)o(H, W, C)También puede aceptar latentes de imagen comoimage, pero si se pasan latentes directamente, no se vuelven a codificar. - prompt (
strolist[str], opcional) — El prompt o los prompts para guiar la generación de la imagen. Si no se define, hay que pasarprompt_embedsen su lugar. - negative_prompt (
strolist[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasarnegative_prompt_embedsen su lugar. Se ignora cuando no se usa guía (es decir, se ignora sitrue_cfg_scaleno es mayor que1). - true_cfg_scale (
float, opcional, valor predeterminado 1.0) — true_cfg_scale (float, opcional, valor predeterminado 1.0): Escala de guía definida en Classifier-Free Diffusion Guidance.true_cfg_scalese define comowde la ecuación 2. de Imagen Paper. La guía sin clasificador se activa estableciendotrue_cfg_scale > 1y proporcionando unnegative_prompt. Una escala de guía más alta fomenta la generación de imágenes estrechamente vinculadas al textoprompt, generalmente a costa de una menor calidad de imagen. - mask_image (
torch.Tensor,PIL.Image.Image,np.ndarray,list[torch.Tensor],list[PIL.Image.Image]olist[np.ndarray]) —Image, array de numpy o tensor que representa un lote de imágenes para enmascararimage. Los píxeles blancos de la máscara se repintan, mientras que los píxeles negros se conservan. Simask_imagees una imagen PIL, se convierte a un solo canal (luminancia) antes de su uso. Si es un array de numpy o un tensor de pytorch, debe contener un solo canal de color (L) en lugar de 3, por lo que la forma esperada para un tensor de pytorch sería(B, 1, H, W),(B, H, W),(1, H, W),(H, W). Y para un array de numpy sería(B, H, W, 1),(B, H, W),(H, W, 1)o(H, W). - masked_image_latents (
torch.Tensor,list[torch.Tensor]) —Tensorque representa un lote de imágenes para enmascarar laimagegenerada por el VAE. Si no se proporciona, el tensor de latentes de la máscara se generará mediantemask_image. - height (
int, opcional, por defecto self.unet.config.sample_size * self.vae_scale_factor) — La altura en píxeles de la imagen generada. Por defecto, se establece en 1024 para obtener los mejores resultados. - width (
int, opcional, valor predeterminado self.unet.config.sample_size * self.vae_scale_factor) — El ancho en píxeles de la imagen generada. Por defecto, se establece en 1024 para obtener los mejores resultados. - padding_mask_crop (
int, opcional, valor predeterminadoNone) — El tamaño del margen en el recorte que se aplicará a la imagen y la máscara. Si esNone, no se aplica ningún recorte a image y mask_image. Sipadding_mask_cropno esNone, primero se busca una región rectangular con la misma relación de aspecto que la imagen y que contenga toda el área enmascarada, y luego se expande esa área en función depadding_mask_crop. A continuación, la imagen y mask_image se recortan según el área expandida antes de redimensionarlas al tamaño original de la imagen para el inpainting. Esto es útil cuando el área enmascarada es pequeña mientras que la imagen es grande y contiene información irrelevante para el inpainting, como el fondo. - strength (
float, opcional, valor predeterminado 1.0) — Indica el grado en que se transforma laimagede referencia. Debe estar entre 0 y 1.imagese utiliza como punto de partida y se añade más ruido a medida que aumenta elstrength. El número de pasos de desruido depende de la cantidad de ruido añadido inicialmente. Cuandostrengthes 1, el ruido añadido es máximo y el proceso de desruido se ejecuta durante el número completo de iteraciones especificado ennum_inference_steps. Un valor de 1 ignora esencialmenteimage. - num_inference_steps (
int, opcional, valor predeterminado 50) — El número de pasos de desruido. Más pasos de desruido suelen conducir a una imagen de mayor calidad a costa de una inferencia más lenta. - sigmas (
list[float], opcional) — Sigmas personalizados para usar en el proceso de desruido con programadores que admiten un argumentosigmasen su métodoset_timesteps. Si no se define, se usará el comportamiento predeterminado cuando se pasenum_inference_steps. - guidance_scale (
float, opcional, valor predeterminado None) — Un valor de escala de guía para modelos destilados de guía. A diferencia de la guía libre de clasificador tradicional, donde la escala de guía se aplica durante la inferencia mediante el reescalado de la predicción de ruido, los modelos destilados de guía toman la escala de guía directamente como un parámetro de entrada durante la pasada hacia adelante. La escala de guía se habilita estableciendoguidance_scale > 1. Una escala de guía más alta fomenta la generación de imágenes que están estrechamente vinculadas alpromptde texto, generalmente a costa de una menor calidad de imagen. Este parámetro en el pipeline está presente para soportar futuros modelos destilados de guía cuando aparezcan. Se ignora cuando no se utilizan modelos destilados de guía. Para habilitar la guía libre de clasificador tradicional, pasetrue_cfg_scale > 1.0ynegative_prompt(incluso un prompt negativo vacío como ” ” debería habilitar los cálculos de guía libre de clasificador). - num_images_per_prompt (
int, opcional, valor predeterminado 1) — El número de imágenes que se generarán por indicación. - generator (
torch.Generatorolist[torch.Generator], opcional) — Un generador o una lista de generadores de torch para hacer la generación determinista. - latents (
torch.Tensor, opcional) — Latentes ruidosos pregenerados, muestreados de una distribución gaussiana, que se usarán como entradas para la generación de imágenes. Se pueden utilizar para ajustar la misma generación con diferentes prompts. Si no se proporcionan, se generará un tensor de latentes mediante muestreo usando elgeneratoraleatorio suministrado. - prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporcionan, las incrustaciones de texto se generarán a partir del argumento de entradaprompt. - prompt_embeds_mask (
torch.Tensor, opcional) — Máscara de atención paraprompt_embeds. - negative_prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto negativo pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, negative_prompt_embeds se generará a partir del argumento de entradanegative_prompt. - negative_prompt_embeds_mask (
torch.Tensor, opcional) — Máscara de atención paranegative_prompt_embeds. - output_type (
str, opcional, valor predeterminado"pil") — El formato de salida de la imagen generada. Elija entre PIL:PIL.Image.Imageonp.array. - return_dict (
bool, opcional, valor predeterminadoTrue) — Indica si se debe devolver un~pipelines.qwenimage.QwenImagePipelineOutputen lugar de una tupla simple. - attention_kwargs (
dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa alAttentionProcessordefinido enself.processordentro de diffusers.models.attention_processor. - callback_on_step_end (
Callable, opcional) — Una función que se llama al final de cada paso de desruido durante la inferencia. La función se llama con los siguientes argumentos:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargsincluirá una lista de todos los tensores especificados porcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, opcional) — La lista de entradas de tensor para la funcióncallback_on_step_end. Los tensores especificados en la lista se pasarán como argumentocallback_kwargs. Solo podrás incluir variables listadas en el atributo._callback_tensor_inputsde tu clase de pipeline. - max_sequence_length (
intpor defecto 512) — Longitud máxima de la secuencia para usar con elprompt.
Devuelve
~pipelines.qwenimage.QwenImagePipelineOutput o tuple
~pipelines.qwenimage.QwenImagePipelineOutput si return_dict es True, de lo contrario una tuple. Al devolver una tupla, el primer elemento es una lista con las imágenes generadas.
Función invocada al llamar a la pipeline para la generación.
Ejemplos:
>>> 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 )
Parámetros
- prompt (
strolist[str], opcional) — prompt a codificar - image (
torch.Tensor, opcional) — imagen que se va a codificar - device — (
torch.device): dispositivo de torch - num_images_per_prompt (
int) — número de imágenes que deben generarse por prompt - prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporcionan, las incrustaciones de texto se generarán a partir del argumento de entradaprompt.
QwenImageControlNetPipeline
clase diffusers.QwenImageControlNetPipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLQwenImagetext_encoder: Qwen2_5_VLForConditionalGenerationtokenizer: Qwen2Tokenizertransformer: QwenImageTransformer2DModelcontrolnet: diffusers.models.controlnets.controlnet_qwenimage.QwenImageControlNetModel | diffusers.models.controlnets.controlnet_qwenimage.QwenImageMultiControlNetModel )
Parámetros
- transformer (QwenImageTransformer2DModel) — Arquitectura Conditional Transformer (MMDiT) para desruidar los latentes de imagen codificados.
- scheduler (FlowMatchEulerDiscreteScheduler) —
Un scheduler para usar en combinación con
transformerpara desruidar los latentes de imagen codificados. - vae (AutoencoderKL) — Modelo de Variational Auto-Encoder (VAE) para codificar y decodificar imágenes a partir de y hacia representaciones latentes.
- text_encoder (
Qwen2.5-VL-7B-Instruct) — Qwen2.5-VL-7B-Instruct, específicamente la variante Qwen2.5-VL-7B-Instruct. - tokenizer (
Qwen2Tokenizer) — Tokenizer de la clase https://huggingface.co/docs/transformers/en/model_doc/qwen2#transformers.Qwen2Tokenizer
El pipeline QwenImage para la generación de imágenes a partir de texto.
__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[str] = ['latents']max_sequence_length: int = 512 ) → ~pipelines.qwenimage.QwenImagePipelineOutput or tuple
Parámetros
- prompt (
strolist[str], opcional) — El prompt o los prompts para guiar la generación de la imagen. Si no se define, hay que pasarprompt_embedsen su lugar. - negative_prompt (
strolist[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasarnegative_prompt_embedsen su lugar. Se ignora cuando no se usa guía (es decir, se ignora sitrue_cfg_scaleno es mayor que1). - true_cfg_scale (
float, opcional, valor predeterminado 1.0) — Escala de guía definida en Classifier-Free Diffusion Guidance.true_cfg_scalese define comowde la ecuación 2 de Imagen Paper. La guía libre de clasificador se habilita estableciendotrue_cfg_scale > 1y proporcionando unnegative_prompt. Una escala de guía más alta fomenta la generación de imágenes estrechamente vinculadas al textoprompt, generalmente a costa de una menor calidad de imagen. - height (
int, opcional, por defecto self.unet.config.sample_size * self.vae_scale_factor) — La altura en píxeles de la imagen generada. Por defecto, se establece en 1024 para obtener los mejores resultados. - width (
int, opcional, valor predeterminado self.unet.config.sample_size * self.vae_scale_factor) — El ancho en píxeles de la imagen generada. Por defecto, se establece en 1024 para obtener los mejores resultados. - num_inference_steps (
int, opcional, valor predeterminado 50) — El número de pasos de desruido. Más pasos de desruido suelen conducir a una imagen de mayor calidad a costa de una inferencia más lenta. - sigmas (
list[float], opcional) — Sigmas personalizados para usar en el proceso de desruido con programadores que admiten un argumentosigmasen su métodoset_timesteps. Si no se define, se usará el comportamiento predeterminado cuando se pasenum_inference_steps. - guidance_scale (
float, opcional, valor predeterminado None) — Un valor de escala de guía para modelos destilados de guía. A diferencia de la guía libre de clasificador tradicional, donde la escala de guía se aplica durante la inferencia mediante el reescalado de la predicción de ruido, los modelos destilados de guía toman la escala de guía directamente como un parámetro de entrada durante la pasada hacia adelante. La escala de guía se habilita estableciendoguidance_scale > 1. Una escala de guía más alta fomenta la generación de imágenes que están estrechamente vinculadas alpromptde texto, generalmente a costa de una menor calidad de imagen. Este parámetro en el pipeline está presente para soportar futuros modelos destilados de guía cuando aparezcan. Se ignora cuando no se utilizan modelos destilados de guía. Para habilitar la guía libre de clasificador tradicional, pasetrue_cfg_scale > 1.0ynegative_prompt(incluso un prompt negativo vacío como ” ” debería habilitar los cálculos de guía libre de clasificador). - control_guidance_start (
floatolist[float], opcional, valor predeterminado 0.0) — El porcentaje de pasos totales en el que ControlNet comienza a aplicarse. - control_guidance_end (
floatolist[float], opcional, valor predeterminado 1.0) — El porcentaje de pasos totales en el que ControlNet deja de aplicarse. - control_image (
PipelineImageInput, opcional) — La condición de entrada de ControlNet para proporcionar orientación a la generación. - controlnet_conditioning_scale (
floatolist[float], opcional, valor predeterminado 1.0) — Las salidas de ControlNet se multiplican porcontrolnet_conditioning_scaleantes de sumarse al residual deltransformeroriginal. - num_images_per_prompt (
int, opcional, valor predeterminado 1) — El número de imágenes que se generarán por indicación. - generator (
torch.Generatorolist[torch.Generator], opcional) — Un generador o una lista de generadores de torch para hacer la generación determinista. - latents (
torch.Tensor, opcional) — Latentes ruidosos pregenerados, muestreados de una distribución gaussiana, que se usarán como entradas para la generación de imágenes. Se pueden utilizar para ajustar la misma generación con diferentes prompts. Si no se proporcionan, se generará un tensor de latentes mediante muestreo usando elgeneratoraleatorio suministrado. - prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporcionan, las incrustaciones de texto se generarán a partir del argumento de entradaprompt. - prompt_embeds_mask (
torch.Tensor, opcional) — Máscara de atención paraprompt_embeds. - negative_prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto negativo pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, negative_prompt_embeds se generará a partir del argumento de entradanegative_prompt. - negative_prompt_embeds_mask (
torch.Tensor, opcional) — Máscara de atención paranegative_prompt_embeds. - output_type (
str, opcional, valor predeterminado"pil") — El formato de salida de la imagen generada. Elija entre PIL:PIL.Image.Imageonp.array. - return_dict (
bool, opcional, valor predeterminadoTrue) — Indica si se debe devolver un~pipelines.qwenimage.QwenImagePipelineOutputen lugar de una tupla simple. - attention_kwargs (
dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa alAttentionProcessordefinido enself.processordentro de diffusers.models.attention_processor. - callback_on_step_end (
Callable, opcional) — Una función que se llama al final de cada paso de desruido durante la inferencia. La función se llama con los siguientes argumentos:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargsincluirá una lista de todos los tensores especificados porcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, opcional) — La lista de entradas de tensor para la funcióncallback_on_step_end. Los tensores especificados en la lista se pasarán como argumentocallback_kwargs. Solo podrás incluir variables listadas en el atributo._callback_tensor_inputsde tu clase de pipeline. - max_sequence_length (
intpor defecto 512) — Longitud máxima de la secuencia para usar con elprompt.
Devuelve
~pipelines.qwenimage.QwenImagePipelineOutput o tuple
~pipelines.qwenimage.QwenImagePipelineOutput si return_dict es True, de lo contrario una tuple. Al devolver una tupla, el primer elemento es una lista con las imágenes generadas.
Función invocada al llamar a la pipeline para la generación.
Ejemplos:
>>> 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 )
Parámetros
- prompt (
strolist[str], opcional) — prompt a codificar - device — (
torch.device): dispositivo de torch - num_images_per_prompt (
int) — número de imágenes que deben generarse por prompt - prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporcionan, las incrustaciones de texto se generarán a partir del argumento de entradaprompt.
QwenImageEditPlusPipeline
clase diffusers.QwenImageEditPlusPipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLQwenImagetext_encoder: Qwen2_5_VLForConditionalGenerationtokenizer: Qwen2Tokenizerprocessor: Qwen2VLProcessortransformer: QwenImageTransformer2DModel )
Parámetros
- transformer (QwenImageTransformer2DModel) — Arquitectura Conditional Transformer (MMDiT) para desruidar los latentes de imagen codificados.
- scheduler (FlowMatchEulerDiscreteScheduler) —
Un scheduler para usar en combinación con
transformerpara desruidar los latentes de imagen codificados. - vae (AutoencoderKL) — Modelo de Variational Auto-Encoder (VAE) para codificar y decodificar imágenes a partir de y hacia representaciones latentes.
- text_encoder (
Qwen2.5-VL-7B-Instruct) — Qwen2.5-VL-7B-Instruct, específicamente la variante Qwen2.5-VL-7B-Instruct. - tokenizer (
Qwen2Tokenizer) — Tokenizer de la clase https://huggingface.co/docs/transformers/en/model_doc/qwen2#transformers.Qwen2Tokenizer
El pipeline Qwen-Image-Edit para la edición de imágenes.
__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[str] = ['latents']max_sequence_length: int = 512 ) → ~pipelines.qwenimage.QwenImagePipelineOutput or tuple
Parámetros
- image (
torch.Tensor,PIL.Image.Image,np.ndarray,list[torch.Tensor],list[PIL.Image.Image]olist[np.ndarray]) —Image, array de numpy o tensor que representa un lote de imágenes para usarse como punto de partida. Tanto para arrays de numpy como para tensors de pytorch, el rango de valores esperado está entre[0, 1]Si es un tensor o una lista de tensors, la forma esperada debe ser(B, C, H, W)o(C, H, W). Si es un array de numpy o una lista de arrays, la forma esperada debe ser(B, H, W, C)o(H, W, C)También puede aceptar latentes de imagen comoimage, pero si se pasan latentes directamente, no se vuelven a codificar. - prompt (
strolist[str], opcional) — El prompt o los prompts para guiar la generación de la imagen. Si no se define, hay que pasarprompt_embedsen su lugar. - negative_prompt (
strolist[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasarnegative_prompt_embedsen su lugar. Se ignora cuando no se usa guía (es decir, se ignora sitrue_cfg_scaleno es mayor que1). - true_cfg_scale (
float, opcional, valor predeterminado 1.0) — true_cfg_scale (float, opcional, valor predeterminado 1.0): Escala de guía definida en Classifier-Free Diffusion Guidance.true_cfg_scalese define comowde la ecuación 2. de Imagen Paper. La guía sin clasificador se activa estableciendotrue_cfg_scale > 1y proporcionando unnegative_prompt. Una escala de guía más alta fomenta la generación de imágenes estrechamente vinculadas al textoprompt, generalmente a costa de una menor calidad de imagen. - height (
int, opcional, por defecto self.unet.config.sample_size * self.vae_scale_factor) — La altura en píxeles de la imagen generada. Por defecto, se establece en 1024 para obtener los mejores resultados. - width (
int, opcional, valor predeterminado self.unet.config.sample_size * self.vae_scale_factor) — El ancho en píxeles de la imagen generada. Por defecto, se establece en 1024 para obtener los mejores resultados. - num_inference_steps (
int, opcional, valor predeterminado 50) — El número de pasos de desruido. Más pasos de desruido suelen conducir a una imagen de mayor calidad a costa de una inferencia más lenta. - sigmas (
list[float], opcional) — Sigmas personalizados para usar en el proceso de desruido con programadores que admiten un argumentosigmasen su métodoset_timesteps. Si no se define, se usará el comportamiento predeterminado cuando se pasenum_inference_steps. - guidance_scale (
float, opcional, valor predeterminado None) — Un valor de escala de guía para modelos destilados de guía. A diferencia de la guía libre de clasificador tradicional, donde la escala de guía se aplica durante la inferencia mediante el reescalado de la predicción de ruido, los modelos destilados de guía toman la escala de guía directamente como un parámetro de entrada durante la pasada hacia adelante. La escala de guía se habilita estableciendoguidance_scale > 1. Una escala de guía más alta fomenta la generación de imágenes que están estrechamente vinculadas alpromptde texto, generalmente a costa de una menor calidad de imagen. Este parámetro en el pipeline está presente para soportar futuros modelos destilados de guía cuando aparezcan. Se ignora cuando no se utilizan modelos destilados de guía. Para habilitar la guía libre de clasificador tradicional, pasetrue_cfg_scale > 1.0ynegative_prompt(incluso un prompt negativo vacío como ” ” debería habilitar los cálculos de guía libre de clasificador). - num_images_per_prompt (
int, opcional, valor predeterminado 1) — El número de imágenes que se generarán por indicación. - generator (
torch.Generatorolist[torch.Generator], opcional) — Un generador o una lista de generadores de torch para hacer la generación determinista. - latents (
torch.Tensor, opcional) — Latentes ruidosos pregenerados, muestreados de una distribución gaussiana, que se usarán como entradas para la generación de imágenes. Se pueden utilizar para ajustar la misma generación con diferentes prompts. Si no se proporcionan, se generará un tensor de latentes mediante muestreo usando elgeneratoraleatorio suministrado. - prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporcionan, las incrustaciones de texto se generarán a partir del argumento de entradaprompt. - prompt_embeds_mask (
torch.Tensor, opcional) — Máscara de atención paraprompt_embeds. - negative_prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto negativo pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, negative_prompt_embeds se generará a partir del argumento de entradanegative_prompt. - negative_prompt_embeds_mask (
torch.Tensor, opcional) — Máscara de atención paranegative_prompt_embeds. - output_type (
str, opcional, valor predeterminado"pil") — El formato de salida de la imagen generada. Elija entre PIL:PIL.Image.Imageonp.array. - return_dict (
bool, opcional, valor predeterminadoTrue) — Indica si se debe devolver un~pipelines.qwenimage.QwenImagePipelineOutputen lugar de una tupla simple. - attention_kwargs (
dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa alAttentionProcessordefinido enself.processordentro de diffusers.models.attention_processor. - callback_on_step_end (
Callable, opcional) — Una función que se llama al final de cada paso de desruido durante la inferencia. La función se llama con los siguientes argumentos:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargsincluirá una lista de todos los tensores especificados porcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, opcional) — La lista de entradas de tensor para la funcióncallback_on_step_end. Los tensores especificados en la lista se pasarán como argumentocallback_kwargs. Solo podrás incluir variables listadas en el atributo._callback_tensor_inputsde tu clase de pipeline. - max_sequence_length (
intpor defecto 512) — Longitud máxima de la secuencia para usar con elprompt.
Devuelve
~pipelines.qwenimage.QwenImagePipelineOutput o tuple
~pipelines.qwenimage.QwenImagePipelineOutput si return_dict es True, de lo contrario una tuple. Al devolver una tupla, el primer elemento es una lista con las imágenes generadas.
Función invocada al llamar a la pipeline para la generación.
Ejemplos:
>>> 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 )
Parámetros
- prompt (
strolist[str], opcional) — prompt a codificar - image (
torch.Tensor, opcional) — imagen que se va a codificar - device — (
torch.device): dispositivo de torch - num_images_per_prompt (
int) — número de imágenes que deben generarse por prompt - prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporcionan, las incrustaciones de texto se generarán a partir del argumento de entradaprompt.
QwenImageLayeredPipeline
clase diffusers.QwenImageLayeredPipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLQwenImagetext_encoder: Qwen2_5_VLForConditionalGenerationtokenizer: Qwen2Tokenizerprocessor: Qwen2VLProcessortransformer: QwenImageTransformer2DModel )
Parámetros
- transformer (QwenImageTransformer2DModel) — Arquitectura Conditional Transformer (MMDiT) para desruidar los latentes de imagen codificados.
- scheduler (FlowMatchEulerDiscreteScheduler) —
Un scheduler para usar en combinación con
transformerpara desruidar los latentes de imagen codificados. - vae (AutoencoderKL) — Modelo de Variational Auto-Encoder (VAE) para codificar y decodificar imágenes a partir de y hacia representaciones latentes.
- text_encoder (
Qwen2.5-VL-7B-Instruct) — Qwen2.5-VL-7B-Instruct, específicamente la variante Qwen2.5-VL-7B-Instruct. - tokenizer (
Qwen2Tokenizer) — Tokenizer de la clase https://huggingface.co/docs/transformers/en/model_doc/qwen2#transformers.Qwen2Tokenizer
El pipeline Qwen-Image-Layered para la descomposición de imágenes.
__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[str] = ['latents']max_sequence_length: int = 512resolution: int = 640cfg_normalize: bool = Falseuse_en_prompt: bool = False ) → ~pipelines.qwenimage.QwenImagePipelineOutput or tuple
Parámetros
- image (
torch.Tensor,PIL.Image.Image,np.ndarray,list[torch.Tensor],list[PIL.Image.Image]olist[np.ndarray]) —Image, array de numpy o tensor que representa un lote de imágenes para usarse como punto de partida. Tanto para arrays de numpy como para tensors de pytorch, el rango de valores esperado está entre[0, 1]Si es un tensor o una lista de tensors, la forma esperada debe ser(B, C, H, W)o(C, H, W). Si es un array de numpy o una lista de arrays, la forma esperada debe ser(B, H, W, C)o(H, W, C)También puede aceptar latentes de imagen comoimage, pero si se pasan latentes directamente, no se vuelven a codificar. - prompt (
strolist[str], opcional) — El prompt o los prompts para guiar la generación de la imagen. Si no se define, hay que pasarprompt_embedsen su lugar. - negative_prompt (
strolist[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasarnegative_prompt_embedsen su lugar. Se ignora cuando no se usa guía (es decir, se ignora sitrue_cfg_scaleno es mayor que1). - true_cfg_scale (
float, opcional, valor predeterminado 1.0) — true_cfg_scale (float, opcional, valor predeterminado 1.0): Escala de guía definida en Classifier-Free Diffusion Guidance.true_cfg_scalese define comowde la ecuación 2. de Imagen Paper. La guía sin clasificador se activa estableciendotrue_cfg_scale > 1y proporcionando unnegative_prompt. Una escala de guía más alta fomenta la generación de imágenes estrechamente vinculadas al textoprompt, generalmente a costa de una menor calidad de imagen. - layers (
int, opcional, valor predeterminado 4) — Número de capas latentes que se generarán para la salida por capas. - num_inference_steps (
int, opcional, valor predeterminado 50) — El número de pasos de desruido. Más pasos de desruido suelen conducir a una imagen de mayor calidad a costa de una inferencia más lenta. - sigmas (
list[float], opcional) — Sigmas personalizados para usar en el proceso de desruido con programadores que admiten un argumentosigmasen su métodoset_timesteps. Si no se define, se usará el comportamiento predeterminado cuando se pasenum_inference_steps. - guidance_scale (
float, opcional, valor predeterminado None) — Un valor de escala de guía para modelos destilados de guía. A diferencia de la guía libre de clasificador tradicional, donde la escala de guía se aplica durante la inferencia mediante el reescalado de la predicción de ruido, los modelos destilados de guía toman la escala de guía directamente como un parámetro de entrada durante la pasada hacia adelante. La escala de guía se habilita estableciendoguidance_scale > 1. Una escala de guía más alta fomenta la generación de imágenes que están estrechamente vinculadas alpromptde texto, generalmente a costa de una menor calidad de imagen. Este parámetro en el pipeline está presente para soportar futuros modelos destilados de guía cuando aparezcan. Se ignora cuando no se utilizan modelos destilados de guía. Para habilitar la guía libre de clasificador tradicional, pasetrue_cfg_scale > 1.0ynegative_prompt(incluso un prompt negativo vacío como ” ” debería habilitar los cálculos de guía libre de clasificador). - num_images_per_prompt (
int, opcional, valor predeterminado 1) — El número de imágenes que se generarán por indicación. - generator (
torch.Generatorolist[torch.Generator], opcional) — Un generador o una lista de generadores de torch para hacer la generación determinista. - latents (
torch.Tensor, opcional) — Latentes ruidosos pregenerados, muestreados de una distribución gaussiana, que se usarán como entradas para la generación de imágenes. Se pueden utilizar para ajustar la misma generación con diferentes prompts. Si no se proporcionan, se generará un tensor de latentes mediante muestreo usando elgeneratoraleatorio suministrado. - prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporcionan, las incrustaciones de texto se generarán a partir del argumento de entradaprompt. - prompt_embeds_mask (
torch.Tensor, opcional) — Máscara de atención paraprompt_embeds. - negative_prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto negativo pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, negative_prompt_embeds se generará a partir del argumento de entradanegative_prompt. - negative_prompt_embeds_mask (
torch.Tensor, opcional) — Máscara de atención paranegative_prompt_embeds. - output_type (
str, opcional, valor predeterminado"pil") — El formato de salida de la imagen generada. Elija entre PIL:PIL.Image.Imageonp.array. - return_dict (
bool, opcional, valor predeterminadoTrue) — Indica si se debe devolver un~pipelines.qwenimage.QwenImagePipelineOutputen lugar de una tupla simple. - attention_kwargs (
dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa alAttentionProcessordefinido enself.processordentro de diffusers.models.attention_processor. - callback_on_step_end (
Callable, opcional) — Una función que se llama al final de cada paso de desruido durante la inferencia. La función se llama con los siguientes argumentos:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargsincluirá una lista de todos los tensores especificados porcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
List, opcional) — La lista de entradas de tensor para la funcióncallback_on_step_end. Los tensores especificados en la lista se pasarán como argumentocallback_kwargs. Solo podrá incluir variables listadas en el atributo._callback_tensor_inputsde su clase de pipeline. - max_sequence_length (
intpor defecto 512) — Longitud máxima de la secuencia para usar con elprompt. - resolution (
int, opcional, valor predeterminado 640) — utiliza un bucket diferente en (640, 1024) para determinar la resolución de la condición y la de salida - cfg_normalize (
bool, opcional, valor predeterminadoFalse) — si se habilita la normalización de cfg. - use_en_prompt (
bool, opcional, valor predeterminadoFalse) — idioma de la descripción automática si el usuario no proporciona una
Devuelve
~pipelines.qwenimage.QwenImagePipelineOutput o tuple
~pipelines.qwenimage.QwenImagePipelineOutput si return_dict es True, de lo contrario una tuple. Al devolver una tupla, el primer elemento es una lista con las imágenes generadas.
Función invocada al llamar a la pipeline para la generación.
Ejemplos:
>>> 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 )
Parámetros
- prompt (
strolist[str], opcional) — prompt a codificar - device — (
torch.device): dispositivo de torch - num_images_per_prompt (
int) — número de imágenes que deben generarse por prompt - prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporcionan, las incrustaciones de texto se generarán a partir del argumento de entradaprompt.
QwenImagePipelineOutput
clase diffusers.pipelines.qwenimage.pipeline_output.QwenImagePipelineOutput
< source >( images: list[PIL.Image.Image] | numpy.ndarray )
Clase de salida para las tuberías de Stable Diffusion.