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++ a été proposé dans LEDITS++: Limitless Image Editing using Text-to-Image Models par Manuel Brack, Felix Friedrich, Katharina Kornmeier, Linoy Tsaban, Patrick Schramowski, Kristian Kersting, Apolinário Passos.

L'abstract de l'article est :

Les modèles de diffusion texte-vers-image suscitent un intérêt croissant en raison de leur capacité remarquable à générer des images haute fidélité à partir d’entrées textuelles uniquement. Les travaux de recherche ultérieurs visent à exploiter et à appliquer leurs capacités à l’édition d’images réelles. Cependant, les méthodes existantes d’image-vers-image sont souvent inefficaces, imprécises et d’une polyvalence limitée. Elles nécessitent soit un ajustement fin chronophage, s’écartent inutilement et fortement de l’image d’entrée, et/ou ne prennent pas en charge plusieurs modifications simultanées. Pour remédier à ces problèmes, nous introduisons LEDITS++, une technique de manipulation d’images par texte, efficace, polyvalente et précise. L’approche d’inversion novatrice de LEDITS++ ne requiert ni ajustement ni optimisation et produit des résultats haute fidélité en quelques étapes de diffusion. Deuxièmement, notre méthodologie prend en charge plusieurs modifications simultanées et est indépendante de l’architecture. Troisièmement, nous utilisons une technique de masquage implicite novatrice qui limite les modifications aux régions pertinentes de l’image. Nous proposons le nouveau benchmark TEdBench++ dans le cadre de notre évaluation exhaustive. Nos résultats démontrent les capacités de LEDITS++ et ses améliorations par rapport aux méthodes précédentes. La page du projet est disponible à l’adresse https://leditsplusplus-project.static.hf.space .

Vous trouverez des informations supplémentaires sur LEDITS++ sur la page du projet et pouvez l'essayer dans une démo.

En raison de certains problèmes de compatibilité ascendante avec l’implémentation actuelle de DPMSolverMultistepScheduler dans diffusers, cette implémentation de LEdits++ ne peut plus garantir une inversion parfaite. Ce problème est peu susceptible d’avoir des effets notables sur les cas d’usage concrets. Toutefois, nous proposons une implémentation alternative garantissant une inversion parfaite dans un dépôt GitHub dédié.

Nous proposons deux pipelines distincts basés sur différents modèles pré-entraînés.

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 )

Paramètres

  • vae (AutoencoderKL) — Modèle de Variational Auto-Encoder (VAE) pour encoder et décoder des images vers et depuis des représentations latentes.
  • text_encoder (CLIPTextModel) — Encodeur de texte figé. Stable Diffusion utilise la partie texte de CLIP, plus précisément la variante clip-vit-large-patch14.
  • tokenizer (CLIPTokenizer) — Tokenizer de la classe CLIPTokenizer.
  • unet (UNet2DConditionModel) — Architecture U-Net conditionnelle pour le débruitage des latents d'image encodés.
  • scheduler (DPMSolverMultistepScheduler ou DDIMScheduler) — Un planificateur à utiliser en combinaison avec unet pour débruyer les latents de l'image encodée. Peut être DPMSolverMultistepScheduler ou DDIMScheduler. Si un autre planificateur est transmis, il sera automatiquement défini sur DPMSolverMultistepScheduler.
  • safety_checker (StableDiffusionSafetyChecker) — Module de classification qui estime si les images générées pourraient être considérées comme offensives ou nuisibles. Veuillez consulter la fiche modèle pour plus de détails.
  • feature_extractor (CLIPImageProcessor) — Modèle qui extrait les caractéristiques des images générées afin de les utiliser en entrées pour le safety_checker.

Pipeline pour l'édition d'images textuelles utilisant LEDits++ avec Stable Diffusion.

Ce modèle hérite de DiffusionPipeline et s’appuie sur StableDiffusionPipeline. Consultez la documentation de la classe parente pour les méthodes génériques implémentées pour tous les pipelines (téléchargement, sauvegarde, exécution sur un appareil particulier, 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 = ['latents']**kwargs ) → LEditsPPDiffusionPipelineOutput or tuple

Paramètres

  • negative_prompt (str ou list[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. Ignoré lorsque la guidance n’est pas utilisée (c’est-à-dire ignoré si guidance_scale est inférieur à 1).
  • generator (torch.Generator, facultatif) — Un ou une liste de générateurs torch pour rendre la génération déterministe.
  • output_type (str, facultatif, par défaut "pil") — Le format de sortie de l'image générée. Choisissez entre PIL : PIL.Image.Image ou np.array.
  • return_dict (bool, facultatif, par défaut True) — Indique s'il faut retourner un LEditsPPDiffusionPipelineOutput plutôt qu'un simple tuplet.
  • editing_prompt (str ou list[str], facultatif) — Le ou les prompts pour guider la génération de l’image. L’image est reconstruite en définissant editing_prompt = None. La direction du guidage du prompt doit être spécifiée via reverse_editing_direction.
  • editing_prompt_embeds (torch.Tensor>, facultatif) — Embeddings précalculés à utiliser pour guider la génération d’image. La direction de guidage de l’embedding doit être spécifiée via reverse_editing_direction.
  • negative_prompt_embeds (torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte (pondération des prompts). S'ils ne sont pas fournis, les negative_prompt_embeds sont générés à partir de l'argument d'entrée negative_prompt.
  • reverse_editing_direction (bool ou list[bool], facultatif, par défaut False) — Indique si le prompt correspondant dans editing_prompt doit être augmenté ou diminué.
  • edit_guidance_scale (float ou list[float], facultatif, par défaut 5) — Échelle de guidage pour orienter la génération d’image. Si fournie sous forme de liste, les valeurs doivent correspondre à editing_prompt. edit_guidance_scale est défini comme s_e de l’équation 12 de l’article LEDITS++.
  • edit_warmup_steps (float ou list[float], facultatif, valeur par défaut 10) — Nombre d'étapes de diffusion (pour chaque invite) pour lesquelles le guidage ne sera pas appliqué.
  • edit_cooldown_steps (float ou list[float], facultatif, par défaut None) — Nombre d'étapes de diffusion (pour chaque invite) après lesquelles le guidage ne sera plus appliqué.
  • edit_threshold (float ou list[float], facultatif, valeur par défaut 0.9) — Seuil de masquage du guidage. Le seuil doit être proportionnel à la région de l’image qui est modifiée. ‘edit_threshold’ est défini comme ‘λ’ de l’équation 12 de l’article LEDITS++.
  • user_mask (torch.Tensor, facultatif) — Masque fourni par l'utilisateur pour un contrôle encore plus fin du processus d'édition. Cela est utile lorsque les masques implicites de LEDITS++ ne répondent pas aux préférences de l'utilisateur.
  • sem_guidance (list[torch.Tensor], facultatif) — liste de vecteurs de guidage pré-générés à appliquer lors de la génération. La longueur de la liste doit correspondre à num_inference_steps.
  • use_cross_attn_mask (bool, par défaut False) — Indique si des masques d'attention croisée sont utilisés. Les masques d'attention croisée sont toujours utilisés lorsque use_intersect_mask est défini sur true. Les masques d'attention croisée sont définis comme ‘M^1’ de l'équation 12 de l'article LEDITS++.
  • use_intersect_mask (bool, par défaut True) — Indique si le terme de masquage est calculé comme l’intersection des masques de cross-attention et des masques dérivés de l’estimation du bruit. Les masques de cross-attention sont définis comme ‘M^1’ et les masques dérivés de l’estimation du bruit comme ‘M^2’ de l’équation 12 de l’article LEDITS++.
  • attn_store_steps (list[int], facultatif) — Étapes pour lesquelles les cartes d'attention sont stockées dans l'AttentionStore. Uniquement à des fins de visualisation.
  • store_averaged_over_steps (bool, par défaut True) — Indique si les cartes d'attention pour les ‘attn_store_steps’ sont stockées en moyenne sur les étapes de diffusion. Si False, les cartes d'attention de chaque étape sont stockées séparément. Uniquement à des fins de visualisation.
  • cross_attention_kwargs (dict, facultatif) — Un dictionnaire de kwargs qui, s'il est spécifié, est transmis au AttentionProcessor tel que défini dans self.processor.
  • guidance_rescale (float, facultatif, valeur par défaut 0.0) — Facteur de rescaling du guidance issu de Common Diffusion Noise Schedules and Sample Steps are Flawed. Le facteur de rescaling du guidance doit corriger l'exposition excessive lors de l'utilisation d'un SNR terminal nul.
  • clip_skip (int, facultatif) — Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de l'invite. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de l'invite.
  • callback_on_step_end (Callable, facultatif) — Une fonction appelée à la fin de chaque étape de débruitage pendant l'inférence. La fonction est appelée avec les arguments suivants : callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs contiendra une liste de tous les tenseurs spécifiés par callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, facultatif) — La liste des entrées tensorielles pour la fonction callback_on_step_end. Les tenseurs spécifiés dans la liste seront passés en tant qu'argument callback_kwargs. Vous ne pourrez inclure que les variables listées dans l'attribut ._callback_tensor_inputs de votre 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`.

La fonction d'appel du pipeline pour l'édition. La méthode invert() doit être appelée au préalable. Les modifications seront toujours effectuées sur la ou les dernières images inversées.

Exemples :

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

Paramètres

  • image (PipelineImageInput) — Input for the image(s) that are to be edited. Multiple input images have to default to the same aspect ratio.
  • source_prompt (str, par défaut "") — Prompt décrivant l’image d’entrée, utilisé pour le guidage pendant l’inversion. Le guidage est désactivé si source_prompt vaut "".
  • source_guidance_scale (float, par défaut 3.5) — Force du guidage pendant l'inversion.
  • num_inversion_steps (int, par défaut 30) — Nombre total d'étapes d'inversion effectuées après avoir écarté les skip étapes initiales.
  • skip (float, par défaut 0.15) — Fraction des étapes initiales qui sera ignorée pour l'inversion et la génération ultérieure. Des valeurs plus faibles entraîneront des modifications plus marquées de l'image d'entrée. skip doit être compris entre 0 et 1.
  • generator (torch.Generator, facultatif) — Un torch.Generator pour rendre l'inversion déterministe.
  • cross_attention_kwargs (dict, facultatif) — Un dictionnaire de kwargs qui, s'il est spécifié, est transmis au AttentionProcessor tel que défini dans self.processor.
  • clip_skip (int, facultatif) — Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de l'invite. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de l'invite.
  • height (int, facultatif, par défaut None) — La hauteur de l'image prétraitée. Si None, la fonction get_default_height_width() est utilisée pour obtenir la hauteur par défaut.
  • 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, facultatif, par défaut default) — Le mode de redimensionnement, peut être default ou fill. Si default, l’image est redimensionnée pour s’adapter à la largeur et à la hauteur spécifiées, sans nécessairement conserver le ratio d’aspect d’origine. Si fill, l’image est redimensionnée pour s’adapter à la largeur et à la hauteur spécifiées en conservant le ratio d’aspect, puis centrée dans les dimensions, les espaces vides étant remplis avec des données issues de l’image. Si crop, l’image est redimensionnée pour s’adapter à la largeur et à la hauteur spécifiées en conservant le ratio d’aspect, puis centrée dans les dimensions, l’excédent étant rogné. Notez que resize_mode fill et crop ne sont pris en charge que pour une entrée d’image PIL.
  • crops_coords (list[tuple[int, int, int, int]], facultatif, par défaut None) — Les coordonnées de recadrage pour chaque image du lot. Si None, l'image ne sera pas recadrée.

La sortie contiendra l'image d'entrée redimensionnée et la reconstruction VAE correspondante.

La fonction de pipeline pour l'inversion d'image telle que décrite dans l'article LEDITS++. Si le planificateur est défini sur DDIMScheduler, l'inversion proposée par edit-friendly DPDM sera effectuée à la place.

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 )

Paramètres

  • device — (torch.device) : torch device
  • num_images_per_prompt (int) — nombre d'images à générer par invite
  • enable_edit_guidance (bool) — indique s'il faut effectuer des modifications ou reconstruire l'image d'entrée à la place
  • negative_prompt (str ou list[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passer negative_prompt_embeds à la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré si guidance_scale est inférieur à 1).
  • editing_prompt (str ou list[str], facultatif) — Prompt(s) d'édition à encoder. S'il n'est pas défini, il faut passer editing_prompt_embeds à la place.
  • editing_prompt_embeds (torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entrée prompt.
  • negative_prompt_embeds (torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entrée negative_prompt.
  • lora_scale (float, facultatif) — Un facteur d’échelle LoRA qui sera appliqué à toutes les couches LoRA de l’encodeur de texte si des couches LoRA sont chargées.
  • clip_skip (int, facultatif) — Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de l'invite. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de l'invite.

Encode le prompt dans les états cachés de l'encodeur de texte.

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 )

Paramètres

  • vae (AutoencoderKL) — Modèle de Variational Auto-Encoder (VAE) pour encoder et décoder des images vers et depuis des représentations latentes.
  • text_encoder (CLIPTextModel) — Encodeur de texte figé. Stable Diffusion XL utilise la partie texte de CLIP, plus précisément la variante clip-vit-large-patch14.
  • text_encoder_2 (CLIPTextModelWithProjection) — Deuxième encodeur de texte figé. Stable Diffusion XL utilise la partie texte et pool de CLIP, plus précisément la variante laion/CLIP-ViT-bigG-14-laion2B-39B-b160k.
  • tokenizer (CLIPTokenizer) — Tokenizer de la classe CLIPTokenizer.
  • tokenizer_2 (CLIPTokenizer) — Deuxième Tokenizer de la classe CLIPTokenizer.
  • unet (UNet2DConditionModel) — Architecture U-Net conditionnelle pour le débruitage des latents d'image encodés.
  • scheduler (DPMSolverMultistepScheduler ou DDIMScheduler) — Un planificateur à utiliser en combinaison avec unet pour débruyer les latents de l'image encodée. Peut être DPMSolverMultistepScheduler ou DDIMScheduler. Si un autre planificateur est transmis, il sera automatiquement défini sur DPMSolverMultistepScheduler.
  • force_zeros_for_empty_prompt (bool, facultatif, valeur par défaut "True") — Indique si les embeddings du prompt négatif doivent être forcés à 0. Voir également la configuration de stabilityai/stable-diffusion-xl-base-1-0.
  • add_watermarker (bool, facultatif) — Indique s'il faut utiliser la bibliothèque invisible_watermark pour appliquer un filigrane aux images de sortie. Si non défini, la valeur par défaut est True si le package est installé, sinon aucun filigrane n'est utilisé.

Pipeline pour l'édition d'images textuelles utilisant LEDits++ avec Stable Diffusion XL.

Ce modèle hérite de DiffusionPipeline et s'appuie sur StableDiffusionXLPipeline. Consultez la documentation de la classe parente pour les méthodes génériques implémentées pour tous les pipelines (téléchargement, sauvegarde, exécution sur un appareil particulier, etc.).

De plus, le pipeline hérite des méthodes de chargement suivantes :

ainsi que les méthodes de sauvegarde suivantes :

  • 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 = (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 = ['latents']**kwargs ) → LEditsPPDiffusionPipelineOutput or tuple

Paramètres

  • denoising_end (float, facultatif) — Lorsqu’il est spécifié, détermine la fraction (entre 0.0 et 1.0) du processus total de débruitage qui doit être achevée avant qu’il ne soit volontairement interrompu prématurément. En conséquence, l’échantillon renvoyé conservera encore une quantité substantielle de bruit, telle que déterminée par les pas de temps discrets sélectionnés par le planificateur. Le paramètre denoising_end devrait idéalement être utilisé lorsque ce pipeline fait partie d’une configuration multi-pipelines « Mixture of Denoisers », comme expliqué dans [**Refining the Image
  • negative_prompt (str ou list[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passer negative_prompt_embeds à la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré si guidance_scale est inférieur à 1).
  • negative_prompt_2 (str ou list[str], facultatif) — Le prompt ou les prompts à ne pas utiliser pour guider la génération d’image, à envoyer à tokenizer_2 et text_encoder_2. S’il n’est pas défini, negative_prompt est utilisé dans les deux text-encoders
  • negative_prompt_embeds (torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entrée negative_prompt.
  • negative_pooled_prompt_embeds (torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les pooled negative_prompt_embeds seront générés à partir de l'argument d'entrée negative_prompt.
  • ip_adapter_image — (PipelineImageInput, facultatif) : Entrée d’image facultative pour travailler avec les IP Adapters.
  • output_type (str, facultatif, par défaut "pil") — Le format de sortie de l'image générée. Choisissez entre PIL : PIL.Image.Image ou np.array.
  • return_dict (bool, facultatif, par défaut True) — Indique s'il faut retourner un ~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput plutôt qu'un simple tuple.
  • cross_attention_kwargs (dict, facultatif) — Un dictionnaire de kwargs qui, s'il est spécifié, est transmis à l'AttentionProcessor défini sous self.processor dans diffusers.models.attention_processor.
  • guidance_rescale (float, facultatif, valeur par défaut 0.7) — Facteur de rescaling du guidance proposé par Common Diffusion Noise Schedules and Sample Steps are Flawed guidance_scale est défini comme φ dans l’équation 16. de Common Diffusion Noise Schedules and Sample Steps are Flawed. Le facteur de rescaling du guidance doit corriger l’exposition excessive lors de l’utilisation d’un SNR terminal nul.
  • crops_coords_top_left (tuple[int], facultatif, par défaut (0, 0)) — crops_coords_top_left peut être utilisé pour générer une image qui semble « recadrée » à partir de la position crops_coords_top_left vers le bas. Des images bien cadrées et centrées sont généralement obtenues en définissant crops_coords_top_left sur (0, 0). Fait partie du micro-conditionnement de SDXL, tel que décrit dans la section 2.2 de https://huggingface.co/papers/2307.01952.
  • target_size (tuple[int], facultatif, par défaut (1024, 1024)) — Dans la plupart des cas, target_size doit être défini sur la hauteur et la largeur souhaitées de l’image générée. S’il n’est pas spécifié, il prendra par défaut la valeur (width, height). Fait partie du micro-conditionnement de SDXL, tel que décrit dans la section 2.2 de https://huggingface.co/papers/2307.01952.
  • editing_prompt (str ou list[str], facultatif) — Le ou les prompts pour guider la génération de l’image. L’image est reconstruite en définissant editing_prompt = None. La direction du guidage du prompt doit être spécifiée via reverse_editing_direction.
  • editing_prompt_embeddings (torch.Tensor, facultatif) — Embeddings de texte d’édition pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. Si non fourni, editing_prompt_embeddings sera généré à partir de l’argument d’entrée editing_prompt.
  • editing_pooled_prompt_embeds (torch.Tensor, facultatif) — Embeddings de texte d'édition pré-générés. Peut être utilisé pour ajuster facilement les entrées textuelles, par ex. le pondération des prompts. S'il n'est pas fourni, editing_prompt_embeddings sera généré à partir de l'argument d'entrée editing_prompt.
  • reverse_editing_direction (bool ou list[bool], facultatif, par défaut False) — Indique si le prompt correspondant dans editing_prompt doit être augmenté ou diminué.
  • edit_guidance_scale (float ou list[float], facultatif, par défaut 5) — Échelle de guidage pour orienter la génération d’image. Si fournie sous forme de liste, les valeurs doivent correspondre à editing_prompt. edit_guidance_scale est défini comme s_e de l’équation 12 de l’article LEDITS++.
  • edit_warmup_steps (float ou list[float], facultatif, valeur par défaut 10) — Nombre d'étapes de diffusion (pour chaque invite) pour lesquelles le guidage n'est pas appliqué.
  • edit_cooldown_steps (float ou list[float], facultatif, par défaut None) — Nombre d'étapes de diffusion (pour chaque invite) après lesquelles le guidage n'est plus appliqué.
  • edit_threshold (float ou list[float], facultatif, valeur par défaut 0.9) — Seuil de masquage du guidage. Le seuil doit être proportionnel à la région de l’image qui est modifiée. ‘edit_threshold’ est défini comme ‘λ’ de l’équation 12 de l’article LEDITS++.
  • sem_guidance (list[torch.Tensor], facultatif) — liste de vecteurs de guidage pré-générés à appliquer lors de la génération. La longueur de la liste doit correspondre à num_inference_steps.
  • use_cross_attn_mask — Indique si des masques de cross-attention sont utilisés. Les masques de cross-attention sont toujours utilisés lorsque use_intersect_mask est défini sur true. Les masques de cross-attention sont définis comme ‘M^1’ de l’équation 12 de l’article LEDITS++.
  • use_intersect_mask — Indique si le terme de masquage est calculé comme l'intersection des masques de cross-attention et des masques dérivés de l'estimation du bruit. Les masques de cross-attention sont définis comme ‘M^1’ et les masques dérivés de l'estimation du bruit comme ‘M^2’ de l'équation 12 de l'article LEDITS++.
  • user_mask — Masque fourni par l'utilisateur pour un contrôle encore plus fin du processus d'édition. Cela est utile lorsque les masques implicites de LEDITS++ ne répondent pas aux préférences de l'utilisateur.
  • attn_store_steps — Étapes pour lesquelles les cartes d'attention sont stockées dans l'AttentionStore. Uniquement à des fins de visualisation.
  • store_averaged_over_steps — Indique si les cartes d'attention pour les ‘attn_store_steps’ sont stockées en moyenne sur les étapes de diffusion. Si False, les cartes d'attention pour chaque étape sont stockées séparément. Uniquement à des fins de visualisation.
  • clip_skip (int, facultatif) — Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de l'invite. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de l'invite.
  • callback_on_step_end (Callable, facultatif) — Une fonction appelée à la fin de chaque étape de débruitage pendant l'inférence. La fonction est appelée avec les arguments suivants : callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs contiendra une liste de tous les tenseurs spécifiés par callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, facultatif) — La liste des entrées tensorielles pour la fonction callback_on_step_end. Les tenseurs spécifiés dans la liste seront passés en tant qu'argument callback_kwargs. Vous ne pourrez inclure que les variables listées dans l'attribut ._callback_tensor_inputs de votre classe de pipeline.

LEditsPPDiffusionPipelineOutput si return_dict est True, sinon un `tuple. Lors du retour d'un tuple, le premier élément est une liste contenant les images générées.

La fonction d'appel du pipeline pour l'édition. La méthode invert() doit être appelée au préalable. Les modifications seront toujours effectuées sur la ou les dernières images inversées.

Exemples :

>>> 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 = (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

Paramètres

  • image (PipelineImageInput) — Input for the image(s) that are to be edited. Multiple input images have to default to the same aspect ratio.
  • source_prompt (str, par défaut "") — Prompt décrivant l’image d’entrée, utilisé pour le guidage pendant l’inversion. Le guidage est désactivé si source_prompt vaut "".
  • source_guidance_scale (float, par défaut 3.5) — Force du guidage pendant l'inversion.
  • negative_prompt (str ou list[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passer negative_prompt_embeds à la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré si guidance_scale est inférieur à 1).
  • negative_prompt_2 (str ou list[str], facultatif) — Le prompt ou les prompts à ne pas utiliser pour guider la génération d’image, à envoyer à tokenizer_2 et text_encoder_2. S’il n’est pas défini, negative_prompt est utilisé dans les deux text-encoders
  • num_inversion_steps (int, par défaut 50) — Nombre total d'étapes d'inversion effectuées après avoir écarté les skip étapes initiales.
  • skip (float, par défaut 0.15) — Fraction des étapes initiales qui sera ignorée pour l'inversion et la génération ultérieure. Des valeurs plus faibles entraîneront des modifications plus marquées de l'image d'entrée. skip doit être compris entre 0 et 1.
  • generator (torch.Generator, facultatif) — Un torch.Generator pour rendre l'inversion déterministe.
  • crops_coords_top_left (tuple[int], facultatif, par défaut (0, 0)) — crops_coords_top_left peut être utilisé pour générer une image qui semble « recadrée » à partir de la position crops_coords_top_left vers le bas. Des images bien cadrées et centrées sont généralement obtenues en définissant crops_coords_top_left sur (0, 0). Fait partie du micro-conditionnement de SDXL, tel que décrit dans la section 2.2 de https://huggingface.co/papers/2307.01952.
  • num_zero_noise_steps (int, par défaut 3) — Nombre d’étapes de diffusion finales qui ne réintroduiront pas de bruit sur l’image actuelle. Si aucune étape n’est définie à zéro, SD-XL combiné à DPMSolverMultistepScheduler produira des artefacts de bruit.
  • cross_attention_kwargs (dict, facultatif) — Un dictionnaire de kwargs qui, s'il est spécifié, est transmis à l'AttentionProcessor défini sous self.processor dans diffusers.models.attention_processor.

La sortie contiendra l'image d'entrée redimensionnée et la reconstruction VAE correspondante.

La fonction de pipeline pour l'inversion d'image telle que décrite dans l'article LEDITS++. Si le planificateur est défini sur DDIMScheduler, l'inversion proposée par edit-friendly DPDM sera effectuée à la place.

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 )

Paramètres

  • device — (torch.device) : torch device
  • num_images_per_prompt (int) — nombre d'images à générer par invite
  • negative_prompt (str ou list[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passer negative_prompt_embeds à la place.
  • negative_prompt_2 (str ou list[str], facultatif) — Le prompt ou les prompts à ne pas utiliser pour guider la génération d’image, à envoyer à tokenizer_2 et text_encoder_2. S’il n’est pas défini, negative_prompt est utilisé dans les deux text-encoders
  • negative_prompt_embeds (torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entrée negative_prompt.
  • negative_pooled_prompt_embeds (torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les pooled negative_prompt_embeds seront générés à partir de l'argument d'entrée negative_prompt.
  • lora_scale (float, facultatif) — Un facteur d’échelle LoRA qui sera appliqué à toutes les couches LoRA de l’encodeur de texte si des couches LoRA sont chargées.
  • clip_skip (int, facultatif) — Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de l'invite. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de l'invite.
  • enable_edit_guidance (bool) — Indique s'il faut guider vers un prompt d'édition ou non.
  • editing_prompt (str ou list[str], facultatif) — Prompt(s) d’édition à encoder. S’il n’est pas défini et que ‘enable_edit_guidance’ est True, il faut passer editing_prompt_embeds à la place.
  • editing_prompt_embeds (torch.Tensor, facultatif) — Embeddings de texte d’édition pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération du prompt. S’il n’est pas fourni et que ‘enable_edit_guidance’ est True, editing_prompt_embeds sera généré à partir de l’argument d’entrée editing_prompt.
  • editing_pooled_prompt_embeds (torch.Tensor, facultatif) — Embeddings de texte poolés pré-générés pour l'édition. Peut être utilisé pour ajuster facilement les entrées texte, par ex. le pondération des prompts. S'il n'est pas fourni, les editing_pooled_prompt_embeds poolés seront générés à partir de l'argument d'entrée editing_prompt.

Encode le prompt dans les états cachés de l'encodeur de texte.

get_guidance_scale_embedding

< >

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

Paramètres

  • w (torch.Tensor) — Génère des vecteurs d’incorporation avec une échelle de guidage spécifiée afin d’enrichir ensuite les incorporations de pas de temps.
  • embedding_dim (int, facultatif, par défaut 512) — Dimension des embeddings à générer.
  • dtype (torch.dtype, facultatif, par défaut torch.float32) — Type de données des embeddings générés.

Retourne

torch.Tensor

Vecteurs d'embedding de forme (len(w), embedding_dim).

Voir 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 )

Paramètres

  • images (list[PIL.Image.Image] ou np.ndarray) — liste d'images PIL débruitées de longueur batch_size ou tableau NumPy de forme (batch_size, height, width, num_channels).
  • nsfw_content_detected (list[bool]) — liste indiquant si l'image générée correspondante contient du contenu « not-safe-for-work » (nsfw) ou None si la vérification de sécurité n'a pas pu être effectuée.

Classe de sortie pour les pipelines de diffusion LEdits++.

LEditsPPInversionPipelineOutput

classe diffusers.pipelines.LEditsPPInversionPipelineOutput

< >

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

Paramètres

  • input_images (list[PIL.Image.Image] ou np.ndarray) — liste des images d'entrée recadrées et redimensionnées, sous forme d'images PIL de longueur batch_size ou de tableau NumPy de forme (batch_size, height, width, num_channels).
  • vae_reconstruction_images (list[PIL.Image.Image] ou np.ndarray) — liste des reconstructions VAE de toutes les images d'entrée, sous forme d'images PIL de longueur batch_size ou de tableau NumPy de forme (batch_size, height, width, num_channels).

Classe de sortie pour les pipelines de diffusion LEdits++.

Update on GitHub