Diffusers documentation

LEDITS++

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

LEDITS++

LoRA

LEDITS++ fue propuesto en LEDITS++: Limitless Image Editing using Text-to-Image Models por Manuel Brack, Felix Friedrich, Katharina Kornmeier, Linoy Tsaban, Patrick Schramowski, Kristian Kersting, Apolinário Passos.

El resumen del artículo es:

Los modelos de difusión de texto a imagen han recibido un interés creciente recientemente por su asombrosa capacidad para generar imágenes de alta fidelidad a partir únicamente de entradas de texto. Los esfuerzos de investigación posteriores buscan explotar y aplicar sus capacidades a la edición de imágenes reales. Sin embargo, los métodos existentes de imagen a imagen suelen ser ineficientes, imprecisos y de versatilidad limitada. Ya sea que requieran un ajuste fino que consume mucho tiempo, se desvíen innecesariamente en gran medida de la imagen de entrada y/o carezcan de soporte para múltiples ediciones simultáneas. Para abordar estos problemas, presentamos LEDITS++, una técnica de manipulación de imágenes por texto que es eficiente, versátil y precisa. El nuevo enfoque de inversión de LEDITS++ no requiere ajuste ni optimización y produce resultados de alta fidelidad con unos pocos pasos de difusión. En segundo lugar, nuestra metodología admite múltiples ediciones simultáneas y es agnóstica de la arquitectura. En tercer lugar, utilizamos una nueva técnica de enmascarado implícito que limita los cambios a las regiones relevantes de la imagen. Proponemos el nuevo benchmark TEdBench++ como parte de nuestra evaluación exhaustiva. Nuestros resultados demuestran las capacidades de LEDITS++ y sus mejoras sobre los métodos anteriores. La página del proyecto está disponible en https://leditsplusplus-project.static.hf.space .

Puedes encontrar información adicional sobre LEDITS++ en la página del proyecto y probarlo en una demo.

Debido a algunos problemas de compatibilidad hacia atrás con la implementación actual de DPMSolverMultistepScheduler en diffusers, esta implementación de LEdits++ ya no puede garantizar una inversión perfecta. Es poco probable que este problema tenga efectos notables en los casos de uso aplicados. Sin embargo, proporcionamos una implementación alternativa que garantiza una inversión perfecta en un repositorio de GitHub dedicado.

Ofrecemos dos pipelines distintos basados en diferentes modelos preentrenados.

LEditsPPPipelineStableDiffusion

clase diffusers.LEditsPPPipelineStableDiffusion

< >

( vae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizerunet: UNet2DConditionModelscheduler: diffusers.schedulers.scheduling_ddim.DDIMScheduler | diffusers.schedulers.scheduling_dpmsolver_multistep.DPMSolverMultistepSchedulersafety_checker: StableDiffusionSafetyCheckerfeature_extractor: CLIPImageProcessorPilrequires_safety_checker: bool = True )

Parámetros

Pipeline para la edición de imágenes textuales usando LEDits++ con Stable Diffusion.

Este modelo hereda de DiffusionPipeline y se basa en StableDiffusionPipeline. Consulta la documentación de la clase superior para los métodos genéricos implementados en todos los pipelines (descarga, guardado, ejecución en un dispositivo en particular, etc.).

__call__

< >

( negative_prompt: str | list[str] | None = Nonegenerator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Noneoutput_type: str | None = 'pil'return_dict: bool = Trueediting_prompt: str | list[str] | None = Noneediting_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonereverse_editing_direction: bool | list[bool] | None = Falseedit_guidance_scale: float | list[float] | None = 5edit_warmup_steps: int | list[int] | None = 0edit_cooldown_steps: int | list[int] | None = Noneedit_threshold: float | list[float] | None = 0.9user_mask: typing.Optional[torch.Tensor] = Nonesem_guidance: list[torch.Tensor] | None = Noneuse_cross_attn_mask: bool = Falseuse_intersect_mask: bool = Trueattn_store_steps: list[int] | None = []store_averaged_over_steps: 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[str] = ['latents']**kwargs ) → LEditsPPDiffusionPipelineOutput or tuple

Parámetros

  • negative_prompt (str o list[str], opcional) — El prompt o los prompts que no deben guiar la generación de la imagen. Se ignora cuando no se usa guía (es decir, se ignora si guidance_scale es menor que 1).
  • generator (torch.Generator, opcional) — Uno o una lista de generadores de torch para hacer la generación determinista.
  • 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 LEditsPPDiffusionPipelineOutput en lugar de una tupla simple.
  • editing_prompt (str o list[str], opcional) — El prompt o prompts para guiar la generación de la imagen. La imagen se reconstruye estableciendo editing_prompt = None. La dirección de guía del prompt debe especificarse mediante reverse_editing_direction.
  • editing_prompt_embeds (torch.Tensor>, opcional) — Incrustaciones precalculadas para guiar la generación de la imagen. La dirección de guía de la incrustación debe especificarse mediante reverse_editing_direction.
  • 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.
  • reverse_editing_direction (bool o list[bool], opcional, valor predeterminado False) — Si el prompt correspondiente en editing_prompt debe aumentarse o disminuirse.
  • edit_guidance_scale (float o list[float], opcional, valor predeterminado 5) — Escala de guía para orientar la generación de la imagen. Si se proporciona como lista, los valores deben corresponder a editing_prompt. edit_guidance_scale se define como s_e de la ecuación 12 del artículo de LEDITS++.
  • edit_warmup_steps (float o list[float], opcional, valor predeterminado 10) — Número de pasos de difusión (para cada prompt) para los que no se aplicará la guía.
  • edit_cooldown_steps (float o list[float], opcional, valor predeterminado None) — Número de pasos de difusión (para cada prompt) después de los cuales la guía dejará de aplicarse.
  • edit_threshold (float o list[float], opcional, valor predeterminado 0.9) — Umbral de enmascaramiento de la guía. El umbral debe ser proporcional a la región de la imagen que se modifica. ‘edit_threshold’ se define como ‘λ’ de la ecuación 12 del artículo de LEDITS++.
  • user_mask (torch.Tensor, opcional) — Máscara proporcionada por el usuario para un control aún mejor sobre el proceso de edición. Esto resulta útil cuando las máscaras implícitas de LEDITS++ no satisfacen las preferencias del usuario.
  • sem_guidance (list[torch.Tensor], opcional) — lista de vectores de guía pregenerados que se aplicarán durante la generación. La longitud de la lista debe corresponder a num_inference_steps.
  • use_cross_attn_mask (bool, por defecto False) — Si se utilizan máscaras de atención cruzada. Las máscaras de atención cruzada se utilizan siempre que use_intersect_mask esté establecido en true. Las máscaras de atención cruzada se definen como ‘M^1’ de la ecuación 12 del artículo de LEDITS++.
  • use_intersect_mask (bool, por defecto True) — Si el término de enmascaramiento se calcula como la intersección de las máscaras de atención cruzada y las máscaras derivadas de la estimación de ruido. Las máscaras de atención cruzada se definen como ‘M^1’ y las máscaras derivadas de la estimación de ruido se definen como ‘M^2’ de la ecuación 12 del artículo LEDITS++.
  • attn_store_steps (list[int], opcional) — Pasos para los que se almacenan los mapas de atención en el AttentionStore. Solo con fines de visualización.
  • store_averaged_over_steps (bool, por defecto True) — Indica si los mapas de atención para ‘attn_store_steps’ se almacenan promediados sobre los pasos de difusión. Si es False, los mapas de atención de cada paso se almacenan por separado. Solo con fines de visualización.
  • 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, 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.

LEditsPPDiffusionPipelineOutput if return_dict is True, otherwise a tuple. When returning a tuple, the first element is a list with the generated images, and the second element is a list of bools denoting whether the corresponding generated image likely represents "not-safe-for-work" (nsfw) content, according to the safety_checker`.

La función de llamada al pipeline para la edición. El método invert() debe llamarse antes. Las ediciones siempre se realizarán para la(s) última(s) imagen(es) invertida(s).

Ejemplos:

>>> import torch

>>> from diffusers import LEditsPPPipelineStableDiffusion
>>> from diffusers.utils import load_image

>>> pipe = LEditsPPPipelineStableDiffusion.from_pretrained(
...     "stable-diffusion-v1-5/stable-diffusion-v1-5", variant="fp16", torch_dtype=torch.float16
... )
>>> pipe.vae.enable_tiling()
>>> pipe = pipe.to("cuda")

>>> img_url = "https://www.aiml.informatik.tu-darmstadt.de/people/mbrack/cherry_blossom.png"
>>> image = load_image(img_url).resize((512, 512))

>>> _ = pipe.invert(image=image, num_inversion_steps=50, skip=0.1)

>>> edited_image = pipe(
...     editing_prompt=["cherry blossom"], edit_guidance_scale=10.0, edit_threshold=0.75
... ).images[0]

invert

< >

( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]source_prompt: str = ''source_guidance_scale: float = 3.5num_inversion_steps: int = 30skip: float = 0.15generator: typing.Optional[torch.Generator] = Nonecross_attention_kwargs: dict[str, typing.Any] | None = Noneclip_skip: int | None = Noneheight: int | None = Nonewidth: int | None = Noneresize_mode: str | None = 'default'crops_coords: tuple[int, int, int, int] | None = None ) → LEditsPPInversionPipelineOutput

Parámetros

  • image (PipelineImageInput) — Entrada para la(s) imagen(es) que se van a editar. Múltiples imágenes de entrada deben tener por defecto la misma relación de aspecto.
  • source_prompt (str, por defecto "") — Prompt que describe la imagen de entrada y que se utilizará para la guía durante la inversión. La guía se desactiva si source_prompt es "".
  • source_guidance_scale (float, por defecto 3.5) — Fuerza de la guía durante la inversión.
  • num_inversion_steps (int, por defecto 30) — Número total de pasos de inversión realizados tras descartar los primeros skip pasos.
  • skip (float, por defecto 0.15) — Porción de los pasos iniciales que se ignorará para la inversión y la generación posterior. Valores más bajos producirán cambios más fuertes en la imagen de entrada. skip debe estar entre 0 y 1.
  • generator (torch.Generator, opcional) — Un torch.Generator para hacer la inversión determinista.
  • 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.
  • height (int, opcional, valor predeterminado None) — La altura en la imagen preprocesada. Si es None, se usará get_default_height_width() para obtener la altura predeterminada.
  • width (int, optional, defaults to None) -- The width in preprocessed. If None, will use get_default_height_width() to get the default width.
  • resize_mode (str, opcional, valor predeterminado default) — El modo de redimensionado, puede ser default o fill. Si es default, se redimensionará la imagen para que quepa dentro del ancho y alto especificados, y es posible que no se mantenga la relación de aspecto original. Si es fill, se redimensionará la imagen para que quepa dentro del ancho y alto especificados, manteniendo la relación de aspecto, y luego se centrará la imagen dentro de las dimensiones, rellenando los espacios vacíos con datos de la imagen. Si es crop, se redimensionará la imagen para que quepa dentro del ancho y alto especificados, manteniendo la relación de aspecto, y luego se centrará la imagen dentro de las dimensiones, recortando el exceso. Tenga en cuenta que resize_mode fill y crop solo se admiten para entradas de imagen PIL.
  • crops_coords (list[tuple[int, int, int, int]], opcional, valor predeterminado None) — Las coordenadas de recorte para cada imagen del lote. Si es None, no se recortará la imagen.

La salida contendrá la(s) imagen(es) de entrada redimensionada(s) y la(s) reconstrucción(es) correspondiente(s) del VAE.

La función para el pipeline de inversión de imagen tal como se describe en el artículo de LEDITS++. Si el programador está configurado como DDIMScheduler, se realizará la inversión propuesta por edit-friendly DPDM en su lugar.

encode_prompt

< >

( devicenum_images_per_promptenable_edit_guidancenegative_prompt = Noneediting_prompt = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneediting_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = None )

Parámetros

  • device — (torch.device): dispositivo de torch
  • num_images_per_prompt (int) — número de imágenes que deben generarse por prompt
  • enable_edit_guidance (bool) — si se debe realizar alguna edición o reconstruir la imagen de entrada
  • 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).
  • editing_prompt (str o list[str], opcional) — Prompt(s) de edición que se codificarán. Si no se define, hay que pasar editing_prompt_embeds en su lugar.
  • editing_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, 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.

LEditsPPPipelineStableDiffusionXL

clase diffusers.LEditsPPPipelineStableDiffusionXL

< >

( vae: AutoencoderKLtext_encoder: CLIPTextModeltext_encoder_2: CLIPTextModelWithProjectiontokenizer: CLIPTokenizertokenizer_2: CLIPTokenizerunet: UNet2DConditionModelscheduler: diffusers.schedulers.scheduling_dpmsolver_multistep.DPMSolverMultistepScheduler | diffusers.schedulers.scheduling_ddim.DDIMSchedulerimage_encoder: CLIPVisionModelWithProjection = Nonefeature_extractor: CLIPImageProcessorPil = Noneforce_zeros_for_empty_prompt: bool = Trueadd_watermarker: bool | None = None )

Parámetros

Pipeline para la edición de imágenes textuales usando LEDits++ con Stable Diffusion XL.

Este modelo hereda de DiffusionPipeline y se basa en StableDiffusionXLPipeline. Consulta la documentación de la superclase para los métodos genéricos implementados en todos los pipelines (descarga, guardado, ejecución en un dispositivo en particular, etc.).

Además, el pipeline hereda los siguientes métodos de carga:

as well as the following saving methods:

  • LoRA: loaders.StableDiffusionXLPipeline.save_lora_weights

__call__

< >

( denoising_end: float | None = Nonenegative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = 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] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Noneguidance_rescale: float = 0.0crops_coords_top_left: tuple[int, int] = (0, 0)target_size: tuple[int, int] | None = Noneediting_prompt: str | list[str] | None = Noneediting_prompt_embeddings: typing.Optional[torch.Tensor] = Noneediting_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonereverse_editing_direction: bool | list[bool] | None = Falseedit_guidance_scale: float | list[float] | None = 5edit_warmup_steps: int | list[int] | None = 0edit_cooldown_steps: int | list[int] | None = Noneedit_threshold: float | list[float] | None = 0.9sem_guidance: list[torch.Tensor] | None = Noneuse_cross_attn_mask: bool = Falseuse_intersect_mask: bool = Falseuser_mask: typing.Optional[torch.Tensor] = Noneattn_store_steps: list[int] | None = []store_averaged_over_steps: bool = Trueclip_skip: int | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list[str] = ['latents']**kwargs ) → LEditsPPDiffusionPipelineOutput or tuple

Parámetros

  • denoising_end (float, opcional) — Cuando se especifica, determina la fracción (entre 0.0 y 1.0) del proceso total de desruido 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 programador. 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
  • 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
  • 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.
  • 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.7) — 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.
  • 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á (width, height). Forma parte del micro-conditioning de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952.
  • editing_prompt (str o list[str], opcional) — El prompt o prompts para guiar la generación de la imagen. La imagen se reconstruye estableciendo editing_prompt = None. La dirección de guía del prompt debe especificarse mediante reverse_editing_direction.
  • editing_prompt_embeddings (torch.Tensor, opcional) — Incrustaciones de texto de edición pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporciona, editing_prompt_embeddings se generará a partir del argumento de entrada editing_prompt.
  • editing_pooled_prompt_embeds (torch.Tensor, opcional) — Embeddings de texto de edición agrupados pregenerados. Se pueden utilizar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, editing_prompt_embeddings se generará a partir del argumento de entrada editing_prompt.
  • reverse_editing_direction (bool o list[bool], opcional, valor predeterminado False) — Si el prompt correspondiente en editing_prompt debe aumentarse o disminuirse.
  • edit_guidance_scale (float o list[float], opcional, valor predeterminado 5) — Escala de guía para orientar la generación de la imagen. Si se proporciona como lista, los valores deben corresponder a editing_prompt. edit_guidance_scale se define como s_e de la ecuación 12 del artículo de LEDITS++.
  • edit_warmup_steps (float o list[float], opcional, valor predeterminado 10) — Número de pasos de difusión (para cada prompt) para los que no se aplica la guía.
  • edit_cooldown_steps (float o list[float], opcional, valor predeterminado None) — Número de pasos de difusión (para cada prompt) después de los cuales ya no se aplica la guía.
  • edit_threshold (float o list[float], opcional, valor predeterminado 0.9) — Umbral de enmascaramiento de la guía. El umbral debe ser proporcional a la región de la imagen que se modifica. ‘edit_threshold’ se define como ‘λ’ de la ecuación 12 del artículo de LEDITS++.
  • sem_guidance (list[torch.Tensor], opcional) — lista de vectores de guía pregenerados que se aplicarán durante la generación. La longitud de la lista debe corresponder a num_inference_steps.
  • use_cross_attn_mask — Si se usan máscaras de atención cruzada. Las máscaras de atención cruzada se usan siempre cuando use_intersect_mask se establece en true. Las máscaras de atención cruzada se definen como ‘M^1’ de la ecuación 12 del artículo de LEDITS++.
  • use_intersect_mask — Indica si el término de enmascaramiento se calcula como la intersección de las máscaras de atención cruzada y las máscaras derivadas de la estimación de ruido. Las máscaras de atención cruzada se definen como ‘M^1’ y las máscaras derivadas de la estimación de ruido como ‘M^2’ de la ecuación 12 del artículo LEDITS++.
  • user_mask — Máscara proporcionada por el usuario para un control aún mejor sobre el proceso de edición. Esto resulta útil cuando las máscaras implícitas de LEDITS++ no satisfacen las preferencias del usuario.
  • attn_store_steps — Pasos para los que se almacenan los mapas de atención en el AttentionStore. Solo con fines de visualización.
  • store_averaged_over_steps — Indica si los mapas de atención para ‘attn_store_steps’ se almacenan promediados sobre los pasos de difusión. Si es False, los mapas de atención de cada paso se almacenan por separado. Solo con fines de visualización.
  • 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.

LEditsPPDiffusionPipelineOutput 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.

La función de llamada al pipeline para la edición. El método invert() debe llamarse antes. Las ediciones siempre se realizarán para la(s) última(s) imagen(es) invertida(s).

Ejemplos:

>>> import torch

>>> from diffusers import LEditsPPPipelineStableDiffusionXL
>>> from diffusers.utils import load_image

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

>>> img_url = "https://www.aiml.informatik.tu-darmstadt.de/people/mbrack/tennis.jpg"
>>> image = load_image(img_url).resize((1024, 1024))

>>> _ = pipe.invert(image=image, num_inversion_steps=50, skip=0.2)

>>> edited_image = pipe(
...     editing_prompt=["tennis ball", "tomato"],
...     reverse_editing_direction=[True, False],
...     edit_guidance_scale=[5.0, 10.0],
...     edit_threshold=[0.9, 0.85],
... ).images[0]

invert

< >

( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]source_prompt: str = ''source_guidance_scale = 3.5negative_prompt: str = Nonenegative_prompt_2: str = Nonenum_inversion_steps: int = 50skip: float = 0.15generator: typing.Optional[torch.Generator] = Nonecrops_coords_top_left: tuple[int, int] = (0, 0)num_zero_noise_steps: int = 3cross_attention_kwargs: dict[str, typing.Any] | None = Noneheight: int | None = Nonewidth: int | None = Noneresize_mode: str | None = 'default'crops_coords: tuple[int, int, int, int] | None = None ) → LEditsPPInversionPipelineOutput

Parámetros

  • image (PipelineImageInput) — Entrada para la(s) imagen(es) que se van a editar. Múltiples imágenes de entrada deben tener por defecto la misma relación de aspecto.
  • source_prompt (str, por defecto "") — Prompt que describe la imagen de entrada y que se utilizará para la guía durante la inversión. La guía se desactiva si source_prompt es "".
  • source_guidance_scale (float, por defecto 3.5) — Fuerza de la guía durante la inversión.
  • 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_inversion_steps (int, por defecto 50) — Número total de pasos de inversión realizados tras descartar los primeros skip pasos.
  • skip (float, por defecto 0.15) — Porción de los pasos iniciales que se ignorará para la inversión y la generación posterior. Valores más bajos producirán cambios más fuertes en la imagen de entrada. skip debe estar entre 0 y 1.
  • generator (torch.Generator, opcional) — Un torch.Generator para hacer la inversión determinista.
  • 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.
  • num_zero_noise_steps (int, por defecto 3) — Número de pasos finales de difusión que no volverán a añadir ruido a la imagen actual. Si no se establecen pasos a cero, SD-XL en combinación con DPMSolverMultistepScheduler producirá artefactos de ruido.
  • 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.

La salida contendrá la(s) imagen(es) de entrada redimensionada(s) y la(s) reconstrucción(es) correspondiente(s) del VAE.

La función para el pipeline de inversión de imagen tal como se describe en el artículo de LEDITS++. Si el programador está configurado como DDIMScheduler, se realizará la inversión propuesta por edit-friendly DPDM en su lugar.

encode_prompt

< >

( device: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1negative_prompt: str | None = Nonenegative_prompt_2: str | None = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = Noneenable_edit_guidance: bool = Trueediting_prompt: str | None = Noneediting_prompt_embeds: typing.Optional[torch.Tensor] = Noneediting_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None )

Parámetros

  • device — (torch.device): dispositivo de torch
  • num_images_per_prompt (int) — número de imágenes que deben generarse por prompt
  • 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, hay que pasar negative_prompt_embeds en su lugar.
  • 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
  • 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.
  • 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.
  • enable_edit_guidance (bool) — Si se debe guiar hacia un prompt de edición o no.
  • editing_prompt (str o list[str], opcional) — Prompt(s) de edición que se codificarán. Si no se define y ‘enable_edit_guidance’ es True, se debe pasar editing_prompt_embeds en su lugar.
  • editing_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto de edición pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporciona y ‘enable_edit_guidance’ es True, editing_prompt_embeds se generará a partir del argumento de entrada editing_prompt.
  • editing_pooled_prompt_embeds (torch.Tensor, opcional) — Embeddings de texto agrupados de edición pregenerados. Se pueden utilizar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, se generarán los editing_pooled_prompt_embeds agrupados a partir del argumento de entrada editing_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

LEditsPPDiffusionPipelineOutput

clase diffusers.pipelines.LEditsPPDiffusionPipelineOutput

< >

( images: list[PIL.Image.Image] | numpy.ndarraynsfw_content_detected: list[bool] | None )

Parámetros

  • images (list[PIL.Image.Image] o np.ndarray) — lista de imágenes PIL desruidadas de longitud batch_size o array de NumPy de forma (batch_size, height, width, num_channels).
  • nsfw_content_detected (list[bool]) — lista que indica si la imagen generada correspondiente contiene contenido “no apto para el trabajo” (nsfw) o None si no se pudo realizar la verificación de seguridad.

Clase de salida para las pipelines de difusión de LEdits++.

LEditsPPInversionPipelineOutput

clase diffusers.pipelines.LEditsPPInversionPipelineOutput

< >

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

Parámetros

  • input_images (list[PIL.Image.Image] o np.ndarray) — lista de las imágenes de entrada recortadas y redimensionadas como imágenes PIL de longitud batch_size o matriz NumPy de forma (batch_size, height, width, num_channels).
  • vae_reconstruction_images (list[PIL.Image.Image] o np.ndarray) — lista de reconstrucciones VAE de todas las imágenes de entrada como imágenes PIL de longitud batch_size o matriz NumPy de forma (batch_size, height, width, num_channels).

Clase de salida para las pipelines de difusión de LEdits++.

Update on GitHub