Diffusers documentation

Guía de atención perturbada

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

and get access to the augmented documentation experience

to get started

Guía de atención perturbada

LoRA

Perturbed-Attention Guidance (PAG) es una nueva guía de muestreo de difusión que mejora la calidad de las muestras tanto en configuraciones incondicionales como condicionales, lográndolo sin necesidad de entrenamiento adicional ni de la integración de módulos externos.

PAG se introdujo en Self-Rectifying Diffusion Sampling with Perturbed-Attention Guidance por Donghoon Ahn, Hyoungwon Cho, Jaewon Min, Wooseok Jang, Jungwoo Kim, SeonHwa Kim, Hyun Hee Park, Kyong Hwan Jin y Seungryong Kim.

El resumen del artículo es:

Estudios recientes han demostrado que los modelos de difusión son capaces de generar muestras de alta calidad, pero su calidad depende en gran medida de las técnicas de guía de muestreo, como la guía del clasificador (CG) y la guía libre de clasificador (CFG). Estas técnicas a menudo no son aplicables en la generación incondicional o en diversas tareas descendentes, como la restauración de imágenes. En este artículo, proponemos una guía de muestreo novedosa, llamada Perturbed-Attention Guidance (PAG), que mejora la calidad de las muestras de difusión tanto en configuraciones incondicionales como condicionales, lográndolo sin necesidad de entrenamiento adicional ni de la integración de módulos externos. PAG está diseñado para mejorar progresivamente la estructura de las muestras a lo largo del proceso de desruido. Implica generar muestras intermedias con estructura degradada sustituyendo mapas de autoatención seleccionados en la U-Net de difusión por una matriz identidad, considerando la capacidad de los mecanismos de autoatención para capturar información estructural, y guiando el proceso de desruido alejándolo de estas muestras degradadas. Tanto en ADM como en Stable Diffusion, PAG mejora de manera sorprendente la calidad de las muestras en escenarios condicionales e incluso incondicionales. Además, PAG mejora significativamente el rendimiento de la línea base en diversas tareas descendentes donde las guías existentes, como CG o CFG, no pueden aprovecharse por completo, incluyendo ControlNet con prompts vacíos y la restauración de imágenes, como el inpainting y el desenfocado.

PAG se puede utilizar especificando pag_applied_layers como parámetro al instanciar un pipeline de PAG. Puede ser una sola cadena o una lista de cadenas. Cada cadena puede ser un identificador de capa único o una expresión regular para identificar una o más capas.

  • Identificador completo como una cadena normal: down_blocks.2.attentions.0.transformer_blocks.0.attn1.processor
  • Identificador completo como RegEx: down_blocks.2.(attentions|motion_modules).0.transformer_blocks.0.attn1.processor
  • Identificador parcial como RegEx: down_blocks.2 o attn1
  • Lista de identificadores (puede ser una combinación de cadenas y ReGex): ["blocks.1", "blocks.(14|20)", r"down_blocks\.(2,3)"]

Dado que RegEx se admite como método para coincidir con identificadores de capas, es crucial utilizarlo correctamente; de lo contrario, podría haber un comportamiento inesperado. La forma recomendada de usar PAG es especificar las capas como blocks.{layer_index} y blocks.({layer_index_1|layer_index_2|...}). Usarlo de cualquier otra manera, aunque sea posible, puede omitir nuestras comprobaciones básicas de validación y darte resultados inesperados.

Tareas generales

Puedes aplicar PAG a StableDiffusionXLPipeline para tareas como texto a imagen, imagen a imagen e inpainting. Para habilitar PAG para una tarea específica, carga el pipeline usando la API AutoPipeline con la bandera enable_pag=True y el argumento pag_applied_layers.

🤗 Diffusers actualmente solo admite el uso de PAG con las pipelines seleccionadas de SDXL y PixArtSigmaPAGPipeline. Pero no dudes en abrir una solicitud de funcionalidad si deseas agregar soporte para PAG a una nueva pipeline.

Texto a imagen
Imagen a imagen
Inpainting
from diffusers import AutoPipelineForText2Image
from diffusers.utils import load_image
import torch

pipeline = AutoPipelineForText2Image.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
    enable_pag=True,
    pag_applied_layers=["mid"],
    dtype=torch.float16
)
pipeline.enable_model_cpu_offload()

El argumento pag_applied_layers permite especificar a qué capas se aplica PAG. Además, puede usar el método set_pag_applied_layers para actualizar estas capas después de que se haya creado el pipeline. Consulte la sección pag_applied_layers para obtener más información sobre cómo aplicar PAG a otras capas.

Si ya tienes un pipeline creado y cargado, puedes activar PAG en él usando la API from_pipe con la bandera enable_pag. Internamente, se crea un pipeline PAG basado en el pipeline y la tarea que especificaste. En el ejemplo siguiente, como usamos AutoPipelineForText2Image y pasamos un StableDiffusionXLPipeline, se crea un StableDiffusionXLPAGPipeline en consecuencia. Ten en cuenta que esto no requiere memoria adicional, y tendrás tanto StableDiffusionXLPipeline como StableDiffusionXLPAGPipeline cargados y listos para usar. Puedes leer más sobre la API from_pipe y cómo reutilizar pipelines en diffuser aquí.

pipeline_sdxl = AutoPipelineForText2Image.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16)
pipeline = AutoPipelineForText2Image.from_pipe(pipeline_sdxl, enable_pag=True)

Para generar una imagen, también es necesario pasar un pag_scale. A medida que pag_scale aumenta, las imágenes adquieren estructuras más coherentes semánticamente y presentan menos artefactos. Sin embargo, una escala de guía demasiado grande puede resultar en texturas más suaves y una ligera saturación en las imágenes, de manera similar a CFG. Se utiliza pag_scale=3.0 en la demo oficial y funciona bien en la mayoría de los casos de uso, pero no dudes en experimentar y seleccionar el valor adecuado según tus necesidades! PAG se desactiva cuando pag_scale=0.

prompt = "an insect robot preparing a delicious meal, anime style"

for pag_scale in [0.0, 3.0]:
    generator = torch.Generator(device="cpu").manual_seed(0)
    images = pipeline(
        prompt=prompt,
        num_inference_steps=25,
        guidance_scale=7.0,
        generator=generator,
        pag_scale=pag_scale,
    ).images
imagen generada sin PAG
imagen generada con PAG

PAG con ControlNet

Para usar PAG con ControlNet, primero cree un controlnet. A continuación, pase el controlnet y otros argumentos de PAG al método from_pretrained del AutoPipeline para la tarea especificada.

from diffusers import AutoPipelineForText2Image, ControlNetModel
import torch

controlnet = ControlNetModel.from_pretrained(
    "diffusers/controlnet-canny-sdxl-1.0", dtype=torch.float16
)

pipeline = AutoPipelineForText2Image.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
    controlnet=controlnet,
    enable_pag=True,
    pag_applied_layers="mid",
    dtype=torch.float16
)
pipeline.enable_model_cpu_offload()

Si ya tienes un pipeline de controlnet y quieres habilitar PAG, puedes usar la API from_pipe: AutoPipelineForText2Image.from_pipe(pipeline_controlnet, enable_pag=True)

Puede usar el pipeline de la misma manera que normalmente usa los pipelines de ControlNet, con la opción adicional de especificar un parámetro pag_scale. Tenga en cuenta que PAG funciona bien para la generación incondicional. En este ejemplo, generaremos una imagen sin un prompt.

from diffusers.utils import load_image
canny_image = load_image(
    "https://huggingface.co/datasets/YiYiXu/testing-images/resolve/main/pag_control_input.png"
)

for pag_scale in [0.0, 3.0]:
    generator = torch.Generator(device="cpu").manual_seed(1)
    images = pipeline(
        prompt="",
        controlnet_conditioning_scale=controlnet_conditioning_scale,
        image=canny_image,
        num_inference_steps=50,
        guidance_scale=0,
        generator=generator,
        pag_scale=pag_scale,
    ).images
    images[0]
imagen generada sin PAG
imagen generada con PAG

PAG con IP-Adapter

IP-Adapter es un modelo popular que se puede integrar en modelos de difusión para habilitar el uso de imágenes como prompt sin realizar cambios en el modelo subyacente. Puedes habilitar PAG en un pipeline con IP-Adapter cargado.

from diffusers import AutoPipelineForText2Image
from diffusers.utils import load_image
from transformers import CLIPVisionModelWithProjection
import torch

image_encoder = CLIPVisionModelWithProjection.from_pretrained(
    "h94/IP-Adapter",
    subfolder="models/image_encoder",
    dtype=torch.float16
)

pipeline = AutoPipelineForText2Image.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
    image_encoder=image_encoder,
    enable_pag=True,
    dtype=torch.float16
).to("cuda")  # or "mps", "xpu", "cpu"

pipeline.load_ip_adapter("h94/IP-Adapter", subfolder="sdxl_models", weight_name="ip-adapter-plus_sdxl_vit-h.bin")

pag_scales = 5.0
ip_adapter_scales = 0.8

image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/ip_adapter_diner.png")

pipeline.set_ip_adapter_scale(ip_adapter_scale)
generator = torch.Generator(device="cpu").manual_seed(0)
images = pipeline(
    prompt="a polar bear sitting in a chair drinking a milkshake",
    ip_adapter_image=image,
    negative_prompt="deformed, ugly, wrong proportion, low res, bad anatomy, worst quality, low quality",
    num_inference_steps=25,
    guidance_scale=3.0,
    generator=generator,
    pag_scale=pag_scale,
).images
images[0]

PAG reduce los artefactos y mejora la composición general.

imagen generada sin PAG
imagen generada con PAG

Configurar parámetros

pag_applied_layers

El argumento pag_applied_layers permite especificar a qué capas se aplica PAG. De forma predeterminada, solo se aplica a los bloques intermedios. Cambiar esta configuración tendrá un impacto significativo en la salida. Puede utilizar el método set_pag_applied_layers para ajustar las capas de PAG después de crear la pipeline, lo que le ayuda a encontrar las capas óptimas para su modelo.

Como ejemplo, aquí están las imágenes generadas con pag_layers = ["down.block_2"] y pag_layers = ["down.block_2", "up.block_1.attentions_0"]

prompt = "an insect robot preparing a delicious meal, anime style"
pipeline.set_pag_applied_layers(pag_layers)
generator = torch.Generator(device="cpu").manual_seed(0)
images = pipeline(
    prompt=prompt,
    num_inference_steps=25,
    guidance_scale=guidance_scale,
    generator=generator,
    pag_scale=pag_scale,
).images
images[0]
down.block_2 + up.block1.attentions_0
down.block_2

AnimateDiffPAGPipeline

clase diffusers.AnimateDiffPAGPipeline

< >

( vae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizerunet: diffusers.models.unets.unet_2d_condition.UNet2DConditionModel | diffusers.models.unets.unet_motion_model.UNetMotionModelmotion_adapter: MotionAdapterscheduler: KarrasDiffusionSchedulersfeature_extractor: CLIPImageProcessorPil = Noneimage_encoder: CLIPVisionModelWithProjection = Nonepag_applied_layers: str | list[str] = 'mid_block.*attn1' )

Parámetros

  • vae (AutoencoderKL) — Modelo de Variational Auto-Encoder (VAE) para codificar y decodificar imágenes a partir de y hacia representaciones latentes.
  • text_encoder (CLIPTextModel) — Codificador de texto congelado (clip-vit-large-patch14).
  • tokenizer (CLIPTokenizer) — Un CLIPTokenizer para tokenizar texto.
  • unet (UNet2DConditionModel) — Un UNet2DConditionModel utilizado para crear un UNetMotionModel que desruidice los latentes de video codificados.
  • motion_adapter (MotionAdapter) — Un MotionAdapter para usar en combinación con unet para desruidar los latentes de video codificados.
  • scheduler (SchedulerMixin) — Un scheduler para usar en combinación con unet para desruidar los latentes de la imagen codificada. Puede ser uno de DDIMScheduler, LMSDiscreteScheduler o PNDMScheduler.

Pipeline para la generación de texto a video utilizando AnimateDiff y Perturbed Attention Guidance.

Este modelo hereda de DiffusionPipeline. Consulta la documentación de la clase superior para los métodos genéricos implementados en todas las tuberías (descarga, guardado, ejecución en un dispositivo específico, etc.).

El pipeline también hereda los siguientes métodos de carga:

__call__

< >

( prompt: str | list[str] | None = Nonenum_frames: int | None = 16height: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 50guidance_scale: float = 7.5negative_prompt: str | list[str] | None = Nonenum_videos_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Noneclip_skip: int | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']decode_chunk_size: int = 16pag_scale: float = 3.0pag_adaptive_scale: float = 0.0 ) → AnimateDiffPipelineOutput or tuple

Parámetros

  • prompt (str o list[str], opcional) — El prompt o prompts para guiar la generación de imágenes. Si no se define, debe pasar prompt_embeds.
  • height (int, opcional, valor predeterminado self.unet.config.sample_size * self.vae_scale_factor) — La altura en píxeles del video generado.
  • width (int, opcional, valor predeterminado self.unet.config.sample_size * self.vae_scale_factor) — El ancho en píxeles del video generado.
  • num_frames (int, opcional, valor predeterminado 16) — El número de fotogramas de vídeo que se generan. El valor predeterminado es de 16 fotogramas, lo que a 8 fotogramas por segundo equivale a 2 segundos de vídeo.
  • num_inference_steps (int, opcional, valor predeterminado 50) — El número de pasos de desruido. Más pasos de desruido suelen dar lugar a videos de mayor calidad a costa de una inferencia más lenta.
  • guidance_scale (float, opcional, valor predeterminado 7.5) — Un valor de escala de guía más alto anima al modelo a generar imágenes estrechamente vinculadas al prompt de texto a costa de una menor calidad de imagen. La escala de guía se habilita cuando guidance_scale > 1.
  • negative_prompt (str o list[str], opcional) — El prompt o los prompts para guiar lo que no debe incluirse en la generación de imágenes. Si no se define, es necesario pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (guidance_scale < 1).
  • num_videos_per_prompt (int, opcional, valor predeterminado 1) — El número de vídeos que se generarán por prompt.
  • eta (float, opcional, valor predeterminado 0.0) — Corresponde al parámetro eta (η) del artículo DDIM. Solo se aplica al DDIMScheduler y se ignora en otros programadores.
  • generator (torch.Generator o list[torch.Generator], opcional) — Un torch.Generator para hacer que la generación sea determinista.
  • latents (torch.Tensor, opcional) — Latentes ruidosos pregenerados muestreados de una distribución gaussiana, para usarse como entradas para la generación de video. Se pueden usar para ajustar la misma generación con diferentes prompts. Si no se proporcionan, se genera un tensor de latentes mediante muestreo usando el generator aleatorio suministrado. Los latentes deben tener la forma (batch_size, num_channel, num_frames, height, width).
  • prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto (ponderación del prompt). Si no se proporcionan, las incrustaciones de texto se generan a partir del argumento de entrada prompt.
  • negative_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto negativo pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto (ponderación del prompt). Si no se proporcionan, negative_prompt_embeds se generan a partir del argumento de entrada negative_prompt.
  • ip_adapter_image — (PipelineImageInput, opcional): Entrada de imagen opcional para trabajar con IP Adapters.
  • ip_adapter_image_embeds (list[torch.Tensor], opcional) — Incrustaciones de imagen pregeneradas para IP-Adapter. Debe ser una lista de la misma longitud que el número de IP-adapters. Cada elemento debe ser un tensor de forma (batch_size, num_images, emb_dim). Debe contener la incrustación de imagen negativa si do_classifier_free_guidance está establecido en True. Si no se proporciona, las incrustaciones se calculan a partir del argumento de entrada ip_adapter_image.
  • output_type (str, opcional, valor predeterminado "pil") — El formato de salida del video generado. Elija entre torch.Tensor, PIL.Image o np.array.
  • return_dict (bool, opcional, valor predeterminado True) — Indica si se debe devolver un ~pipelines.text_to_video_synthesis.TextToVideoSDPipelineOutput en lugar de una tupla simple.
  • cross_attention_kwargs (dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa al AttentionProcessor tal como se define en self.processor.
  • clip_skip (int, opcional) — Número de capas que se omitirán de CLIP al calcular los embeddings del prompt. Un valor de 1 significa que se utilizará la salida de la penúltima capa para calcular los embeddings del prompt.
  • 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_kwargs incluirá una lista de todos los tensores especificados por callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, opcional) — La lista de entradas de tensor para la función callback_on_step_end. Los tensores especificados en la lista se pasarán como argumento callback_kwargs. Solo podrás incluir variables listadas en el atributo ._callback_tensor_inputs de tu clase de pipeline.
  • decode_chunk_size (int, opcional, valor predeterminado 16) — El número de fotogramas que se decodifican a la vez al llamar al método decode_latents.
  • pag_scale (float, opcional, valor predeterminado 3.0) — El factor de escala para la guía de atención perturbada. Si se establece en 0.0, no se utilizará la guía de atención perturbada.
  • pag_adaptive_scale (float, opcional, valor predeterminado 0.0) — El factor de escala adaptativo para la guía de atención perturbada. Si se establece en 0.0, se utiliza pag_scale.

Devuelve

AnimateDiffPipelineOutput o tuple

Si return_dict es True, se devuelve AnimateDiffPipelineOutput; en caso contrario, se devuelve una tuple cuyo primer elemento es una lista con los fotogramas generados.

La función de llamada para el pipeline de generación.

Ejemplos:

>>> import torch
>>> from diffusers import AnimateDiffPAGPipeline, MotionAdapter, DDIMScheduler
>>> from diffusers.utils import export_to_gif

>>> model_id = "SG161222/Realistic_Vision_V5.1_noVAE"
>>> motion_adapter_id = "guoyww/animatediff-motion-adapter-v1-5-2"
>>> motion_adapter = MotionAdapter.from_pretrained(motion_adapter_id)
>>> scheduler = DDIMScheduler.from_pretrained(
...     model_id, subfolder="scheduler", beta_schedule="linear", steps_offset=1, clip_sample=False
... )
>>> pipe = AnimateDiffPAGPipeline.from_pretrained(
...     model_id,
...     motion_adapter=motion_adapter,
...     scheduler=scheduler,
...     pag_applied_layers=["mid"],
...     torch_dtype=torch.float16,
... ).to("cuda")

>>> video = pipe(
...     prompt="car, futuristic cityscape with neon lights, street, no human",
...     negative_prompt="low quality, bad quality",
...     num_inference_steps=25,
...     guidance_scale=6.0,
...     pag_scale=3.0,
...     generator=torch.Generator().manual_seed(42),
... ).frames[0]

>>> export_to_gif(video, "animatediff_pag.gif")

encode_prompt

< >

( promptdevicenum_images_per_promptdo_classifier_free_guidancenegative_prompt = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = None )

Parámetros

  • prompt (str o list[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
  • do_classifier_free_guidance (bool) — si se debe usar classifier free guidance o no
  • negative_prompt (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si guidance_scale es menor que 1).
  • 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 entrada prompt.
  • 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 entrada negative_prompt.
  • lora_scale (float, opcional) — Una escala LoRA que se aplicará a todas las capas LoRA del codificador de texto si se cargan capas LoRA.
  • clip_skip (int, opcional) — Número de capas que se omitirán de CLIP al calcular los embeddings del prompt. Un valor de 1 significa que se utilizará la salida de la penúltima capa para calcular los embeddings del prompt.

Codifica el prompt en estados ocultos del codificador de texto.

HunyuanDiTPAGPipeline

clase diffusers.HunyuanDiTPAGPipeline

< >

( vae: AutoencoderKLtext_encoder: BertModeltokenizer: BertTokenizertransformer: HunyuanDiT2DModelscheduler: DDPMSchedulersafety_checker: diffusers.pipelines.stable_diffusion.safety_checker.StableDiffusionSafetyChecker | None = Nonefeature_extractor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = Nonerequires_safety_checker: bool = Truetext_encoder_2: transformers.models.t5.modeling_t5.T5EncoderModel | None = Nonetokenizer_2: transformers.models.t5.tokenization_t5.T5Tokenizer | None = Nonepag_applied_layers: str | list[str] = 'blocks.1' )

Parámetros

  • vae (AutoencoderKL) — Modelo de Variational Auto-Encoder (VAE) para codificar y decodificar imágenes a partir de representaciones latentes. Utilizamos sdxl-vae-fp16-fix.
  • text_encoder (~transformers.BertModel, ~transformers.CLIPTextModel | None) — Codificador de texto congelado (clip-vit-large-patch14). HunyuanDiT utiliza un [CLIP bilingüe] afinado.
  • tokenizer (~transformers.BertTokenizer, ~transformers.CLIPTokenizer | None) — Un BertTokenizer o CLIPTokenizer para tokenizar el texto.
  • transformer (HunyuanDiT2DModel) — El modelo HunyuanDiT diseñado por Tencent Hunyuan.
  • text_encoder_2 (T5EncoderModel) — El codificador mT5. Específicamente, es ‘t5-v1_1-xxl’.
  • tokenizer_2 (T5Tokenizer) — El tokenizador para el incrustador mT5.
  • scheduler (DDPMScheduler) — Un scheduler para usar en combinación con HunyuanDiT para desruidar los latentes de imagen codificados.

Pipeline para la generación de imágenes a partir de inglés/chino utilizando HunyuanDiT y Perturbed Attention Guidance.

Este modelo hereda de DiffusionPipeline. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos los pipelines (como la descarga o el guardado, la ejecución en un dispositivo específico, etc.)

HunyuanDiT utiliza dos codificadores de texto: mT5 y [CLIP bilingüe](fine-tuned by ourselves)

__call__

< >

( prompt: str | list[str] = Noneheight: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 50guidance_scale: float = 5.0negative_prompt: str | list[str] | None = Nonenum_images_per_prompt: int = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_2: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_2: typing.Optional[torch.Tensor] = Noneprompt_attention_mask: typing.Optional[torch.Tensor] = Noneprompt_attention_mask_2: typing.Optional[torch.Tensor] = Nonenegative_prompt_attention_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_attention_mask_2: typing.Optional[torch.Tensor] = Noneoutput_type: str = 'pil'return_dict: bool = Truecallback_on_step_end: typing.Union[typing.Callable[[int, int, dict], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']guidance_rescale: float = 0.0original_size: tuple = (1024, 1024)target_size: tuple = Nonecrops_coords_top_left: tuple = (0, 0)use_resolution_binning: bool = Truepag_scale: float = 3.0pag_adaptive_scale: float = 0.0 ) → StableDiffusionPipelineOutput or tuple

Parámetros

  • prompt (str o list[str], opcional) — El prompt o prompts para guiar la generación de imágenes. Si no se define, debe pasar prompt_embeds.
  • height (int) — La altura en píxeles de la imagen generada.
  • width (int) — El ancho en píxeles de la imagen generada.
  • 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. Este parámetro se modula por strength.
  • guidance_scale (float, opcional, valor predeterminado 7.5) — Un valor de escala de guía más alto anima al modelo a generar imágenes estrechamente vinculadas al prompt de texto a costa de una menor calidad de imagen. La escala de guía se habilita cuando guidance_scale > 1.
  • negative_prompt (str o list[str], opcional) — El prompt o los prompts para guiar lo que no debe incluirse en la generación de imágenes. Si no se define, es necesario pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (guidance_scale < 1).
  • num_images_per_prompt (int, opcional, valor predeterminado 1) — El número de imágenes que se generarán por indicación.
  • eta (float, opcional, valor predeterminado 0.0) — Corresponde al parámetro eta (η) del artículo DDIM. Solo se aplica al DDIMScheduler y se ignora en otros programadores.
  • generator (torch.Generator o list[torch.Generator], opcional) — Un torch.Generator para hacer que la generación sea determinista.
  • latents (torch.Tensor, opcional) — Latentes ruidosos pregenerados muestreados de una distribución gaussiana, que se utilizarán como entradas para la generación de imágenes. Se pueden usar para ajustar la misma generación con diferentes prompts. Si no se proporciona, se genera un tensor de latentes mediante muestreo usando el generator aleatorio suministrado.
  • prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto (ponderación del prompt). Si no se proporcionan, las incrustaciones de texto se generan a partir del argumento de entrada prompt.
  • prompt_embeds_2 (torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto (ponderación del prompt). Si no se proporcionan, las incrustaciones de texto se generan a partir del argumento de entrada prompt.
  • negative_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto negativo pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto (ponderación del prompt). Si no se proporcionan, negative_prompt_embeds se generan a partir del argumento de entrada negative_prompt.
  • negative_prompt_embeds_2 (torch.Tensor, opcional) — Incrustaciones de texto negativas pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto (ponderación del prompt). Si no se proporcionan, negative_prompt_embeds se generan a partir del argumento de entrada negative_prompt.
  • prompt_attention_mask (torch.Tensor, opcional) — Máscara de atención para el prompt. Es obligatoria cuando se pasa prompt_embeds directamente.
  • prompt_attention_mask_2 (torch.Tensor, opcional) — Máscara de atención para el prompt. Obligatorio cuando se pasa prompt_embeds_2 directamente.
  • negative_prompt_attention_mask (torch.Tensor, opcional) — Máscara de atención para el prompt negativo. Es obligatoria cuando se pasa negative_prompt_embeds directamente.
  • negative_prompt_attention_mask_2 (torch.Tensor, opcional) — Máscara de atención para el prompt negativo. Obligatorio cuando se pasa negative_prompt_embeds_2 directamente.
  • output_type (str, opcional, por defecto "pil") — El formato de salida de la imagen generada. Elija entre PIL.Image o np.array.
  • return_dict (bool, opcional, valor predeterminado True) — Indica si se debe devolver un StableDiffusionPipelineOutput en lugar de una tupla simple.
  • callback_on_step_end (Callable[[int, int], None], PipelineCallback, MultiPipelineCallbacks, opcional) — Una función de callback o una lista de funciones de callback que se llamarán al final de cada paso de desruido.
  • callback_on_step_end_tensor_inputs (list[str], opcional) — Una lista de entradas de tensor que deben pasarse a la función de callback. Si no se define, se pasarán todas las entradas de tensor.
  • guidance_rescale (float, opcional, valor predeterminado 0.0) — Reescala el noise_cfg según guidance_rescale. Basado en los hallazgos de Common Diffusion Noise Schedules and Sample Steps are Flawed. Ver la sección 3.4
  • original_size (tuple[int, int], opcional, valor predeterminado (1024, 1024)) — El tamaño original de la imagen. Se utiliza para calcular los ids de tiempo.
  • target_size (tuple[int, int], opcional) — El tamaño objetivo de la imagen. Se utiliza para calcular los ids de tiempo.
  • crops_coords_top_left (tuple[int, int], opcional, valor predeterminado (0, 0)) — Las coordenadas de la esquina superior izquierda del recorte. Se utiliza para calcular los ids de tiempo.
  • use_resolution_binning (bool, opcional, valor predeterminado True) — Si se usa o no el agrupamiento por resolución. Si es True, la resolución de entrada se mapeará a la resolución estándar más cercana. Las resoluciones admitidas son 1024x1024, 1280x1280, 1024x768, 1152x864, 1280x960, 768x1024, 864x1152, 960x1280, 1280x768 y 768x1280. Se recomienda establecerlo en True.
  • pag_scale (float, opcional, valor predeterminado 3.0) — El factor de escala para la guía de atención perturbada. Si se establece en 0.0, no se utilizará la guía de atención perturbada.
  • pag_adaptive_scale (float, opcional, valor predeterminado 0.0) — El factor de escala adaptativo para la guía de atención perturbada. Si se establece en 0.0, se utiliza pag_scale.

Si return_dict es True, se devuelve StableDiffusionPipelineOutput, en caso contrario se devuelve una tuple cuyo primer elemento es una lista con las imágenes generadas y el segundo elemento es una lista de bool que indica si la imagen generada correspondiente contiene contenido “not-safe-for-work” (nsfw).

La función de llamada a la pipeline para la generación con HunyuanDiT.

Ejemplos:

>>> import torch
>>> from diffusers import AutoPipelineForText2Image

>>> pipe = AutoPipelineForText2Image.from_pretrained(
...     "Tencent-Hunyuan/HunyuanDiT-v1.2-Diffusers",
...     torch_dtype=torch.float16,
...     enable_pag=True,
...     pag_applied_layers=[14],
... ).to("cuda")

>>> # prompt = "an astronaut riding a horse"
>>> prompt = "一个宇航员在骑马"
>>> image = pipe(prompt, guidance_scale=4, pag_scale=3).images[0]

encode_prompt

< >

( prompt: strdevice: device = Nonedtype: dtype = Nonenum_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_attention_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_attention_mask: typing.Optional[torch.Tensor] = Nonemax_sequence_length: int | None = Nonetext_encoder_index: int = 0 )

Parámetros

  • prompt (str o list[str], opcional) — prompt a codificar
  • device — (torch.device): dispositivo de torch
  • dtype (torch.dtype) — dtype de torch
  • num_images_per_prompt (int) — número de imágenes que deben generarse por prompt
  • do_classifier_free_guidance (bool) — si se debe usar classifier free guidance o no
  • negative_prompt (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si guidance_scale es menor que 1).
  • 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 entrada prompt.
  • 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 entrada negative_prompt.
  • prompt_attention_mask (torch.Tensor, opcional) — Máscara de atención para el prompt. Es obligatoria cuando se pasa prompt_embeds directamente.
  • negative_prompt_attention_mask (torch.Tensor, opcional) — Máscara de atención para el prompt negativo. Es obligatoria cuando se pasa negative_prompt_embeds directamente.
  • max_sequence_length (int, opcional) — longitud máxima de la secuencia a utilizar para el prompt.
  • text_encoder_index (int, opcional) — Índice del codificador de texto a utilizar. 0 para clip y 1 para T5.

Codifica el prompt en estados ocultos del codificador de texto.

KolorsPAGPipeline

clase diffusers.KolorsPAGPipeline

< >

( vae: AutoencoderKLtext_encoder: ChatGLMModeltokenizer: ChatGLMTokenizerunet: UNet2DConditionModelscheduler: KarrasDiffusionSchedulersimage_encoder: CLIPVisionModelWithProjection = Nonefeature_extractor: CLIPImageProcessorPil = Noneforce_zeros_for_empty_prompt: bool = Falsepag_applied_layers: str | list[str] = 'mid' )

Parámetros

  • vae (AutoencoderKL) — Modelo de Variational Auto-Encoder (VAE) para codificar y decodificar imágenes a partir de y hacia representaciones latentes.
  • text_encoder (ChatGLMModel) — Codificador de texto congelado. Kolors utiliza ChatGLM3-6B.
  • tokenizer (ChatGLMTokenizer) — Tokenizer de la clase ChatGLMTokenizer.
  • unet (UNet2DConditionModel) — Arquitectura U-Net condicional para desruidar los latentes de imagen codificados.
  • scheduler (SchedulerMixin) — Un scheduler para usar en combinación con unet para desruidar los latentes de la imagen codificada. Puede ser uno de DDIMScheduler, LMSDiscreteScheduler o PNDMScheduler.
  • force_zeros_for_empty_prompt (bool, opcional, valor predeterminado "False") — Si las incrustaciones del prompt negativo deben forzarse a establecerse siempre en 0. Consulte también la configuración de Kwai-Kolors/Kolors-diffusers.
  • pag_applied_layers (str or list[str]``, *optional*, defaults to “mid”`) — Establece las capas de atención del transformer donde se aplicará la guía de atención perturbada. Puede ser una cadena o una lista de cadenas con “down”, “mid”, “up”, un bloque completo del transformer o capas de atención específicas de un bloque del transformer, p. ej.: [“mid”] [“down”, “mid”] [“down”, “mid”, “up.block_1”] [“down”, “mid”, “up.block_1.attentions_0”, “up.block_1.attentions_1”]

Pipeline para la generación de imágenes a partir de texto usando Kolors.

Este modelo hereda de DiffusionPipeline. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos los pipelines (como la descarga o el guardado, la ejecución en un dispositivo específico, etc.)

El pipeline también hereda los siguientes métodos de carga:

__call__

< >

( prompt: str | list[str] = Noneheight: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 50timesteps: list = Nonesigmas: list = Nonedenoising_end: float | None = Noneguidance_scale: float = 5.0negative_prompt: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Noneoriginal_size: tuple[int, int] | None = Nonecrops_coords_top_left: tuple = (0, 0)target_size: tuple[int, int] | None = Nonenegative_original_size: tuple[int, int] | None = Nonenegative_crops_coords_top_left: tuple = (0, 0)negative_target_size: tuple[int, int] | None = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']pag_scale: float = 3.0pag_adaptive_scale: float = 0.0max_sequence_length: int = 256 ) → ~pipelines.kolors.KolorsPipelineOutput or tuple

Parámetros

  • prompt (str o list[str], opcional) — El prompt o los prompts para guiar la generación de la imagen. Si no se define, hay que pasar prompt_embeds en su lugar.
  • 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. Cualquier valor inferior a 512 píxeles no funcionará bien con Kwai-Kolors/Kolors-diffusers ni con puntos de control que no hayan sido ajustados específicamente para resoluciones bajas.
  • width (int, opcional, por defecto 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. Cualquier valor inferior a 512 píxeles no funcionará bien con Kwai-Kolors/Kolors-diffusers ni con puntos de control que no hayan sido ajustados específicamente para resoluciones bajas.
  • 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.
  • timesteps (list[int], opcional) — Pasos de tiempo personalizados para usar en el proceso de desruido con programadores que admiten un argumento timesteps en su método set_timesteps. Si no se define, se usará el comportamiento predeterminado cuando se pase num_inference_steps. Debe estar en orden descendente.
  • sigmas (list[float], opcional) — Sigmas personalizados para usar en el proceso de desruido con programadores que admiten un argumento sigmas en su método set_timesteps. Si no se define, se usará el comportamiento predeterminado cuando se pase num_inference_steps.
  • denoising_end (float, opcional) — Cuando se especifica, determina la fracción (entre 0.0 y 1.0) del proceso total de denoising que debe completarse antes de que se termine prematuramente de forma intencional. Como resultado, la muestra devuelta aún conservará una cantidad sustancial de ruido, tal como lo determinan los pasos discretos seleccionados por el scheduler. El parámetro denoising_end debería utilizarse idealmente cuando este pipeline forma parte de una configuración multipipeline de “Mixture of Denoisers”, como se detalla en Refining the Image Output
  • guidance_scale (float, opcional, valor predeterminado 5.0) — Escala de guía definida en Classifier-Free Diffusion Guidance. guidance_scale se define como w de la ecuación 2 del Imagen Paper. La escala de guía se habilita estableciendo guidance_scale > 1. Una escala de guía más alta fomenta la generación de imágenes estrechamente vinculadas al prompt de texto, generalmente a costa de una menor calidad de imagen.
  • negative_prompt (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si guidance_scale es menor que 1).
  • num_images_per_prompt (int, opcional, valor predeterminado 1) — El número de imágenes que se generarán por indicación.
  • eta (float, opcional, valor predeterminado 0.0) — Corresponde al parámetro eta (η) del artículo DDIM: https://huggingface.co/papers/2010.02502. Solo se aplica a schedulers.DDIMScheduler y se ignorará en los demás.
  • generator (torch.Generator o list[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 el generator aleatorio 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 entrada prompt.
  • pooled_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto agrupadas pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporciona, las incrustaciones de texto agrupadas se generarán a partir del argumento de entrada prompt.
  • 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 entrada negative_prompt.
  • negative_pooled_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto negativo agrupadas pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, se generarán pooled negative_prompt_embeds a partir del argumento de entrada negative_prompt.
  • ip_adapter_image — (PipelineImageInput, opcional): Entrada de imagen opcional para trabajar con IP Adapters.
  • ip_adapter_image_embeds (list[torch.Tensor], opcional) — Incrustaciones de imagen pregeneradas para IP-Adapter. Debe ser una lista de la misma longitud que el número de IP-adapters. Cada elemento debe ser un tensor de forma (batch_size, num_images, emb_dim). Debe contener la incrustación de imagen negativa si do_classifier_free_guidance está establecido en True. Si no se proporciona, las incrustaciones se calculan a partir del argumento de entrada ip_adapter_image.
  • output_type (str, opcional, valor predeterminado "pil") — El formato de salida de la imagen generada. Elija entre PIL: PIL.Image.Image o np.array.
  • return_dict (bool, opcional, valor predeterminado True) — Indica si se debe devolver un ~pipelines.kolors.KolorsPipelineOutput en lugar de una tupla simple.
  • cross_attention_kwargs (dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa al AttentionProcessor definido en self.processor dentro de diffusers.models.attention_processor.
  • original_size (tuple[int], opcional, valor predeterminado (1024, 1024)) — Si original_size no es igual a target_size, la imagen parecerá haber sido reescalada hacia abajo o hacia arriba. original_size tiene como valor predeterminado (height, width) si no se especifica. Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952.
  • crops_coords_top_left (tuple[int], opcional, valor predeterminado (0, 0)) — crops_coords_top_left se puede utilizar para generar una imagen que parezca “recortada” desde la posición crops_coords_top_left hacia abajo. Generalmente se logran imágenes favorables y bien centradas estableciendo crops_coords_top_left en (0, 0). Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952.
  • target_size (tuple[int], opcional, valor predeterminado (1024, 1024)) — En la mayoría de los casos, target_size debe establecerse en la altura y el ancho deseados de la imagen generada. Si no se especifica, el valor predeterminado será (height, width). Forma parte del micro-conditioning de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952.
  • negative_original_size (tuple[int], opcional, valor predeterminado (1024, 1024)) — Para condicionar negativamente el proceso de generación en función de una resolución de imagen específica. Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952. Para obtener más información, consulte este hilo de problemas: https://github.com/huggingface/diffusers/issues/4208.
  • negative_crops_coords_top_left (tuple[int], opcional, valor predeterminado (0, 0)) — Para condicionar negativamente el proceso de generación en función de unas coordenadas de recorte específicas. Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952. Para obtener más información, consulte este hilo de problemas: https://github.com/huggingface/diffusers/issues/4208.
  • negative_target_size (tuple[int], opcional, valor predeterminado (1024, 1024)) — Para condicionar negativamente el proceso de generación en función de la resolución de la imagen objetivo. Debe ser igual que target_size en la mayoría de los casos. Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952. Para obtener más información, consulte este hilo de problemas: https://github.com/huggingface/diffusers/issues/4208.
  • callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, opcional) — Una función o una subclase de PipelineCallback o MultiPipelineCallbacks que se llama al final de cada paso de desruido durante la inferencia, con los siguientes argumentos: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs incluirá una lista de todos los tensores especificados por callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, opcional) — La lista de entradas de tensor para la función callback_on_step_end. Los tensores especificados en la lista se pasarán como argumento callback_kwargs. Solo podrás incluir variables listadas en el atributo ._callback_tensor_inputs de tu clase de pipeline.
  • pag_scale (float, opcional, valor predeterminado 3.0) — El factor de escala para la guía de atención perturbada. Si se establece en 0.0, no se utilizará la guía de atención perturbada.
  • pag_adaptive_scale (float, opcional, valor predeterminado 0.0) — El factor de escala adaptativo para la guía de atención perturbada. Si se establece en 0.0, se utiliza pag_scale.
  • max_sequence_length (int por defecto 256) — Longitud máxima de secuencia para usar con el prompt.

Devuelve

~pipelines.kolors.KolorsPipelineOutput o tuple

~pipelines.kolors.KolorsPipelineOutput 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 AutoPipelineForText2Image

>>> pipe = AutoPipelineForText2Image.from_pretrained(
...     "Kwai-Kolors/Kolors-diffusers",
...     variant="fp16",
...     torch_dtype=torch.float16,
...     enable_pag=True,
...     pag_applied_layers=["down.block_2.attentions_1", "up.block_0.attentions_1"],
... )
>>> pipe = pipe.to("cuda")

>>> prompt = (
...     "A photo of a ladybug, macro, zoom, high quality, film, holding a wooden sign with the text 'KOLORS'"
... )
>>> image = pipe(prompt, guidance_scale=5.5, pag_scale=1.5).images[0]

encode_prompt

< >

( promptdevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonemax_sequence_length: int = 256 )

Parámetros

  • prompt (str o list[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
  • do_classifier_free_guidance (bool) — si se debe usar classifier free guidance o no
  • negative_prompt (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si guidance_scale es menor que 1).
  • prompt_embeds (torch.FloatTensor, 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 entrada prompt.
  • pooled_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto agrupadas pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporciona, las incrustaciones de texto agrupadas se generarán a partir del argumento de entrada prompt.
  • negative_prompt_embeds (torch.FloatTensor, 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 entrada negative_prompt.
  • negative_pooled_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto negativo agrupadas pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, se generarán pooled negative_prompt_embeds a partir del argumento de entrada negative_prompt.
  • max_sequence_length (int por defecto 256) — Longitud máxima de secuencia para usar con el prompt.

Codifica el prompt en estados ocultos del codificador de texto.

get_guidance_scale_embedding

< >

( w: Tensorembedding_dim: int = 512dtype: dtype = torch.float32 ) → torch.Tensor

Parámetros

  • w (torch.Tensor) — Genera vectores de incrustación con una escala de orientación especificada para enriquecer posteriormente las incrustaciones de paso temporal.
  • embedding_dim (int, opcional, valor predeterminado 512) — Dimensión de los embeddings a generar.
  • dtype (torch.dtype, opcional, valor predeterminado torch.float32) — Tipo de datos de los embeddings generados.

Devuelve

torch.Tensor

Vectores de incrustación con forma (len(w), embedding_dim).

Ver https://github.com/google-research/vdm/blob/dc27b98a554f65cdc654b800da5aa1846545d41b/model_vdm.py#L298

StableDiffusionPAGInpaintPipeline

clase diffusers.StableDiffusionPAGInpaintPipeline

< >

( vae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizerunet: UNet2DConditionModelscheduler: KarrasDiffusionSchedulerssafety_checker: StableDiffusionSafetyCheckerfeature_extractor: CLIPImageProcessorPilimage_encoder: CLIPVisionModelWithProjection = Nonerequires_safety_checker: bool = Truepag_applied_layers: str | list[str] = 'mid' )

Parámetros

  • vae (AutoencoderKL) — Modelo de Variational Auto-Encoder (VAE) para codificar y decodificar imágenes a partir de y hacia representaciones latentes.
  • text_encoder (CLIPTextModel) — Codificador de texto congelado (clip-vit-large-patch14).
  • tokenizer (CLIPTokenizer) — Un CLIPTokenizer para tokenizar texto.
  • unet (UNet2DConditionModel) — Un UNet2DConditionModel para desruidar los latentes de la imagen codificada.
  • scheduler (SchedulerMixin) — Un scheduler para usar en combinación con unet para desruidar los latentes de la imagen codificada. Puede ser uno de DDIMScheduler, LMSDiscreteScheduler o PNDMScheduler.
  • safety_checker (StableDiffusionSafetyChecker) — Módulo de clasificación que estima si las imágenes generadas podrían considerarse ofensivas o dañinas. Consulte la ficha del modelo para obtener más detalles sobre los posibles daños de un modelo.
  • feature_extractor (CLIPImageProcessor) — Un CLIPImageProcessor para extraer características de las imágenes generadas; se utiliza como entrada para el safety_checker.

Pipeline para la generación de imágenes a partir de texto usando Stable Diffusion.

Este modelo hereda de DiffusionPipeline. Consulta la documentación de la clase superior para los métodos genéricos implementados en todas las tuberías (descarga, guardado, ejecución en un dispositivo específico, etc.).

El pipeline también hereda los siguientes métodos de carga:

__call__

< >

( prompt: str | list[str] = Noneimage: 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: Tensor = Noneheight: int | None = Nonewidth: int | None = Nonepadding_mask_crop: int | None = Nonestrength: float = 0.9999num_inference_steps: int = 50timesteps: list = Nonesigmas: list = Noneguidance_scale: float = 7.5negative_prompt: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Noneguidance_rescale: float = 0.0clip_skip: int | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']pag_scale: float = 3.0pag_adaptive_scale: float = 0.0 ) → StableDiffusionPipelineOutput or tuple

Parámetros

  • prompt (str o list[str], opcional) — El prompt o prompts para guiar la generación de imágenes. Si no se define, debe pasar prompt_embeds.
  • image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image] o list[np.ndarray]) — Image, array de numpy o tensor que representa un lote de imágenes para ser inpaintadas (qué partes de la imagen deben enmascararse con mask_image y repintarse según prompt).
  • mask_image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image] o list[np.ndarray]) — Image, array de numpy o tensor que representa un lote de imágenes para enmascarar image. Los píxeles blancos de la máscara se repintan, mientras que los píxeles negros se conservan. Si mask_image es 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, opcional) — Latente precodificado de la imagen enmascarada (para inpainting).
  • height (int, opcional, valor predeterminado self.unet.config.sample_size * self.vae_scale_factor) — La altura en píxeles de la imagen generada.
  • width (int, opcional, valor predeterminado self.unet.config.sample_size * self.vae_scale_factor) — El ancho en píxeles de la imagen generada.
  • padding_mask_crop (int, opcional, valor predeterminado None) — El tamaño del margen en el recorte que se aplicará a la imagen y la máscara. Si es None, no se aplica ningún recorte a image y mask_image. Si padding_mask_crop no es None, 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 de padding_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 0.9999) — Indica el grado en que se transforma la image de referencia. Debe estar entre 0 y 1. image se utiliza como punto de partida y se añade más ruido a medida que aumenta el strength. El número de pasos de desruido depende de la cantidad de ruido añadido inicialmente. Cuando strength es 1, el ruido añadido es máximo y el proceso de desruido se ejecuta durante el número completo de iteraciones especificado en num_inference_steps. Un valor de 1 ignora esencialmente image.
  • 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.
  • timesteps (list[int], opcional) — Pasos de tiempo personalizados para usar en el proceso de desruido con programadores que admiten un argumento timesteps en su método set_timesteps. Si no se define, se usará el comportamiento predeterminado cuando se pase num_inference_steps. Debe estar en orden descendente.
  • sigmas (list[float], opcional) — Sigmas personalizados para usar en el proceso de desruido con programadores que admiten un argumento sigmas en su método set_timesteps. Si no se define, se usará el comportamiento predeterminado cuando se pase num_inference_steps.
  • guidance_scale (float, opcional, valor predeterminado 7.5) — Un valor de escala de guía más alto anima al modelo a generar imágenes estrechamente vinculadas al prompt de texto a costa de una menor calidad de imagen. La escala de guía se habilita cuando guidance_scale > 1.
  • negative_prompt (str o list[str], opcional) — El prompt o los prompts para guiar lo que no debe incluirse en la generación de imágenes. Si no se define, es necesario pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (guidance_scale < 1).
  • num_images_per_prompt (int, opcional, valor predeterminado 1) — El número de imágenes que se generarán por indicación.
  • eta (float, opcional, valor predeterminado 0.0) — Corresponde al parámetro eta (η) del artículo DDIM. Solo se aplica al DDIMScheduler y se ignora en otros programadores.
  • generator (torch.Generator o list[torch.Generator], opcional) — Un torch.Generator para hacer que la generación sea determinista.
  • latents (torch.Tensor, opcional) — Latentes ruidosos pregenerados muestreados de una distribución gaussiana, que se utilizarán como entradas para la generación de imágenes. Se pueden usar para ajustar la misma generación con diferentes prompts. Si no se proporciona, se genera un tensor de latentes mediante muestreo usando el generator aleatorio suministrado.
  • prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto (ponderación del prompt). Si no se proporcionan, las incrustaciones de texto se generan a partir del argumento de entrada prompt.
  • negative_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto negativo pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto (ponderación del prompt). Si no se proporcionan, negative_prompt_embeds se generan a partir del argumento de entrada negative_prompt.
  • ip_adapter_image — (PipelineImageInput, opcional): Entrada de imagen opcional para trabajar con IP Adapters.
  • ip_adapter_image_embeds (list[torch.Tensor], opcional) — Incrustaciones de imagen pregeneradas para IP-Adapter. Debe ser una lista de la misma longitud que el número de IP-adapters. Cada elemento debe ser un tensor de forma (batch_size, num_images, emb_dim). Debe contener la incrustación de imagen negativa si do_classifier_free_guidance está establecido en True. Si no se proporciona, las incrustaciones se calculan a partir del argumento de entrada ip_adapter_image.
  • output_type (str, opcional, por defecto "pil") — El formato de salida de la imagen generada. Elija entre PIL.Image o np.array.
  • return_dict (bool, opcional, valor predeterminado True) — Indica si se debe devolver un StableDiffusionPipelineOutput en lugar de una tupla simple.
  • cross_attention_kwargs (dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa al AttentionProcessor tal como se define en self.processor.
  • guidance_rescale (float, opcional, valor predeterminado 0.0) — Factor de rescale de guidance de Common Diffusion Noise Schedules and Sample Steps are Flawed. El factor de rescale de guidance debe corregir la sobreexposición al utilizar SNR terminal cero.
  • clip_skip (int, opcional) — Número de capas que se omitirán de CLIP al calcular los embeddings del prompt. Un valor de 1 significa que se utilizará la salida de la penúltima capa para calcular los embeddings del prompt.
  • callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, opcional) — Una función o una subclase de PipelineCallback o MultiPipelineCallbacks que se llama al final de cada paso de desruido durante la inferencia, con los siguientes argumentos: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs incluirá una lista de todos los tensores especificados por callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, opcional) — La lista de entradas de tensor para la función callback_on_step_end. Los tensores especificados en la lista se pasarán como argumento callback_kwargs. Solo podrás incluir variables listadas en el atributo ._callback_tensor_inputs de tu clase de pipeline.
  • pag_scale (float, opcional, valor predeterminado 3.0) — El factor de escala para la guía de atención perturbada. Si se establece en 0.0, no se utilizará la guía de atención perturbada.
  • pag_adaptive_scale (float, opcional, valor predeterminado 0.0) — El factor de escala adaptativo para la guía de atención perturbada. Si se establece en 0.0, se utiliza pag_scale.

Si return_dict es True, se devuelve StableDiffusionPipelineOutput, en caso contrario se devuelve una tuple cuyo primer elemento es una lista con las imágenes generadas y el segundo elemento es una lista de bool que indica si la imagen generada correspondiente contiene contenido “not-safe-for-work” (nsfw).

La función de llamada para el pipeline de generación.

Ejemplos:

>>> import torch
>>> from diffusers import AutoPipelineForInpainting

>>> pipe = AutoPipelineForInpainting.from_pretrained(
...     "stable-diffusion-v1-5/stable-diffusion-v1-5", torch_dtype=torch.float16, enable_pag=True
... )
>>> pipe = pipe.to("cuda")
>>> 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"
>>> init_image = load_image(img_url).convert("RGB")
>>> mask_image = load_image(mask_url).convert("RGB")
>>> prompt = "A majestic tiger sitting on a bench"
>>> image = pipe(
...     prompt=prompt,
...     image=init_image,
...     mask_image=mask_image,
...     strength=0.8,
...     num_inference_steps=50,
...     guidance_scale=guidance_scale,
...     generator=generator,
...     pag_scale=pag_scale,
... ).images[0]

encode_prompt

< >

( promptdevicenum_images_per_promptdo_classifier_free_guidancenegative_prompt = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = None )

Parámetros

  • prompt (str o list[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
  • do_classifier_free_guidance (bool) — si se debe usar classifier free guidance o no
  • negative_prompt (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si guidance_scale es menor que 1).
  • 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 entrada prompt.
  • 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 entrada negative_prompt.
  • lora_scale (float, opcional) — Una escala LoRA que se aplicará a todas las capas LoRA del codificador de texto si se cargan capas LoRA.
  • clip_skip (int, opcional) — Número de capas que se omitirán de CLIP al calcular los embeddings del prompt. Un valor de 1 significa que se utilizará la salida de la penúltima capa para calcular los embeddings del prompt.

Codifica el prompt en estados ocultos del codificador de texto.

get_guidance_scale_embedding

< >

( w: Tensorembedding_dim: int = 512dtype: dtype = torch.float32 ) → torch.Tensor

Parámetros

  • w (torch.Tensor) — Genera vectores de incrustación con una escala de orientación especificada para enriquecer posteriormente las incrustaciones de paso temporal.
  • embedding_dim (int, opcional, valor predeterminado 512) — Dimensión de los embeddings a generar.
  • dtype (torch.dtype, opcional, valor predeterminado torch.float32) — Tipo de datos de los embeddings generados.

Devuelve

torch.Tensor

Vectores de incrustación con forma (len(w), embedding_dim).

Ver https://github.com/google-research/vdm/blob/dc27b98a554f65cdc654b800da5aa1846545d41b/model_vdm.py#L298

StableDiffusionPAGPipeline

clase diffusers.StableDiffusionPAGPipeline

< >

( vae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizerunet: UNet2DConditionModelscheduler: KarrasDiffusionSchedulerssafety_checker: StableDiffusionSafetyCheckerfeature_extractor: CLIPImageProcessorPilimage_encoder: CLIPVisionModelWithProjection = Nonerequires_safety_checker: bool = Truepag_applied_layers: str | list[str] = 'mid' )

Parámetros

  • vae (AutoencoderKL) — Modelo de Variational Auto-Encoder (VAE) para codificar y decodificar imágenes a partir de y hacia representaciones latentes.
  • text_encoder (CLIPTextModel) — Codificador de texto congelado (clip-vit-large-patch14).
  • tokenizer (CLIPTokenizer) — Un CLIPTokenizer para tokenizar texto.
  • unet (UNet2DConditionModel) — Un UNet2DConditionModel para desruidar los latentes de la imagen codificada.
  • scheduler (SchedulerMixin) — Un scheduler para usar en combinación con unet para desruidar los latentes de la imagen codificada. Puede ser uno de DDIMScheduler, LMSDiscreteScheduler o PNDMScheduler.
  • safety_checker (StableDiffusionSafetyChecker) — Módulo de clasificación que estima si las imágenes generadas podrían considerarse ofensivas o dañinas. Consulte la ficha del modelo para obtener más detalles sobre los posibles daños de un modelo.
  • feature_extractor (CLIPImageProcessor) — Un CLIPImageProcessor para extraer características de las imágenes generadas; se utiliza como entrada para el safety_checker.

Pipeline para la generación de imágenes a partir de texto usando Stable Diffusion.

Este modelo hereda de DiffusionPipeline. Consulta la documentación de la clase superior para los métodos genéricos implementados en todas las tuberías (descarga, guardado, ejecución en un dispositivo específico, etc.).

El pipeline también hereda los siguientes métodos de carga:

__call__

< >

( prompt: str | list[str] = Noneheight: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 50timesteps: list = Nonesigmas: list = Noneguidance_scale: float = 7.5negative_prompt: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Noneguidance_rescale: float = 0.0clip_skip: int | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']pag_scale: float = 3.0pag_adaptive_scale: float = 0.0 ) → StableDiffusionPipelineOutput or tuple

Parámetros

  • prompt (str o list[str], opcional) — El prompt o prompts para guiar la generación de imágenes. Si no se define, debe pasar prompt_embeds.
  • height (int, opcional, valor predeterminado self.unet.config.sample_size * self.vae_scale_factor) — La altura en píxeles de la imagen generada.
  • width (int, opcional, valor predeterminado self.unet.config.sample_size * self.vae_scale_factor) — El ancho en píxeles de la imagen generada.
  • 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.
  • timesteps (list[int], opcional) — Pasos de tiempo personalizados para usar en el proceso de desruido con programadores que admiten un argumento timesteps en su método set_timesteps. Si no se define, se usará el comportamiento predeterminado cuando se pase num_inference_steps. Debe estar en orden descendente.
  • sigmas (list[float], opcional) — Sigmas personalizados para usar en el proceso de desruido con programadores que admiten un argumento sigmas en su método set_timesteps. Si no se define, se usará el comportamiento predeterminado cuando se pase num_inference_steps.
  • guidance_scale (float, opcional, valor predeterminado 7.5) — Un valor de escala de guía más alto anima al modelo a generar imágenes estrechamente vinculadas al prompt de texto a costa de una menor calidad de imagen. La escala de guía se habilita cuando guidance_scale > 1.
  • negative_prompt (str o list[str], opcional) — El prompt o los prompts para guiar lo que no debe incluirse en la generación de imágenes. Si no se define, es necesario pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (guidance_scale < 1).
  • num_images_per_prompt (int, opcional, valor predeterminado 1) — El número de imágenes que se generarán por indicación.
  • eta (float, opcional, valor predeterminado 0.0) — Corresponde al parámetro eta (η) del artículo DDIM. Solo se aplica al DDIMScheduler y se ignora en otros programadores.
  • generator (torch.Generator o list[torch.Generator], opcional) — Un torch.Generator para hacer que la generación sea determinista.
  • latents (torch.Tensor, opcional) — Latentes ruidosos pregenerados muestreados de una distribución gaussiana, que se utilizarán como entradas para la generación de imágenes. Se pueden usar para ajustar la misma generación con diferentes prompts. Si no se proporciona, se genera un tensor de latentes mediante muestreo usando el generator aleatorio suministrado.
  • prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto (ponderación del prompt). Si no se proporcionan, las incrustaciones de texto se generan a partir del argumento de entrada prompt.
  • negative_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto negativo pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto (ponderación del prompt). Si no se proporcionan, negative_prompt_embeds se generan a partir del argumento de entrada negative_prompt.
  • ip_adapter_image — (PipelineImageInput, opcional): Entrada de imagen opcional para trabajar con IP Adapters.
  • ip_adapter_image_embeds (list[torch.Tensor], opcional) — Incrustaciones de imagen pregeneradas para IP-Adapter. Debe ser una lista de la misma longitud que el número de IP-adapters. Cada elemento debe ser un tensor de forma (batch_size, num_images, emb_dim). Debe contener la incrustación de imagen negativa si do_classifier_free_guidance está establecido en True. Si no se proporciona, las incrustaciones se calculan a partir del argumento de entrada ip_adapter_image.
  • output_type (str, opcional, por defecto "pil") — El formato de salida de la imagen generada. Elija entre PIL.Image o np.array.
  • return_dict (bool, opcional, valor predeterminado True) — Indica si se debe devolver un StableDiffusionPipelineOutput en lugar de una tupla simple.
  • cross_attention_kwargs (dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa al AttentionProcessor tal como se define en self.processor.
  • guidance_rescale (float, opcional, valor predeterminado 0.0) — Factor de rescale de guidance de Common Diffusion Noise Schedules and Sample Steps are Flawed. El factor de rescale de guidance debe corregir la sobreexposición al utilizar SNR terminal cero.
  • clip_skip (int, opcional) — Número de capas que se omitirán de CLIP al calcular los embeddings del prompt. Un valor de 1 significa que se utilizará la salida de la penúltima capa para calcular los embeddings del prompt.
  • callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, opcional) — Una función o una subclase de PipelineCallback o MultiPipelineCallbacks que se llama al final de cada paso de desruido durante la inferencia, con los siguientes argumentos: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs incluirá una lista de todos los tensores especificados por callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, opcional) — La lista de entradas de tensor para la función callback_on_step_end. Los tensores especificados en la lista se pasarán como argumento callback_kwargs. Solo podrás incluir variables listadas en el atributo ._callback_tensor_inputs de tu clase de pipeline.
  • pag_scale (float, opcional, valor predeterminado 3.0) — El factor de escala para la guía de atención perturbada. Si se establece en 0.0, no se utilizará la guía de atención perturbada.
  • pag_adaptive_scale (float, opcional, valor predeterminado 0.0) — El factor de escala adaptativo para la guía de atención perturbada. Si se establece en 0.0, se utiliza pag_scale.

Si return_dict es True, se devuelve StableDiffusionPipelineOutput, en caso contrario se devuelve una tuple cuyo primer elemento es una lista con las imágenes generadas y el segundo elemento es una lista de bool que indica si la imagen generada correspondiente contiene contenido “not-safe-for-work” (nsfw).

La función de llamada para el pipeline de generación.

Ejemplos:

>>> import torch
>>> from diffusers import AutoPipelineForText2Image

>>> pipe = AutoPipelineForText2Image.from_pretrained(
...     "stable-diffusion-v1-5/stable-diffusion-v1-5", torch_dtype=torch.float16, enable_pag=True
... )
>>> pipe = pipe.to("cuda")

>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> image = pipe(prompt, pag_scale=0.3).images[0]

encode_prompt

< >

( promptdevicenum_images_per_promptdo_classifier_free_guidancenegative_prompt = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = None )

Parámetros

  • prompt (str o list[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
  • do_classifier_free_guidance (bool) — si se debe usar classifier free guidance o no
  • negative_prompt (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si guidance_scale es menor que 1).
  • 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 entrada prompt.
  • 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 entrada negative_prompt.
  • lora_scale (float, opcional) — Una escala LoRA que se aplicará a todas las capas LoRA del codificador de texto si se cargan capas LoRA.
  • clip_skip (int, opcional) — Número de capas que se omitirán de CLIP al calcular los embeddings del prompt. Un valor de 1 significa que se utilizará la salida de la penúltima capa para calcular los embeddings del prompt.

Codifica el prompt en estados ocultos del codificador de texto.

get_guidance_scale_embedding

< >

( w: Tensorembedding_dim: int = 512dtype: dtype = torch.float32 ) → torch.Tensor

Parámetros

  • w (torch.Tensor) — Genera vectores de incrustación con una escala de orientación especificada para enriquecer posteriormente las incrustaciones de paso temporal.
  • embedding_dim (int, opcional, valor predeterminado 512) — Dimensión de los embeddings a generar.
  • dtype (torch.dtype, opcional, valor predeterminado torch.float32) — Tipo de datos de los embeddings generados.

Devuelve

torch.Tensor

Vectores de incrustación con forma (len(w), embedding_dim).

Ver https://github.com/google-research/vdm/blob/dc27b98a554f65cdc654b800da5aa1846545d41b/model_vdm.py#L298

StableDiffusionPAGImg2ImgPipeline

clase diffusers.StableDiffusionPAGImg2ImgPipeline

< >

( vae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizerunet: UNet2DConditionModelscheduler: KarrasDiffusionSchedulerssafety_checker: StableDiffusionSafetyCheckerfeature_extractor: CLIPImageProcessorPilimage_encoder: CLIPVisionModelWithProjection = Nonerequires_safety_checker: bool = Truepag_applied_layers: str | list[str] = 'mid' )

Parámetros

  • vae (AutoencoderKL) — Modelo de Variational Auto-Encoder (VAE) para codificar y decodificar imágenes a partir de y hacia representaciones latentes.
  • text_encoder (CLIPTextModel) — Codificador de texto congelado (clip-vit-large-patch14).
  • tokenizer (CLIPTokenizer) — Un CLIPTokenizer para tokenizar texto.
  • unet (UNet2DConditionModel) — Un UNet2DConditionModel para desruidar los latentes de la imagen codificada.
  • scheduler (SchedulerMixin) — Un scheduler para usar en combinación con unet para desruidar los latentes de la imagen codificada. Puede ser uno de DDIMScheduler, LMSDiscreteScheduler o PNDMScheduler.
  • safety_checker (StableDiffusionSafetyChecker) — Módulo de clasificación que estima si las imágenes generadas podrían considerarse ofensivas o dañinas. Consulte la ficha del modelo para obtener más detalles sobre los posibles daños de un modelo.
  • feature_extractor (CLIPImageProcessor) — Un CLIPImageProcessor para extraer características de las imágenes generadas; se utiliza como entrada para el safety_checker.

Pipeline para la generación de imagen a imagen guiada por texto usando Stable Diffusion.

Este modelo hereda de DiffusionPipeline. Consulta la documentación de la clase superior para los métodos genéricos implementados en todas las tuberías (descarga, guardado, ejecución en un dispositivo específico, etc.).

El pipeline también hereda los siguientes métodos de carga:

__call__

< >

( prompt: str | list[str] = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonestrength: float = 0.8num_inference_steps: int | None = 50timesteps: list = Nonesigmas: list = Noneguidance_scale: float | None = 7.5negative_prompt: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float | None = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Noneclip_skip: int = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']pag_scale: float = 3.0pag_adaptive_scale: float = 0.0 ) → StableDiffusionPipelineOutput or tuple

Parámetros

  • prompt (str o list[str], opcional) — El prompt o prompts para guiar la generación de imágenes. Si no se define, debe pasar prompt_embeds.
  • image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image] o list[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 como image, pero si se pasan latentes directamente, no se vuelven a codificar.
  • strength (float, opcional, valor predeterminado 0.8) — Indica el grado en que se transforma la image de referencia. Debe estar entre 0 y 1. image se utiliza como punto de partida y se añade más ruido a medida que aumenta el strength. El número de pasos de desruido depende de la cantidad de ruido añadido inicialmente. Cuando strength es 1, el ruido añadido es máximo y el proceso de desruido se ejecuta durante el número completo de iteraciones especificado en num_inference_steps. Un valor de 1 ignora esencialmente image.
  • 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. Este parámetro se modula por strength.
  • timesteps (list[int], opcional) — Pasos de tiempo personalizados para usar en el proceso de desruido con programadores que admiten un argumento timesteps en su método set_timesteps. Si no se define, se usará el comportamiento predeterminado cuando se pase num_inference_steps. Debe estar en orden descendente.
  • sigmas (list[float], opcional) — Sigmas personalizados para usar en el proceso de desruido con programadores que admiten un argumento sigmas en su método set_timesteps. Si no se define, se usará el comportamiento predeterminado cuando se pase num_inference_steps.
  • guidance_scale (float, opcional, valor predeterminado 7.5) — Un valor de escala de guía más alto anima al modelo a generar imágenes estrechamente vinculadas al prompt de texto a costa de una menor calidad de imagen. La escala de guía se habilita cuando guidance_scale > 1.
  • negative_prompt (str o list[str], opcional) — El prompt o los prompts para guiar lo que no debe incluirse en la generación de imágenes. Si no se define, es necesario pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (guidance_scale < 1).
  • num_images_per_prompt (int, opcional, valor predeterminado 1) — El número de imágenes que se generarán por indicación.
  • eta (float, opcional, valor predeterminado 0.0) — Corresponde al parámetro eta (η) del artículo DDIM. Solo se aplica al DDIMScheduler y se ignora en otros programadores.
  • generator (torch.Generator o list[torch.Generator], opcional) — Un torch.Generator para hacer que la generación sea determinista.
  • prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto (ponderación del prompt). Si no se proporcionan, las incrustaciones de texto se generan a partir del argumento de entrada prompt.
  • negative_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto negativo pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto (ponderación del prompt). Si no se proporcionan, negative_prompt_embeds se generan a partir del argumento de entrada negative_prompt.
  • ip_adapter_image — (PipelineImageInput, opcional): Entrada de imagen opcional para trabajar con IP Adapters.
  • ip_adapter_image_embeds (list[torch.Tensor], opcional) — Incrustaciones de imagen pregeneradas para IP-Adapter. Debe ser una lista de la misma longitud que el número de IP-adapters. Cada elemento debe ser un tensor de forma (batch_size, num_images, emb_dim). Debe contener la incrustación de imagen negativa si do_classifier_free_guidance está establecido en True. Si no se proporciona, las incrustaciones se calculan a partir del argumento de entrada ip_adapter_image.
  • output_type (str, opcional, por defecto "pil") — El formato de salida de la imagen generada. Elija entre PIL.Image o np.array.
  • return_dict (bool, opcional, valor predeterminado True) — Indica si se debe devolver un StableDiffusionPipelineOutput en lugar de una tupla simple.
  • cross_attention_kwargs (dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa al AttentionProcessor tal como se define en self.processor.
  • clip_skip (int, opcional) — Número de capas que se omitirán de CLIP al calcular los embeddings del prompt. Un valor de 1 significa que se utilizará la salida de la penúltima capa para calcular los embeddings del prompt.
  • callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, opcional) — Una función o una subclase de PipelineCallback o MultiPipelineCallbacks que se llama al final de cada paso de desruido durante la inferencia, con los siguientes argumentos: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs incluirá una lista de todos los tensores especificados por callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, opcional) — La lista de entradas de tensor para la función callback_on_step_end. Los tensores especificados en la lista se pasarán como argumento callback_kwargs. Solo podrás incluir variables listadas en el atributo ._callback_tensor_inputs de tu clase de pipeline.
  • pag_scale (float, opcional, valor predeterminado 3.0) — El factor de escala para la guía de atención perturbada. Si se establece en 0.0, no se utilizará la guía de atención perturbada.
  • pag_adaptive_scale (float, opcional, valor predeterminado 0.0) — El factor de escala adaptativo para la guía de atención perturbada. Si se establece en 0.0, se utiliza pag_scale.

Si return_dict es True, se devuelve StableDiffusionPipelineOutput, en caso contrario se devuelve una tuple cuyo primer elemento es una lista con las imágenes generadas y el segundo elemento es una lista de bool que indica si la imagen generada correspondiente contiene contenido “not-safe-for-work” (nsfw).

La función de llamada para el pipeline de generación.

Ejemplos:

>>> import torch
>>> from diffusers import AutoPipelineForImage2Image
>>> from diffusers.utils import load_image

>>> pipe = AutoPipelineForImage2Image.from_pretrained(
...     "stable-diffusion-v1-5/stable-diffusion-v1-5",
...     torch_dtype=torch.float16,
...     enable_pag=True,
... )
>>> pipe = pipe.to("cuda")
>>> url = "https://huggingface.co/datasets/patrickvonplaten/images/resolve/main/aa_xl/000000009.png"

>>> init_image = load_image(url).convert("RGB")
>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> image = pipe(prompt, image=init_image, pag_scale=0.3).images[0]

encode_prompt

< >

( promptdevicenum_images_per_promptdo_classifier_free_guidancenegative_prompt = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = None )

Parámetros

  • prompt (str o list[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
  • do_classifier_free_guidance (bool) — si se debe usar classifier free guidance o no
  • negative_prompt (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si guidance_scale es menor que 1).
  • 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 entrada prompt.
  • 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 entrada negative_prompt.
  • lora_scale (float, opcional) — Una escala LoRA que se aplicará a todas las capas LoRA del codificador de texto si se cargan capas LoRA.
  • clip_skip (int, opcional) — Número de capas que se omitirán de CLIP al calcular los embeddings del prompt. Un valor de 1 significa que se utilizará la salida de la penúltima capa para calcular los embeddings del prompt.

Codifica el prompt en estados ocultos del codificador de texto.

get_guidance_scale_embedding

< >

( w: Tensorembedding_dim: int = 512dtype: dtype = torch.float32 ) → torch.Tensor

Parámetros

  • w (torch.Tensor) — Genera vectores de incrustación con una escala de orientación especificada para enriquecer posteriormente las incrustaciones de paso temporal.
  • embedding_dim (int, opcional, valor predeterminado 512) — Dimensión de los embeddings a generar.
  • dtype (torch.dtype, opcional, valor predeterminado torch.float32) — Tipo de datos de los embeddings generados.

Devuelve

torch.Tensor

Vectores de incrustación con forma (len(w), embedding_dim).

Ver https://github.com/google-research/vdm/blob/dc27b98a554f65cdc654b800da5aa1846545d41b/model_vdm.py#L298

StableDiffusionControlNetPAGPipeline

clase diffusers.StableDiffusionControlNetPAGPipeline

< >

( vae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizerunet: UNet2DConditionModelcontrolnet: diffusers.models.controlnets.controlnet.ControlNetModel | list[diffusers.models.controlnets.controlnet.ControlNetModel] | tuple[diffusers.models.controlnets.controlnet.ControlNetModel] | diffusers.models.controlnets.multicontrolnet.MultiControlNetModelscheduler: KarrasDiffusionSchedulerssafety_checker: StableDiffusionSafetyCheckerfeature_extractor: CLIPImageProcessorPilimage_encoder: CLIPVisionModelWithProjection = Nonerequires_safety_checker: bool = Truepag_applied_layers: str | list[str] = 'mid' )

Parámetros

  • vae (AutoencoderKL) — Modelo de Variational Auto-Encoder (VAE) para codificar y decodificar imágenes a partir de y hacia representaciones latentes.
  • text_encoder (CLIPTextModel) — Codificador de texto congelado (clip-vit-large-patch14).
  • tokenizer (CLIPTokenizer) — Un CLIPTokenizer para tokenizar texto.
  • unet (UNet2DConditionModel) — Un UNet2DConditionModel para desruidar los latentes de la imagen codificada.
  • controlnet (ControlNetModel o list[ControlNetModel]) — Proporciona una condición adicional al unet durante el proceso de desruido. Si configuras varios ControlNets como una lista, las salidas de cada ControlNet se suman para crear una condición adicional combinada.
  • scheduler (SchedulerMixin) — Un scheduler para usar en combinación con unet para desruidar los latentes de la imagen codificada. Puede ser uno de DDIMScheduler, LMSDiscreteScheduler o PNDMScheduler.
  • safety_checker (StableDiffusionSafetyChecker) — Módulo de clasificación que estima si las imágenes generadas podrían considerarse ofensivas o dañinas. Consulte la ficha del modelo para obtener más detalles sobre los posibles daños de un modelo.
  • feature_extractor (CLIPImageProcessor) — Un CLIPImageProcessor para extraer características de las imágenes generadas; se utiliza como entrada para el safety_checker.

Pipeline para la generación de imágenes a partir de texto usando Stable Diffusion con la guía de ControlNet.

Este modelo hereda de DiffusionPipeline. Consulta la documentación de la clase superior para los métodos genéricos implementados en todas las tuberías (descarga, guardado, ejecución en un dispositivo específico, etc.).

El pipeline también hereda los siguientes métodos de carga:

encode_prompt

< >

( promptdevicenum_images_per_promptdo_classifier_free_guidancenegative_prompt = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = None )

Parámetros

  • prompt (str o list[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
  • do_classifier_free_guidance (bool) — si se debe usar classifier free guidance o no
  • negative_prompt (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si guidance_scale es menor que 1).
  • 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 entrada prompt.
  • 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 entrada negative_prompt.
  • lora_scale (float, opcional) — Una escala LoRA que se aplicará a todas las capas LoRA del codificador de texto si se cargan capas LoRA.
  • clip_skip (int, opcional) — Número de capas que se omitirán de CLIP al calcular los embeddings del prompt. Un valor de 1 significa que se utilizará la salida de la penúltima capa para calcular los embeddings del prompt.

Codifica el prompt en estados ocultos del codificador de texto.

get_guidance_scale_embedding

< >

( w: Tensorembedding_dim: int = 512dtype: dtype = torch.float32 ) → torch.Tensor

Parámetros

  • w (torch.Tensor) — Genera vectores de incrustación con una escala de orientación especificada para enriquecer posteriormente las incrustaciones de paso temporal.
  • embedding_dim (int, opcional, valor predeterminado 512) — Dimensión de los embeddings a generar.
  • dtype (torch.dtype, opcional, valor predeterminado torch.float32) — Tipo de datos de los embeddings generados.

Devuelve

torch.Tensor

Vectores de incrustación con forma (len(w), embedding_dim).

Ver https://github.com/google-research/vdm/blob/dc27b98a554f65cdc654b800da5aa1846545d41b/model_vdm.py#L298

StableDiffusionControlNetPAGInpaintPipeline

clase diffusers.StableDiffusionControlNetPAGInpaintPipeline

< >

( vae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizerunet: UNet2DConditionModelcontrolnet: diffusers.models.controlnets.controlnet.ControlNetModel | list[diffusers.models.controlnets.controlnet.ControlNetModel] | tuple[diffusers.models.controlnets.controlnet.ControlNetModel] | diffusers.models.controlnets.multicontrolnet.MultiControlNetModelscheduler: KarrasDiffusionSchedulerssafety_checker: StableDiffusionSafetyCheckerfeature_extractor: CLIPImageProcessorPilimage_encoder: CLIPVisionModelWithProjection = Nonerequires_safety_checker: bool = Truepag_applied_layers: str | list[str] = 'mid' )

Parámetros

  • vae (AutoencoderKL) — Modelo de Variational Auto-Encoder (VAE) para codificar y decodificar imágenes a partir de y hacia representaciones latentes.
  • text_encoder (CLIPTextModel) — Codificador de texto congelado (clip-vit-large-patch14).
  • tokenizer (CLIPTokenizer) — Un CLIPTokenizer para tokenizar texto.
  • unet (UNet2DConditionModel) — Un UNet2DConditionModel para desruidar los latentes de la imagen codificada.
  • controlnet (ControlNetModel o list[ControlNetModel]) — Proporciona una condición adicional al unet durante el proceso de desruido. Si configuras varios ControlNets como una lista, las salidas de cada ControlNet se suman para crear una condición adicional combinada.
  • scheduler (SchedulerMixin) — Un scheduler para usar en combinación con unet para desruidar los latentes de la imagen codificada. Puede ser uno de DDIMScheduler, LMSDiscreteScheduler o PNDMScheduler.
  • safety_checker (StableDiffusionSafetyChecker) — Módulo de clasificación que estima si las imágenes generadas podrían considerarse ofensivas o dañinas. Consulte la ficha del modelo para obtener más detalles sobre los posibles daños de un modelo.
  • feature_extractor (CLIPImageProcessor) — Un CLIPImageProcessor para extraer características de las imágenes generadas; se utiliza como entrada para el safety_checker.

Pipeline para el inpainting de imágenes usando Stable Diffusion con la guía de ControlNet.

Este modelo hereda de DiffusionPipeline. Consulta la documentación de la clase superior para los métodos genéricos implementados en todas las tuberías (descarga, guardado, ejecución en un dispositivo específico, etc.).

El pipeline también hereda los siguientes métodos de carga:

> Este pipeline se puede utilizar con puntos de control que han sido específicamente afinados para inpainting > (stable-diffusion-v1-5/stable-diffusion-inpainting) así como con > puntos de control de texto a imagen de Stable Diffusion predeterminados > (stable-diffusion-v1-5/stable-diffusion-v1-5). Los puntos de control de texto a imagen > predeterminados de Stable Diffusion podrían ser preferibles para ControlNets que han sido afinados en esos, como > lllyasviel/control_v11p_sd15_inpaint.

__call__

< >

( prompt: str | list[str] = Noneimage: 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]] = Nonecontrol_image: 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 = 1.0num_inference_steps: int = 50guidance_scale: float = 7.5negative_prompt: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Nonecontrolnet_conditioning_scale: float | list[float] = 0.5control_guidance_start: float | list[float] = 0.0control_guidance_end: float | list[float] = 1.0clip_skip: int | None = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']pag_scale: float = 3.0pag_adaptive_scale: float = 0.0 ) → StableDiffusionPipelineOutput or tuple

Parámetros

  • prompt (str o list[str], opcional) — El prompt o prompts para guiar la generación de imágenes. Si no se define, debe pasar prompt_embeds.
  • image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], — list[PIL.Image.Image], o list[np.ndarray]): Image, matriz de NumPy o tensor que representa un lote de imágenes para usarse como punto de partida. Tanto para la matriz de NumPy como para el tensor 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 una matriz de NumPy o una lista de matrices, la forma esperada debe ser (B, H, W, C) o (H, W, C). También puede aceptar latentes de imagen como image, pero si se pasan latentes directamente, no se vuelven a codificar.
  • mask_image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], — list[PIL.Image.Image], or list[np.ndarray]): Image, NumPy array or tensor representing an image batch to mask image. White pixels in the mask are repainted while black pixels are preserved. If mask_image is a PIL image, it is converted to a single channel (luminance) before use. If it’s a NumPy array or PyTorch tensor, it should contain one color channel (L) instead of 3, so the expected shape for PyTorch tensor would be (B, 1, H, W), (B, H, W), (1, H, W), (H, W). And for NumPy array, it would be for (B, H, W, 1), (B, H, W), (H, W, 1), or (H, W).
  • control_image (torch.Tensor, PIL.Image.Image, list[torch.Tensor], list[PIL.Image.Image], — list[list[torch.Tensor]] o list[list[PIL.Image.Image]]): La condición de entrada de ControlNet para proporcionar orientación al unet durante la generación. Si el tipo se especifica como torch.Tensor, se pasa a ControlNet tal cual. También se acepta PIL.Image.Image como imagen. Las dimensiones de la imagen de salida son, por defecto, las dimensiones de image. Si se pasan altura y/o ancho, image se redimensiona en consecuencia. Si se especifican varios ControlNets en init, las imágenes deben pasarse como una lista para que cada elemento de la lista pueda agruparse correctamente como entrada para un solo ControlNet.
  • height (int, opcional, valor predeterminado self.unet.config.sample_size * self.vae_scale_factor) — La altura en píxeles de la imagen generada.
  • width (int, opcional, valor predeterminado self.unet.config.sample_size * self.vae_scale_factor) — El ancho en píxeles de la imagen generada.
  • padding_mask_crop (int, opcional, valor predeterminado None) — El tamaño del margen en el recorte que se aplicará a la imagen y la máscara. Si es None, no se aplica ningún recorte a image y mask_image. Si padding_mask_crop no es None, 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 de padding_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 la image de referencia. Debe estar entre 0 y 1. image se utiliza como punto de partida y se añade más ruido a medida que aumenta el strength. El número de pasos de desruido depende de la cantidad de ruido añadido inicialmente. Cuando strength es 1, el ruido añadido es máximo y el proceso de desruido se ejecuta durante el número completo de iteraciones especificado en num_inference_steps. Un valor de 1 ignora esencialmente image.
  • 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.
  • guidance_scale (float, opcional, valor predeterminado 7.5) — Un valor de escala de guía más alto anima al modelo a generar imágenes estrechamente vinculadas al prompt de texto a costa de una menor calidad de imagen. La escala de guía se habilita cuando guidance_scale > 1.
  • negative_prompt (str o list[str], opcional) — El prompt o los prompts para guiar lo que no debe incluirse en la generación de imágenes. Si no se define, es necesario pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (guidance_scale < 1).
  • num_images_per_prompt (int, opcional, valor predeterminado 1) — El número de imágenes que se generarán por indicación.
  • eta (float, opcional, valor predeterminado 0.0) — Corresponde al parámetro eta (η) del artículo DDIM. Solo se aplica al DDIMScheduler y se ignora en otros programadores.
  • generator (torch.Generator o list[torch.Generator], opcional) — Un torch.Generator para hacer que la generación sea determinista.
  • latents (torch.Tensor, opcional) — Latentes ruidosos pregenerados muestreados de una distribución gaussiana, que se utilizarán como entradas para la generación de imágenes. Se pueden usar para ajustar la misma generación con diferentes prompts. Si no se proporciona, se genera un tensor de latentes mediante muestreo usando el generator aleatorio suministrado.
  • prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto (ponderación del prompt). Si no se proporcionan, las incrustaciones de texto se generan a partir del argumento de entrada prompt.
  • negative_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto negativo pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto (ponderación del prompt). Si no se proporcionan, negative_prompt_embeds se generan a partir del argumento de entrada negative_prompt.
  • ip_adapter_image — (PipelineImageInput, opcional): Entrada de imagen opcional para trabajar con IP Adapters.
  • ip_adapter_image_embeds (list[torch.Tensor], opcional) — Incrustaciones de imagen pregeneradas para IP-Adapter. Debe ser una lista de la misma longitud que el número de IP-adapters. Cada elemento debe ser un tensor de forma (batch_size, num_images, emb_dim). Debe contener la incrustación de imagen negativa si do_classifier_free_guidance está establecido en True. Si no se proporciona, las incrustaciones se calculan a partir del argumento de entrada ip_adapter_image.
  • output_type (str, opcional, por defecto "pil") — El formato de salida de la imagen generada. Elija entre PIL.Image o np.array.
  • return_dict (bool, opcional, valor predeterminado True) — Indica si se debe devolver un StableDiffusionPipelineOutput en lugar de una tupla simple.
  • cross_attention_kwargs (dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa al AttentionProcessor tal como se define en self.processor.
  • controlnet_conditioning_scale (float o list[float], opcional, valor predeterminado 0.5) — Las salidas de ControlNet se multiplican por controlnet_conditioning_scale antes de sumarse al residual en el unet original. Si se especifican varios ControlNets en init, puedes establecer la escala correspondiente como una lista.
  • control_guidance_start (float o list[float], opcional, valor predeterminado 0.0) — El porcentaje de pasos totales en el que ControlNet comienza a aplicarse.
  • control_guidance_end (float o list[float], opcional, valor predeterminado 1.0) — El porcentaje de pasos totales en el que ControlNet deja de aplicarse.
  • clip_skip (int, opcional) — Número de capas que se omitirán de CLIP al calcular los embeddings del prompt. Un valor de 1 significa que se utilizará la salida de la penúltima capa para calcular los embeddings del prompt.
  • callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, opcional) — Una función o una subclase de PipelineCallback o MultiPipelineCallbacks que se llama al final de cada paso de desruido durante la inferencia, con los siguientes argumentos: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs incluirá una lista de todos los tensores especificados por callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, opcional) — La lista de entradas de tensor para la función callback_on_step_end. Los tensores especificados en la lista se pasarán como argumento callback_kwargs. Solo podrás incluir variables listadas en el atributo ._callback_tensor_inputs de tu clase de pipeline.
  • pag_scale (float, opcional, valor predeterminado 3.0) — El factor de escala para la guía de atención perturbada. Si se establece en 0.0, no se utilizará la guía de atención perturbada.
  • pag_adaptive_scale (float, opcional, valor predeterminado 0.0) — El factor de escala adaptativo para la guía de atención perturbada. Si se establece en 0.0, se utiliza pag_scale.

Si return_dict es True, se devuelve StableDiffusionPipelineOutput, en caso contrario se devuelve una tuple cuyo primer elemento es una lista con las imágenes generadas y el segundo elemento es una lista de bool que indica si la imagen generada correspondiente contiene contenido “not-safe-for-work” (nsfw).

La función de llamada para el pipeline de generación.

Ejemplos:

>>> # !pip install transformers accelerate
>>> import cv2
>>> from diffusers import AutoPipelineForInpainting, ControlNetModel, DDIMScheduler
>>> from diffusers.utils import load_image
>>> import numpy as np
>>> from PIL import Image
>>> import torch

>>> init_image = load_image(
...     "https://huggingface.co/datasets/diffusers/test-arrays/resolve/main/stable_diffusion_inpaint/boy.png"
... )
>>> init_image = init_image.resize((512, 512))

>>> generator = torch.Generator(device="cpu").manual_seed(1)

>>> mask_image = load_image(
...     "https://huggingface.co/datasets/diffusers/test-arrays/resolve/main/stable_diffusion_inpaint/boy_mask.png"
... )
>>> mask_image = mask_image.resize((512, 512))


>>> def make_canny_condition(image):
...     image = np.array(image)
...     image = cv2.Canny(image, 100, 200)
...     image = image[:, :, None]
...     image = np.concatenate([image, image, image], axis=2)
...     image = Image.fromarray(image)
...     return image


>>> control_image = make_canny_condition(init_image)

>>> controlnet = ControlNetModel.from_pretrained(
...     "lllyasviel/control_v11p_sd15_inpaint", torch_dtype=torch.float16
... )
>>> pipe = AutoPipelineForInpainting.from_pretrained(
...     "stable-diffusion-v1-5/stable-diffusion-v1-5",
...     controlnet=controlnet,
...     torch_dtype=torch.float16,
...     enable_pag=True,
... )

>>> pipe.scheduler = DDIMScheduler.from_config(pipe.scheduler.config)
>>> pipe.enable_model_cpu_offload()

>>> # generate image
>>> image = pipe(
...     "a handsome man with ray-ban sunglasses",
...     num_inference_steps=20,
...     generator=generator,
...     eta=1.0,
...     image=init_image,
...     mask_image=mask_image,
...     control_image=control_image,
...     pag_scale=0.3,
... ).images[0]

encode_prompt

< >

( promptdevicenum_images_per_promptdo_classifier_free_guidancenegative_prompt = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = None )

Parámetros

  • prompt (str o list[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
  • do_classifier_free_guidance (bool) — si se debe usar classifier free guidance o no
  • negative_prompt (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si guidance_scale es menor que 1).
  • 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 entrada prompt.
  • 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 entrada negative_prompt.
  • lora_scale (float, opcional) — Una escala LoRA que se aplicará a todas las capas LoRA del codificador de texto si se cargan capas LoRA.
  • clip_skip (int, opcional) — Número de capas que se omitirán de CLIP al calcular los embeddings del prompt. Un valor de 1 significa que se utilizará la salida de la penúltima capa para calcular los embeddings del prompt.

Codifica el prompt en estados ocultos del codificador de texto.

get_guidance_scale_embedding

< >

( w: Tensorembedding_dim: int = 512dtype: dtype = torch.float32 ) → torch.Tensor

Parámetros

  • w (torch.Tensor) — Genera vectores de incrustación con una escala de orientación especificada para enriquecer posteriormente las incrustaciones de paso temporal.
  • embedding_dim (int, opcional, valor predeterminado 512) — Dimensión de los embeddings a generar.
  • dtype (torch.dtype, opcional, valor predeterminado torch.float32) — Tipo de datos de los embeddings generados.

Devuelve

torch.Tensor

Vectores de incrustación con forma (len(w), embedding_dim).

Ver https://github.com/google-research/vdm/blob/dc27b98a554f65cdc654b800da5aa1846545d41b/model_vdm.py#L298

StableDiffusionXLPAGPipeline

clase diffusers.StableDiffusionXLPAGPipeline

< >

( vae: AutoencoderKLtext_encoder: CLIPTextModeltext_encoder_2: CLIPTextModelWithProjectiontokenizer: CLIPTokenizertokenizer_2: CLIPTokenizerunet: UNet2DConditionModelscheduler: KarrasDiffusionSchedulersimage_encoder: CLIPVisionModelWithProjection = Nonefeature_extractor: CLIPImageProcessorPil = Noneforce_zeros_for_empty_prompt: bool = Trueadd_watermarker: bool | None = Nonepag_applied_layers: str | list[str] = 'mid' )

Parámetros

  • vae (AutoencoderKL) — Modelo de Variational Auto-Encoder (VAE) para codificar y decodificar imágenes a partir de y hacia representaciones latentes.
  • text_encoder (CLIPTextModel) — Codificador de texto congelado. Stable Diffusion XL utiliza la parte de texto de CLIP, específicamente la variante clip-vit-large-patch14.
  • text_encoder_2 ( CLIPTextModelWithProjection) — Segundo codificador de texto congelado. Stable Diffusion XL utiliza la parte de texto y pool de CLIP, específicamente la variante laion/CLIP-ViT-bigG-14-laion2B-39B-b160k.
  • tokenizer (CLIPTokenizer) — Tokenizer de la clase CLIPTokenizer.
  • tokenizer_2 (CLIPTokenizer) — Segundo Tokenizador de la clase CLIPTokenizer.
  • unet (UNet2DConditionModel) — Arquitectura U-Net condicional para desruidar los latentes de imagen codificados.
  • scheduler (SchedulerMixin) — Un scheduler para usar en combinación con unet para desruidar los latentes de la imagen codificada. Puede ser uno de DDIMScheduler, LMSDiscreteScheduler o PNDMScheduler.
  • force_zeros_for_empty_prompt (bool, opcional, valor predeterminado "True") — Si las incrustaciones del prompt negativo deben forzarse a establecerse siempre en 0. Consulte también la configuración de stabilityai/stable-diffusion-xl-base-1-0.
  • add_watermarker (bool, opcional) — Si se debe usar la invisible_watermark library para marcar con marca de agua las imágenes de salida. Si no se define, el valor predeterminado será True si el paquete está instalado; de lo contrario, no se usará ninguna marca de agua.

Pipeline para la generación de imágenes a partir de texto usando Stable Diffusion XL.

Este modelo hereda de DiffusionPipeline. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos los pipelines (como la descarga o el guardado, la ejecución en un dispositivo específico, etc.)

El pipeline también hereda los siguientes métodos de carga:

__call__

< >

( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneheight: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 50timesteps: list = Nonesigmas: list = Nonedenoising_end: float | None = Noneguidance_scale: float = 5.0negative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Noneguidance_rescale: float = 0.0original_size: tuple[int, int] | None = Nonecrops_coords_top_left: tuple = (0, 0)target_size: tuple[int, int] | None = Nonenegative_original_size: tuple[int, int] | None = Nonenegative_crops_coords_top_left: tuple = (0, 0)negative_target_size: tuple[int, int] | None = Noneclip_skip: int | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']pag_scale: float = 3.0pag_adaptive_scale: float = 0.0 ) → ~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput or tuple

Parámetros

  • prompt (str o list[str], opcional) — El prompt o los prompts para guiar la generación de la imagen. Si no se define, hay que pasar prompt_embeds en su lugar.
  • prompt_2 (str o list[str], opcional) — El prompt o prompts que se enviarán al tokenizer_2 y al text_encoder_2. Si no se define, se utiliza prompt en ambos text-encoders
  • 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. Cualquier valor inferior a 512 píxeles no funcionará bien con stabilityai/stable-diffusion-xl-base-1.0 y con puntos de control que no hayan sido ajustados específicamente para resoluciones bajas.
  • width (int, opcional, por defecto 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. Cualquier valor inferior a 512 píxeles no funcionará bien con stabilityai/stable-diffusion-xl-base-1.0 y con puntos de control que no hayan sido ajustados específicamente para resoluciones bajas.
  • 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.
  • timesteps (list[int], opcional) — Pasos de tiempo personalizados para usar en el proceso de desruido con programadores que admiten un argumento timesteps en su método set_timesteps. Si no se define, se usará el comportamiento predeterminado cuando se pase num_inference_steps. Debe estar en orden descendente.
  • sigmas (list[float], opcional) — Sigmas personalizados para usar en el proceso de desruido con programadores que admiten un argumento sigmas en su método set_timesteps. Si no se define, se usará el comportamiento predeterminado cuando se pase num_inference_steps.
  • denoising_end (float, opcional) — Cuando se especifica, determina la fracción (entre 0.0 y 1.0) del proceso total de denoising que debe completarse antes de que se termine prematuramente de forma intencional. Como resultado, la muestra devuelta aún conservará una cantidad sustancial de ruido, tal como lo determinan los pasos discretos seleccionados por el scheduler. El parámetro denoising_end debería utilizarse idealmente cuando este pipeline forma parte de una configuración multipipeline de “Mixture of Denoisers”, como se detalla en Refining the Image Output
  • guidance_scale (float, opcional, valor predeterminado 5.0) — Escala de guía definida en Classifier-Free Diffusion Guidance. guidance_scale se define como w de la ecuación 2 del Imagen Paper. La escala de guía se habilita estableciendo guidance_scale > 1. Una escala de guía más alta fomenta la generación de imágenes estrechamente vinculadas al prompt de texto, generalmente a costa de una menor calidad de imagen.
  • negative_prompt (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si guidance_scale es menor que 1).
  • negative_prompt_2 (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen y que se enviarán a tokenizer_2 y text_encoder_2. Si no se define, se utiliza negative_prompt en ambos text-encoders
  • num_images_per_prompt (int, opcional, valor predeterminado 1) — El número de imágenes que se generarán por indicación.
  • eta (float, opcional, valor predeterminado 0.0) — Corresponde al parámetro eta (η) del artículo DDIM: https://huggingface.co/papers/2010.02502. Solo se aplica a schedulers.DDIMScheduler y se ignorará en los demás.
  • generator (torch.Generator o list[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 el generator aleatorio 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 entrada prompt.
  • 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 entrada negative_prompt.
  • pooled_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto agrupadas pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporciona, las incrustaciones de texto agrupadas se generarán a partir del argumento de entrada prompt.
  • negative_pooled_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto negativo agrupadas pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, se generarán pooled negative_prompt_embeds a partir del argumento de entrada negative_prompt.
  • ip_adapter_image — (PipelineImageInput, opcional): Entrada de imagen opcional para trabajar con IP Adapters.
  • ip_adapter_image_embeds (list[torch.Tensor], opcional) — Incrustaciones de imagen pregeneradas para IP-Adapter. Debe ser una lista de la misma longitud que el número de IP-adapters. Cada elemento debe ser un tensor de forma (batch_size, num_images, emb_dim). Debe contener la incrustación de imagen negativa si do_classifier_free_guidance está establecido en True. Si no se proporciona, las incrustaciones se calculan a partir del argumento de entrada ip_adapter_image.
  • output_type (str, opcional, valor predeterminado "pil") — El formato de salida de la imagen generada. Elija entre PIL: PIL.Image.Image o np.array.
  • return_dict (bool, opcional, valor predeterminado True) — Indica si se debe devolver un ~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput en lugar de una tupla simple.
  • cross_attention_kwargs (dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa al AttentionProcessor definido en self.processor dentro de diffusers.models.attention_processor.
  • guidance_rescale (float, opcional, valor predeterminado 0.0) — Factor de reescalado de guía propuesto por Common Diffusion Noise Schedules and Sample Steps are Flawed. guidance_scale se define como φ en la ecuación 16. de Common Diffusion Noise Schedules and Sample Steps are Flawed. El factor de reescalado de guía debe corregir la sobreexposición al utilizar SNR terminal cero.
  • original_size (tuple[int], opcional, valor predeterminado (1024, 1024)) — Si original_size no es igual a target_size, la imagen parecerá haber sido reescalada hacia abajo o hacia arriba. original_size tiene como valor predeterminado (height, width) si no se especifica. Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952.
  • crops_coords_top_left (tuple[int], opcional, valor predeterminado (0, 0)) — crops_coords_top_left se puede utilizar para generar una imagen que parezca “recortada” desde la posición crops_coords_top_left hacia abajo. Generalmente se logran imágenes favorables y bien centradas estableciendo crops_coords_top_left en (0, 0). Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952.
  • target_size (tuple[int], opcional, valor predeterminado (1024, 1024)) — En la mayoría de los casos, target_size debe establecerse en la altura y el ancho deseados de la imagen generada. Si no se especifica, el valor predeterminado será (height, width). Forma parte del micro-conditioning de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952.
  • negative_original_size (tuple[int], opcional, valor predeterminado (1024, 1024)) — Para condicionar negativamente el proceso de generación en función de una resolución de imagen específica. Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952. Para obtener más información, consulte este hilo de problemas: https://github.com/huggingface/diffusers/issues/4208.
  • negative_crops_coords_top_left (tuple[int], opcional, valor predeterminado (0, 0)) — Para condicionar negativamente el proceso de generación en función de unas coordenadas de recorte específicas. Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952. Para obtener más información, consulte este hilo de problemas: https://github.com/huggingface/diffusers/issues/4208.
  • negative_target_size (tuple[int], opcional, valor predeterminado (1024, 1024)) — Para condicionar negativamente el proceso de generación en función de la resolución de la imagen objetivo. Debe ser igual que target_size en la mayoría de los casos. Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952. Para obtener más información, consulte este hilo de problemas: https://github.com/huggingface/diffusers/issues/4208.
  • clip_skip (int, opcional) — Número de capas que se omitirán de CLIP al calcular los embeddings del prompt. Un valor de 1 significa que se utilizará la salida de la penúltima capa para calcular los embeddings del prompt.
  • 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_kwargs incluirá una lista de todos los tensores especificados por callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, opcional) — La lista de entradas de tensor para la función callback_on_step_end. Los tensores especificados en la lista se pasarán como argumento callback_kwargs. Solo podrás incluir variables listadas en el atributo ._callback_tensor_inputs de tu clase de pipeline.
  • pag_scale (float, opcional, valor predeterminado 3.0) — El factor de escala para la guía de atención perturbada. Si se establece en 0.0, no se utilizará la guía de atención perturbada.
  • pag_adaptive_scale (float, opcional, valor predeterminado 0.0) — El factor de escala adaptativo para la guía de atención perturbada. Si se establece en 0.0, se utiliza pag_scale.

Devuelve

~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput o tuple

~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput 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 AutoPipelineForText2Image

>>> pipe = AutoPipelineForText2Image.from_pretrained(
...     "stabilityai/stable-diffusion-xl-base-1.0",
...     torch_dtype=torch.float16,
...     enable_pag=True,
... )
>>> pipe = pipe.to("cuda")

>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> image = pipe(prompt, pag_scale=0.3).images[0]

encode_prompt

< >

( prompt: strprompt_2: str | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | None = Nonenegative_prompt_2: str | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = None )

Parámetros

  • prompt (str o list[str], opcional) — prompt a codificar
  • prompt_2 (str o list[str], opcional) — El prompt o prompts que se enviarán al tokenizer_2 y al text_encoder_2. Si no se define, se utiliza prompt en ambos text-encoders
  • device — (torch.device): dispositivo de torch
  • num_images_per_prompt (int) — número de imágenes que deben generarse por prompt
  • do_classifier_free_guidance (bool) — si se debe usar classifier free guidance o no
  • negative_prompt (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si guidance_scale es menor que 1).
  • negative_prompt_2 (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen y que se enviarán a tokenizer_2 y text_encoder_2. Si no se define, se utiliza negative_prompt en ambos text-encoders
  • 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 entrada prompt.
  • 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 entrada negative_prompt.
  • pooled_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto agrupadas pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporciona, las incrustaciones de texto agrupadas se generarán a partir del argumento de entrada prompt.
  • negative_pooled_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto negativo agrupadas pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, se generarán pooled negative_prompt_embeds a partir del argumento de entrada negative_prompt.
  • lora_scale (float, opcional) — Una escala LoRA que se aplicará a todas las capas LoRA del codificador de texto si se cargan capas LoRA.
  • clip_skip (int, opcional) — Número de capas que se omitirán de CLIP al calcular los embeddings del prompt. Un valor de 1 significa que se utilizará la salida de la penúltima capa para calcular los embeddings del prompt.

Codifica el prompt en estados ocultos del codificador de texto.

get_guidance_scale_embedding

< >

( w: Tensorembedding_dim: int = 512dtype: dtype = torch.float32 ) → torch.Tensor

Parámetros

  • w (torch.Tensor) — Genera vectores de incrustación con una escala de orientación especificada para enriquecer posteriormente las incrustaciones de paso temporal.
  • embedding_dim (int, opcional, valor predeterminado 512) — Dimensión de los embeddings a generar.
  • dtype (torch.dtype, opcional, valor predeterminado torch.float32) — Tipo de datos de los embeddings generados.

Devuelve

torch.Tensor

Vectores de incrustación con forma (len(w), embedding_dim).

Ver https://github.com/google-research/vdm/blob/dc27b98a554f65cdc654b800da5aa1846545d41b/model_vdm.py#L298

StableDiffusionXLPAGImg2ImgPipeline

clase diffusers.StableDiffusionXLPAGImg2ImgPipeline

< >

( vae: AutoencoderKLtext_encoder: CLIPTextModeltext_encoder_2: CLIPTextModelWithProjectiontokenizer: CLIPTokenizertokenizer_2: CLIPTokenizerunet: UNet2DConditionModelscheduler: KarrasDiffusionSchedulersimage_encoder: CLIPVisionModelWithProjection = Nonefeature_extractor: CLIPImageProcessorPil = Nonerequires_aesthetics_score: bool = Falseforce_zeros_for_empty_prompt: bool = Trueadd_watermarker: bool | None = Nonepag_applied_layers: str | list[str] = 'mid' )

Parámetros

  • vae (AutoencoderKL) — Modelo de Variational Auto-Encoder (VAE) para codificar y decodificar imágenes a partir de y hacia representaciones latentes.
  • text_encoder (CLIPTextModel) — Codificador de texto congelado. Stable Diffusion XL utiliza la parte de texto de CLIP, específicamente la variante clip-vit-large-patch14.
  • text_encoder_2 ( CLIPTextModelWithProjection) — Segundo codificador de texto congelado. Stable Diffusion XL utiliza la parte de texto y pool de CLIP, específicamente la variante laion/CLIP-ViT-bigG-14-laion2B-39B-b160k.
  • tokenizer (CLIPTokenizer) — Tokenizer de la clase CLIPTokenizer.
  • tokenizer_2 (CLIPTokenizer) — Segundo Tokenizador de la clase CLIPTokenizer.
  • unet (UNet2DConditionModel) — Arquitectura U-Net condicional para desruidar los latentes de imagen codificados.
  • scheduler (SchedulerMixin) — Un scheduler para usar en combinación con unet para desruidar los latentes de la imagen codificada. Puede ser uno de DDIMScheduler, LMSDiscreteScheduler o PNDMScheduler.
  • requires_aesthetics_score (bool, opcional, valor predeterminado "False") — Indica si el unet requiere que se pase una condición aesthetic_score durante la inferencia. Consulte también la configuración de stabilityai/stable-diffusion-xl-refiner-1-0.
  • force_zeros_for_empty_prompt (bool, opcional, valor predeterminado "True") — Si las incrustaciones del prompt negativo deben forzarse a establecerse siempre en 0. Consulte también la configuración de stabilityai/stable-diffusion-xl-base-1-0.
  • add_watermarker (bool, opcional) — Si se debe usar la invisible_watermark library para marcar con marca de agua las imágenes de salida. Si no se define, el valor predeterminado será True si el paquete está instalado; de lo contrario, no se usará ninguna marca de agua.

Pipeline para la generación de imágenes a partir de texto usando Stable Diffusion XL.

Este modelo hereda de DiffusionPipeline. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos los pipelines (como la descarga o el guardado, la ejecución en un dispositivo específico, etc.)

El pipeline también hereda los siguientes métodos de carga:

__call__

< >

( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonestrength: float = 0.3num_inference_steps: int = 50timesteps: list = Nonesigmas: list = Nonedenoising_start: float | None = Nonedenoising_end: float | None = Noneguidance_scale: float = 5.0negative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Noneguidance_rescale: float = 0.0original_size: tuple = Nonecrops_coords_top_left: tuple = (0, 0)target_size: tuple = Nonenegative_original_size: tuple[int, int] | None = Nonenegative_crops_coords_top_left: tuple = (0, 0)negative_target_size: tuple[int, int] | None = Noneaesthetic_score: float = 6.0negative_aesthetic_score: float = 2.5clip_skip: int | None = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']pag_scale: float = 3.0pag_adaptive_scale: float = 0.0 ) → ~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput or tuple

Parámetros

  • prompt (str o list[str], opcional) — El prompt o los prompts para guiar la generación de la imagen. Si no se define, hay que pasar prompt_embeds en su lugar.
  • prompt_2 (str o list[str], opcional) — El prompt o prompts que se enviarán al tokenizer_2 y al text_encoder_2. Si no se define, se utiliza prompt en ambos text-encoders
  • image (torch.Tensor o PIL.Image.Image o np.ndarray o list[torch.Tensor] o list[PIL.Image.Image] o list[np.ndarray]) — La(s) imagen(es) que se modificarán con el pipeline.
  • strength (float, opcional, valor predeterminado 0.3) — Conceptualmente, indica en qué medida se debe transformar la image de referencia. Debe estar entre 0 y 1. image se utilizará como punto de partida, añadiendo más ruido a medida que aumenta el strength. El número de pasos de desruido depende de la cantidad de ruido añadido inicialmente. Cuando strength es 1, el ruido añadido será máximo y el proceso de desruido se ejecutará durante el número completo de iteraciones especificado en num_inference_steps. Un valor de 1, por lo tanto, ignora esencialmente image. Tenga en cuenta que, en el caso de que denoising_start se declare como un entero, el valor de strength se ignorará.
  • 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.
  • timesteps (list[int], opcional) — Pasos de tiempo personalizados para usar en el proceso de desruido con programadores que admiten un argumento timesteps en su método set_timesteps. Si no se define, se usará el comportamiento predeterminado cuando se pase num_inference_steps. Debe estar en orden descendente.
  • sigmas (list[float], opcional) — Sigmas personalizados para usar en el proceso de desruido con programadores que admiten un argumento sigmas en su método set_timesteps. Si no se define, se usará el comportamiento predeterminado cuando se pase num_inference_steps.
  • denoising_start (float, opcional) — Cuando se especifica, indica la fracción (entre 0.0 y 1.0) del proceso total de denoising que se debe omitir antes de iniciarlo. En consecuencia, se omite la parte inicial del proceso de denoising y se asume que la image pasada es una imagen parcialmente desruidada. Tenga en cuenta que, cuando se especifica esto, se ignorará strength. El parámetro denoising_start resulta especialmente útil cuando este pipeline se integra en una configuración multipipeline de “Mixture of Denoisers”, como se detalla en Refine Image Quality.
  • denoising_end (float, opcional) — Cuando se especifica, determina la fracción (entre 0.0 y 1.0) del proceso total de denoising que debe completarse antes de que se termine prematuramente de forma intencional. Como resultado, la muestra devuelta aún conservará una cantidad sustancial de ruido (aprox. el 20% final de los timesteps aún necesarios) y debería denoisearse mediante un pipeline sucesor que tenga denoising_start establecido en 0.8 para que solo denoise el 20% final del scheduler. El parámetro denoising_end debería utilizarse idealmente cuando este pipeline forma parte de una configuración multipipeline de “Mixture of Denoisers”, tal como se detalla en Refine Image Quality.
  • guidance_scale (float, opcional, valor predeterminado 7.5) — Escala de guía tal como se define en Classifier-Free Diffusion Guidance. guidance_scale se define como w de la ecuación 2 de Imagen Paper. La escala de guía se habilita al establecer guidance_scale > 1. Una escala de guía más alta fomenta la generación de imágenes estrechamente vinculadas al texto prompt, generalmente a costa de una menor calidad de imagen.
  • negative_prompt (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si guidance_scale es menor que 1).
  • negative_prompt_2 (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen y que se enviarán a tokenizer_2 y text_encoder_2. Si no se define, se utiliza negative_prompt en ambos text-encoders
  • num_images_per_prompt (int, opcional, valor predeterminado 1) — El número de imágenes que se generarán por indicación.
  • eta (float, opcional, valor predeterminado 0.0) — Corresponde al parámetro eta (η) del artículo DDIM: https://huggingface.co/papers/2010.02502. Solo se aplica a schedulers.DDIMScheduler y se ignorará en los demás.
  • generator (torch.Generator o list[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 el generator aleatorio 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 entrada prompt.
  • 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 entrada negative_prompt.
  • pooled_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto agrupadas pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporciona, las incrustaciones de texto agrupadas se generarán a partir del argumento de entrada prompt.
  • negative_pooled_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto negativo agrupadas pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, se generarán pooled negative_prompt_embeds a partir del argumento de entrada negative_prompt.
  • ip_adapter_image — (PipelineImageInput, opcional): Entrada de imagen opcional para trabajar con IP Adapters.
  • ip_adapter_image_embeds (list[torch.Tensor], opcional) — Incrustaciones de imagen pregeneradas para IP-Adapter. Debe ser una lista de la misma longitud que el número de IP-adapters. Cada elemento debe ser un tensor de forma (batch_size, num_images, emb_dim). Debe contener la incrustación de imagen negativa si do_classifier_free_guidance está establecido en True. Si no se proporciona, las incrustaciones se calculan a partir del argumento de entrada ip_adapter_image.
  • output_type (str, opcional, valor predeterminado "pil") — El formato de salida de la imagen generada. Elija entre PIL: PIL.Image.Image o np.array.
  • return_dict (bool, opcional, valor predeterminado True) — Indica si se debe devolver un ~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput en lugar de una tupla simple.
  • cross_attention_kwargs (dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa al AttentionProcessor definido en self.processor dentro de diffusers.models.attention_processor.
  • guidance_rescale (float, opcional, valor predeterminado 0.0) — Factor de reescalado de guía propuesto por Common Diffusion Noise Schedules and Sample Steps are Flawed. guidance_scale se define como φ en la ecuación 16. de Common Diffusion Noise Schedules and Sample Steps are Flawed. El factor de reescalado de guía debe corregir la sobreexposición al utilizar SNR terminal cero.
  • original_size (tuple[int], opcional, valor predeterminado (1024, 1024)) — Si original_size no es igual a target_size, la imagen parecerá haber sido reescalada hacia abajo o hacia arriba. original_size tiene como valor predeterminado (height, width) si no se especifica. Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952.
  • crops_coords_top_left (tuple[int], opcional, valor predeterminado (0, 0)) — crops_coords_top_left se puede utilizar para generar una imagen que parezca “recortada” desde la posición crops_coords_top_left hacia abajo. Generalmente se logran imágenes favorables y bien centradas estableciendo crops_coords_top_left en (0, 0). Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952.
  • target_size (tuple[int], opcional, valor predeterminado (1024, 1024)) — En la mayoría de los casos, target_size debe establecerse en la altura y el ancho deseados de la imagen generada. Si no se especifica, el valor predeterminado será (height, width). Forma parte del micro-conditioning de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952.
  • negative_original_size (tuple[int], opcional, valor predeterminado (1024, 1024)) — Para condicionar negativamente el proceso de generación en función de una resolución de imagen específica. Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952. Para obtener más información, consulte este hilo de problemas: https://github.com/huggingface/diffusers/issues/4208.
  • negative_crops_coords_top_left (tuple[int], opcional, valor predeterminado (0, 0)) — Para condicionar negativamente el proceso de generación en función de unas coordenadas de recorte específicas. Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952. Para obtener más información, consulte este hilo de problemas: https://github.com/huggingface/diffusers/issues/4208.
  • negative_target_size (tuple[int], opcional, valor predeterminado (1024, 1024)) — Para condicionar negativamente el proceso de generación en función de la resolución de la imagen objetivo. Debe ser igual que target_size en la mayoría de los casos. Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952. Para obtener más información, consulte este hilo de problemas: https://github.com/huggingface/diffusers/issues/4208.
  • aesthetic_score (float, opcional, valor predeterminado 6.0) — Se utiliza para simular una puntuación estética de la imagen generada influyendo en la condición de texto positiva. Parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952.
  • negative_aesthetic_score (float, opcional, valor predeterminado 2.5) — Parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952. Puede utilizarse para simular una puntuación estética de la imagen generada influyendo en la condición de texto negativa.
  • clip_skip (int, opcional) — Número de capas que se omitirán de CLIP al calcular los embeddings del prompt. Un valor de 1 significa que se utilizará la salida de la penúltima capa para calcular los embeddings del prompt.
  • callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, opcional) — Una función o una subclase de PipelineCallback o MultiPipelineCallbacks que se llama al final de cada paso de desruido durante la inferencia, con los siguientes argumentos: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs incluirá una lista de todos los tensores especificados por callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, opcional) — La lista de entradas de tensor para la función callback_on_step_end. Los tensores especificados en la lista se pasarán como argumento callback_kwargs. Solo podrás incluir variables listadas en el atributo ._callback_tensor_inputs de tu clase de pipeline.
  • pag_scale (float, opcional, valor predeterminado 3.0) — El factor de escala para la guía de atención perturbada. Si se establece en 0.0, no se utilizará la guía de atención perturbada.
  • pag_adaptive_scale (float, opcional, valor predeterminado 0.0) — El factor de escala adaptativo para la guía de atención perturbada. Si se establece en 0.0, se utiliza pag_scale.

Devuelve

~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput o tuple

~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput 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 AutoPipelineForImage2Image
>>> from diffusers.utils import load_image

>>> pipe = AutoPipelineForImage2Image.from_pretrained(
...     "stabilityai/stable-diffusion-xl-refiner-1.0",
...     torch_dtype=torch.float16,
...     enable_pag=True,
... )
>>> pipe = pipe.to("cuda")
>>> url = "https://huggingface.co/datasets/patrickvonplaten/images/resolve/main/aa_xl/000000009.png"

>>> init_image = load_image(url).convert("RGB")
>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> image = pipe(prompt, image=init_image, pag_scale=0.3).images[0]

encode_prompt

< >

( prompt: strprompt_2: str | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | None = Nonenegative_prompt_2: str | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = None )

Parámetros

  • prompt (str o list[str], opcional) — prompt a codificar
  • prompt_2 (str o list[str], opcional) — El prompt o prompts que se enviarán al tokenizer_2 y al text_encoder_2. Si no se define, se utiliza prompt en ambos text-encoders
  • device — (torch.device): dispositivo de torch
  • num_images_per_prompt (int) — número de imágenes que deben generarse por prompt
  • do_classifier_free_guidance (bool) — si se debe usar classifier free guidance o no
  • negative_prompt (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si guidance_scale es menor que 1).
  • negative_prompt_2 (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen y que se enviarán a tokenizer_2 y text_encoder_2. Si no se define, se utiliza negative_prompt en ambos text-encoders
  • 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 entrada prompt.
  • 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 entrada negative_prompt.
  • pooled_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto agrupadas pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporciona, las incrustaciones de texto agrupadas se generarán a partir del argumento de entrada prompt.
  • negative_pooled_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto negativo agrupadas pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, se generarán pooled negative_prompt_embeds a partir del argumento de entrada negative_prompt.
  • lora_scale (float, opcional) — Una escala LoRA que se aplicará a todas las capas LoRA del codificador de texto si se cargan capas LoRA.
  • clip_skip (int, opcional) — Número de capas que se omitirán de CLIP al calcular los embeddings del prompt. Un valor de 1 significa que se utilizará la salida de la penúltima capa para calcular los embeddings del prompt.

Codifica el prompt en estados ocultos del codificador de texto.

get_guidance_scale_embedding

< >

( w: Tensorembedding_dim: int = 512dtype: dtype = torch.float32 ) → torch.Tensor

Parámetros

  • w (torch.Tensor) — Genera vectores de incrustación con una escala de orientación especificada para enriquecer posteriormente las incrustaciones de paso temporal.
  • embedding_dim (int, opcional, valor predeterminado 512) — Dimensión de los embeddings a generar.
  • dtype (torch.dtype, opcional, valor predeterminado torch.float32) — Tipo de datos de los embeddings generados.

Devuelve

torch.Tensor

Vectores de incrustación con forma (len(w), embedding_dim).

Ver https://github.com/google-research/vdm/blob/dc27b98a554f65cdc654b800da5aa1846545d41b/model_vdm.py#L298

StableDiffusionXLPAGInpaintPipeline

clase diffusers.StableDiffusionXLPAGInpaintPipeline

< >

( vae: AutoencoderKLtext_encoder: CLIPTextModeltext_encoder_2: CLIPTextModelWithProjectiontokenizer: CLIPTokenizertokenizer_2: CLIPTokenizerunet: UNet2DConditionModelscheduler: KarrasDiffusionSchedulersimage_encoder: CLIPVisionModelWithProjection = Nonefeature_extractor: CLIPImageProcessorPil = Nonerequires_aesthetics_score: bool = Falseforce_zeros_for_empty_prompt: bool = Trueadd_watermarker: bool | None = Nonepag_applied_layers: str | list[str] = 'mid' )

Parámetros

  • vae (AutoencoderKL) — Modelo de Variational Auto-Encoder (VAE) para codificar y decodificar imágenes a partir de y hacia representaciones latentes.
  • text_encoder (CLIPTextModel) — Codificador de texto congelado. Stable Diffusion XL utiliza la parte de texto de CLIP, específicamente la variante clip-vit-large-patch14.
  • text_encoder_2 ( CLIPTextModelWithProjection) — Segundo codificador de texto congelado. Stable Diffusion XL utiliza la parte de texto y pool de CLIP, específicamente la variante laion/CLIP-ViT-bigG-14-laion2B-39B-b160k.
  • tokenizer (CLIPTokenizer) — Tokenizer de la clase CLIPTokenizer.
  • tokenizer_2 (CLIPTokenizer) — Segundo Tokenizador de la clase CLIPTokenizer.
  • unet (UNet2DConditionModel) — Arquitectura U-Net condicional para desruidar los latentes de imagen codificados.
  • scheduler (SchedulerMixin) — Un scheduler para usar en combinación con unet para desruidar los latentes de la imagen codificada. Puede ser uno de DDIMScheduler, LMSDiscreteScheduler o PNDMScheduler.
  • requires_aesthetics_score (bool, opcional, valor predeterminado "False") — Indica si el unet requiere que se pase una condición de aesthetic_score durante la inferencia. Consulte también la configuración de stabilityai/stable-diffusion-xl-refiner-1-0.
  • force_zeros_for_empty_prompt (bool, opcional, valor predeterminado "True") — Si las incrustaciones del prompt negativo deben forzarse a establecerse siempre en 0. Consulte también la configuración de stabilityai/stable-diffusion-xl-base-1-0.
  • add_watermarker (bool, opcional) — Si se debe usar la invisible_watermark library para marcar con marca de agua las imágenes de salida. Si no se define, el valor predeterminado será True si el paquete está instalado; de lo contrario, no se usará ninguna marca de agua.

Pipeline para la generación de imágenes a partir de texto usando Stable Diffusion XL.

Este modelo hereda de DiffusionPipeline. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos los pipelines (como la descarga o el guardado, la ejecución en un dispositivo específico, etc.)

El pipeline también hereda los siguientes métodos de carga:

__call__

< >

( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneimage: 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: Tensor = Noneheight: int | None = Nonewidth: int | None = Nonepadding_mask_crop: int | None = Nonestrength: float = 0.9999num_inference_steps: int = 50timesteps: list = Nonesigmas: list = Nonedenoising_start: float | None = Nonedenoising_end: float | None = Noneguidance_scale: float = 7.5negative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Noneguidance_rescale: float = 0.0original_size: tuple = Nonecrops_coords_top_left: tuple = (0, 0)target_size: tuple = Nonenegative_original_size: tuple[int, int] | None = Nonenegative_crops_coords_top_left: tuple = (0, 0)negative_target_size: tuple[int, int] | None = Noneaesthetic_score: float = 6.0negative_aesthetic_score: float = 2.5clip_skip: int | None = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']pag_scale: float = 3.0pag_adaptive_scale: float = 0.0 ) → ~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput or tuple

Parámetros

  • prompt (str o list[str], opcional) — El prompt o los prompts para guiar la generación de la imagen. Si no se define, hay que pasar prompt_embeds en su lugar.
  • prompt_2 (str o list[str], opcional) — El prompt o prompts que se enviarán al tokenizer_2 y al text_encoder_2. Si no se define, se utiliza prompt en ambos text-encoders
  • image (PIL.Image.Image) — Image o tensor que representa un lote de imágenes que se someterá a inpainting, es decir, partes de la imagen se enmascararán con mask_image y se repintarán según prompt.
  • mask_image (PIL.Image.Image) — Image o tensor que representa un lote de imágenes, para enmascarar image. Los píxeles blancos de la máscara se repintarán, mientras que los píxeles negros se conservarán. Si mask_image es una imagen PIL, se convertirá a un solo canal (luminancia) antes de su uso. Si es un tensor, debe contener un solo canal de color (L) en lugar de 3, por lo que la forma esperada sería (B, H, W, 1).
  • masked_image_latents (torch.Tensor, opcional) — Latente precodificado de la imagen enmascarada (para inpainting).
  • 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. Cualquier valor inferior a 512 píxeles no funcionará bien con stabilityai/stable-diffusion-xl-base-1.0 y con puntos de control que no hayan sido ajustados específicamente para resoluciones bajas.
  • width (int, opcional, por defecto 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. Cualquier valor inferior a 512 píxeles no funcionará bien con stabilityai/stable-diffusion-xl-base-1.0 y con puntos de control que no hayan sido ajustados específicamente para resoluciones bajas.
  • padding_mask_crop (int, opcional, valor predeterminado None) — El tamaño del margen en el recorte que se aplicará a la imagen y la máscara. Si es None, no se aplica ningún recorte a image y mask_image. Si padding_mask_crop no es None, 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 de padding_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 0.9999) — Conceptualmente, indica en qué medida se debe transformar la parte enmascarada de la image de referencia. Debe estar entre 0 y 1. Se utilizará image como punto de partida, añadiendo más ruido a medida que aumenta el strength. El número de pasos de desruido depende de la cantidad de ruido añadido inicialmente. Cuando strength es 1, el ruido añadido será máximo y el proceso de desruido se ejecutará durante el número completo de iteraciones especificado en num_inference_steps. Un valor de 1, por lo tanto, ignora esencialmente la parte enmascarada de la image de referencia. Tenga en cuenta que, en el caso de que denoising_start se declare como un entero, se ignorará el valor de strength.
  • 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.
  • timesteps (list[int], opcional) — Pasos de tiempo personalizados para usar en el proceso de desruido con programadores que admiten un argumento timesteps en su método set_timesteps. Si no se define, se usará el comportamiento predeterminado cuando se pase num_inference_steps. Debe estar en orden descendente.
  • sigmas (list[float], opcional) — Sigmas personalizados para usar en el proceso de desruido con programadores que admiten un argumento sigmas en su método set_timesteps. Si no se define, se usará el comportamiento predeterminado cuando se pase num_inference_steps.
  • denoising_start (float, optional) — When specified, indicates the fraction (between 0.0 and 1.0) of the total denoising process to be bypassed before it is initiated. Consequently, the initial part of the denoising process is skipped and it is assumed that the passed image is a partly denoised image. Note that when this is specified, strength will be ignored. The denoising_start parameter is particularly beneficial when this pipeline is integrated into a “Mixture of Denoisers” multi-pipeline setup, as detailed in Refining the Image Output.
  • denoising_end (float, opcional) — Cuando se especifica, determina la fracción (entre 0.0 y 1.0) del proceso total de denoising que debe completarse antes de que se termine prematuramente de forma intencional. Como resultado, la muestra devuelta aún conservará una cantidad sustancial de ruido (aprox. el 20% final de los timesteps aún necesarios) y debe denoisearse mediante un pipeline sucesor que tenga denoising_start establecido en 0.8 para que solo denoise el 20% final del scheduler. El parámetro denoising_end debería utilizarse idealmente cuando este pipeline forma parte de una configuración multipipeline de “Mixture of Denoisers”, tal como se detalla en Refining the Image Output.
  • guidance_scale (float, opcional, valor predeterminado 7.5) — Escala de guía tal como se define en Classifier-Free Diffusion Guidance. guidance_scale se define como w de la ecuación 2 de Imagen Paper. La escala de guía se habilita al establecer guidance_scale > 1. Una escala de guía más alta fomenta la generación de imágenes estrechamente vinculadas al texto prompt, generalmente a costa de una menor calidad de imagen.
  • negative_prompt (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si guidance_scale es menor que 1).
  • negative_prompt_2 (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen y que se enviarán a tokenizer_2 y text_encoder_2. Si no se define, se utiliza negative_prompt en ambos text-encoders
  • 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 entrada prompt.
  • 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 entrada negative_prompt.
  • pooled_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto agrupadas pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporciona, las incrustaciones de texto agrupadas se generarán a partir del argumento de entrada prompt.
  • negative_pooled_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto negativo agrupadas pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, se generarán pooled negative_prompt_embeds a partir del argumento de entrada negative_prompt.
  • ip_adapter_image — (PipelineImageInput, opcional): Entrada de imagen opcional para trabajar con IP Adapters.
  • ip_adapter_image_embeds (list[torch.Tensor], opcional) — Incrustaciones de imagen pregeneradas para IP-Adapter. Debe ser una lista de la misma longitud que el número de IP-adapters. Cada elemento debe ser un tensor de forma (batch_size, num_images, emb_dim). Debe contener la incrustación de imagen negativa si do_classifier_free_guidance está establecido en True. Si no se proporciona, las incrustaciones se calculan a partir del argumento de entrada ip_adapter_image.
  • num_images_per_prompt (int, opcional, valor predeterminado 1) — El número de imágenes que se generarán por indicación.
  • eta (float, opcional, valor predeterminado 0.0) — Corresponde al parámetro eta (η) del artículo DDIM: https://huggingface.co/papers/2010.02502. Solo se aplica a schedulers.DDIMScheduler y se ignorará en los demás.
  • generator (torch.Generator, opcional) — Uno 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 el generator aleatorio suministrado.
  • output_type (str, opcional, valor predeterminado "pil") — El formato de salida de la imagen generada. Elija entre PIL: PIL.Image.Image o np.array.
  • return_dict (bool, opcional, valor predeterminado True) — Indica si se debe devolver un StableDiffusionPipelineOutput en lugar de una tupla simple.
  • cross_attention_kwargs (dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa al AttentionProcessor definido en self.processor dentro de diffusers.models.attention_processor.
  • original_size (tuple[int], opcional, valor predeterminado (1024, 1024)) — Si original_size no es igual a target_size, la imagen parecerá haber sido reescalada hacia abajo o hacia arriba. original_size tiene como valor predeterminado (height, width) si no se especifica. Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952.
  • crops_coords_top_left (tuple[int], opcional, valor predeterminado (0, 0)) — crops_coords_top_left se puede utilizar para generar una imagen que parezca “recortada” desde la posición crops_coords_top_left hacia abajo. Generalmente se logran imágenes favorables y bien centradas estableciendo crops_coords_top_left en (0, 0). Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952.
  • target_size (tuple[int], opcional, valor predeterminado (1024, 1024)) — En la mayoría de los casos, target_size debe establecerse en la altura y el ancho deseados de la imagen generada. Si no se especifica, el valor predeterminado será (height, width). Forma parte del micro-conditioning de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952.
  • negative_original_size (tuple[int], opcional, valor predeterminado (1024, 1024)) — Para condicionar negativamente el proceso de generación en función de una resolución de imagen específica. Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952. Para obtener más información, consulte este hilo de problemas: https://github.com/huggingface/diffusers/issues/4208.
  • negative_crops_coords_top_left (tuple[int], opcional, valor predeterminado (0, 0)) — Para condicionar negativamente el proceso de generación en función de unas coordenadas de recorte específicas. Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952. Para obtener más información, consulte este hilo de problemas: https://github.com/huggingface/diffusers/issues/4208.
  • negative_target_size (tuple[int], opcional, valor predeterminado (1024, 1024)) — Para condicionar negativamente el proceso de generación en función de la resolución de la imagen objetivo. Debe ser igual que target_size en la mayoría de los casos. Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952. Para obtener más información, consulte este hilo de problemas: https://github.com/huggingface/diffusers/issues/4208.
  • aesthetic_score (float, opcional, valor predeterminado 6.0) — Se utiliza para simular una puntuación estética de la imagen generada influyendo en la condición de texto positiva. Parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952.
  • negative_aesthetic_score (float, opcional, valor predeterminado 2.5) — Parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952. Puede utilizarse para simular una puntuación estética de la imagen generada influyendo en la condición de texto negativa.
  • guidance_rescale (float, opcional, valor predeterminado 0.0) — Factor de rescale de guidance de Common Diffusion Noise Schedules and Sample Steps are Flawed.
  • clip_skip (int, opcional) — Número de capas que se omitirán de CLIP al calcular los embeddings del prompt. Un valor de 1 significa que se utilizará la salida de la penúltima capa para calcular los embeddings del prompt.
  • callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, opcional) — Una función o una subclase de PipelineCallback o MultiPipelineCallbacks que se llama al final de cada paso de desruido durante la inferencia, con los siguientes argumentos: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs incluirá una lista de todos los tensores especificados por callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, opcional) — La lista de entradas de tensor para la función callback_on_step_end. Los tensores especificados en la lista se pasarán como argumento callback_kwargs. Solo podrás incluir variables listadas en el atributo ._callback_tensor_inputs de tu clase de pipeline.
  • pag_scale (float, opcional, valor predeterminado 3.0) — El factor de escala para la guía de atención perturbada. Si se establece en 0.0, no se utilizará la guía de atención perturbada.
  • pag_adaptive_scale (float, opcional, valor predeterminado 0.0) — El factor de escala adaptativo para la guía de atención perturbada. Si se establece en 0.0, se utiliza pag_scale.

Devuelve

~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput o tuple

~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput si return_dict es True, de lo contrario una tuple. tuple. Al devolver una tuple, 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 AutoPipelineForInpainting
>>> from diffusers.utils import load_image

>>> pipe = AutoPipelineForInpainting.from_pretrained(
...     "stabilityai/stable-diffusion-xl-base-1.0",
...     torch_dtype=torch.float16,
...     variant="fp16",
...     enable_pag=True,
... )
>>> pipe.to("cuda")

>>> 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"

>>> init_image = load_image(img_url).convert("RGB")
>>> mask_image = load_image(mask_url).convert("RGB")

>>> prompt = "A majestic tiger sitting on a bench"
>>> image = pipe(
...     prompt=prompt,
...     image=init_image,
...     mask_image=mask_image,
...     num_inference_steps=50,
...     strength=0.80,
...     pag_scale=0.3,
... ).images[0]

encode_prompt

< >

( prompt: strprompt_2: str | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | None = Nonenegative_prompt_2: str | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = None )

Parámetros

  • prompt (str o list[str], opcional) — prompt a codificar
  • prompt_2 (str o list[str], opcional) — El prompt o prompts que se enviarán al tokenizer_2 y al text_encoder_2. Si no se define, se utiliza prompt en ambos text-encoders
  • device — (torch.device): dispositivo de torch
  • num_images_per_prompt (int) — número de imágenes que deben generarse por prompt
  • do_classifier_free_guidance (bool) — si se debe usar classifier free guidance o no
  • negative_prompt (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si guidance_scale es menor que 1).
  • negative_prompt_2 (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen y que se enviarán a tokenizer_2 y text_encoder_2. Si no se define, se utiliza negative_prompt en ambos text-encoders
  • 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 entrada prompt.
  • 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 entrada negative_prompt.
  • pooled_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto agrupadas pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporciona, las incrustaciones de texto agrupadas se generarán a partir del argumento de entrada prompt.
  • negative_pooled_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto negativo agrupadas pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, se generarán pooled negative_prompt_embeds a partir del argumento de entrada negative_prompt.
  • lora_scale (float, opcional) — Una escala LoRA que se aplicará a todas las capas LoRA del codificador de texto si se cargan capas LoRA.
  • clip_skip (int, opcional) — Número de capas que se omitirán de CLIP al calcular los embeddings del prompt. Un valor de 1 significa que se utilizará la salida de la penúltima capa para calcular los embeddings del prompt.

Codifica el prompt en estados ocultos del codificador de texto.

get_guidance_scale_embedding

< >

( w: Tensorembedding_dim: int = 512dtype: dtype = torch.float32 ) → torch.Tensor

Parámetros

  • w (torch.Tensor) — Genera vectores de incrustación con una escala de orientación especificada para enriquecer posteriormente las incrustaciones de paso temporal.
  • embedding_dim (int, opcional, valor predeterminado 512) — Dimensión de los embeddings a generar.
  • dtype (torch.dtype, opcional, valor predeterminado torch.float32) — Tipo de datos de los embeddings generados.

Devuelve

torch.Tensor

Vectores de incrustación con forma (len(w), embedding_dim).

Ver https://github.com/google-research/vdm/blob/dc27b98a554f65cdc654b800da5aa1846545d41b/model_vdm.py#L298

StableDiffusionXLControlNetPAGPipeline

clase diffusers.StableDiffusionXLControlNetPAGPipeline

< >

( vae: AutoencoderKLtext_encoder: CLIPTextModeltext_encoder_2: CLIPTextModelWithProjectiontokenizer: CLIPTokenizertokenizer_2: CLIPTokenizerunet: UNet2DConditionModelcontrolnet: diffusers.models.controlnets.controlnet.ControlNetModel | list[diffusers.models.controlnets.controlnet.ControlNetModel] | tuple[diffusers.models.controlnets.controlnet.ControlNetModel] | diffusers.models.controlnets.multicontrolnet.MultiControlNetModelscheduler: KarrasDiffusionSchedulersforce_zeros_for_empty_prompt: bool = Trueadd_watermarker: bool | None = Nonefeature_extractor: CLIPImageProcessorPil = Noneimage_encoder: CLIPVisionModelWithProjection = Nonepag_applied_layers: str | list[str] = 'mid' )

Parámetros

  • vae (AutoencoderKL) — Modelo de Variational Auto-Encoder (VAE) para codificar y decodificar imágenes a partir de y hacia representaciones latentes.
  • text_encoder (CLIPTextModel) — Codificador de texto congelado (clip-vit-large-patch14).
  • text_encoder_2 (CLIPTextModelWithProjection) — Segundo codificador de texto congelado (laion/CLIP-ViT-bigG-14-laion2B-39B-b160k).
  • tokenizer (CLIPTokenizer) — Un CLIPTokenizer para tokenizar texto.
  • tokenizer_2 (CLIPTokenizer) — Un CLIPTokenizer para tokenizar texto.
  • unet (UNet2DConditionModel) — Un UNet2DConditionModel para desruidar los latentes de la imagen codificada.
  • controlnet (ControlNetModel o list[ControlNetModel]) — Proporciona una condición adicional al unet durante el proceso de desruido. Si configuras varios ControlNets como una lista, las salidas de cada ControlNet se suman para crear una condición adicional combinada.
  • scheduler (SchedulerMixin) — Un scheduler para usar en combinación con unet para desruidar los latentes de la imagen codificada. Puede ser uno de DDIMScheduler, LMSDiscreteScheduler o PNDMScheduler.
  • force_zeros_for_empty_prompt (bool, opcional, valor predeterminado "True") — Si las incrustaciones del prompt negativo deben establecerse siempre en 0. Consulte también la configuración de stabilityai/stable-diffusion-xl-base-1-0.
  • add_watermarker (bool, opcional) — Si se debe usar la biblioteca invisible_watermark para marcar con marca de agua las imágenes de salida. Si no se define, el valor predeterminado es True si el paquete está instalado; de lo contrario, no se usa ninguna marca de agua.

Pipeline para la generación de imágenes a partir de texto usando Stable Diffusion XL con guía de ControlNet.

Este modelo hereda de DiffusionPipeline. Consulta la documentación de la clase superior para los métodos genéricos implementados en todas las tuberías (descarga, guardado, ejecución en un dispositivo específico, etc.).

El pipeline también hereda los siguientes métodos de carga:

__call__

< >

( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneimage: 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 = Nonenum_inference_steps: int = 50timesteps: list = Nonesigmas: list = Nonedenoising_end: float | None = Noneguidance_scale: float = 5.0negative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Nonecontrolnet_conditioning_scale: float | list[float] = 1.0control_guidance_start: float | list[float] = 0.0control_guidance_end: float | list[float] = 1.0original_size: tuple = Nonecrops_coords_top_left: tuple = (0, 0)target_size: tuple = Nonenegative_original_size: tuple[int, int] | None = Nonenegative_crops_coords_top_left: tuple = (0, 0)negative_target_size: tuple[int, int] | None = Noneclip_skip: int | None = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']pag_scale: float = 3.0pag_adaptive_scale: float = 0.0 ) → StableDiffusionPipelineOutput or tuple

Parámetros

  • prompt (str o list[str], opcional) — El prompt o prompts para guiar la generación de imágenes. Si no se define, debe pasar prompt_embeds.
  • prompt_2 (str o list[str], opcional) — El prompt o prompts que se enviarán a tokenizer_2 y text_encoder_2. Si no se define, se utiliza prompt en ambos text-encoders.
  • image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image], list[np.ndarray], — list[list[torch.Tensor]], list[list[np.ndarray]] o list[list[PIL.Image.Image]]): La condición de entrada de ControlNet para proporcionar orientación al unet durante la generación. Si el tipo se especifica como torch.Tensor, se pasa a ControlNet tal cual. También se acepta PIL.Image.Image como imagen. Las dimensiones de la imagen de salida son, por defecto, las dimensiones de image. Si se pasan height y/o width, image se redimensiona en consecuencia. Si se especifican varios ControlNets en init, las imágenes deben pasarse como una lista para que cada elemento de la lista pueda agruparse correctamente como entrada para un solo ControlNet.
  • height (int, opcional, valor predeterminado self.unet.config.sample_size * self.vae_scale_factor) — La altura en píxeles de la imagen generada. Cualquier valor inferior a 512 píxeles no funcionará bien con stabilityai/stable-diffusion-xl-base-1.0 y con puntos de control que no estén específicamente afinados en resoluciones bajas.
  • width (int, opcional, valor predeterminado self.unet.config.sample_size * self.vae_scale_factor) — El ancho en píxeles de la imagen generada. Cualquier valor inferior a 512 píxeles no funcionará bien con stabilityai/stable-diffusion-xl-base-1.0 y con puntos de control que no estén específicamente afinados en resoluciones bajas.
  • 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.
  • timesteps (list[int], opcional) — Pasos de tiempo personalizados para usar en el proceso de desruido con programadores que admiten un argumento timesteps en su método set_timesteps. Si no se define, se usará el comportamiento predeterminado cuando se pase num_inference_steps. Debe estar en orden descendente.
  • sigmas (list[float], opcional) — Sigmas personalizados para usar en el proceso de desruido con programadores que admiten un argumento sigmas en su método set_timesteps. Si no se define, se usará el comportamiento predeterminado cuando se pase num_inference_steps.
  • denoising_end (float, opcional) — Cuando se especifica, determina la fracción (entre 0.0 y 1.0) del proceso total de denoising que debe completarse antes de que se termine prematuramente de forma intencional. Como resultado, la muestra devuelta aún conservará una cantidad sustancial de ruido, tal como lo determinan los pasos discretos seleccionados por el scheduler. El parámetro denoising_end debería utilizarse idealmente cuando este pipeline forma parte de una configuración multipipeline de “Mixture of Denoisers”, como se detalla en Refining the Image Output
  • guidance_scale (float, opcional, valor predeterminado 5.0) — Un valor de escala de guía más alto anima al modelo a generar imágenes estrechamente vinculadas al prompt de texto a costa de una menor calidad de imagen. La escala de guía se habilita cuando guidance_scale > 1.
  • negative_prompt (str o list[str], opcional) — El prompt o los prompts para guiar lo que no debe incluirse en la generación de imágenes. Si no se define, es necesario pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (guidance_scale < 1).
  • negative_prompt_2 (str o list[str], opcional) — El prompt o prompts para guiar lo que no debe incluirse en la generación de imágenes. Esto se envía a tokenizer_2 y text_encoder_2. Si no está definido, se utiliza negative_prompt en ambos text-encoders.
  • num_images_per_prompt (int, opcional, valor predeterminado 1) — El número de imágenes que se generarán por indicación.
  • eta (float, opcional, valor predeterminado 0.0) — Corresponde al parámetro eta (η) del artículo DDIM. Solo se aplica al DDIMScheduler y se ignora en otros programadores.
  • generator (torch.Generator o list[torch.Generator], opcional) — Un torch.Generator para hacer que la generación sea determinista.
  • latents (torch.Tensor, opcional) — Latentes ruidosos pregenerados muestreados de una distribución gaussiana, que se utilizarán como entradas para la generación de imágenes. Se pueden usar para ajustar la misma generación con diferentes prompts. Si no se proporciona, se genera un tensor de latentes mediante muestreo usando el generator aleatorio suministrado.
  • prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto (ponderación del prompt). Si no se proporcionan, las incrustaciones de texto se generan a partir del argumento de entrada prompt.
  • negative_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto negativo pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto (ponderación del prompt). Si no se proporcionan, negative_prompt_embeds se generan a partir del argumento de entrada negative_prompt.
  • pooled_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto agrupadas pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto (ponderación del prompt). Si no se proporciona, las incrustaciones de texto agrupadas se generan a partir del argumento de entrada prompt.
  • negative_pooled_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto negativo agrupadas pregeneradas. Se pueden utilizar para ajustar fácilmente las entradas de texto (ponderación del prompt). Si no se proporciona, las negative_prompt_embeds agrupadas se generan a partir del argumento de entrada negative_prompt.
  • ip_adapter_image — (PipelineImageInput, opcional): Entrada de imagen opcional para trabajar con IP Adapters.
  • ip_adapter_image_embeds (list[torch.Tensor], opcional) — Incrustaciones de imagen pregeneradas para IP-Adapter. Debe ser una lista de la misma longitud que el número de IP-adapters. Cada elemento debe ser un tensor de forma (batch_size, num_images, emb_dim). Debe contener la incrustación de imagen negativa si do_classifier_free_guidance está establecido en True. Si no se proporciona, las incrustaciones se calculan a partir del argumento de entrada ip_adapter_image.
  • output_type (str, opcional, por defecto "pil") — El formato de salida de la imagen generada. Elija entre PIL.Image o np.array.
  • return_dict (bool, opcional, valor predeterminado True) — Indica si se debe devolver un StableDiffusionPipelineOutput en lugar de una tupla simple.
  • cross_attention_kwargs (dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa al AttentionProcessor tal como se define en self.processor.
  • controlnet_conditioning_scale (float o list[float], opcional, valor predeterminado 1.0) — Las salidas de ControlNet se multiplican por controlnet_conditioning_scale antes de sumarse al residual en el unet original. Si se especifican varios ControlNets en init, puedes establecer la escala correspondiente como una lista.
  • control_guidance_start (float o list[float], opcional, valor predeterminado 0.0) — El porcentaje de pasos totales en el que ControlNet comienza a aplicarse.
  • control_guidance_end (float o list[float], opcional, valor predeterminado 1.0) — El porcentaje de pasos totales en el que ControlNet deja de aplicarse.
  • original_size (tuple[int], opcional, valor predeterminado (1024, 1024)) — Si original_size no es igual a target_size, la imagen parecerá haber sido reescalada hacia abajo o hacia arriba. original_size tiene como valor predeterminado (height, width) si no se especifica. Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952.
  • crops_coords_top_left (tuple[int], opcional, valor predeterminado (0, 0)) — crops_coords_top_left se puede utilizar para generar una imagen que parezca “recortada” desde la posición crops_coords_top_left hacia abajo. Generalmente se logran imágenes favorables y bien centradas estableciendo crops_coords_top_left en (0, 0). Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952.
  • target_size (tuple[int], opcional, valor predeterminado (1024, 1024)) — En la mayoría de los casos, target_size debe establecerse en la altura y el ancho deseados de la imagen generada. Si no se especifica, el valor predeterminado será (height, width). Forma parte del micro-conditioning de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952.
  • negative_original_size (tuple[int], opcional, valor predeterminado (1024, 1024)) — Para condicionar negativamente el proceso de generación en función de una resolución de imagen específica. Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952. Para obtener más información, consulte este hilo de problemas: https://github.com/huggingface/diffusers/issues/4208.
  • negative_crops_coords_top_left (tuple[int], opcional, valor predeterminado (0, 0)) — Para condicionar negativamente el proceso de generación en función de unas coordenadas de recorte específicas. Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952. Para obtener más información, consulte este hilo de problemas: https://github.com/huggingface/diffusers/issues/4208.
  • negative_target_size (tuple[int], opcional, valor predeterminado (1024, 1024)) — Para condicionar negativamente el proceso de generación en función de la resolución de la imagen objetivo. Debe ser igual que target_size en la mayoría de los casos. Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952. Para obtener más información, consulte este hilo de problemas: https://github.com/huggingface/diffusers/issues/4208.
  • clip_skip (int, opcional) — Número de capas que se omitirán de CLIP al calcular los embeddings del prompt. Un valor de 1 significa que se utilizará la salida de la penúltima capa para calcular los embeddings del prompt.
  • callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, opcional) — Una función o una subclase de PipelineCallback o MultiPipelineCallbacks que se llama al final de cada paso de desruido durante la inferencia, con los siguientes argumentos: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs incluirá una lista de todos los tensores especificados por callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, opcional) — La lista de entradas de tensor para la función callback_on_step_end. Los tensores especificados en la lista se pasarán como argumento callback_kwargs. Solo podrás incluir variables listadas en el atributo ._callback_tensor_inputs de tu clase de pipeline.
  • pag_scale (float, opcional, valor predeterminado 3.0) — El factor de escala para la guía de atención perturbada. Si se establece en 0.0, no se utilizará la guía de atención perturbada.
  • pag_adaptive_scale (float, opcional, valor predeterminado 0.0) — El factor de escala adaptativo para la guía de atención perturbada. Si se establece en 0.0, se utiliza pag_scale.

Si return_dict es True, se devuelve StableDiffusionPipelineOutput; en caso contrario, se devuelve una tuple que contiene las imágenes de salida.

La función de llamada para el pipeline de generación.

Ejemplos:

>>> # !pip install opencv-python transformers accelerate
>>> from diffusers import AutoPipelineForText2Image, ControlNetModel, AutoencoderKL
>>> from diffusers.utils import load_image
>>> import numpy as np
>>> import torch

>>> import cv2
>>> from PIL import Image

>>> prompt = "aerial view, a futuristic research complex in a bright foggy jungle, hard lighting"
>>> negative_prompt = "low quality, bad quality, sketches"

>>> # download an image
>>> image = load_image(
...     "https://hf.co/datasets/hf-internal-testing/diffusers-images/resolve/main/sd_controlnet/hf-logo.png"
... )

>>> # initialize the models and pipeline
>>> controlnet_conditioning_scale = 0.5  # recommended for good generalization
>>> controlnet = ControlNetModel.from_pretrained(
...     "diffusers/controlnet-canny-sdxl-1.0", torch_dtype=torch.float16
... )
>>> vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix", torch_dtype=torch.float16)
>>> pipe = AutoPipelineForText2Image.from_pretrained(
...     "stabilityai/stable-diffusion-xl-base-1.0",
...     controlnet=controlnet,
...     vae=vae,
...     torch_dtype=torch.float16,
...     enable_pag=True,
... )
>>> pipe.enable_model_cpu_offload()

>>> # get canny image
>>> image = np.array(image)
>>> image = cv2.Canny(image, 100, 200)
>>> image = image[:, :, None]
>>> image = np.concatenate([image, image, image], axis=2)
>>> canny_image = Image.fromarray(image)

>>> # generate image
>>> image = pipe(
...     prompt, controlnet_conditioning_scale=controlnet_conditioning_scale, image=canny_image, pag_scale=0.3
... ).images[0]

encode_prompt

< >

( prompt: strprompt_2: str | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | None = Nonenegative_prompt_2: str | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = None )

Parámetros

  • prompt (str o list[str], opcional) — prompt a codificar
  • prompt_2 (str o list[str], opcional) — El prompt o prompts que se enviarán al tokenizer_2 y al text_encoder_2. Si no se define, se utiliza prompt en ambos text-encoders
  • device — (torch.device): dispositivo de torch
  • num_images_per_prompt (int) — número de imágenes que deben generarse por prompt
  • do_classifier_free_guidance (bool) — si se debe usar classifier free guidance o no
  • negative_prompt (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si guidance_scale es menor que 1).
  • negative_prompt_2 (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen y que se enviarán a tokenizer_2 y text_encoder_2. Si no se define, se utiliza negative_prompt en ambos text-encoders
  • 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 entrada prompt.
  • 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 entrada negative_prompt.
  • pooled_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto agrupadas pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporciona, las incrustaciones de texto agrupadas se generarán a partir del argumento de entrada prompt.
  • negative_pooled_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto negativo agrupadas pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, se generarán pooled negative_prompt_embeds a partir del argumento de entrada negative_prompt.
  • lora_scale (float, opcional) — Una escala LoRA que se aplicará a todas las capas LoRA del codificador de texto si se cargan capas LoRA.
  • clip_skip (int, opcional) — Número de capas que se omitirán de CLIP al calcular los embeddings del prompt. Un valor de 1 significa que se utilizará la salida de la penúltima capa para calcular los embeddings del prompt.

Codifica el prompt en estados ocultos del codificador de texto.

get_guidance_scale_embedding

< >

( w: Tensorembedding_dim: int = 512dtype: dtype = torch.float32 ) → torch.Tensor

Parámetros

  • w (torch.Tensor) — Genera vectores de incrustación con una escala de orientación especificada para enriquecer posteriormente las incrustaciones de paso temporal.
  • embedding_dim (int, opcional, valor predeterminado 512) — Dimensión de los embeddings a generar.
  • dtype (torch.dtype, opcional, valor predeterminado torch.float32) — Tipo de datos de los embeddings generados.

Devuelve

torch.Tensor

Vectores de incrustación con forma (len(w), embedding_dim).

Ver https://github.com/google-research/vdm/blob/dc27b98a554f65cdc654b800da5aa1846545d41b/model_vdm.py#L298

StableDiffusionXLControlNetPAGImg2ImgPipeline

clase diffusers.StableDiffusionXLControlNetPAGImg2ImgPipeline

< >

( vae: AutoencoderKLtext_encoder: CLIPTextModeltext_encoder_2: CLIPTextModelWithProjectiontokenizer: CLIPTokenizertokenizer_2: CLIPTokenizerunet: UNet2DConditionModelcontrolnet: diffusers.models.controlnets.controlnet.ControlNetModel | list[diffusers.models.controlnets.controlnet.ControlNetModel] | tuple[diffusers.models.controlnets.controlnet.ControlNetModel] | diffusers.models.controlnets.multicontrolnet.MultiControlNetModelscheduler: KarrasDiffusionSchedulersrequires_aesthetics_score: bool = Falseforce_zeros_for_empty_prompt: bool = Trueadd_watermarker: bool | None = Nonefeature_extractor: CLIPImageProcessorPil = Noneimage_encoder: CLIPVisionModelWithProjection = Nonepag_applied_layers: str | list[str] = 'mid' )

Parámetros

  • vae (AutoencoderKL) — Modelo de Variational Auto-Encoder (VAE) para codificar y decodificar imágenes a partir de y hacia representaciones latentes.
  • text_encoder (CLIPTextModel) — Codificador de texto congelado. Stable Diffusion utiliza la parte de texto de CLIP, específicamente la variante clip-vit-large-patch14.
  • text_encoder_2 ( CLIPTextModelWithProjection) — Segundo codificador de texto congelado. Stable Diffusion XL utiliza la parte de texto y pool de CLIP, específicamente la variante laion/CLIP-ViT-bigG-14-laion2B-39B-b160k.
  • tokenizer (CLIPTokenizer) — Tokenizer de la clase CLIPTokenizer.
  • tokenizer_2 (CLIPTokenizer) — Segundo Tokenizador de la clase CLIPTokenizer.
  • unet (UNet2DConditionModel) — Arquitectura U-Net condicional para desruidar los latentes de imagen codificados.
  • controlnet (ControlNetModel o list[ControlNetModel]) — Proporciona una condición adicional al unet durante el proceso de desruido. Si configuras varios ControlNets como una lista, las salidas de cada ControlNet se suman para crear una condición adicional combinada.
  • scheduler (SchedulerMixin) — Un scheduler para usar en combinación con unet para desruidar los latentes de la imagen codificada. Puede ser uno de DDIMScheduler, LMSDiscreteScheduler o PNDMScheduler.
  • requires_aesthetics_score (bool, opcional, valor predeterminado "False") — Indica si el unet requiere que se pase una condición aesthetic_score durante la inferencia. Consulte también la configuración de stabilityai/stable-diffusion-xl-refiner-1-0.
  • force_zeros_for_empty_prompt (bool, opcional, valor predeterminado "True") — Si las incrustaciones del prompt negativo deben forzarse a establecerse siempre en 0. Consulte también la configuración de stabilityai/stable-diffusion-xl-base-1-0.
  • add_watermarker (bool, opcional) — Si se debe usar la invisible_watermark library para marcar con marca de agua las imágenes de salida. Si no se define, el valor predeterminado será True si el paquete está instalado; de lo contrario, no se usará ninguna marca de agua.
  • feature_extractor (CLIPImageProcessor) — Un CLIPImageProcessor para extraer características de las imágenes generadas; se utiliza como entrada para el safety_checker.

Pipeline para la generación de imagen a imagen usando Stable Diffusion XL con guía de ControlNet.

Este modelo hereda de DiffusionPipeline. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos los pipelines (como la descarga o el guardado, la ejecución en un dispositivo específico, etc.)

El pipeline también hereda los siguientes métodos de carga:

__call__

< >

( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonecontrol_image: 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.8num_inference_steps: int = 50guidance_scale: float = 5.0negative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Nonecontrolnet_conditioning_scale: float | list[float] = 0.8guess_mode: bool = Falsecontrol_guidance_start: float | list[float] = 0.0control_guidance_end: float | list[float] = 1.0original_size: tuple = Nonecrops_coords_top_left: tuple = (0, 0)target_size: tuple = Nonenegative_original_size: tuple[int, int] | None = Nonenegative_crops_coords_top_left: tuple = (0, 0)negative_target_size: tuple[int, int] | None = Noneaesthetic_score: float = 6.0negative_aesthetic_score: float = 2.5clip_skip: int | None = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']pag_scale: float = 3.0pag_adaptive_scale: float = 0.0 ) → ~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput or tuple

Parámetros

  • prompt (str o list[str], opcional) — El prompt o los prompts para guiar la generación de la imagen. Si no se define, hay que pasar prompt_embeds en su lugar.
  • prompt_2 (str o list[str], opcional) — El prompt o prompts que se enviarán al tokenizer_2 y al text_encoder_2. Si no se define, se utiliza prompt en ambos text-encoders
  • image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image], list[np.ndarray], — list[list[torch.Tensor]], list[list[np.ndarray]] o list[list[PIL.Image.Image]]): La imagen inicial se utilizará como punto de partida para el proceso de generación de imágenes. También puede aceptar latentes de imagen como image; si se pasan latentes directamente, no se volverán a codificar.
  • control_image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image], list[np.ndarray], — list[list[torch.Tensor]], list[list[np.ndarray]] o list[list[PIL.Image.Image]]): La condición de entrada de ControlNet. ControlNet utiliza esta condición de entrada para generar la guía hacia Unet. Si el tipo se especifica como torch.Tensor, se pasa a ControlNet tal cual. PIL.Image.Image también puede aceptarse como imagen. Las dimensiones de la imagen de salida son por defecto las dimensiones de image. Si se pasa height y/o width, image se redimensiona según ellos. Si se especifican varios ControlNets en init, las imágenes deben pasarse como una lista para que cada elemento de la lista pueda agruparse correctamente para la entrada a un único controlnet.
  • height (int, opcional, por defecto el tamaño de control_image) — La altura en píxeles de la imagen generada. Cualquier valor inferior a 512 píxeles no funcionará bien con stabilityai/stable-diffusion-xl-base-1.0 y con puntos de control que no estén específicamente afinados en resoluciones bajas.
  • width (int, opcional, por defecto el tamaño de control_image) — El ancho en píxeles de la imagen generada. Cualquier valor inferior a 512 píxeles no funcionará bien con stabilityai/stable-diffusion-xl-base-1.0 y con puntos de control que no estén específicamente afinados en resoluciones bajas.
  • strength (float, opcional, valor predeterminado 0.8) — Indica el grado en que se transforma la image de referencia. Debe estar entre 0 y 1. image se utiliza como punto de partida y se añade más ruido a medida que aumenta el strength. El número de pasos de desruido depende de la cantidad de ruido añadido inicialmente. Cuando strength es 1, el ruido añadido es máximo y el proceso de desruido se ejecuta durante el número completo de iteraciones especificado en num_inference_steps. Un valor de 1 ignora esencialmente image.
  • 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.
  • guidance_scale (float, opcional, valor predeterminado 7.5) — Escala de guía tal como se define en Classifier-Free Diffusion Guidance. guidance_scale se define como w de la ecuación 2 de Imagen Paper. La escala de guía se habilita al establecer guidance_scale > 1. Una escala de guía más alta fomenta la generación de imágenes estrechamente vinculadas al texto prompt, generalmente a costa de una menor calidad de imagen.
  • negative_prompt (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si guidance_scale es menor que 1).
  • negative_prompt_2 (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen y que se enviarán a tokenizer_2 y text_encoder_2. Si no se define, se utiliza negative_prompt en ambos text-encoders
  • num_images_per_prompt (int, opcional, valor predeterminado 1) — El número de imágenes que se generarán por indicación.
  • eta (float, opcional, valor predeterminado 0.0) — Corresponde al parámetro eta (η) del artículo DDIM: https://huggingface.co/papers/2010.02502. Solo se aplica a schedulers.DDIMScheduler y se ignorará en los demás.
  • generator (torch.Generator o list[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 el generator aleatorio 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 entrada prompt.
  • 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 entrada negative_prompt.
  • pooled_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto agrupadas pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporciona, las incrustaciones de texto agrupadas se generarán a partir del argumento de entrada prompt.
  • negative_pooled_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto negativo agrupadas pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, se generarán pooled negative_prompt_embeds a partir del argumento de entrada negative_prompt.
  • ip_adapter_image — (PipelineImageInput, opcional): Entrada de imagen opcional para trabajar con IP Adapters.
  • ip_adapter_image_embeds (list[torch.Tensor], opcional) — Incrustaciones de imagen pregeneradas para IP-Adapter. Debe ser una lista de la misma longitud que el número de IP-adapters. Cada elemento debe ser un tensor de forma (batch_size, num_images, emb_dim). Debe contener la incrustación de imagen negativa si do_classifier_free_guidance está establecido en True. Si no se proporciona, las incrustaciones se calculan a partir del argumento de entrada ip_adapter_image.
  • output_type (str, opcional, valor predeterminado "pil") — El formato de salida de la imagen generada. Elija entre PIL: PIL.Image.Image o np.array.
  • return_dict (bool, opcional, valor predeterminado True) — Indica si se debe devolver un StableDiffusionPipelineOutput en lugar de una tupla simple.
  • cross_attention_kwargs (dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa al AttentionProcessor definido en self.processor dentro de diffusers.models.attention_processor.
  • controlnet_conditioning_scale (float o list[float], opcional, valor predeterminado 1.0) — Las salidas del controlnet se multiplican por controlnet_conditioning_scale antes de sumarse al residual en el unet original. Si se especifican varios ControlNets en init, puedes establecer la escala correspondiente como una lista.
  • guess_mode (bool, opcional, valor predeterminado False) — En este modo, el codificador de ControlNet intentará reconocer el contenido de la imagen de entrada incluso si eliminas todos los prompts. Se recomienda un guidance_scale entre 3.0 y 5.0.
  • control_guidance_start (float o list[float], opcional, valor predeterminado 0.0) — El porcentaje de pasos totales en el que controlnet comienza a aplicar.
  • control_guidance_end (float o list[float], opcional, valor predeterminado 1.0) — El porcentaje de pasos totales en el que controlnet deja de aplicar.
  • original_size (tuple[int], opcional, valor predeterminado (1024, 1024)) — Si original_size no es igual a target_size, la imagen parecerá haber sido reescalada hacia abajo o hacia arriba. original_size tiene como valor predeterminado (height, width) si no se especifica. Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952.
  • crops_coords_top_left (tuple[int], opcional, valor predeterminado (0, 0)) — crops_coords_top_left se puede utilizar para generar una imagen que parezca “recortada” desde la posición crops_coords_top_left hacia abajo. Generalmente se logran imágenes favorables y bien centradas estableciendo crops_coords_top_left en (0, 0). Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952.
  • target_size (tuple[int], opcional, valor predeterminado (1024, 1024)) — En la mayoría de los casos, target_size debe establecerse en la altura y el ancho deseados de la imagen generada. Si no se especifica, el valor predeterminado será (height, width). Forma parte del micro-conditioning de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952.
  • negative_original_size (tuple[int], opcional, valor predeterminado (1024, 1024)) — Para condicionar negativamente el proceso de generación en función de una resolución de imagen específica. Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952. Para obtener más información, consulte este hilo de problemas: https://github.com/huggingface/diffusers/issues/4208.
  • negative_crops_coords_top_left (tuple[int], opcional, valor predeterminado (0, 0)) — Para condicionar negativamente el proceso de generación en función de unas coordenadas de recorte específicas. Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952. Para obtener más información, consulte este hilo de problemas: https://github.com/huggingface/diffusers/issues/4208.
  • negative_target_size (tuple[int], opcional, valor predeterminado (1024, 1024)) — Para condicionar negativamente el proceso de generación en función de la resolución de la imagen objetivo. Debe ser igual que target_size en la mayoría de los casos. Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952. Para obtener más información, consulte este hilo de problemas: https://github.com/huggingface/diffusers/issues/4208.
  • aesthetic_score (float, opcional, valor predeterminado 6.0) — Se utiliza para simular una puntuación estética de la imagen generada influyendo en la condición de texto positiva. Parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952.
  • negative_aesthetic_score (float, opcional, valor predeterminado 2.5) — Parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952. Puede utilizarse para simular una puntuación estética de la imagen generada influyendo en la condición de texto negativa.
  • clip_skip (int, opcional) — Número de capas que se omitirán de CLIP al calcular los embeddings del prompt. Un valor de 1 significa que se utilizará la salida de la penúltima capa para calcular los embeddings del prompt.
  • callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, opcional) — Una función o una subclase de PipelineCallback o MultiPipelineCallbacks que se llama al final de cada paso de desruido durante la inferencia, con los siguientes argumentos: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs incluirá una lista de todos los tensores especificados por callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, opcional) — La lista de entradas de tensor para la función callback_on_step_end. Los tensores especificados en la lista se pasarán como argumento callback_kwargs. Solo podrás incluir variables listadas en el atributo ._callback_tensor_inputs de tu clase de pipeline.
  • pag_scale (float, opcional, valor predeterminado 3.0) — El factor de escala para la guía de atención perturbada. Si se establece en 0.0, no se utilizará la guía de atención perturbada.
  • pag_adaptive_scale (float, opcional, valor predeterminado 0.0) — El factor de escala adaptativo para la guía de atención perturbada. Si se establece en 0.0, se utiliza pag_scale.

Devuelve

~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput o tuple

~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput si return_dict es True, en caso contrario una tuple que contiene las imágenes de salida.

Función invocada al llamar a la pipeline para la generación.

Ejemplos:

>>> # pip install accelerate transformers safetensors diffusers

>>> import torch
>>> import numpy as np
>>> from PIL import Image

>>> from transformers import DPTFeatureExtractor, DPTForDepthEstimation
>>> from diffusers import ControlNetModel, StableDiffusionXLControlNetPAGImg2ImgPipeline, AutoencoderKL
>>> from diffusers.utils import load_image

>>> depth_estimator = DPTForDepthEstimation.from_pretrained("Intel/dpt-hybrid-midas").to("cuda")
>>> feature_extractor = DPTFeatureExtractor.from_pretrained("Intel/dpt-hybrid-midas")
>>> controlnet = ControlNetModel.from_pretrained(
...     "diffusers/controlnet-depth-sdxl-1.0-small",
...     variant="fp16",
...     use_safetensors="True",
...     torch_dtype=torch.float16,
... )
>>> vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix", torch_dtype=torch.float16)
>>> pipe = StableDiffusionXLControlNetPAGImg2ImgPipeline.from_pretrained(
...     "stabilityai/stable-diffusion-xl-base-1.0",
...     controlnet=controlnet,
...     vae=vae,
...     variant="fp16",
...     use_safetensors=True,
...     torch_dtype=torch.float16,
...     enable_pag=True,
... )
>>> pipe.enable_model_cpu_offload()


>>> def get_depth_map(image):
...     image = feature_extractor(images=image, return_tensors="pt").pixel_values.to("cuda")
...     with torch.no_grad(), torch.autocast("cuda"):
...         depth_map = depth_estimator(image).predicted_depth

...     depth_map = torch.nn.functional.interpolate(
...         depth_map.unsqueeze(1),
...         size=(1024, 1024),
...         mode="bicubic",
...         align_corners=False,
...     )
...     depth_min = torch.amin(depth_map, dim=[1, 2, 3], keepdim=True)
...     depth_max = torch.amax(depth_map, dim=[1, 2, 3], keepdim=True)
...     depth_map = (depth_map - depth_min) / (depth_max - depth_min)
...     image = torch.cat([depth_map] * 3, dim=1)
...     image = image.permute(0, 2, 3, 1).cpu().numpy()[0]
...     image = Image.fromarray((image * 255.0).clip(0, 255).astype(np.uint8))
...     return image


>>> prompt = "A robot, 4k photo"
>>> image = load_image(
...     "https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main"
...     "/kandinsky/cat.png"
... ).resize((1024, 1024))
>>> controlnet_conditioning_scale = 0.5  # recommended for good generalization
>>> depth_image = get_depth_map(image)

>>> images = pipe(
...     prompt,
...     image=image,
...     control_image=depth_image,
...     strength=0.99,
...     num_inference_steps=50,
...     controlnet_conditioning_scale=controlnet_conditioning_scale,
... ).images
>>> images[0].save(f"robot_cat.png")

encode_prompt

< >

( prompt: strprompt_2: str | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | None = Nonenegative_prompt_2: str | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = None )

Parámetros

  • prompt (str o list[str], opcional) — prompt a codificar
  • prompt_2 (str o list[str], opcional) — El prompt o prompts que se enviarán al tokenizer_2 y al text_encoder_2. Si no se define, se utiliza prompt en ambos text-encoders
  • device — (torch.device): dispositivo de torch
  • num_images_per_prompt (int) — número de imágenes que deben generarse por prompt
  • do_classifier_free_guidance (bool) — si se debe usar classifier free guidance o no
  • negative_prompt (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si guidance_scale es menor que 1).
  • negative_prompt_2 (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen y que se enviarán a tokenizer_2 y text_encoder_2. Si no se define, se utiliza negative_prompt en ambos text-encoders
  • 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 entrada prompt.
  • 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 entrada negative_prompt.
  • pooled_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto agrupadas pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporciona, las incrustaciones de texto agrupadas se generarán a partir del argumento de entrada prompt.
  • negative_pooled_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto negativo agrupadas pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, se generarán pooled negative_prompt_embeds a partir del argumento de entrada negative_prompt.
  • lora_scale (float, opcional) — Una escala LoRA que se aplicará a todas las capas LoRA del codificador de texto si se cargan capas LoRA.
  • clip_skip (int, opcional) — Número de capas que se omitirán de CLIP al calcular los embeddings del prompt. Un valor de 1 significa que se utilizará la salida de la penúltima capa para calcular los embeddings del prompt.

Codifica el prompt en estados ocultos del codificador de texto.

StableDiffusion3PAGPipeline

clase diffusers.StableDiffusion3PAGPipeline

< >

( transformer: SD3Transformer2DModelscheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLtext_encoder: CLIPTextModelWithProjectiontokenizer: CLIPTokenizertext_encoder_2: CLIPTextModelWithProjectiontokenizer_2: CLIPTokenizertext_encoder_3: T5EncoderModeltokenizer_3: T5Tokenizerpag_applied_layers: str | list[str] = 'blocks.1' )

Parámetros

  • transformer (SD3Transformer2DModel) — Arquitectura Conditional Transformer (MMDiT) para desruidar los latentes de imagen codificados.
  • scheduler (FlowMatchEulerDiscreteScheduler) — Un scheduler para usar en combinación con transformer para 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 (CLIPTextModelWithProjection) — CLIP, específicamente la variante clip-vit-large-patch14, con una capa de proyección adicional que se inicializa con una matriz diagonal de dimensión hidden_size.
  • text_encoder_2 (CLIPTextModelWithProjection) — CLIP, específicamente la variante laion/CLIP-ViT-bigG-14-laion2B-39B-b160k.
  • text_encoder_3 (T5EncoderModel) — Codificador de texto congelado. Stable Diffusion 3 utiliza T5, específicamente la variante t5-v1_1-xxl.
  • tokenizer (CLIPTokenizer) — Tokenizer de la clase CLIPTokenizer.
  • tokenizer_2 (CLIPTokenizer) — Segundo Tokenizador de la clase CLIPTokenizer.
  • tokenizer_3 (T5TokenizerFast) — Tokenizador de la clase T5Tokenizer.

pipeline PAG para la generación de imágenes a partir de texto utilizando Stable Diffusion 3.

__call__

< >

( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneprompt_3: str | list[str] | None = Noneheight: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 28sigmas: list[float] | None = Noneguidance_scale: float = 7.0negative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = Nonenegative_prompt_3: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.FloatTensor] = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truejoint_attention_kwargs: dict[str, typing.Any] | None = Noneclip_skip: int | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 256pag_scale: float = 3.0pag_adaptive_scale: float = 0.0 ) → ~pipelines.stable_diffusion_3.StableDiffusion3PipelineOutput or tuple

Parámetros

  • prompt (str o list[str], opcional) — El prompt o los prompts para guiar la generación de la imagen. Si no se define, hay que pasar prompt_embeds en su lugar.
  • prompt_2 (str o list[str], opcional) — El prompt o prompts que se enviarán a tokenizer_2 y text_encoder_2. Si no está definido, se utilizará prompt en su lugar
  • prompt_3 (str o list[str], opcional) — El prompt o los prompts que se enviarán a tokenizer_3 y text_encoder_3. Si no está definido, se utilizará prompt en su lugar
  • 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 argumento sigmas en su método set_timesteps. Si no se define, se usará el comportamiento predeterminado cuando se pase num_inference_steps.
  • guidance_scale (float, opcional, valor predeterminado 7.0) — Escala de guía definida en Classifier-Free Diffusion Guidance. guidance_scale se define como w de la ecuación 2 del Imagen Paper. La escala de guía se habilita estableciendo guidance_scale > 1. Una escala de guía más alta fomenta la generación de imágenes estrechamente vinculadas al prompt de texto, generalmente a costa de una menor calidad de imagen.
  • negative_prompt (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si guidance_scale es menor que 1).
  • negative_prompt_2 (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen y que se enviarán a tokenizer_2 y text_encoder_2. Si no se define, se utiliza negative_prompt en su lugar
  • negative_prompt_3 (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen y que se enviarán a tokenizer_3 y text_encoder_3. Si no se define, se utiliza negative_prompt en su lugar
  • num_images_per_prompt (int, opcional, valor predeterminado 1) — El número de imágenes que se generarán por indicación.
  • generator (torch.Generator o list[torch.Generator], opcional) — Un generador o una lista de generadores de torch para hacer la generación determinista.
  • latents (torch.FloatTensor, 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 el generator aleatorio suministrado.
  • prompt_embeds (torch.FloatTensor, 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 entrada prompt.
  • negative_prompt_embeds (torch.FloatTensor, 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 entrada negative_prompt.
  • pooled_prompt_embeds (torch.FloatTensor, opcional) — Incrustaciones de texto agrupadas pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporciona, las incrustaciones de texto agrupadas se generarán a partir del argumento de entrada prompt.
  • negative_pooled_prompt_embeds (torch.FloatTensor, opcional) — Incrustaciones de texto negativo agrupadas pregeneradas. Se pueden utilizar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, se generarán pooled negative_prompt_embeds a partir del argumento de entrada negative_prompt.
  • output_type (str, opcional, valor predeterminado "pil") — El formato de salida de la imagen generada. Elija entre PIL: PIL.Image.Image o np.array.
  • return_dict (bool, opcional, valor predeterminado True) — Indica si se debe devolver un ~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput en lugar de una tupla simple.
  • joint_attention_kwargs (dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa al AttentionProcessor definido en self.processor dentro de diffusers.models.attention_processor.
  • clip_skip (int, opcional) — Número de capas que se omitirán de CLIP al calcular los embeddings del prompt. Un valor de 1 significa que se utilizará la salida de la penúltima capa para calcular los embeddings del prompt.
  • 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_kwargs incluirá una lista de todos los tensores especificados por callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, opcional) — La lista de entradas de tensor para la función callback_on_step_end. Los tensores especificados en la lista se pasarán como argumento callback_kwargs. Solo podrás incluir variables listadas en el atributo ._callback_tensor_inputs de tu clase de pipeline.
  • max_sequence_length (int por defecto 256) — Longitud máxima de secuencia para usar con el prompt.
  • pag_scale (float, opcional, valor predeterminado 3.0) — El factor de escala para la guía de atención perturbada. Si se establece en 0.0, no se utilizará la guía de atención perturbada.
  • pag_adaptive_scale (float, opcional, valor predeterminado 0.0) — El factor de escala adaptativo para la guía de atención perturbada. Si se establece en 0.0, se utiliza pag_scale.

Devuelve

~pipelines.stable_diffusion_3.StableDiffusion3PipelineOutput o tuple

~pipelines.stable_diffusion_3.StableDiffusion3PipelineOutput 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 AutoPipelineForText2Image

>>> pipe = AutoPipelineForText2Image.from_pretrained(
...     "stabilityai/stable-diffusion-3-medium-diffusers",
...     torch_dtype=torch.float16,
...     enable_pag=True,
...     pag_applied_layers=["blocks.13"],
... )
>>> pipe.to("cuda")
>>> prompt = "A cat holding a sign that says hello world"
>>> image = pipe(prompt, guidance_scale=5.0, pag_scale=0.7).images[0]
>>> image.save("sd3_pag.png")

encode_prompt

< >

( prompt: str | list[str]prompt_2: str | list[str]prompt_3: str | list[str]device: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = Nonenegative_prompt_3: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneclip_skip: int | None = Nonemax_sequence_length: int = 256lora_scale: float | None = None )

Parámetros

  • prompt (str o list[str], opcional) — prompt a codificar
  • prompt_2 (str o list[str], opcional) — El prompt o prompts que se enviarán al tokenizer_2 y al text_encoder_2. Si no se define, se utiliza prompt en todos los text-encoders
  • prompt_3 (str o list[str], opcional) — El prompt o prompts que se enviarán al tokenizer_3 y al text_encoder_3. Si no se define, se utiliza prompt en todos los text-encoders
  • device — (torch.device): dispositivo de torch
  • num_images_per_prompt (int) — número de imágenes que deben generarse por prompt
  • do_classifier_free_guidance (bool) — si se debe usar classifier free guidance o no
  • negative_prompt (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si guidance_scale es menor que 1).
  • negative_prompt_2 (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen y que se enviarán a tokenizer_2 y text_encoder_2. Si no se define, se utiliza negative_prompt en todos los text-encoders.
  • negative_prompt_3 (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen y que se enviarán a tokenizer_3 y text_encoder_3. Si no se define, se utiliza negative_prompt en todos los text-encoders.
  • prompt_embeds (torch.FloatTensor, 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 entrada prompt.
  • negative_prompt_embeds (torch.FloatTensor, 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 entrada negative_prompt.
  • pooled_prompt_embeds (torch.FloatTensor, opcional) — Incrustaciones de texto agrupadas pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporciona, las incrustaciones de texto agrupadas se generarán a partir del argumento de entrada prompt.
  • negative_pooled_prompt_embeds (torch.FloatTensor, opcional) — Incrustaciones de texto negativo agrupadas pregeneradas. Se pueden utilizar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, se generarán pooled negative_prompt_embeds a partir del argumento de entrada negative_prompt.
  • clip_skip (int, opcional) — Número de capas que se omitirán de CLIP al calcular los embeddings del prompt. Un valor de 1 significa que se utilizará la salida de la penúltima capa para calcular los embeddings del prompt.
  • lora_scale (float, opcional) — Una escala LoRA que se aplicará a todas las capas LoRA del codificador de texto si se cargan capas LoRA.

StableDiffusion3PAGImg2ImgPipeline

clase diffusers.StableDiffusion3PAGImg2ImgPipeline

< >

( transformer: SD3Transformer2DModelscheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLtext_encoder: CLIPTextModelWithProjectiontokenizer: CLIPTokenizertext_encoder_2: CLIPTextModelWithProjectiontokenizer_2: CLIPTokenizertext_encoder_3: T5EncoderModeltokenizer_3: T5Tokenizerpag_applied_layers: str | list[str] = 'blocks.1' )

Parámetros

  • transformer (SD3Transformer2DModel) — Arquitectura Conditional Transformer (MMDiT) para desruidar los latentes de imagen codificados.
  • scheduler (FlowMatchEulerDiscreteScheduler) — Un scheduler para usar en combinación con transformer para 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 (CLIPTextModelWithProjection) — CLIP, específicamente la variante clip-vit-large-patch14, con una capa de proyección adicional que se inicializa con una matriz diagonal de dimensión hidden_size.
  • text_encoder_2 (CLIPTextModelWithProjection) — CLIP, específicamente la variante laion/CLIP-ViT-bigG-14-laion2B-39B-b160k.
  • text_encoder_3 (T5EncoderModel) — Codificador de texto congelado. Stable Diffusion 3 utiliza T5, específicamente la variante t5-v1_1-xxl.
  • tokenizer (CLIPTokenizer) — Tokenizer de la clase CLIPTokenizer.
  • tokenizer_2 (CLIPTokenizer) — Segundo Tokenizador de la clase CLIPTokenizer.
  • tokenizer_3 (T5TokenizerFast) — Tokenizador de la clase T5Tokenizer.

pipeline PAG para la generación de imagen a imagen utilizando Stable Diffusion 3.

__call__

< >

( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneprompt_3: str | list[str] | None = Noneheight: int | None = Nonewidth: int | None = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonestrength: float = 0.6num_inference_steps: int = 50sigmas: list[float] | None = Noneguidance_scale: float = 7.0negative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = Nonenegative_prompt_3: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.FloatTensor] = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truejoint_attention_kwargs: dict[str, typing.Any] | None = Noneclip_skip: int | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 256pag_scale: float = 3.0pag_adaptive_scale: float = 0.0 ) → ~pipelines.stable_diffusion_3.StableDiffusion3PipelineOutput or tuple

Parámetros

  • prompt (str o list[str], opcional) — El prompt o los prompts para guiar la generación de la imagen. Si no se define, hay que pasar prompt_embeds en su lugar.
  • prompt_2 (str o list[str], opcional) — El prompt o prompts que se enviarán a tokenizer_2 y text_encoder_2. Si no está definido, se utilizará prompt en su lugar
  • prompt_3 (str o list[str], opcional) — El prompt o los prompts que se enviarán a tokenizer_3 y text_encoder_3. Si no está definido, se utilizará prompt en su lugar
  • height (int, opcional, valor predeterminado self.default_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.default_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.
  • image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image] o list[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 como image, pero si se pasan latentes directamente, no se vuelven a codificar.
  • strength (float, opcional, valor predeterminado 0.8) — Indica el grado en que se transforma la image de referencia. Debe estar entre 0 y 1. image se utiliza como punto de partida y se añade más ruido a medida que aumenta el strength. El número de pasos de desruido depende de la cantidad de ruido añadido inicialmente. Cuando strength es 1, el ruido añadido es máximo y el proceso de desruido se ejecuta durante el número completo de iteraciones especificado en num_inference_steps. Un valor de 1 ignora esencialmente image.
  • 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 argumento sigmas en su método set_timesteps. Si no se define, se usará el comportamiento predeterminado cuando se pase num_inference_steps.
  • guidance_scale (float, opcional, valor predeterminado 7.0) — Escala de guía definida en Classifier-Free Diffusion Guidance. guidance_scale se define como w de la ecuación 2 del Imagen Paper. La escala de guía se habilita estableciendo guidance_scale > 1. Una escala de guía más alta fomenta la generación de imágenes estrechamente vinculadas al prompt de texto, generalmente a costa de una menor calidad de imagen.
  • negative_prompt (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si guidance_scale es menor que 1).
  • negative_prompt_2 (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen y que se enviarán a tokenizer_2 y text_encoder_2. Si no se define, se utiliza negative_prompt en su lugar
  • negative_prompt_3 (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen y que se enviarán a tokenizer_3 y text_encoder_3. Si no se define, se utiliza negative_prompt en su lugar
  • num_images_per_prompt (int, opcional, valor predeterminado 1) — El número de imágenes que se generarán por indicación.
  • generator (torch.Generator o list[torch.Generator], opcional) — Un generador o una lista de generadores de torch para hacer la generación determinista.
  • latents (torch.FloatTensor, 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 el generator aleatorio suministrado.
  • prompt_embeds (torch.FloatTensor, 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 entrada prompt.
  • negative_prompt_embeds (torch.FloatTensor, 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 entrada negative_prompt.
  • pooled_prompt_embeds (torch.FloatTensor, opcional) — Incrustaciones de texto agrupadas pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporciona, las incrustaciones de texto agrupadas se generarán a partir del argumento de entrada prompt.
  • negative_pooled_prompt_embeds (torch.FloatTensor, opcional) — Incrustaciones de texto negativo agrupadas pregeneradas. Se pueden utilizar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, se generarán pooled negative_prompt_embeds a partir del argumento de entrada negative_prompt.
  • output_type (str, opcional, valor predeterminado "pil") — El formato de salida de la imagen generada. Elija entre PIL: PIL.Image.Image o np.array.
  • return_dict (bool, opcional, valor predeterminado True) — Indica si se debe devolver un ~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput en lugar de una tupla simple.
  • joint_attention_kwargs (dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa al AttentionProcessor definido en self.processor dentro de diffusers.models.attention_processor.
  • clip_skip (int, opcional) — Número de capas que se omitirán de CLIP al calcular los embeddings del prompt. Un valor de 1 significa que se utilizará la salida de la penúltima capa para calcular los embeddings del prompt.
  • 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_kwargs incluirá una lista de todos los tensores especificados por callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, opcional) — La lista de entradas de tensor para la función callback_on_step_end. Los tensores especificados en la lista se pasarán como argumento callback_kwargs. Solo podrás incluir variables listadas en el atributo ._callback_tensor_inputs de tu clase de pipeline.
  • max_sequence_length (int por defecto 256) — Longitud máxima de secuencia para usar con el prompt.
  • pag_scale (float, opcional, valor predeterminado 3.0) — El factor de escala para la guía de atención perturbada. Si se establece en 0.0, no se utilizará la guía de atención perturbada.
  • pag_adaptive_scale (float, opcional, valor predeterminado 0.0) — El factor de escala adaptativo para la guía de atención perturbada. Si se establece en 0.0, se utiliza pag_scale.

Devuelve

~pipelines.stable_diffusion_3.StableDiffusion3PipelineOutput o tuple

~pipelines.stable_diffusion_3.StableDiffusion3PipelineOutput 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 StableDiffusion3PAGImg2ImgPipeline
>>> from diffusers.utils import load_image

>>> pipe = StableDiffusion3PAGImg2ImgPipeline.from_pretrained(
...     "stabilityai/stable-diffusion-3-medium-diffusers",
...     torch_dtype=torch.float16,
...     pag_applied_layers=["blocks.13"],
... )
>>> pipe.to("cuda")
>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> url = "https://huggingface.co/datasets/patrickvonplaten/images/resolve/main/aa_xl/000000009.png"
>>> init_image = load_image(url).convert("RGB")
>>> image = pipe(prompt, image=init_image, guidance_scale=5.0, pag_scale=0.7).images[0]

encode_prompt

< >

( prompt: str | list[str]prompt_2: str | list[str]prompt_3: str | list[str]device: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = Nonenegative_prompt_3: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneclip_skip: int | None = Nonemax_sequence_length: int = 256lora_scale: float | None = None )

Parámetros

  • prompt (str o list[str], opcional) — prompt a codificar
  • prompt_2 (str o list[str], opcional) — El prompt o prompts que se enviarán al tokenizer_2 y al text_encoder_2. Si no se define, se utiliza prompt en todos los text-encoders
  • prompt_3 (str o list[str], opcional) — El prompt o prompts que se enviarán al tokenizer_3 y al text_encoder_3. Si no se define, se utiliza prompt en todos los text-encoders
  • device — (torch.device): dispositivo de torch
  • num_images_per_prompt (int) — número de imágenes que deben generarse por prompt
  • do_classifier_free_guidance (bool) — si se debe usar classifier free guidance o no
  • negative_prompt (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si guidance_scale es menor que 1).
  • negative_prompt_2 (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen y que se enviarán a tokenizer_2 y text_encoder_2. Si no se define, se utiliza negative_prompt en todos los text-encoders.
  • negative_prompt_3 (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen y que se enviarán a tokenizer_3 y text_encoder_3. Si no se define, se utiliza negative_prompt en todos los text-encoders.
  • prompt_embeds (torch.FloatTensor, 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 entrada prompt.
  • negative_prompt_embeds (torch.FloatTensor, 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 entrada negative_prompt.
  • pooled_prompt_embeds (torch.FloatTensor, opcional) — Incrustaciones de texto agrupadas pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporciona, las incrustaciones de texto agrupadas se generarán a partir del argumento de entrada prompt.
  • negative_pooled_prompt_embeds (torch.FloatTensor, opcional) — Incrustaciones de texto negativo agrupadas pregeneradas. Se pueden utilizar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, se generarán pooled negative_prompt_embeds a partir del argumento de entrada negative_prompt.
  • clip_skip (int, opcional) — Número de capas que se omitirán de CLIP al calcular los embeddings del prompt. Un valor de 1 significa que se utilizará la salida de la penúltima capa para calcular los embeddings del prompt.
  • lora_scale (float, opcional) — Una escala LoRA que se aplicará a todas las capas LoRA del codificador de texto si se cargan capas LoRA.

PixArtSigmaPAGPipeline

clase diffusers.PixArtSigmaPAGPipeline

< >

( tokenizer: T5Tokenizertext_encoder: T5EncoderModelvae: AutoencoderKLtransformer: PixArtTransformer2DModelscheduler: KarrasDiffusionSchedulerspag_applied_layers: str | list[str] = 'blocks.1' )

Pipeline PAG para la generación de imágenes a partir de texto utilizando PixArt-Sigma.

__call__

< >

( prompt: str | list[str] = Nonenegative_prompt: str = ''num_inference_steps: int = 20timesteps: list = Nonesigmas: list = Noneguidance_scale: float = 4.5num_images_per_prompt: int | None = 1height: int | None = Nonewidth: int | None = Noneeta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_attention_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_attention_mask: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecallback: typing.Optional[typing.Callable[[int, int, torch.Tensor], NoneType]] = Nonecallback_steps: int = 1clean_caption: bool = Trueuse_resolution_binning: bool = Truemax_sequence_length: int = 300pag_scale: float = 3.0pag_adaptive_scale: float = 0.0 ) → ImagePipelineOutput or tuple

Parámetros

  • prompt (str o list[str], opcional) — El prompt o los prompts para guiar la generación de la imagen. Si no se define, hay que pasar prompt_embeds en su lugar.
  • negative_prompt (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si guidance_scale es menor que 1).
  • num_inference_steps (int, opcional, valor predeterminado 100) — 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.
  • timesteps (list[int], opcional) — Pasos de tiempo personalizados para usar en el proceso de desruido con programadores que admiten un argumento timesteps en su método set_timesteps. Si no se define, se usará el comportamiento predeterminado cuando se pase num_inference_steps. Debe estar en orden descendente.
  • sigmas (list[float], opcional) — Sigmas personalizados para usar en el proceso de desruido con programadores que admiten un argumento sigmas en su método set_timesteps. Si no se define, se usará el comportamiento predeterminado cuando se pase num_inference_steps.
  • guidance_scale (float, opcional, valor predeterminado 4.5) — Escala de guía definida en Classifier-Free Diffusion Guidance. guidance_scale se define como w de la ecuación 2 del Imagen Paper. La escala de guía se habilita estableciendo guidance_scale > 1. Una escala de guía más alta fomenta la generación de imágenes estrechamente vinculadas al prompt de texto, generalmente a costa de una menor calidad de imagen.
  • num_images_per_prompt (int, opcional, valor predeterminado 1) — El número de imágenes que se generarán por indicación.
  • height (int, opcional, valor predeterminado: self.unet.config.sample_size) — La altura en píxeles de la imagen generada.
  • width (int, opcional, predeterminado: self.unet.config.sample_size) — El ancho en píxeles de la imagen generada.
  • eta (float, opcional, valor predeterminado 0.0) — Corresponde al parámetro eta (η) del artículo DDIM: https://huggingface.co/papers/2010.02502. Solo se aplica a schedulers.DDIMScheduler y se ignorará en los demás.
  • generator (torch.Generator o list[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 el generator aleatorio 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 entrada prompt.
  • prompt_attention_mask (torch.Tensor, opcional) — Máscara de atención pregenerada para las incrustaciones de texto.
  • negative_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto negativo pregeneradas. Para PixArt-Sigma, este prompt negativo debe ser "". Si no se proporciona, negative_prompt_embeds se generará a partir del argumento de entrada negative_prompt.
  • negative_prompt_attention_mask (torch.Tensor, opcional) — Máscara de atención pregenerada para los embeddings de texto negativos.
  • output_type (str, opcional, valor predeterminado "pil") — El formato de salida de la imagen generada. Elija entre PIL: PIL.Image.Image o np.array.
  • return_dict (bool, opcional, valor predeterminado True) — Indica si se debe devolver un ~pipelines.stable_diffusion.IFPipelineOutput en lugar de una tupla simple.
  • callback (Callable, opcional) — Una función que se llamará cada callback_steps pasos durante la inferencia. La función se llamará con los siguientes argumentos: callback(step: int, timestep: int, latents: torch.Tensor).
  • callback_steps (int, opcional, valor predeterminado 1) — La frecuencia con la que se llamará a la función callback. Si no se especifica, la callback se llamará en cada paso.
  • clean_caption (bool, opcional, valor predeterminado True) — Indica si se debe limpiar la descripción antes de crear los embeddings. Requiere que beautifulsoup4 y ftfy estén instalados. Si las dependencias no están instaladas, los embeddings se crearán a partir del prompt sin procesar.
  • use_resolution_binning (bool por defecto True) — Si se establece en True, la altura y el ancho solicitados se mapean primero a las resoluciones más cercanas usando ASPECT_RATIO_1024_BIN. Después de que los latentes generados se decodifican en imágenes, se redimensionan de nuevo a la resolución solicitada. Útil para generar imágenes que no son cuadradas.
  • max_sequence_length (int por defecto 300) — Longitud máxima de la secuencia para usar con el prompt.
  • pag_scale (float, opcional, valor predeterminado 3.0) — El factor de escala para la guía de atención perturbada. Si se establece en 0.0, no se utilizará la guía de atención perturbada.
  • pag_adaptive_scale (float, opcional, valor predeterminado 0.0) — El factor de escala adaptativo para la guía de atención perturbada. Si se establece en 0.0, se utiliza pag_scale.

Devuelve

ImagePipelineOutput o tuple

Si return_dict es True, se devuelve ImagePipelineOutput; en caso contrario, se devuelve una tuple cuyo 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 AutoPipelineForText2Image

>>> pipe = AutoPipelineForText2Image.from_pretrained(
...     "PixArt-alpha/PixArt-Sigma-XL-2-1024-MS",
...     torch_dtype=torch.float16,
...     pag_applied_layers=["blocks.14"],
...     enable_pag=True,
... )
>>> pipe = pipe.to("cuda")

>>> prompt = "A small cactus with a happy face in the Sahara desert"
>>> image = pipe(prompt, pag_scale=4.0, guidance_scale=1.0).images[0]

encode_prompt

< >

( prompt: str | list[str]do_classifier_free_guidance: bool = Truenegative_prompt: str = ''num_images_per_prompt: int = 1device: typing.Optional[torch.device] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_attention_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_attention_mask: typing.Optional[torch.Tensor] = Noneclean_caption: bool = Falsemax_sequence_length: int = 300**kwargs )

Parámetros

  • prompt (str o list[str], opcional) — prompt a codificar
  • negative_prompt (str o list[str], opcional) — El prompt que no debe guiar la generación de la imagen. Si no se define, se debe pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si guidance_scale es menor que 1). Para PixArt-Alpha, esto debería ser "".
  • do_classifier_free_guidance (bool, opcional, valor predeterminado True) — si se debe usar classifier free guidance o no
  • num_images_per_prompt (int, opcional, valor predeterminado 1) — número de imágenes que deben generarse por indicación
  • device — (torch.device, opcional): dispositivo de torch en el que colocar las incrustaciones resultantes
  • 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 entrada prompt.
  • negative_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto negativo pregeneradas. Para PixArt-Alpha, debe ser la incrustación de la cadena "".
  • clean_caption (bool, por defecto False) — Si es True, la función preprocesará y limpiará la descripción proporcionada antes de codificarla.
  • max_sequence_length (int, por defecto 300) — Longitud máxima de la secuencia a utilizar para el prompt.

Codifica el prompt en estados ocultos del codificador de texto.

Update on GitHub