Diffusers documentation

LEDITS++

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

LEDITS++

LoRA

LEDITS++ foi proposto em 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.

O resumo do artigo é:

Os modelos de difusão de texto para imagem têm recebido interesse crescente recentemente, devido à sua notável capacidade de gerar imagens de alta fidelidade a partir apenas de entradas de texto. Esforços de pesquisa subsequentes visam explorar e aplicar suas capacidades à edição real de imagens. No entanto, os métodos existentes de imagem para imagem são frequentemente ineficientes, imprecisos e de versatilidade limitada. Eles exigem ajuste fino demorado, se desviam desnecessariamente e com força excessiva da imagem de entrada e/ou não oferecem suporte a múltiplas edições simultâneas. Para abordar essas questões, apresentamos o LEDITS++, uma técnica de manipulação textual de imagem eficiente, versátil e precisa. A nova abordagem de inversão do LEDITS++ não requer ajuste nem otimização e produz resultados de alta fidelidade com poucas etapas de difusão. Em segundo lugar, nossa metodologia suporta múltiplas edições simultâneas e é agnóstica em relação à arquitetura. Em terceiro lugar, utilizamos uma nova técnica de mascaramento implícito que limita as alterações às regiões relevantes da imagem. Propomos o novo benchmark TEdBench++ como parte de nossa avaliação exaustiva. Nossos resultados demonstram as capacidades do LEDITS++ e suas melhorias em relação a métodos anteriores. A página do projeto está disponível em https://leditsplusplus-project.static.hf.space .

Você pode encontrar informações adicionais sobre LEDITS++ na página do projeto e experimentá-lo em uma demonstração.

Devido a alguns problemas de compatibilidade reversa com a implementação atual de DPMSolverMultistepScheduler no diffusers, esta implementação do LEdits++ não pode mais garantir inversão perfeita. É improvável que esse problema tenha efeitos perceptíveis em casos de uso práticos. No entanto, fornecemos uma implementação alternativa que garante inversão perfeita em um repositório dedicado no GitHub.

Oferecemos dois pipelines distintos baseados em diferentes modelos pré-treinados.

LEditsPPPipelineStableDiffusion

classe 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

  • vae (AutoencoderKL) — Modelo de Variational Auto-Encoder (VAE) para codificar e decodificar imagens para e a partir de representações latentes.
  • text_encoder (CLIPTextModel) — Codificador de texto congelado. O Stable Diffusion usa a parte de texto do CLIP, especificamente a variante clip-vit-large-patch14.
  • tokenizer (CLIPTokenizer) — Tokenizer da classe CLIPTokenizer.
  • unet (UNet2DConditionModel) — Arquitetura U-Net condicional para desruidar os latentes da imagem codificada.
  • scheduler (DPMSolverMultistepScheduler ou DDIMScheduler) — Um scheduler a ser usado em combinação com unet para desruidar os latentes da imagem codificada. Pode ser um dos DPMSolverMultistepScheduler ou DDIMScheduler. Se qualquer outro scheduler for passado, ele será automaticamente definido como DPMSolverMultistepScheduler.
  • safety_checker (StableDiffusionSafetyChecker) — Módulo de classificação que estima se as imagens geradas podem ser consideradas ofensivas ou prejudiciais. Consulte o model card para mais detalhes.
  • feature_extractor (CLIPImageProcessor) — Modelo que extrai recursos de imagens geradas para serem usados como entradas para o safety_checker.

Pipeline para edição textual de imagens usando LEDits++ com Stable Diffusion.

Este modelo herda de DiffusionPipeline e é baseado no StableDiffusionPipeline. Consulte a documentação da superclasse para os métodos genéricos implementados para todos os pipelines (download, salvamento, execução em um dispositivo específico, 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 ou list[str], opcional) — O prompt ou os prompts que não devem orientar a geração da imagem. Ignorado quando não se usa orientação (ou seja, ignorado se guidance_scale for menor que 1).
  • generator (torch.Generator, opcional) — Um ou uma lista de geradores do torch para tornar a geração determinística.
  • output_type (str, opcional, padrão "pil") — O formato de saída da imagem gerada. Escolha entre PIL: PIL.Image.Image ou np.array.
  • return_dict (bool, opcional, padrão True) — Se deve ou não retornar um LEditsPPDiffusionPipelineOutput em vez de uma tupla simples.
  • editing_prompt (str ou list[str], opcional) — O prompt ou os prompts para orientar a geração da imagem. A imagem é reconstruída definindo editing_prompt = None. A direção de orientação do prompt deve ser especificada via reverse_editing_direction.
  • editing_prompt_embeds (torch.Tensor>, opcional) — Incorporações pré-computadas a serem usadas para orientar a geração da imagem. A direção de orientação da incorporação deve ser especificada via reverse_editing_direction.
  • negative_prompt_embeds (torch.Tensor, opcional) — Embeddings de texto negativos pré-gerados. Pode ser usado para ajustar facilmente as entradas de texto (ponderação do prompt). Se não for fornecido, os negative_prompt_embeds são gerados a partir do argumento de entrada negative_prompt.
  • reverse_editing_direction (bool ou list[bool], opcional, padrão False) — Se o prompt correspondente em editing_prompt deve ser aumentado ou diminuído.
  • edit_guidance_scale (float ou list[float], opcional, padrão 5) — Escala de orientação para guiar a geração da imagem. Se fornecida como lista, os valores devem corresponder a editing_prompt. edit_guidance_scale é definido como s_e da equação 12 do LEDITS++ Paper.
  • edit_warmup_steps (float ou list[float], opcional, padrão 10) — Número de etapas de difusão (para cada prompt) para as quais a orientação não será aplicada.
  • edit_cooldown_steps (float ou list[float], opcional, padrão None) — Número de etapas de difusão (para cada prompt) após as quais a orientação deixará de ser aplicada.
  • edit_threshold (float ou list[float], opcional, padrão 0.9) — Limiar de mascaramento da orientação. O limiar deve ser proporcional à região da imagem que é modificada. ‘edit_threshold’ é definido como ‘λ’ da equação 12 do LEDITS++ Paper.
  • user_mask (torch.Tensor, opcional) — Máscara fornecida pelo usuário para um controle ainda melhor sobre o processo de edição. Isso é útil quando as máscaras implícitas do LEDITS++ não atendem às preferências do usuário.
  • sem_guidance (list[torch.Tensor], opcional) — lista de vetores de orientação pré-gerados a serem aplicados na geração. O comprimento da lista deve corresponder a num_inference_steps.
  • use_cross_attn_mask (bool, padrão False) — Se máscaras de atenção cruzada são usadas. Máscaras de atenção cruzada são sempre usadas quando use_intersect_mask é definido como true. Máscaras de atenção cruzada são definidas como ‘M^1’ da equação 12 do artigo LEDITS++.
  • use_intersect_mask (bool, padrão True) — Se o termo de mascaramento é calculado como a interseção das máscaras de atenção cruzada e das máscaras derivadas da estimativa de ruído. As máscaras de atenção cruzada são definidas como ‘M^1’ e as máscaras derivadas da estimativa de ruído são definidas como ‘M^2’ da equação 12 do artigo LEDITS++.
  • attn_store_steps (list[int], opcional) — Etapas para as quais os mapas de atenção são armazenados no AttentionStore. Apenas para fins de visualização.
  • store_averaged_over_steps (bool, padrão True) — Se os mapas de atenção para os ‘attn_store_steps’ são armazenados com média calculada sobre os passos de difusão. Se False, os mapas de atenção para cada passo são armazenados separadamente. Apenas para fins de visualização.
  • cross_attention_kwargs (dict, opcional) — Um dicionário de kwargs que, se especificado, é passado ao AttentionProcessor conforme definido em self.processor.
  • guidance_rescale (float, opcional, padrão 0.0) — Fator de rescale de guidance de Common Diffusion Noise Schedules and Sample Steps are Flawed. O fator de rescale de guidance deve corrigir a sobreexposição ao usar zero terminal SNR.
  • clip_skip (int, opcional) — Número de camadas a serem ignoradas do CLIP ao calcular os embeddings do prompt. Um valor de 1 significa que a saída da camada pré-final será usada para calcular os embeddings do prompt.
  • callback_on_step_end (Callable, opcional) — Uma função que é chamada no final de cada etapa de desruidamento durante a inferência. A função é chamada com os seguintes argumentos: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs incluirá uma lista de todos os tensores, conforme especificado por callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, opcional) — A lista de entradas de tensor para a função callback_on_step_end. Os tensores especificados na lista serão passados como argumento callback_kwargs. Você só poderá incluir variáveis listadas no atributo ._callback_tensor_inputs da sua classe 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`.

A função de chamada do pipeline para edição. O método invert() deve ser chamado antes. As edições sempre serão realizadas para a(s) última(s) imagem(ns) invertida(s).

Exemplos:

>>> 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 a(s) imagem(ns) que serão editadas. Múltiplas imagens de entrada devem ter, por padrão, a mesma proporção de aspecto.
  • source_prompt (str, padrão "") — Prompt descrevendo a imagem de entrada que será usado para orientação durante a inversão. A orientação é desativada se o source_prompt for "".
  • source_guidance_scale (float, padrão 3.5) — Força do guia durante a inversão.
  • num_inversion_steps (int, padrão 30) — Número total de etapas de inversão executadas após descartar as skip etapas iniciais.
  • skip (float, padrão 0.15) — Fração dos passos iniciais que será ignorada para a inversão e a geração subsequente. Valores menores resultarão em mudanças mais fortes na imagem de entrada. skip deve estar entre 0 e 1.
  • generator (torch.Generator, opcional) — Um torch.Generator para tornar a inversão determinística.
  • cross_attention_kwargs (dict, opcional) — Um dicionário de kwargs que, se especificado, é passado ao AttentionProcessor conforme definido em self.processor.
  • clip_skip (int, opcional) — Número de camadas a serem ignoradas do CLIP ao calcular os embeddings do prompt. Um valor de 1 significa que a saída da camada pré-final será usada para calcular os embeddings do prompt.
  • height (int, opcional, padrão None) — A altura na imagem pré-processada. Se None, usará o get_default_height_width() para obter a altura padrão.
  • 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, padrão default) — O modo de redimensionamento, pode ser default ou fill. Se default, redimensiona a imagem para caber dentro da largura e altura especificadas, e pode não manter a proporção original. Se fill, redimensiona a imagem para caber dentro da largura e altura especificadas, mantendo a proporção, e então centraliza a imagem dentro das dimensões, preenchendo o espaço vazio com dados da imagem. Se crop, redimensiona a imagem para caber dentro da largura e altura especificadas, mantendo a proporção, e então centraliza a imagem dentro das dimensões, cortando o excesso. Observe que resize_mode fill e crop são suportados apenas para entrada de imagem PIL.
  • crops_coords (list[tuple[int, int, int, int]], opcional, padrão None) — As coordenadas de recorte para cada imagem no lote. Se None, a imagem não será recortada.

A saída conterá a(s) imagem(ns) de entrada redimensionada(s) e a(s) reconstrução(ões) correspondente(s) do VAE.

A função para o pipeline de inversão de imagem conforme descrito no LEDITS++ Paper. Se o scheduler estiver definido como DDIMScheduler, a inversão proposta por edit-friendly DPDM será realizada em vez disso.

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 torch
  • num_images_per_prompt (int) — número de imagens que devem ser geradas por prompt
  • enable_edit_guidance (bool) — se deve realizar alguma edição ou reconstruir a imagem de entrada
  • negative_prompt (str ou list[str], opcional) — O prompt ou os prompts que não devem orientar a geração da imagem. Se não for definido, é necessário passar negative_prompt_embeds em vez disso. Ignorado quando não se usa orientação (ou seja, ignorado se guidance_scale for menor que 1).
  • editing_prompt (str ou list[str], opcional) — Prompt(s) de edição a serem codificados. Se não definido, é necessário passar editing_prompt_embeds em vez disso.
  • editing_prompt_embeds (torch.Tensor, opcional) — Incorporações de texto pré-geradas. Podem ser usadas para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompts. Se não forem fornecidas, as incorporações de texto serão geradas a partir do argumento de entrada prompt.
  • negative_prompt_embeds (torch.Tensor, opcional) — Incorporações de texto negativas pré-geradas. Pode ser usado para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompts. Se não for fornecido, negative_prompt_embeds será gerado a partir do argumento de entrada negative_prompt.
  • lora_scale (float, opcional) — Uma escala LoRA que será aplicada a todas as camadas LoRA do codificador de texto, caso as camadas LoRA sejam carregadas.
  • clip_skip (int, opcional) — Número de camadas a serem ignoradas do CLIP ao calcular os embeddings do prompt. Um valor de 1 significa que a saída da camada pré-final será usada para calcular os embeddings do prompt.

Codifica o prompt em estados ocultos do codificador de texto.

LEditsPPPipelineStableDiffusionXL

classe 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 edição textual de imagens usando LEDits++ com Stable Diffusion XL.

Este modelo herda de DiffusionPipeline e é baseado no StableDiffusionXLPipeline. Consulte a documentação da superclasse para os métodos genéricos implementados para todos os pipelines (download, salvamento, execução em um dispositivo específico, etc.).

Além disso, o pipeline herda os seguintes métodos de carregamento:

bem como os seguintes métodos de salvamento:

  • 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) — Quando especificado, determina a fração (entre 0.0 e 1.0) do processo total de desruidamento que deve ser concluída antes de ser encerrada prematuramente de forma intencional. Como resultado, a amostra retornada ainda manterá uma quantidade substancial de ruído, conforme determinado pelos passos discretos selecionados pelo agendador. O parâmetro denoising_end deve ser idealmente utilizado quando este pipeline faz parte de uma configuração multi-pipeline de “Mixture of Denoisers”, conforme detalhado em [**Refining the Image
  • negative_prompt (str ou list[str], opcional) — O prompt ou os prompts que não devem orientar a geração da imagem. Se não for definido, é necessário passar negative_prompt_embeds em vez disso. Ignorado quando não se usa orientação (ou seja, ignorado se guidance_scale for menor que 1).
  • negative_prompt_2 (str ou list[str], opcional) — O prompt ou os prompts que não devem orientar a geração da imagem a serem enviados para tokenizer_2 e text_encoder_2. Se não definido, negative_prompt é usado em ambos os text-encoders
  • negative_prompt_embeds (torch.Tensor, opcional) — Incorporações de texto negativas pré-geradas. Pode ser usado para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompts. Se não for fornecido, negative_prompt_embeds será gerado a partir do argumento de entrada negative_prompt.
  • negative_pooled_prompt_embeds (torch.Tensor, opcional) — Embeddings de texto negativo pré-gerados. Pode ser usado para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompt. Se não for fornecido, os pooled negative_prompt_embeds serão gerados a partir do argumento de entrada negative_prompt.
  • ip_adapter_image — (PipelineImageInput, opcional): Entrada de imagem opcional para trabalhar com IP Adapters.
  • output_type (str, opcional, padrão "pil") — O formato de saída da imagem gerada. Escolha entre PIL: PIL.Image.Image ou np.array.
  • return_dict (bool, opcional, padrão True) — Se deve ou não retornar um ~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput em vez de uma tupla simples.
  • cross_attention_kwargs (dict, opcional) — Um dicionário de kwargs que, se especificado, é passado para o AttentionProcessor conforme definido em self.processor em diffusers.models.attention_processor.
  • guidance_rescale (float, opcional, padrão 0.7) — Fator de rescalonamento de orientação proposto por Common Diffusion Noise Schedules and Sample Steps are Flawed guidance_scale é definido como φ na equação 16. de Common Diffusion Noise Schedules and Sample Steps are Flawed. O fator de rescalonamento de orientação deve corrigir a sobreexposição ao usar SNR terminal zero.
  • crops_coords_top_left (tuple[int], opcional, padrão (0, 0)) — crops_coords_top_left pode ser usado para gerar uma imagem que pareça “recortada” a partir da posição crops_coords_top_left para baixo. Imagens favoráveis e bem centralizadas são geralmente obtidas ao definir crops_coords_top_left como (0, 0). Parte do micro-condicionamento do SDXL, conforme explicado na seção 2.2 de https://huggingface.co/papers/2307.01952.
  • target_size (tuple[int], opcional, padrão (1024, 1024)) — Na maioria dos casos, target_size deve ser definido para a altura e largura desejadas da imagem gerada. Se não for especificado, o padrão será (width, height). Parte do micro-conditioning do SDXL, conforme explicado na seção 2.2 de https://huggingface.co/papers/2307.01952.
  • editing_prompt (str ou list[str], opcional) — O prompt ou os prompts para orientar a geração da imagem. A imagem é reconstruída definindo editing_prompt = None. A direção de orientação do prompt deve ser especificada via reverse_editing_direction.
  • editing_prompt_embeddings (torch.Tensor, opcional) — Embeddings de texto de edição pré-gerados. Podem ser usados para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompts. Se não fornecidos, editing_prompt_embeddings será gerado a partir do argumento de entrada editing_prompt.
  • editing_pooled_prompt_embeds (torch.Tensor, opcional) — Embeddings de texto de edição pré-gerados. Pode ser usado para ajustar facilmente as entradas de texto, por exemplo, ponderação do prompt. Se não for fornecido, editing_prompt_embeddings será gerado a partir do argumento de entrada editing_prompt.
  • reverse_editing_direction (bool ou list[bool], opcional, padrão False) — Se o prompt correspondente em editing_prompt deve ser aumentado ou diminuído.
  • edit_guidance_scale (float ou list[float], opcional, padrão 5) — Escala de orientação para guiar a geração da imagem. Se fornecida como lista, os valores devem corresponder a editing_prompt. edit_guidance_scale é definido como s_e da equação 12 do LEDITS++ Paper.
  • edit_warmup_steps (float ou list[float], opcional, padrão 10) — Número de etapas de difusão (para cada prompt) para as quais a orientação não é aplicada.
  • edit_cooldown_steps (float ou list[float], opcional, padrão None) — Número de etapas de difusão (para cada prompt) após as quais a orientação deixa de ser aplicada.
  • edit_threshold (float ou list[float], opcional, padrão 0.9) — Limiar de mascaramento da orientação. O limiar deve ser proporcional à região da imagem que é modificada. ‘edit_threshold’ é definido como ‘λ’ da equação 12 do LEDITS++ Paper.
  • sem_guidance (list[torch.Tensor], opcional) — lista de vetores de orientação pré-gerados a serem aplicados na geração. O comprimento da lista deve corresponder a num_inference_steps.
  • use_cross_attn_mask — Se máscaras de atenção cruzada são usadas. Máscaras de atenção cruzada são sempre usadas quando use_intersect_mask é definido como true. Máscaras de atenção cruzada são definidas como ‘M^1’ da equação 12 do artigo LEDITS++.
  • use_intersect_mask — Se o termo de mascaramento é calculado como a interseção das máscaras de atenção cruzada e das máscaras derivadas da estimativa de ruído. As máscaras de atenção cruzada são definidas como ‘M^1’ e as máscaras derivadas da estimativa de ruído são definidas como ‘M^2’ da equação 12 do artigo LEDITS++.
  • user_mask — Máscara fornecida pelo usuário para um controle ainda melhor sobre o processo de edição. Isso é útil quando as máscaras implícitas do LEDITS++ não atendem às preferências do usuário.
  • attn_store_steps — Passos para os quais os mapas de atenção são armazenados no AttentionStore. Apenas para fins de visualização.
  • store_averaged_over_steps — Se os mapas de atenção para os ‘attn_store_steps’ são armazenados com média calculada ao longo dos passos de difusão. Se False, os mapas de atenção para cada passo são armazenados separadamente. Apenas para fins de visualização.
  • clip_skip (int, opcional) — Número de camadas a serem ignoradas do CLIP ao calcular os embeddings do prompt. Um valor de 1 significa que a saída da camada pré-final será usada para calcular os embeddings do prompt.
  • callback_on_step_end (Callable, opcional) — Uma função que é chamada no final de cada etapa de desruidamento durante a inferência. A função é chamada com os seguintes argumentos: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs incluirá uma lista de todos os tensores, conforme especificado por callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, opcional) — A lista de entradas de tensor para a função callback_on_step_end. Os tensores especificados na lista serão passados como argumento callback_kwargs. Você só poderá incluir variáveis listadas no atributo ._callback_tensor_inputs da sua classe de pipeline.

LEditsPPDiffusionPipelineOutput se return_dict for True, caso contrário, uma `tuple. Ao retornar uma tupla, o primeiro elemento é uma lista com as imagens geradas.

A função de chamada do pipeline para edição. O método invert() deve ser chamado antes. As edições sempre serão realizadas para a(s) última(s) imagem(ns) invertida(s).

Exemplos:

>>> 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 a(s) imagem(ns) que serão editadas. Múltiplas imagens de entrada devem ter, por padrão, a mesma proporção de aspecto.
  • source_prompt (str, padrão "") — Prompt descrevendo a imagem de entrada que será usado para orientação durante a inversão. A orientação é desativada se o source_prompt for "".
  • source_guidance_scale (float, padrão 3.5) — Força do guia durante a inversão.
  • negative_prompt (str ou list[str], opcional) — O prompt ou os prompts que não devem orientar a geração da imagem. Se não for definido, é necessário passar negative_prompt_embeds em vez disso. Ignorado quando não se usa orientação (ou seja, ignorado se guidance_scale for menor que 1).
  • negative_prompt_2 (str ou list[str], opcional) — O prompt ou os prompts que não devem orientar a geração da imagem a serem enviados para tokenizer_2 e text_encoder_2. Se não definido, negative_prompt é usado em ambos os text-encoders
  • num_inversion_steps (int, padrão 50) — Número total de etapas de inversão executadas após descartar as skip etapas iniciais.
  • skip (float, padrão 0.15) — Fração dos passos iniciais que será ignorada para a inversão e a geração subsequente. Valores menores resultarão em mudanças mais fortes na imagem de entrada. skip deve estar entre 0 e 1.
  • generator (torch.Generator, opcional) — Um torch.Generator para tornar a inversão determinística.
  • crops_coords_top_left (tuple[int], opcional, padrão (0, 0)) — crops_coords_top_left pode ser usado para gerar uma imagem que pareça “recortada” a partir da posição crops_coords_top_left para baixo. Imagens favoráveis e bem centralizadas são geralmente obtidas ao definir crops_coords_top_left como (0, 0). Parte do micro-condicionamento do SDXL, conforme explicado na seção 2.2 de https://huggingface.co/papers/2307.01952.
  • num_zero_noise_steps (int, padrão 3) — Número de etapas finais de difusão que não rebarulharão a imagem atual. Se nenhuma etapa for definida como zero, o SD-XL em combinação com DPMSolverMultistepScheduler produzirá artefatos de ruído.
  • cross_attention_kwargs (dict, opcional) — Um dicionário de kwargs que, se especificado, é passado para o AttentionProcessor conforme definido em self.processor em diffusers.models.attention_processor.

A saída conterá a(s) imagem(ns) de entrada redimensionada(s) e a(s) reconstrução(ões) correspondente(s) do VAE.

A função para o pipeline de inversão de imagem conforme descrito no LEDITS++ Paper. Se o scheduler estiver definido como DDIMScheduler, a inversão proposta por edit-friendly DPDM será realizada em vez disso.

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 torch
  • num_images_per_prompt (int) — número de imagens que devem ser geradas por prompt
  • negative_prompt (str ou list[str], opcional) — O prompt ou os prompts que não devem orientar a geração da imagem. Se não for definido, é necessário passar negative_prompt_embeds em vez disso.
  • negative_prompt_2 (str ou list[str], opcional) — O prompt ou os prompts que não devem orientar a geração da imagem a serem enviados para tokenizer_2 e text_encoder_2. Se não definido, negative_prompt é usado em ambos os text-encoders
  • negative_prompt_embeds (torch.Tensor, opcional) — Incorporações de texto negativas pré-geradas. Pode ser usado para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompts. Se não for fornecido, negative_prompt_embeds será gerado a partir do argumento de entrada negative_prompt.
  • negative_pooled_prompt_embeds (torch.Tensor, opcional) — Embeddings de texto negativo pré-gerados. Pode ser usado para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompt. Se não for fornecido, os pooled negative_prompt_embeds serão gerados a partir do argumento de entrada negative_prompt.
  • lora_scale (float, opcional) — Uma escala LoRA que será aplicada a todas as camadas LoRA do codificador de texto, caso as camadas LoRA sejam carregadas.
  • clip_skip (int, opcional) — Número de camadas a serem ignoradas do CLIP ao calcular os embeddings do prompt. Um valor de 1 significa que a saída da camada pré-final será usada para calcular os embeddings do prompt.
  • enable_edit_guidance (bool) — Se deve ou não orientar em direção a um prompt de edição.
  • editing_prompt (str ou list[str], opcional) — Prompt(s) de edição a serem codificados. Se não definido e ‘enable_edit_guidance’ for True, é necessário passar editing_prompt_embeds em vez disso.
  • editing_prompt_embeds (torch.Tensor, opcional) — Embeddings de texto de edição pré-gerados. Podem ser usados para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompt. Se não fornecidos e ‘enable_edit_guidance’ for True, editing_prompt_embeds será gerado a partir do argumento de entrada editing_prompt.
  • editing_pooled_prompt_embeds (torch.Tensor, opcional) — Embeddings de texto agrupados pré-gerados para edição. Pode ser usado para ajustar facilmente as entradas de texto, por exemplo, ponderação do prompt. Se não for fornecido, os editing_pooled_prompt_embeds agrupados serão gerados a partir do argumento de entrada editing_prompt.

Codifica o prompt em estados ocultos do codificador de texto.

get_guidance_scale_embedding

< >

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

Parâmetros

  • w (torch.Tensor) — Gera vetores de incorporação com uma escala de orientação especificada para, em seguida, enriquecer as incorporações de passo de tempo.
  • embedding_dim (int, opcional, padrão 512) — Dimensão dos embeddings a serem gerados.
  • dtype (torch.dtype, opcional, padrão torch.float32) — Tipo de dados dos embeddings gerados.

Retorna

torch.Tensor

Vetores de incorporação com forma (len(w), embedding_dim).

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

LEditsPPDiffusionPipelineOutput

classe diffusers.pipelines.LEditsPPDiffusionPipelineOutput

< >

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

Parâmetros

  • images (list[PIL.Image.Image] ou np.ndarray) — lista de imagens PIL desruidas de comprimento batch_size ou array NumPy de forma (batch_size, height, width, num_channels).
  • nsfw_content_detected (list[bool]) — lista indicando se a imagem gerada correspondente contém conteúdo “não seguro para o trabalho” (nsfw) ou None se a verificação de segurança não pôde ser realizada.

Classe de saída para pipelines de Difusão LEdits++.

LEditsPPInversionPipelineOutput

classe 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] ou np.ndarray) — lista das imagens de entrada recortadas e redimensionadas como imagens PIL de comprimento batch_size ou array NumPy de forma (batch_size, height, width, num_channels).
  • vae_reconstruction_images (list[PIL.Image.Image] ou np.ndarray) — lista de reconstruções de VAE de todas as imagens de entrada como imagens PIL de comprimento batch_size ou array NumPy de forma (batch_size, height, width, num_channels).

Classe de saída para pipelines de Difusão LEdits++.

Update on GitHub