Diffusers documentation
ControlNetUnion
ControlNetUnion
ControlNetUnionModel est une implémentation de ControlNet pour Stable Diffusion XL.
Le modèle ControlNet a été introduit dans ControlNetPlus par xinsir6. Il prend en charge plusieurs entrées de conditionnement sans augmenter les calculs.
Nous concevons une nouvelle architecture capable de prendre en charge plus de 10 types de contrôle dans la génération d'images texte-vers-image conditionnelle et de produire des images haute résolution visuellement comparables à celles de midjourney. Le réseau est basé sur l'architecture ControlNet d'origine ; nous proposons deux nouveaux modules pour : 1 étendre le ControlNet d'origine afin de supporter différentes conditions d'image en utilisant les mêmes paramètres de réseau. 2 prendre en charge l'entrée de multiples conditions sans augmenter le déchargement de calcul, ce qui est particulièrement important pour les concepteurs souhaitant éditer une image en détail, les différentes conditions utilisant le même encodeur de condition, sans ajouter de calculs ou de paramètres supplémentaires.
StableDiffusionXLControlNetUnionPipeline
classe diffusers.StableDiffusionXLControlNetUnionPipeline
< source >( vae: AutoencoderKLtext_encoder: CLIPTextModeltext_encoder_2: CLIPTextModelWithProjectiontokenizer: CLIPTokenizertokenizer_2: CLIPTokenizerunet: UNet2DConditionModelcontrolnet: diffusers.models.controlnets.controlnet_union.ControlNetUnionModel | list[diffusers.models.controlnets.controlnet_union.ControlNetUnionModel] | tuple[diffusers.models.controlnets.controlnet_union.ControlNetUnionModel] | diffusers.models.controlnets.multicontrolnet_union.MultiControlNetUnionModelscheduler: KarrasDiffusionSchedulersforce_zeros_for_empty_prompt: bool = Trueadd_watermarker: bool | None = Nonefeature_extractor: CLIPImageProcessorPil = Noneimage_encoder: CLIPVisionModelWithProjection = 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é (clip-vit-large-patch14).
- text_encoder_2 (CLIPTextModelWithProjection) — Deuxième encodeur de texte figé (laion/CLIP-ViT-bigG-14-laion2B-39B-b160k).
- tokenizer (CLIPTokenizer) —
Un
CLIPTokenizerpour tokeniser le texte. - tokenizer_2 (CLIPTokenizer) —
Un
CLIPTokenizerpour tokeniser le texte. - unet (UNet2DConditionModel) —
Un
UNet2DConditionModelpour débruyer les latents d'image encodés. - controlnet (ControlNetUnionModel
) -- Provides additional conditioning to theunet` during the denoising process. - scheduler (SchedulerMixin) —
Un planificateur à utiliser en combinaison avec
unetpour débruyer les latents de l'image encodée. Peut être l'un des DDIMScheduler, LMSDiscreteScheduler ou PNDMScheduler. - force_zeros_for_empty_prompt (
bool, facultatif, valeur par défaut"True") — Indique si les embeddings du prompt négatif doivent toujours être définis à 0. Voir également la configuration destabilityai/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 estTruesi le package est installé ; sinon, aucun filigrane n'est utilisé.
Pipeline de génération d'images à partir de texte utilisant Stable Diffusion XL avec un guidage ControlNet.
Ce modèle hérite de DiffusionPipeline. 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.).
Le pipeline hérite également des méthodes de chargement suivantes :
- load_textual_inversion() pour charger les embeddings d'inversion textuelle
- load_lora_weights() pour charger les poids LoRA
- save_lora_weights() pour enregistrer les poids LoRA
- from_single_file() pour charger des fichiers
.ckpt - load_ip_adapter() pour charger des IP Adapters
__call__
< source >( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Nonecontrol_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], list[typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]]] = Noneheight: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 50timesteps: list = Nonesigmas: list = Nonedenoising_end: float | None = Noneguidance_scale: float = 5.0negative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Nonecontrolnet_conditioning_scale: float | list[float] = 1.0guess_mode: bool = Falsecontrol_guidance_start: float | list[float] = 0.0control_guidance_end: float | list[float] = 1.0control_mode: int | list[int] | list[list[int]] | None = Noneoriginal_size: tuple = Nonecrops_coords_top_left: tuple = (0, 0)target_size: tuple = Nonenegative_original_size: tuple[int, int] | None = Nonenegative_crops_coords_top_left: tuple = (0, 0)negative_target_size: tuple[int, int] | None = Noneclip_skip: int | None = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list = ['latents'] ) → StableDiffusionPipelineOutput or tuple
Paramètres
- prompt (
stroulist[str], facultatif) — Le prompt ou les prompts pour guider la génération d’images. S’il n’est pas défini, vous devez passerprompt_embeds. - prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à envoyer àtokenizer_2ettext_encoder_2. S'il n'est pas défini,promptest utilisé dans les deux text-encoders. - control_image (
PipelineImageInputoulist[PipelineImageInput], facultatif) — La condition d’entrée ControlNet à fournir pour guider leunetlors de la génération. Si le type est spécifié commetorch.Tensor, il est transmis à ControlNet tel quel.PIL.Image.Imagepeut également être accepté en tant qu’image. Les dimensions de l’image de sortie sont par défaut celles deimage. Si la hauteur et/ou la largeur sont passées,imageest redimensionnée en conséquence. Si plusieurs ControlNets sont spécifiés dansinit, les images doivent être passées sous forme de liste afin que chaque élément de la liste puisse être correctement groupé pour l’entrée d’un seul ControlNet. - height (
int, facultatif, par défautself.unet.config.sample_size * self.vae_scale_factor) — La hauteur en pixels de l’image générée. Toute valeur inférieure à 512 pixels ne fonctionnera pas correctement avec stabilityai/stable-diffusion-xl-base-1.0 et les points de contrôle qui ne sont pas spécifiquement affinés sur de faibles résolutions. - width (
int, facultatif, par défautself.unet.config.sample_size * self.vae_scale_factor) — La largeur en pixels de l’image générée. Toute valeur inférieure à 512 pixels ne fonctionnera pas correctement avec stabilityai/stable-diffusion-xl-base-1.0 et les points de contrôle qui ne sont pas spécifiquement affinés sur de faibles résolutions. - num_inference_steps (
int, facultatif, valeur par défaut 50) — Le nombre d'étapes de débruitage. Un plus grand nombre d'étapes de débruitage conduit généralement à une image de meilleure qualité, au prix d'une inférence plus lente. - timesteps (
list[int], facultatif) — Timesteps personnalisés à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argumenttimestepsdans leur méthodeset_timesteps. S'il n'est pas défini, le comportement par défaut lorsquenum_inference_stepsest passé sera utilisé. Doit être dans l'ordre décroissant. - sigmas (
list[float], facultatif) — Sigmas personnalisés à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argumentsigmasdans leur méthodeset_timesteps. S'il n'est pas défini, le comportement par défaut lorsquenum_inference_stepsest passé sera utilisé. - 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 retourné 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 Output - guidance_scale (
float, facultatif, valeur par défaut 5.0) — Une valeur de guidance scale plus élevée encourage le modèle à générer des images étroitement liées auprompttexte, au détriment de la qualité de l'image. Le guidance scale est activé lorsqueguidance_scale > 1. - negative_prompt (
stroulist[str], facultatif) — Le prompt ou les prompts pour guider ce qui ne doit pas être inclus dans la génération d’image. S’il n’est pas défini, vous devez passernegative_prompt_embedsà la place. Ignoré lorsque la guidance n’est pas utilisée (guidance_scale < 1). - negative_prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts pour guider ce qui ne doit pas être inclus dans la génération d’image. Cela est envoyé àtokenizer_2ettext_encoder_2. S’il n’est pas défini,negative_promptest utilisé dans les deux text-encoders. - num_images_per_prompt (
int, facultatif, valeur par défaut 1) — Le nombre d'images à générer par invite. - eta (
float, facultatif, valeur par défaut 0.0) — Correspond au paramètre eta (η) de l'article DDIM. Ne s'applique qu'au DDIMScheduler et est ignoré par les autres planificateurs. - generator (
torch.Generatoroulist[torch.Generator], facultatif) — Untorch.Generatorpour rendre la génération déterministe. - latents (
torch.Tensor, facultatif) — Latents bruités pré-générés, échantillonnés à partir d’une distribution gaussienne, à utiliser comme entrées pour la génération d’images. Peut servir à ajuster la même génération avec des prompts différents. S’il n’est pas fourni, un tenseur de latents est généré par échantillonnage à l’aide dugeneratoraléatoire fourni. - prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte (pondération des prompts). S'il n'est pas fourni, les embeddings de texte sont générés à partir de l'argument d'entréeprompt. - 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, lesnegative_prompt_embedssont générés à partir de l'argument d'entréenegative_prompt. - pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-poolés pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte (pondération des prompts). S'il n'est pas fourni, les embeddings de texte pré-poolés sont générés à partir de l'argument d'entréeprompt. - negative_pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatif pré-poolés. Peut être utilisé pour ajuster facilement les entrées de texte (pondération des prompts). S'il n'est pas fourni, lesnegative_prompt_embedspoolés sont générés à partir de l'argument d'entréenegative_prompt. - ip_adapter_image — (
PipelineImageInput, facultatif) : Image d’entrée facultative pour travailler avec les IP Adapters. - ip_adapter_image_embeds (
list[torch.Tensor], facultatif) — Embeddings d’image pré-générés pour IP-Adapter. Il doit s’agir d’une liste dont la longueur est égale au nombre d’IP-adapters. Chaque élément doit être un tenseur de forme(batch_size, num_images, emb_dim). Il doit contenir l’embedding d’image négatif sido_classifier_free_guidanceest défini surTrue. S’il n’est pas fourni, les embeddings sont calculés à partir de l’argument d’entréeip_adapter_image. - output_type (
str, facultatif, par défaut"pil") — Le format de sortie de l’image générée. Choisissez entrePIL.Imageounp.array. - return_dict (
bool, facultatif, par défautTrue) — Indique s'il faut retourner un StableDiffusionPipelineOutput plutôt qu'un simple tuple. - cross_attention_kwargs (
dict, facultatif) — Un dictionnaire de kwargs qui, s'il est spécifié, est transmis auAttentionProcessortel que défini dansself.processor. - controlnet_conditioning_scale (
floatoulist[float], facultatif, valeur par défaut 1.0) — Les sorties du ControlNet sont multipliées parcontrolnet_conditioning_scaleavant d’être ajoutées au résidu dans leunetd’origine. Si plusieurs ControlNets sont spécifiés dansinit, vous pouvez définir l’échelle correspondante sous forme de liste. - guess_mode (
bool, facultatif, valeur par défautFalse) — L’encodeur ControlNet tente de reconnaître le contenu de l’image d’entrée même si vous supprimez tous les prompts. Une valeur deguidance_scalecomprise entre 3,0 et 5,0 est recommandée. - control_guidance_start (
floatoulist[float], facultatif, valeur par défaut 0.0) — Le pourcentage des étapes totales à partir duquel le ControlNet commence à s’appliquer. - control_guidance_end (
floatoulist[float], facultatif, valeur par défaut 1.0) — Le pourcentage des étapes totales à partir duquel le ControlNet cesse d’être appliqué. - control_mode (
intorlist[int]orlist[list[int]], *optional*) -- The control condition types for the ControlNet. See the ControlNet's model card forinformation on the available control modes. If multiple ControlNets are specified ininit`, control_mode should be a list where each ControlNet should have its corresponding control mode list. Should reflect the order of conditions in control_image. - original_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Sioriginal_sizen’est pas identique àtarget_size, l’image apparaîtra sous-échantillonnée ou suréchantillonnée.original_sizeest par défaut(height, width)s’il n’est pas spécifié. Fait partie du micro-conditionnement de SDXL, tel que décrit dans la section 2.2 de https://huggingface.co/papers/2307.01952. - crops_coords_top_left (
tuple[int], facultatif, par défaut (0, 0)) —crops_coords_top_leftpeut être utilisé pour générer une image qui semble « recadrée » à partir de la positioncrops_coords_top_leftvers le bas. Des images bien cadrées et centrées sont généralement obtenues en définissantcrops_coords_top_leftsur (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_sizedoit ê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(height, width). Fait partie du micro-conditionnement de SDXL, tel que décrit dans la section 2.2 de https://huggingface.co/papers/2307.01952. - negative_original_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Permet de conditionner négativement le processus de génération en fonction d’une résolution d’image spécifique. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. Pour plus d’informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208. - negative_crops_coords_top_left (
tuple[int], facultatif, valeur par défaut (0, 0)) — Permet de conditionner négativement le processus de génération en fonction de coordonnées de recadrage spécifiques. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. Pour plus d’informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208. - negative_target_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Permet de conditionner négativement le processus de génération en fonction de la résolution de l’image cible. Il doit être identique àtarget_sizedans la plupart des cas. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. Pour plus d’informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208. - 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,PipelineCallback,MultiPipelineCallbacks, facultatif) — Une fonction ou une sous-classe dePipelineCallbackouMultiPipelineCallbacksqui est appelée à la fin de chaque étape de débruitage pendant l’inférence, avec les arguments suivants :callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargscontiendra une liste de tous les tenseurs spécifiés parcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, facultatif) — La liste des entrées tensorielles pour la fonctioncallback_on_step_end. Les tenseurs spécifiés dans la liste seront passés en tant qu'argumentcallback_kwargs. Vous ne pourrez inclure que les variables listées dans l'attribut._callback_tensor_inputsde votre classe de pipeline.
Retourne
StableDiffusionPipelineOutput ou tuple
Si return_dict est True, StableDiffusionPipelineOutput est renvoyé,
sinon un tuple contenant les images de sortie est renvoyé.
La fonction d'appel du pipeline pour la génération.
Exemples :
>>> # !pip install controlnet_aux
>>> from controlnet_aux import LineartAnimeDetector
>>> from diffusers import StableDiffusionXLControlNetUnionPipeline, ControlNetUnionModel, AutoencoderKL
>>> from diffusers.utils import load_image
>>> import torch
>>> prompt = "A cat"
>>> # download an image
>>> image = load_image(
... "https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/kandinsky/cat.png"
... ).resize((1024, 1024))
>>> # initialize the models and pipeline
>>> controlnet = ControlNetUnionModel.from_pretrained(
... "xinsir/controlnet-union-sdxl-1.0", torch_dtype=torch.float16
... )
>>> vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix", torch_dtype=torch.float16)
>>> pipe = StableDiffusionXLControlNetUnionPipeline.from_pretrained(
... "stabilityai/stable-diffusion-xl-base-1.0",
... controlnet=controlnet,
... vae=vae,
... torch_dtype=torch.float16,
... variant="fp16",
... )
>>> pipe.enable_model_cpu_offload()
>>> # prepare image
>>> processor = LineartAnimeDetector.from_pretrained("lllyasviel/Annotators")
>>> controlnet_img = processor(image, output_type="pil")
>>> # generate image
>>> image = pipe(prompt, control_image=[controlnet_img], control_mode=[3], height=1024, width=1024).images[0]encode_prompt
< source >( prompt: strprompt_2: str | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | None = Nonenegative_prompt_2: str | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = None )
Paramètres
- prompt (
stroulist[str], facultatif) — prompt à encoder - prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à envoyer autokenizer_2et autext_encoder_2. S'il n'est pas défini,promptest utilisé dans les deux text-encoders - device — (
torch.device) : torch device - num_images_per_prompt (
int) — nombre d'images à générer par invite - do_classifier_free_guidance (
bool) — indique s'il faut utiliser le classifier free guidance ou non - negative_prompt (
stroulist[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 passernegative_prompt_embedsà la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré siguidance_scaleest inférieur à1). - negative_prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à ne pas utiliser pour guider la génération d’image, à envoyer àtokenizer_2ettext_encoder_2. S’il n’est pas défini,negative_promptest utilisé dans les deux text-encoders - 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éeprompt. - 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éenegative_prompt. - pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-poolés 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 pré-poolés seront générés à partir de l'argument d'entréeprompt. - 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éenegative_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.
get_guidance_scale_embedding
< source >( 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éfauttorch.float32) — Type de données des embeddings générés.
Retourne
torch.Tensor
Vecteurs d'embedding de forme (len(w), embedding_dim).
StableDiffusionXLControlNetUnionImg2ImgPipeline
classe diffusers.StableDiffusionXLControlNetUnionImg2ImgPipeline
< source >( vae: AutoencoderKLtext_encoder: CLIPTextModeltext_encoder_2: CLIPTextModelWithProjectiontokenizer: CLIPTokenizertokenizer_2: CLIPTokenizerunet: UNet2DConditionModelcontrolnet: diffusers.models.controlnets.controlnet_union.ControlNetUnionModel | list[diffusers.models.controlnets.controlnet_union.ControlNetUnionModel] | tuple[diffusers.models.controlnets.controlnet_union.ControlNetUnionModel] | diffusers.models.controlnets.multicontrolnet_union.MultiControlNetUnionModelscheduler: KarrasDiffusionSchedulersrequires_aesthetics_score: bool = Falseforce_zeros_for_empty_prompt: bool = Trueadd_watermarker: bool | None = Nonefeature_extractor: CLIPImageProcessorPil = Noneimage_encoder: CLIPVisionModelWithProjection = 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 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) — Tokeniseur 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.
- controlnet (ControlNetUnionModel) — Fournit un conditionnement supplémentaire au unet pendant le processus de débruitage.
- scheduler (SchedulerMixin) —
Un planificateur à utiliser en combinaison avec
unetpour débruyer les latents de l'image encodée. Peut être l'un des DDIMScheduler, LMSDiscreteScheduler ou PNDMScheduler. - requires_aesthetics_score (
bool, facultatif, par défaut"False") — Indique si leunetnécessite qu'une conditionaesthetic_scoresoit transmise lors de l'inférence. Voir également la configuration destabilityai/stable-diffusion-xl-refiner-1-0. - 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 destabilityai/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é. - feature_extractor (CLIPImageProcessor) —
Un
CLIPImageProcessorpour extraire les caractéristiques des images générées ; utilisé comme entrées pour lesafety_checker.
Pipeline pour la génération d'image à partir d'image utilisant Stable Diffusion XL avec un guidage ControlNet.
Ce modèle hérite de DiffusionPipeline. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous les pipelines (tels que le téléchargement ou l'enregistrement, l'exécution sur un appareil particulier, etc.)
Le pipeline hérite également des méthodes de chargement suivantes :
- load_textual_inversion() pour charger les embeddings d'inversion textuelle
- load_lora_weights() pour charger les poids LoRA
- save_lora_weights() pour enregistrer les poids LoRA
- load_ip_adapter() pour charger des IP Adapters
__call__
< source >( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonecontrol_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], list[typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]]] = Noneheight: int | None = Nonewidth: int | None = Nonestrength: float = 0.8num_inference_steps: int = 50guidance_scale: float = 5.0negative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Nonecontrolnet_conditioning_scale: float | list[float] = 0.8guess_mode: bool = Falsecontrol_guidance_start: float | list[float] = 0.0control_guidance_end: float | list[float] = 1.0control_mode: int | list[int] | list[list[int]] | None = Noneoriginal_size: tuple = Nonecrops_coords_top_left: tuple = (0, 0)target_size: tuple = Nonenegative_original_size: tuple[int, int] | None = Nonenegative_crops_coords_top_left: tuple = (0, 0)negative_target_size: tuple[int, int] | None = Noneaesthetic_score: float = 6.0negative_aesthetic_score: float = 2.5clip_skip: int | None = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']**kwargs ) → StableDiffusionPipelineOutput or tuple
Paramètres
- prompt (
stroulist[str], facultatif) — Le prompt ou les prompts pour guider la génération d’image. S’il n’est pas défini, il faut passerprompt_embedsà la place. - prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à envoyer autokenizer_2et autext_encoder_2. S'il n'est pas défini,promptest utilisé dans les deux text-encoders - image (
torch.Tensor,PIL.Image.Image,np.ndarray,list[torch.Tensor],list[PIL.Image.Image],list[np.ndarray], —list[list[torch.Tensor]],list[list[np.ndarray]]oulist[list[PIL.Image.Image]]) : L'image initiale sera utilisée comme point de départ pour le processus de génération d'image. Peut également accepter des latents d'image en tant queimage; si des latents sont transmis directement, ils ne seront pas réencodés. - control_image (
PipelineImageInputoulist[PipelineImageInput], facultatif) — La condition d’entrée ControlNet à fournir pour guider leunetlors de la génération. Si le type est spécifié commetorch.Tensor, il est transmis à ControlNet tel quel.PIL.Image.Imagepeut également être accepté en tant qu’image. Les dimensions de l’image de sortie sont par défaut celles deimage. Si la hauteur et/ou la largeur sont passées,imageest redimensionnée en conséquence. Si plusieurs ControlNets sont spécifiés dansinit, les images doivent être passées sous forme de liste afin que chaque élément de la liste puisse être correctement groupé pour l’entrée d’un seul ControlNet. - height (
int, facultatif, par défaut la taille de control_image) — La hauteur en pixels de l’image générée. Toute valeur inférieure à 512 pixels ne fonctionnera pas bien avec stabilityai/stable-diffusion-xl-base-1.0 et les points de contrôle qui ne sont pas spécifiquement affinés sur de faibles résolutions. - width (
int, facultatif, par défaut la taille de control_image) — La largeur en pixels de l’image générée. Toute valeur inférieure à 512 pixels ne fonctionnera pas bien avec stabilityai/stable-diffusion-xl-base-1.0 et les points de contrôle qui ne sont pas spécifiquement affinés sur de faibles résolutions. - strength (
float, facultatif, valeur par défaut 0.8) — Indique l'étendue de la transformation de l'imagede référence. Doit être compris entre 0 et 1. L'imageest utilisée comme point de départ et plus lestrengthest élevé, plus du bruit est ajouté. Le nombre d'étapes de débruitage dépend de la quantité de bruit initialement ajoutée. Lorsquestrengthvaut 1, le bruit ajouté est maximal et le processus de débruitage s'exécute pendant le nombre complet d'itérations spécifié dansnum_inference_steps. Une valeur de 1 ignore essentiellement l'image. - num_inference_steps (
int, facultatif, valeur par défaut 50) — Le nombre d'étapes de débruitage. Un plus grand nombre d'étapes de débruitage conduit généralement à une image de meilleure qualité, au prix d'une inférence plus lente. - guidance_scale (
float, facultatif, valeur par défaut 7,5) — Échelle de guidage telle que définie dans Classifier-Free Diffusion Guidance.guidance_scaleest défini commewde l’équation 2 de Imagen Paper. L’échelle de guidage est activée en définissantguidance_scale > 1. Une échelle de guidage plus élevée encourage la génération d’images étroitement liées auprompttexte, généralement au détriment de la qualité de l’image. - negative_prompt (
stroulist[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 passernegative_prompt_embedsà la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré siguidance_scaleest inférieur à1). - negative_prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à ne pas utiliser pour guider la génération d’image, à envoyer àtokenizer_2ettext_encoder_2. S’il n’est pas défini,negative_promptest utilisé dans les deux text-encoders - num_images_per_prompt (
int, facultatif, valeur par défaut 1) — Le nombre d'images à générer par invite. - eta (
float, facultatif, valeur par défaut 0.0) — Correspond au paramètre eta (η) du papier DDIM : https://huggingface.co/papers/2010.02502. Ne s'applique qu'à schedulers.DDIMScheduler, sera ignoré pour les autres. - generator (
torch.Generatoroulist[torch.Generator], facultatif) — Un ou une liste de générateurs torch pour rendre la génération déterministe. - latents (
torch.Tensor, facultatif) — Latents bruités pré-générés, échantillonnés à partir d’une distribution gaussienne, à utiliser comme entrées pour la génération d’images. Peut être utilisé pour ajuster la même génération avec des prompts différents. S’il n’est pas fourni, un tenseur de latents sera généré par échantillonnage à l’aide dugeneratoraléatoire fourni. - 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éeprompt. - 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éenegative_prompt. - pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-poolés 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 pré-poolés seront générés à partir de l'argument d'entréeprompt. - 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éenegative_prompt. - ip_adapter_image — (
PipelineImageInput, facultatif) : Image d’entrée facultative pour travailler avec les IP Adapters. - ip_adapter_image_embeds (
list[torch.Tensor], facultatif) — Embeddings d’image pré-générés pour IP-Adapter. Il doit s’agir d’une liste dont la longueur est égale au nombre d’IP-adapters. Chaque élément doit être un tenseur de forme(batch_size, num_images, emb_dim). Il doit contenir l’embedding d’image négatif sido_classifier_free_guidanceest défini surTrue. S’il n’est pas fourni, les embeddings sont calculés à partir de l’argument d’entréeip_adapter_image. - output_type (
str, facultatif, par défaut"pil") — Le format de sortie de l'image générée. Choisissez entre PIL :PIL.Image.Imageounp.array. - return_dict (
bool, facultatif, par défautTrue) — Indique s'il faut retourner un StableDiffusionPipelineOutput plutôt qu'un simple tuple. - cross_attention_kwargs (
dict, facultatif) — Un dictionnaire de kwargs qui, s'il est spécifié, est transmis à l'AttentionProcessordéfini sousself.processordans diffusers.models.attention_processor. - controlnet_conditioning_scale (
floatoulist[float], facultatif, valeur par défaut 1.0) — Les sorties du ControlNet sont multipliées parcontrolnet_conditioning_scaleavant d’être ajoutées au résidu dans leunetd’origine. Si plusieurs ControlNets sont spécifiés dansinit, vous pouvez définir l’échelle correspondante sous forme de liste. - guess_mode (
bool, facultatif, valeur par défautFalse) — Dans ce mode, l’encodeur ControlNet s’efforce de reconnaître le contenu de l’image d’entrée même si vous supprimez tous les prompts. Une valeur deguidance_scalecomprise entre 3.0 et 5.0 est recommandée. - control_guidance_start (
floatoulist[float], facultatif, valeur par défaut 0.0) — Le pourcentage des étapes totales à partir duquel le ControlNet commence à s’appliquer. - control_guidance_end (
floatoulist[float], facultatif, valeur par défaut 1.0) — Le pourcentage des étapes totales à partir duquel le ControlNet cesse d’être appliqué. - control_mode (
intorlist[int]orlist[list[int]], *optional*) -- The control condition types for the ControlNet. See the ControlNet's model card forinformation on the available control modes. If multiple ControlNets are specified ininit`, control_mode should be a list where each ControlNet should have its corresponding control mode list. Should reflect the order of conditions in control_image - original_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Sioriginal_sizen’est pas identique àtarget_size, l’image apparaîtra sous-échantillonnée ou suréchantillonnée.original_sizeest par défaut(height, width)s’il n’est pas spécifié. Fait partie du micro-conditionnement de SDXL, tel que décrit dans la section 2.2 de https://huggingface.co/papers/2307.01952. - crops_coords_top_left (
tuple[int], facultatif, par défaut (0, 0)) —crops_coords_top_leftpeut être utilisé pour générer une image qui semble « recadrée » à partir de la positioncrops_coords_top_leftvers le bas. Des images bien cadrées et centrées sont généralement obtenues en définissantcrops_coords_top_leftsur (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_sizedoit ê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(height, width). Fait partie du micro-conditionnement de SDXL, tel que décrit dans la section 2.2 de https://huggingface.co/papers/2307.01952. - negative_original_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Permet de conditionner négativement le processus de génération en fonction d’une résolution d’image spécifique. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. Pour plus d’informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208. - negative_crops_coords_top_left (
tuple[int], facultatif, valeur par défaut (0, 0)) — Permet de conditionner négativement le processus de génération en fonction de coordonnées de recadrage spécifiques. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. Pour plus d’informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208. - negative_target_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Permet de conditionner négativement le processus de génération en fonction de la résolution de l’image cible. Il doit être identique àtarget_sizedans la plupart des cas. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. Pour plus d’informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208. - aesthetic_score (
float, facultatif, valeur par défaut 6.0) — Utilisé pour simuler un score esthétique de l’image générée en influençant la condition de texte positive. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. - negative_aesthetic_score (
float, facultatif, valeur par défaut 2,5) — Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. Peut être utilisé pour simuler un score esthétique de l’image générée en influençant la condition de texte négative. - 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,PipelineCallback,MultiPipelineCallbacks, facultatif) — Une fonction ou une sous-classe dePipelineCallbackouMultiPipelineCallbacksqui est appelée à la fin de chaque étape de débruitage pendant l’inférence, avec les arguments suivants :callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargscontiendra une liste de tous les tenseurs spécifiés parcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, facultatif) — La liste des entrées tensorielles pour la fonctioncallback_on_step_end. Les tenseurs spécifiés dans la liste seront passés en tant qu'argumentcallback_kwargs. Vous ne pourrez inclure que les variables listées dans l'attribut._callback_tensor_inputsde votre classe de pipeline.
Retourne
StableDiffusionPipelineOutput ou tuple
StableDiffusionPipelineOutput si return_dict est True, sinon un tuple contenant les images de sortie.
Fonction appelée lors de l'appel du pipeline pour la génération.
Exemples :
# !pip install controlnet_aux
from diffusers import (
StableDiffusionXLControlNetUnionImg2ImgPipeline,
ControlNetUnionModel,
AutoencoderKL,
)
from diffusers.utils import load_image
import torch
from PIL import Image
import numpy as np
prompt = "A cat"
# download an image
image = load_image(
"https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/kandinsky/cat.png"
)
# initialize the models and pipeline
controlnet = ControlNetUnionModel.from_pretrained(
"brad-twinkl/controlnet-union-sdxl-1.0-promax", torch_dtype=torch.float16
)
vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix", torch_dtype=torch.float16)
pipe = StableDiffusionXLControlNetUnionImg2ImgPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
controlnet=controlnet,
vae=vae,
torch_dtype=torch.float16,
variant="fp16",
).to("cuda")
# `enable_model_cpu_offload` is not recommended due to multiple generations
height = image.height
width = image.width
ratio = np.sqrt(1024.0 * 1024.0 / (width * height))
# 3 * 3 upscale correspond to 16 * 3 multiply, 2 * 2 correspond to 16 * 2 multiply and so on.
scale_image_factor = 3
base_factor = 16
factor = scale_image_factor * base_factor
W, H = int(width * ratio) // factor * factor, int(height * ratio) // factor * factor
image = image.resize((W, H))
target_width = W // scale_image_factor
target_height = H // scale_image_factor
images = []
crops_coords_list = [
(0, 0),
(0, width // 2),
(height // 2, 0),
(width // 2, height // 2),
0,
0,
0,
0,
0,
]
for i in range(scale_image_factor):
for j in range(scale_image_factor):
left = j * target_width
top = i * target_height
right = left + target_width
bottom = top + target_height
cropped_image = image.crop((left, top, right, bottom))
cropped_image = cropped_image.resize((W, H))
images.append(cropped_image)
# set ControlNetUnion input
result_images = []
for sub_img, crops_coords in zip(images, crops_coords_list):
new_width, new_height = W, H
out = pipe(
prompt=[prompt] * 1,
image=sub_img,
control_image=[sub_img],
control_mode=[6],
width=new_width,
height=new_height,
num_inference_steps=30,
crops_coords_top_left=(W, H),
target_size=(W, H),
original_size=(W * 2, H * 2),
)
result_images.append(out.images[0])
new_im = Image.new("RGB", (new_width * scale_image_factor, new_height * scale_image_factor))
new_im.paste(result_images[0], (0, 0))
new_im.paste(result_images[1], (new_width, 0))
new_im.paste(result_images[2], (new_width * 2, 0))
new_im.paste(result_images[3], (0, new_height))
new_im.paste(result_images[4], (new_width, new_height))
new_im.paste(result_images[5], (new_width * 2, new_height))
new_im.paste(result_images[6], (0, new_height * 2))
new_im.paste(result_images[7], (new_width, new_height * 2))
new_im.paste(result_images[8], (new_width * 2, new_height * 2))encode_prompt
< source >( prompt: strprompt_2: str | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | None = Nonenegative_prompt_2: str | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = None )
Paramètres
- prompt (
stroulist[str], facultatif) — prompt à encoder - prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à envoyer autokenizer_2et autext_encoder_2. S'il n'est pas défini,promptest utilisé dans les deux text-encoders - device — (
torch.device) : torch device - num_images_per_prompt (
int) — nombre d'images à générer par invite - do_classifier_free_guidance (
bool) — indique s'il faut utiliser le classifier free guidance ou non - negative_prompt (
stroulist[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 passernegative_prompt_embedsà la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré siguidance_scaleest inférieur à1). - negative_prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à ne pas utiliser pour guider la génération d’image, à envoyer àtokenizer_2ettext_encoder_2. S’il n’est pas défini,negative_promptest utilisé dans les deux text-encoders - 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éeprompt. - 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éenegative_prompt. - pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-poolés 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 pré-poolés seront générés à partir de l'argument d'entréeprompt. - 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éenegative_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.
StableDiffusionXLControlNetUnionInpaintPipeline
classe diffusers.StableDiffusionXLControlNetUnionInpaintPipeline
< source >( vae: AutoencoderKLtext_encoder: CLIPTextModeltext_encoder_2: CLIPTextModelWithProjectiontokenizer: CLIPTokenizertokenizer_2: CLIPTokenizerunet: UNet2DConditionModelcontrolnet: diffusers.models.controlnets.controlnet_union.ControlNetUnionModel | list[diffusers.models.controlnets.controlnet_union.ControlNetUnionModel] | tuple[diffusers.models.controlnets.controlnet_union.ControlNetUnionModel] | diffusers.models.controlnets.multicontrolnet_union.MultiControlNetUnionModelscheduler: KarrasDiffusionSchedulersrequires_aesthetics_score: bool = Falseforce_zeros_for_empty_prompt: bool = Trueadd_watermarker: bool | None = Nonefeature_extractor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = Noneimage_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | 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) — Tokeniseur 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 (SchedulerMixin) —
Un planificateur à utiliser en combinaison avec
unetpour débruyer les latents de l'image encodée. Peut être l'un des DDIMScheduler, LMSDiscreteScheduler ou PNDMScheduler.
Pipeline pour la génération d'images à partir de texte utilisant Stable Diffusion XL.
Ce modèle hérite de DiffusionPipeline. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous les pipelines (tels que le téléchargement ou l'enregistrement, l'exécution sur un appareil particulier, etc.)
Le pipeline hérite également des méthodes de chargement suivantes :
- load_textual_inversion() pour charger les embeddings d'inversion textuelle
- load_lora_weights() pour charger les poids LoRA
- save_lora_weights() pour enregistrer les poids LoRA
- from_single_file() pour charger des fichiers
.ckpt - load_ip_adapter() pour charger des IP Adapters
__call__
< source >( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonemask_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonecontrol_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], list[typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]]] = Noneheight: int | None = Nonewidth: int | None = Nonepadding_mask_crop: int | None = Nonestrength: float = 0.9999num_inference_steps: int = 50denoising_start: float | None = Nonedenoising_end: float | None = Noneguidance_scale: float = 5.0negative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Nonecontrolnet_conditioning_scale: float | list[float] = 1.0guess_mode: bool = Falsecontrol_guidance_start: float | list[float] = 0.0control_guidance_end: float | list[float] = 1.0control_mode: int | list[int] | list[list[int]] | None = Noneguidance_rescale: float = 0.0original_size: tuple = Nonecrops_coords_top_left: tuple = (0, 0)target_size: tuple = Noneaesthetic_score: float = 6.0negative_aesthetic_score: float = 2.5clip_skip: int | None = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']**kwargs ) → ~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput or tuple
Paramètres
- prompt (
stroulist[str], facultatif) — Le prompt ou les prompts pour guider la génération d’image. S’il n’est pas défini, il faut passerprompt_embedsà la place. - prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à envoyer autokenizer_2et autext_encoder_2. S'il n'est pas défini,promptest utilisé dans les deux text-encoders - image (
PIL.Image.Image) —Imageou tenseur représentant un lot d’images qui sera inpainté, c’est-à-dire que certaines parties de l’image seront masquées avecmask_imageet repeintes selonprompt. - mask_image (
PIL.Image.Image) —Imageou tenseur représentant un lot d’images, à utiliser comme masque pourimage. Les pixels blancs du masque seront repeints, tandis que les pixels noirs seront conservés. Simask_imageest une image PIL, elle sera convertie en un seul canal (luminance) avant utilisation. S’il s’agit d’un tenseur, il doit contenir un seul canal de couleur (L) au lieu de trois, la forme attendue étant donc(B, H, W, 1). - control_image (
PipelineImageInputoulist[PipelineImageInput], facultatif) — La condition d’entrée ControlNet à fournir pour guider leunetlors de la génération. Si le type est spécifié commetorch.Tensor, il est transmis à ControlNet tel quel.PIL.Image.Imagepeut également être accepté en tant qu’image. Les dimensions de l’image de sortie sont par défaut celles deimage. Si la hauteur et/ou la largeur sont passées,imageest redimensionnée en conséquence. Si plusieurs ControlNets sont spécifiés dansinit, les images doivent être passées sous forme de liste afin que chaque élément de la liste puisse être correctement groupé pour l’entrée d’un seul ControlNet. - height (
int, facultatif, par défaut self.unet.config.sample_size * self.vae_scale_factor) — La hauteur en pixels de l’image générée. - width (
int, facultatif, par défaut self.unet.config.sample_size * self.vae_scale_factor) — La largeur en pixels de l'image générée. - padding_mask_crop (
int, facultatif, valeur par défautNone) — La taille de la marge dans le recadrage à appliquer à l’image et au masque. SiNone, aucun recadrage n’est appliqué à l’image et à mask_image. Sipadding_mask_cropn’est pasNone, une région rectangulaire de même ratio d’aspect que l’image et contenant toute la zone masquée est d’abord identifiée, puis cette zone est étendue en fonction depadding_mask_crop. L’image et mask_image sont ensuite recadrées en fonction de la zone étendue avant d’être redimensionnées à la taille de l’image d’origine pour l’inpainting. Cela est utile lorsque la zone masquée est petite tandis que l’image est grande et contient des informations sans rapport avec l’inpainting, comme l’arrière-plan. - strength (
float, facultatif, valeur par défaut 0.9999) — Indique conceptuellement dans quelle mesure transformer la partie masquée de l'imagede référence. Doit être compris entre 0 et 1.imagesera utilisée comme point de départ, en y ajoutant d'autant plus de bruit questrengthest élevée. Le nombre d'étapes de débruitage dépend de la quantité de bruit initialement ajoutée. Lorsquestrengthvaut 1, le bruit ajouté sera maximal et le processus de débruitage s'exécutera pendant le nombre complet d'itérations spécifié dansnum_inference_steps. Une valeur de 1 ignore donc essentiellement la partie masquée de l'imagede référence. Notez que sidenoising_startest déclaré comme un entier, la valeur destrengthsera ignorée. - num_inference_steps (
int, facultatif, valeur par défaut 50) — Le nombre d'étapes de débruitage. Un plus grand nombre d'étapes de débruitage conduit généralement à une image de meilleure qualité, au prix d'une inférence plus lente. - denoising_start (
float, optional) — When specified, indicates the fraction (between 0.0 and 1.0) of the total denoising process to be bypassed before it is initiated. Consequently, the initial part of the denoising process is skipped and it is assumed that the passedimageis a partly denoised image. Note that when this is specified, strength will be ignored. Thedenoising_startparameter is particularly beneficial when this pipeline is integrated into a “Mixture of Denoisers” multi-pipeline setup, as detailed in Refining the Image Output. - denoising_end (
float, 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 (environ 20 % des timesteps finaux sont encore nécessaires) et devra être débruité par un pipeline successeur dontdenoising_startest défini à 0.8, afin qu’il ne débruite que les 20 % finaux du 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 décrit dans Refining the Image Output. - guidance_scale (
float, facultatif, valeur par défaut 7,5) — Échelle de guidage telle que définie dans Classifier-Free Diffusion Guidance.guidance_scaleest défini commewde l’équation 2 de Imagen Paper. L’échelle de guidage est activée en définissantguidance_scale > 1. Une échelle de guidage plus élevée encourage la génération d’images étroitement liées auprompttexte, généralement au détriment de la qualité de l’image. - negative_prompt (
stroulist[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 passernegative_prompt_embedsà la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré siguidance_scaleest inférieur à1). - negative_prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à ne pas utiliser pour guider la génération d’image, à envoyer àtokenizer_2ettext_encoder_2. S’il n’est pas défini,negative_promptest utilisé dans les deux text-encoders - 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éeprompt. - 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éenegative_prompt. - ip_adapter_image — (
PipelineImageInput, facultatif) : Image d’entrée facultative pour travailler avec les IP Adapters. - ip_adapter_image_embeds (
list[torch.Tensor], facultatif) — Embeddings d’image pré-générés pour IP-Adapter. Il doit s’agir d’une liste dont la longueur est égale au nombre d’IP-adapters. Chaque élément doit être un tenseur de forme(batch_size, num_images, emb_dim). Il doit contenir l’embedding d’image négatif sido_classifier_free_guidanceest défini surTrue. S’il n’est pas fourni, les embeddings sont calculés à partir de l’argument d’entréeip_adapter_image. - pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-poolés 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 pré-poolés seront générés à partir de l'argument d'entréeprompt. - 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éenegative_prompt. - num_images_per_prompt (
int, facultatif, valeur par défaut 1) — Le nombre d'images à générer par invite. - eta (
float, facultatif, valeur par défaut 0.0) — Correspond au paramètre eta (η) du papier DDIM : https://huggingface.co/papers/2010.02502. Ne s'applique qu'à schedulers.DDIMScheduler, sera ignoré pour les autres. - generator (
torch.Generator, facultatif) — Un ou une liste de générateurs torch pour rendre la génération déterministe. - latents (
torch.Tensor, facultatif) — Latents bruités pré-générés, échantillonnés à partir d’une distribution gaussienne, à utiliser comme entrées pour la génération d’images. Peut être utilisé pour ajuster la même génération avec des prompts différents. S’il n’est pas fourni, un tenseur de latents sera généré par échantillonnage à l’aide dugeneratoraléatoire fourni. - output_type (
str, facultatif, par défaut"pil") — Le format de sortie de l'image générée. Choisissez entre PIL :PIL.Image.Imageounp.array. - return_dict (
bool, facultatif, par défautTrue) — Indique s'il faut retourner un StableDiffusionPipelineOutput plutôt qu'un simple tuple. - cross_attention_kwargs (
dict, facultatif) — Un dictionnaire de kwargs qui, s'il est spécifié, est transmis à l'AttentionProcessordéfini sousself.processordans diffusers.models.attention_processor. - controlnet_conditioning_scale (
floatoulist[float], facultatif, valeur par défaut 1.0) — Les sorties du ControlNet sont multipliées parcontrolnet_conditioning_scaleavant d’être ajoutées au résidu dans leunetd’origine. Si plusieurs ControlNets sont spécifiés dansinit, vous pouvez définir l’échelle correspondante sous forme de liste. - guess_mode (
bool, facultatif, valeur par défautFalse) — L’encodeur ControlNet tente de reconnaître le contenu de l’image d’entrée même si vous supprimez tous les prompts. Une valeur deguidance_scalecomprise entre 3,0 et 5,0 est recommandée. - control_guidance_start (
floatoulist[float], facultatif, valeur par défaut 0.0) — Le pourcentage des étapes totales à partir duquel le ControlNet commence à s’appliquer. - control_guidance_end (
floatoulist[float], facultatif, valeur par défaut 1.0) — Le pourcentage des étapes totales à partir duquel le ControlNet cesse d’être appliqué. - control_mode (
intorlist[int]orlist[list[int]], *optional*) -- The control condition types for the ControlNet. See the ControlNet's model card forinformation on the available control modes. If multiple ControlNets are specified ininit`, control_mode should be a list where each ControlNet should have its corresponding control mode list. Should reflect the order of conditions in control_image. - 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. - original_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Sioriginal_sizen’est pas identique àtarget_size, l’image apparaîtra sous-échantillonnée ou suréchantillonnée.original_sizeest par défaut(width, height)s’il n’est pas spécifié. Fait partie du micro-conditionnement de SDXL, tel que décrit dans la section 2.2 de https://huggingface.co/papers/2307.01952. - crops_coords_top_left (
tuple[int], facultatif, par défaut (0, 0)) —crops_coords_top_leftpeut être utilisé pour générer une image qui semble « recadrée » à partir de la positioncrops_coords_top_leftvers le bas. Des images bien cadrées et centrées sont généralement obtenues en définissantcrops_coords_top_leftsur (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_sizedoit ê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. - aesthetic_score (
float, facultatif, valeur par défaut 6.0) — Utilisé pour simuler un score esthétique de l’image générée en influençant la condition de texte positive. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. - negative_aesthetic_score (
float, facultatif, valeur par défaut 2,5) — Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. Peut être utilisé pour simuler un score esthétique de l’image générée en influençant la condition de texte négative. - 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,PipelineCallback,MultiPipelineCallbacks, facultatif) — Une fonction ou une sous-classe dePipelineCallbackouMultiPipelineCallbacksqui est appelée à la fin de chaque étape de débruitage pendant l’inférence, avec les arguments suivants :callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargscontiendra une liste de tous les tenseurs spécifiés parcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, facultatif) — La liste des entrées tensorielles pour la fonctioncallback_on_step_end. Les tenseurs spécifiés dans la liste seront passés en tant qu'argumentcallback_kwargs. Vous ne pourrez inclure que les variables listées dans l'attribut._callback_tensor_inputsde votre classe de pipeline.
Retourne
~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput ou tuple
~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput si return_dict est True, sinon un
tuple. tuple. Lors du retour d'un tuple, le premier élément est une liste contenant les images générées.
Fonction appelée lors de l'appel du pipeline pour la génération.
Exemples :
from diffusers import StableDiffusionXLControlNetUnionInpaintPipeline, ControlNetUnionModel, AutoencoderKL
from diffusers.utils import load_image
import torch
import numpy as np
from PIL import Image
prompt = "A cat"
# download an image
image = load_image(
"https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/in_paint/overture-creations-5sI6fQgYIuo.png"
).resize((1024, 1024))
mask = load_image(
"https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/in_paint/overture-creations-5sI6fQgYIuo_mask.png"
).resize((1024, 1024))
# initialize the models and pipeline
controlnet = ControlNetUnionModel.from_pretrained(
"brad-twinkl/controlnet-union-sdxl-1.0-promax", torch_dtype=torch.float16
)
vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix", torch_dtype=torch.float16)
pipe = StableDiffusionXLControlNetUnionInpaintPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
controlnet=controlnet,
vae=vae,
torch_dtype=torch.float16,
variant="fp16",
)
pipe.enable_model_cpu_offload()
controlnet_img = image.copy()
controlnet_img_np = np.array(controlnet_img)
mask_np = np.array(mask)
controlnet_img_np[mask_np > 0] = 0
controlnet_img = Image.fromarray(controlnet_img_np)
# generate image
image = pipe(prompt, image=image, mask_image=mask, control_image=[controlnet_img], control_mode=[7]).images[0]
image.save("inpaint.png")encode_prompt
< source >( prompt: strprompt_2: str | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | None = Nonenegative_prompt_2: str | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = None )
Paramètres
- prompt (
stroulist[str], facultatif) — prompt à encoder - prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à envoyer autokenizer_2et autext_encoder_2. S'il n'est pas défini,promptest utilisé dans les deux text-encoders - device — (
torch.device) : torch device - num_images_per_prompt (
int) — nombre d'images à générer par invite - do_classifier_free_guidance (
bool) — indique s'il faut utiliser le classifier free guidance ou non - negative_prompt (
stroulist[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 passernegative_prompt_embedsà la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré siguidance_scaleest inférieur à1). - negative_prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à ne pas utiliser pour guider la génération d’image, à envoyer àtokenizer_2ettext_encoder_2. S’il n’est pas défini,negative_promptest utilisé dans les deux text-encoders - 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éeprompt. - 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éenegative_prompt. - pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-poolés 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 pré-poolés seront générés à partir de l'argument d'entréeprompt. - 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éenegative_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.