Buckets:
| # T2I-Adapter | |
| [T2I-Adapter : Learning Adapters to Dig out More Controllable Ability for Text-to-Image Diffusion Models](https://huggingface.co/papers/2302.08453) par Chong Mou, Xintao Wang, Liangbin Xie, Jian Zhang, Zhongang Qi, Ying Shan, Xiaohu Qie. | |
| En utilisant les modèles pré-entraînés, nous pouvons fournir des images de contrôle (par exemple, une carte de profondeur) pour piloter la génération d’images à partir de texte de Stable Diffusion, afin qu’elle suive la structure de l’image de profondeur et comble les détails. | |
| L’abstract de l’article est le suivant : | |
| *La capacité générative remarquable des modèles texte-vers-image (T2I) à grande échelle a démontré une forte puissance d’apprentissage des structures complexes et des sémantiques significatives. Cependant, s’appuyer uniquement sur des prompts textuels ne permet pas d’exploiter pleinement les connaissances acquises par le modèle, en particulier lorsqu’un contrôle flexible et précis (par exemple, la couleur et la structure) est nécessaire. Dans cet article, nous visons à « extraire » les capacités que les modèles T2I ont implicitement apprises, puis à les utiliser explicitement pour contrôler la génération de manière plus granulaire. Plus précisément, nous proposons d’apprendre des T2I-Adapters simples et légers pour aligner les connaissances internes des modèles T2I avec des signaux de contrôle externes, tout en figeant les grands modèles T2I d’origine. De cette manière, nous pouvons entraîner divers adaptateurs en fonction de différentes conditions, obtenant ainsi des effets de contrôle et d’édition riches sur la couleur et la structure des résultats générés. De plus, les T2I-Adapters proposés possèdent des propriétés attrayantes d’une valeur pratique, telles que la composabilité et la capacité de généralisation. Des expériences étendues démontrent que notre T2I-Adapter offre une qualité de génération prometteuse et un large éventail d’applications.* | |
| Ce modèle a été contribué par le contributeur de la communauté [HimariO](https://github.com/HimariO) ❤️ . | |
| ## StableDiffusionAdapterPipeline[[diffusers.StableDiffusionAdapterPipeline]] | |
| #### diffusers.StableDiffusionAdapterPipeline[[diffusers.StableDiffusionAdapterPipeline]] | |
| ```python | |
| diffusers.StableDiffusionAdapterPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, tokenizer: CLIPTokenizer, unet: UNet2DConditionModel, adapter: diffusers.models.adapter.T2IAdapter | diffusers.models.adapter.MultiAdapter | list[diffusers.models.adapter.T2IAdapter], scheduler: KarrasDiffusionSchedulers, safety_checker: StableDiffusionSafetyChecker, feature_extractor: CLIPImageProcessorPil, requires_safety_checker: bool = True) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/t2i_adapter/pipeline_stable_diffusion_adapter.py#L191) | |
| **Paramètres :** | |
| adapter (`T2IAdapter` ou `MultiAdapter` ou `list[T2IAdapter]`) : Fournit un conditionnement supplémentaire au unet pendant le processus de débruitage. Si vous définissez plusieurs Adapter sous forme de liste, les sorties de chaque Adapter sont additionnées pour créer un conditionnement supplémentaire combiné. | |
| adapter_weights (`list[float]`, *facultatif*, valeur par défaut None) : liste de flottants représentant le poids qui sera multiplié à la sortie de chaque adaptateur avant de les additionner. | |
| vae ([AutoencoderKL](/docs/diffusers/main/fr/api/models/autoencoderkl#diffusers.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](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModel), plus précisément la variante [clip-vit-large-patch14](https://huggingface.co/openai/clip-vit-large-patch14). | |
| tokenizer (`CLIPTokenizer`) : Tokenizer de la classe [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer). | |
| unet ([UNet2DConditionModel](/docs/diffusers/main/fr/api/models/unet2d-cond#diffusers.UNet2DConditionModel)) : architecture U-Net conditionnelle pour le débruitage des latents d'image encodés. | |
| scheduler ([SchedulerMixin](/docs/diffusers/main/fr/api/schedulers/overview#diffusers.SchedulerMixin)) : Un planificateur à utiliser en combinaison avec `unet` pour débruyer les latents de l'image encodée. Peut être l'un des [DDIMScheduler](/docs/diffusers/main/fr/api/schedulers/ddim#diffusers.DDIMScheduler), [LMSDiscreteScheduler](/docs/diffusers/main/fr/api/schedulers/lms_discrete#diffusers.LMSDiscreteScheduler) ou [PNDMScheduler](/docs/diffusers/main/fr/api/schedulers/pndm#diffusers.PNDMScheduler). | |
| 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 du modèle](https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5) pour plus de détails. | |
| feature_extractor (`CLIPImageProcessor`) : Modèle qui extrait les caractéristiques des images générées pour être utilisées comme entrées pour le `safety_checker`. | |
| Pipeline de génération d'images à partir de texte utilisant Stable Diffusion, enrichi avec T2I-Adapter https://huggingface.co/papers/2302.08453 | |
| Ce modèle hérite de [DiffusionPipeline](/docs/diffusers/main/fr/api/pipelines/overview#diffusers.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 (téléchargement ou sauvegarde, exécution sur un appareil particulier, etc.). | |
| #### __appel__[[diffusers.StableDiffusionAdapterPipeline.__call__]] | |
| ```python | |
| __call__(prompt: str | list[str] = None, image: typing.Union[torch.Tensor, PIL.Image.Image, list[PIL.Image.Image]] = None, height: int | None = None, width: int | None = None, num_inference_steps: int = 50, timesteps: list[int] = None, sigmas: list[float] = None, guidance_scale: float = 7.5, negative_prompt: str | list[str] | None = None, num_images_per_prompt: int | None = 1, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, callback: typing.Optional[typing.Callable[[int, int, torch.Tensor], NoneType]] = None, callback_steps: int = 1, cross_attention_kwargs: dict[str, typing.Any] | None = None, adapter_conditioning_scale: float | list[float] = 1.0, clip_skip: int | None = None) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/t2i_adapter/pipeline_stable_diffusion_adapter.py#L689) | |
| **Paramètres :** | |
| prompt (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts pour guider la génération d’image. S’il n’est pas défini, il faut passer `prompt_embeds` à la place. | |
| image (`torch.Tensor`, `PIL.Image.Image`, `list[torch.Tensor]` ou `list[PIL.Image.Image]` ou `list[list[PIL.Image.Image]]`) : La condition d’entrée de l’Adapter. L’Adapter utilise cette condition d’entrée pour générer des directives pour le Unet. Si le type est spécifié comme `torch.Tensor`, il est transmis à l’Adapter tel quel. PIL.Image.Image` peut également être accepté en tant qu’image. L’image de contrôle est redimensionnée automatiquement pour correspondre à l’image de sortie. | |
| 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. | |
| 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*) : Étapes de temps personnalisées à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argument `timesteps` dans leur méthode `set_timesteps`. S'il n'est pas défini, le comportement par défaut lorsque `num_inference_steps` est 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 argument `sigmas` dans leur méthode `set_timesteps`. S'ils ne sont pas définis, le comportement par défaut lorsque `num_inference_steps` est passé sera utilisé. | |
| guidance_scale (`float`, *facultatif*, valeur par défaut 7,5) : Échelle de guidage telle que définie dans [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598). `guidance_scale` est défini comme `w` de l'équation 2. de [Imagen Paper](https://huggingface.co/papers/2205.11487). L'échelle de guidage est activée en définissant `guidance_scale > 1`. Une échelle de guidage plus élevée encourage la génération d'images étroitement liées au `prompt` texte, généralement au détriment de la qualité de l'image. | |
| negative_prompt (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts à ne pas utiliser pour guider la génération de l'image. S'il n'est pas défini, il faut passer `negative_prompt_embeds` à la place. 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`). | |
| 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. S'applique uniquement à [schedulers.DDIMScheduler](/docs/diffusers/main/fr/api/schedulers/ddim#diffusers.DDIMScheduler), sera ignoré pour les autres. | |
| generator (`torch.Generator` ou `list[torch.Generator]`, *facultatif*) : Un ou une liste de [générateurs torch](https://pytorch.org/docs/stable/generated/torch.Generator.html) 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 du `generator` aléatoire fourni. | |
| prompt_embeds (`torch.Tensor`, *facultatif*) : Incrustations de texte pré-générées. Peut être utilisé pour ajuster facilement les entrées de texte, *par ex.* pondération des prompts. Si non fourni, les incrustations de texte seront générées à partir de l'argument d'entrée `prompt`. | |
| negative_prompt_embeds (`torch.Tensor`, *facultatif*) : Embeddings de texte négatif pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, *par exemple* 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`. | |
| output_type (`str`, *facultatif*, par défaut `"pil"`) : Le format de sortie de l'image générée. Choisissez entre [PIL](https://pillow.readthedocs.io/en/stable/) : `PIL.Image.Image` ou `np.array`. | |
| return_dict (`bool`, *facultatif*, par défaut `True`) : Indique s'il faut retourner un `~pipelines.stable_diffusion.StableDiffusionAdapterPipelineOutput` plutôt qu'un simple tuple. | |
| callback (`Callable`, *facultatif*) : une fonction qui sera appelée toutes les `callback_steps` étapes pendant l'inférence. La fonction sera appelée avec les arguments suivants : `callback(step: int, timestep: int, latents: torch.Tensor)`. | |
| callback_steps (`int`, *facultatif*, valeur par défaut 1) : La fréquence à laquelle la fonction `callback` sera appelée. Si non spécifié, le callback sera appelé à chaque étape. | |
| cross_attention_kwargs (`dict`, *facultatif*) : Un dictionnaire de kwargs qui, s'il est spécifié, est transmis à `AttnProcessor` tel que défini sous `self.processor` dans [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py). | |
| adapter_conditioning_scale (`float` ou `list[float]`, *facultatif*, par défaut 1.0) : Les sorties de l’adaptateur sont multipliées par `adapter_conditioning_scale` avant d’être ajoutées au résidu dans le unet d’origine. Si plusieurs adaptateurs sont spécifiés lors de l’initialisation, vous pouvez définir l’échelle correspondante sous forme de liste. | |
| clip_skip (`int`, *facultatif*) : Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de prompt. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de prompt. | |
| **Retourne :** `~pipelines.stable_diffusion.StableDiffusionAdapterPipelineOutput` ou `tuple` | |
| `~pipelines.stable_diffusion.StableDiffusionAdapterPipelineOutput` 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 `bool`s denoting whether the corresponding generated image likely represents "not-safe-for-work" (nsfw) content, according to the `safety_checker`. | |
| Fonction appelée lors de l'appel du pipeline pour la génération. | |
| Exemples : | |
| ```py | |
| >>> from PIL import Image | |
| >>> from diffusers.utils import load_image | |
| >>> import torch | |
| >>> from diffusers import StableDiffusionAdapterPipeline, T2IAdapter | |
| >>> image = load_image( | |
| ... "https://huggingface.co/datasets/diffusers/docs-images/resolve/main/t2i-adapter/color_ref.png" | |
| ... ) | |
| >>> color_palette = image.resize((8, 8)) | |
| >>> color_palette = color_palette.resize((512, 512), resample=Image.Resampling.NEAREST) | |
| >>> adapter = T2IAdapter.from_pretrained("TencentARC/t2iadapter_color_sd14v1", torch_dtype=torch.float16) | |
| >>> pipe = StableDiffusionAdapterPipeline.from_pretrained( | |
| ... "CompVis/stable-diffusion-v1-4", | |
| ... adapter=adapter, | |
| ... torch_dtype=torch.float16, | |
| ... ) | |
| >>> pipe.to("cuda") | |
| >>> out_image = pipe( | |
| ... "At night, glowing cubes in front of the beach", | |
| ... image=color_palette, | |
| ... ).images[0] | |
| ``` | |
| #### enable_attention_slicing[[diffusers.StableDiffusionAdapterPipeline.enable_attention_slicing]] | |
| ```python | |
| enable_attention_slicing(slice_size: str | int = 'auto') | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L2030) | |
| **Paramètres :** | |
| slice_size (`str` ou `int`, *facultatif*, par défaut `"auto"`) : lorsque la valeur est `"auto"`, l’entrée des têtes d’attention est divisée par deux, de sorte que l’attention est calculée en deux étapes. Si la valeur est `"max"`, la quantité maximale de mémoire est économisée en n’exécutant qu’une seule tranche à la fois. Si un nombre est fourni, autant de tranches sont utilisées que `attention_head_dim // slice_size`. Dans ce cas, `attention_head_dim` doit être un multiple de `slice_size`. | |
| Active le calcul de l'attention par tranches. Lorsque cette option est activée, le module d'attention divise le tenseur d'entrée en tranches pour calculer l'attention en plusieurs étapes. Pour plus d'une tête d'attention, le calcul est effectué séquentiellement sur chaque tête. Cela est utile pour économiser de la mémoire au prix d'une légère diminution de la vitesse. | |
| > [!WARNING] > ⚠️ N'activez pas le tranchage de l'attention si vous utilisez déjà `scaled_dot_product_attention` (SDPA) | |
| de PyTorch > 2.0 ou xFormers. Ces calculs d'attention sont déjà très économes en mémoire, vous n'aurez donc pas besoin d'activer > cette fonction. Si vous activez le tranchage de l'attention avec SDPA ou xFormers, cela peut entraîner des ralentissements importants ! | |
| Exemples : | |
| ```py | |
| >>> import torch | |
| >>> from diffusers import StableDiffusionPipeline | |
| >>> pipe = StableDiffusionPipeline.from_pretrained( | |
| ... "stable-diffusion-v1-5/stable-diffusion-v1-5", | |
| ... dtype=torch.float16, | |
| ... use_safetensors=True, | |
| ... ) | |
| >>> prompt = "a photo of an astronaut riding a horse on mars" | |
| >>> pipe.enable_attention_slicing() | |
| >>> image = pipe(prompt).images[0] | |
| ``` | |
| #### disable_attention_slicing[[diffusers.StableDiffusionAdapterPipeline.disable_attention_slicing]] | |
| ```python | |
| disable_attention_slicing() | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L2067) | |
| Désactive le calcul de l'attention par tranches. Si `enable_attention_slicing` a été appelé précédemment, l'attention est calculée en une seule étape. | |
| #### enable_xformers_memory_efficient_attention[[diffusers.StableDiffusionAdapterPipeline.enable_xformers_memory_efficient_attention]] | |
| ```python | |
| enable_xformers_memory_efficient_attention(attention_op: typing.Optional[typing.Callable] = None) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L1975) | |
| **Paramètres :** | |
| attention_op (`Callable`, *facultatif*) : Remplace l'opérateur par défaut `None` pour être utilisé comme argument `op` de la fonction [`memory_efficient_attention()`](https://facebookresearch.github.io/xformers/components/ops.html#xformers.ops.memory_efficient_attention) de xFormers. | |
| Activer l’attention efficace en mémoire de [xFormers](https://facebookresearch.github.io/xformers/). Lorsque cette option est activée, vous devriez observer une réduction de l’utilisation de la mémoire GPU et une accélération potentielle lors de l’inférence. L’accélération lors de l’entraînement n’est pas garantie. | |
| > [!WARNING] > ⚠️ Lorsque l'attention efficace en mémoire et l'attention par tranches sont toutes deux activées, l'attention efficace | |
| attention prend > précédent. | |
| Exemples : | |
| ```py | |
| >>> import torch | |
| >>> from diffusers import DiffusionPipeline | |
| >>> from xformers.ops import MemoryEfficientAttentionFlashAttentionOp | |
| >>> pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-2-1", dtype=torch.float16) | |
| >>> pipe = pipe.to("cuda") | |
| >>> pipe.enable_xformers_memory_efficient_attention(attention_op=MemoryEfficientAttentionFlashAttentionOp) | |
| >>> # Workaround for not accepting attention shape using VAE for Flash Attention | |
| >>> pipe.vae.enable_xformers_memory_efficient_attention(attention_op=None) | |
| ``` | |
| #### disable_xformers_memory_efficient_attention[[diffusers.StableDiffusionAdapterPipeline.disable_xformers_memory_efficient_attention]] | |
| ```python | |
| disable_xformers_memory_efficient_attention() | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L2006) | |
| Désactiver l'attention efficace en mémoire de [xFormers](https://facebookresearch.github.io/xformers/). | |
| #### encode_prompt[[diffusers.StableDiffusionAdapterPipeline.encode_prompt]] | |
| ```python | |
| encode_prompt(prompt, device, num_images_per_prompt, do_classifier_free_guidance, negative_prompt = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, lora_scale: float | None = None, clip_skip: int | None = None) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/t2i_adapter/pipeline_stable_diffusion_adapter.py#L311) | |
| **Paramètres :** | |
| prompt (`str` ou `list[str]`, *facultatif*) : invite à encoder | |
| device : (`torch.device`) : appareil torch | |
| num_images_per_prompt (`int`) : nombre d'images à générer par invite | |
| do_classifier_free_guidance (`bool`) : indique s'il faut utiliser le guidage sans classifieur ou non | |
| negative_prompt (`str` ou `list[str]`, *facultatif*) : Le prompt 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`). | |
| prompt_embeds (`torch.Tensor`, *facultatif*) : Incrustations de texte pré-générées. Peut être utilisé pour ajuster facilement les entrées de texte, *par ex.* pondération des prompts. Si non fourni, les incrustations de texte seront générées à partir de l'argument d'entrée `prompt`. | |
| negative_prompt_embeds (`torch.Tensor`, *facultatif*) : Embeddings de texte négatif pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, *par exemple* 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*) : une échelle LoRA qui sera appliquée à 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 prompt. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de prompt. | |
| Encode le prompt dans les états cachés de l'encodeur de texte. | |
| #### get_guidance_scale_embedding[[diffusers.StableDiffusionAdapterPipeline.get_guidance_scale_embedding]] | |
| ```python | |
| get_guidance_scale_embedding(w: Tensor, embedding_dim: int = 512, dtype: dtype = torch.float32) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/t2i_adapter/pipeline_stable_diffusion_adapter.py#L648) | |
| **Paramètres :** | |
| w (`torch.Tensor`) : Génère des vecteurs d'incorporation avec une échelle de guidage spécifiée afin d'enrichir par la suite 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 | |
| ## StableDiffusionXLAdapterPipeline[[diffusers.StableDiffusionXLAdapterPipeline]] | |
| #### diffusers.StableDiffusionXLAdapterPipeline[[diffusers.StableDiffusionXLAdapterPipeline]] | |
| ```python | |
| diffusers.StableDiffusionXLAdapterPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, text_encoder_2: CLIPTextModelWithProjection, tokenizer: CLIPTokenizer, tokenizer_2: CLIPTokenizer, unet: UNet2DConditionModel, adapter: diffusers.models.adapter.T2IAdapter | diffusers.models.adapter.MultiAdapter | list[diffusers.models.adapter.T2IAdapter], scheduler: KarrasDiffusionSchedulers, force_zeros_for_empty_prompt: bool = True, feature_extractor: CLIPImageProcessorPil = None, image_encoder: CLIPVisionModelWithProjection = None) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/t2i_adapter/pipeline_stable_diffusion_xl_adapter.py#L213) | |
| **Paramètres :** | |
| adapter (`T2IAdapter` ou `MultiAdapter` ou `list[T2IAdapter]`) : Fournit un conditionnement supplémentaire au unet pendant le processus de débruitage. Si vous définissez plusieurs Adapter sous forme de liste, les sorties de chaque Adapter sont additionnées pour créer un conditionnement supplémentaire combiné. | |
| adapter_weights (`list[float]`, *facultatif*, valeur par défaut None) : liste de flottants représentant le poids qui sera multiplié à la sortie de chaque adaptateur avant de les additionner. | |
| vae ([AutoencoderKL](/docs/diffusers/main/fr/api/models/autoencoderkl#diffusers.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](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModel), plus précisément la variante [clip-vit-large-patch14](https://huggingface.co/openai/clip-vit-large-patch14). | |
| tokenizer (`CLIPTokenizer`) : Tokenizer de la classe [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer). | |
| unet ([UNet2DConditionModel](/docs/diffusers/main/fr/api/models/unet2d-cond#diffusers.UNet2DConditionModel)) : architecture U-Net conditionnelle pour le débruitage des latents d'image encodés. | |
| scheduler ([SchedulerMixin](/docs/diffusers/main/fr/api/schedulers/overview#diffusers.SchedulerMixin)) : Un planificateur à utiliser en combinaison avec `unet` pour débruyer les latents de l'image encodée. Peut être l'un des [DDIMScheduler](/docs/diffusers/main/fr/api/schedulers/ddim#diffusers.DDIMScheduler), [LMSDiscreteScheduler](/docs/diffusers/main/fr/api/schedulers/lms_discrete#diffusers.LMSDiscreteScheduler) ou [PNDMScheduler](/docs/diffusers/main/fr/api/schedulers/pndm#diffusers.PNDMScheduler). | |
| 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 du modèle](https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5) pour plus de détails. | |
| feature_extractor (`CLIPImageProcessor`) : Modèle qui extrait les caractéristiques des images générées pour être utilisées comme entrées pour le `safety_checker`. | |
| Pipeline de génération d'images à partir de texte utilisant Stable Diffusion, enrichi avec T2I-Adapter https://huggingface.co/papers/2302.08453 | |
| Ce modèle hérite de [DiffusionPipeline](/docs/diffusers/main/fr/api/pipelines/overview#diffusers.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 (téléchargement ou sauvegarde, exécution sur un appareil particulier, etc.). | |
| Le pipeline hérite également des méthodes de chargement suivantes : | |
| - [load_textual_inversion()](/docs/diffusers/main/fr/api/loaders/textual_inversion#diffusers.loaders.TextualInversionLoaderMixin.load_textual_inversion) pour charger les embeddings d'inversion textuelle | |
| - [from_single_file()](/docs/diffusers/main/fr/api/loaders/single_file#diffusers.loaders.FromSingleFileMixin.from_single_file) pour charger des fichiers `.ckpt` | |
| - [load_lora_weights()](/docs/diffusers/main/fr/api/loaders/lora#diffusers.loaders.StableDiffusionXLLoraLoaderMixin.load_lora_weights) pour charger les poids LoRA | |
| - [save_lora_weights()](/docs/diffusers/main/fr/api/loaders/lora#diffusers.loaders.StableDiffusionXLLoraLoaderMixin.save_lora_weights) pour enregistrer les poids LoRA | |
| - [load_ip_adapter()](/docs/diffusers/main/fr/api/loaders/ip_adapter#diffusers.loaders.IPAdapterMixin.load_ip_adapter) pour charger des IP Adapters | |
| #### __appel__[[diffusers.StableDiffusionXLAdapterPipeline.__call__]] | |
| ```python | |
| __call__(prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, height: int | None = None, width: int | None = None, num_inference_steps: int = 50, timesteps: list[int] = None, sigmas: list[float] = None, denoising_end: float | None = None, guidance_scale: float = 5.0, negative_prompt: str | list[str] | None = None, negative_prompt_2: str | list[str] | None = None, num_images_per_prompt: int | None = 1, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: list[torch.Tensor] | None = None, output_type: str | None = 'pil', return_dict: bool = True, callback: typing.Optional[typing.Callable[[int, int, torch.Tensor], NoneType]] = None, callback_steps: int = 1, cross_attention_kwargs: dict[str, typing.Any] | None = None, guidance_rescale: float = 0.0, original_size: tuple[int, int] | None = None, crops_coords_top_left: tuple[int, int] = (0, 0), target_size: tuple[int, int] | None = None, negative_original_size: tuple[int, int] | None = None, negative_crops_coords_top_left: tuple[int, int] = (0, 0), negative_target_size: tuple[int, int] | None = None, adapter_conditioning_scale: float | list[float] = 1.0, adapter_conditioning_factor: float = 1.0, clip_skip: int | None = None) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/t2i_adapter/pipeline_stable_diffusion_xl_adapter.py#L858) | |
| **Paramètres :** | |
| prompt (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts pour guider la génération d’image. S’il n’est pas défini, il faut passer `prompt_embeds` à la place. | |
| prompt_2 (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts à envoyer au `tokenizer_2` et au `text_encoder_2`. S'il n'est pas défini, `prompt` est utilisé dans les deux text-encoders | |
| image (`torch.Tensor`, `PIL.Image.Image`, `list[torch.Tensor]` ou `list[PIL.Image.Image]` ou `list[list[PIL.Image.Image]]`) : La condition d’entrée de l’Adapter. L’Adapter utilise cette condition d’entrée pour générer des directives pour le Unet. Si le type est spécifié comme `torch.Tensor`, il est transmis à l’Adapter tel quel. PIL.Image.Image` peut également être accepté en tant qu’image. L’image de contrôle est redimensionnée automatiquement pour correspondre à l’image de sortie. | |
| 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. Tout ce qui est inférieur à 512 pixels ne fonctionnera pas bien avec [stabilityai/stable-diffusion-xl-base-1.0](https://huggingface.co/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 self.unet.config.sample_size * self.vae_scale_factor) : La largeur en pixels de l'image générée. Tout ce qui est inférieur à 512 pixels ne fonctionnera pas bien avec [stabilityai/stable-diffusion-xl-base-1.0](https://huggingface.co/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*) : Étapes de temps personnalisées à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argument `timesteps` dans leur méthode `set_timesteps`. S'il n'est pas défini, le comportement par défaut lorsque `num_inference_steps` est 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 argument `sigmas` dans leur méthode `set_timesteps`. S'ils ne sont pas définis, le comportement par défaut lorsque `num_inference_steps` est 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 à achever 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 détaillé dans [**Refining the Image Output**](https://huggingface.co/docs/diffusers/api/pipelines/stable_diffusion/stable_diffusion_xl#refining-the-image-output) | |
| guidance_scale (`float`, *facultatif*, valeur par défaut 5.0) : Échelle de guidage telle que définie dans [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598). `guidance_scale` est défini comme `w` de l'équation 2. de [Imagen Paper](https://huggingface.co/papers/2205.11487). L'échelle de guidage est activée en définissant `guidance_scale > 1`. Une échelle de guidage plus élevée encourage la génération d'images étroitement liées au `prompt` texte, généralement au détriment de la qualité de l'image. | |
| negative_prompt (`str` ou `list[str]`, *facultatif*) : Le prompt 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_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. S'applique uniquement à [schedulers.DDIMScheduler](/docs/diffusers/main/fr/api/schedulers/ddim#diffusers.DDIMScheduler), sera ignoré pour les autres. | |
| generator (`torch.Generator` ou `list[torch.Generator]`, *facultatif*) : Un ou une liste de [générateurs torch](https://pytorch.org/docs/stable/generated/torch.Generator.html) 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 du `generator` aléatoire fourni. | |
| prompt_embeds (`torch.Tensor`, *facultatif*) : Incrustations de texte pré-générées. Peut être utilisé pour ajuster facilement les entrées de texte, *par ex.* pondération des prompts. Si non fourni, les incrustations de texte seront générées à partir de l'argument d'entrée `prompt`. | |
| negative_prompt_embeds (`torch.Tensor`, *facultatif*) : Embeddings de texte négatif pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, *par exemple* 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`. | |
| pooled_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_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, pooled negative_prompt_embeds sera généré à 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. | |
| ip_adapter_image_embeds (`list[torch.Tensor]`, *facultatif*) : Incrustations d’images pré-générées 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’incrustation d’image négative si `do_classifier_free_guidance` est défini sur `True`. S’il n’est pas fourni, les incrustations sont calculées à partir de l’argument d’entrée `ip_adapter_image`. | |
| output_type (`str`, *facultatif*, par défaut `"pil"`) : Le format de sortie de l'image générée. Choisissez entre [PIL](https://pillow.readthedocs.io/en/stable/) : `PIL.Image.Image` ou `np.array`. | |
| return_dict (`bool`, *facultatif*, par défaut `True`) : Indique s'il faut retourner un `~pipelines.stable_diffusion_xl.StableDiffusionAdapterPipelineOutput` plutôt qu'un simple tuple. | |
| callback (`Callable`, *facultatif*) : une fonction qui sera appelée toutes les `callback_steps` étapes pendant l'inférence. La fonction sera appelée avec les arguments suivants : `callback(step: int, timestep: int, latents: torch.Tensor)`. | |
| callback_steps (`int`, *facultatif*, valeur par défaut 1) : La fréquence à laquelle la fonction `callback` sera appelée. Si non spécifié, le callback sera appelé à chaque étape. | |
| cross_attention_kwargs (`dict`, *facultatif*) : Un dictionnaire de kwargs qui, s'il est spécifié, est transmis à l'`AttentionProcessor` tel que défini sous `self.processor` dans [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py). | |
| guidance_rescale (`float`, *facultatif*, valeur par défaut 0.0) : Facteur de rééchelonnement du guidage proposé par [Common Diffusion Noise Schedules and Sample Steps are Flawed](https://huggingface.co/papers/2305.08891) `guidance_scale` est défini comme `φ` dans l'équation 16. de [Common Diffusion Noise Schedules and Sample Steps are Flawed](https://huggingface.co/papers/2305.08891). Le facteur de rééchelonnement du guidage doit corriger l'exposition excessive lors de l'utilisation d'un SNR terminal nul. | |
| original_size (`tuple[int]`, *facultatif*, valeur par défaut (1024, 1024)) : Si `original_size` n'est pas identique à `target_size`, l'image apparaîtra sous-échantillonnée ou suréchantillonnée. `original_size` est défini par défaut sur `(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](https://huggingface.co/papers/2307.01952). | |
| crops_coords_top_left (`tuple[int]`, *facultatif*, valeur 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 favorables et bien 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](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 `(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](https://huggingface.co/papers/2307.01952). section 2.2 de [https://huggingface.co/papers/2307.01952](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 dans la section 2.2 de [https://huggingface.co/papers/2307.01952](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 dans la section 2.2 de [https://huggingface.co/papers/2307.01952](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_size` dans 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](https://huggingface.co/papers/2307.01952). Pour plus d'informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208. | |
| adapter_conditioning_scale (`float` ou `list[float]`, *facultatif*, par défaut 1.0) : Les sorties de l’adaptateur sont multipliées par `adapter_conditioning_scale` avant d’être ajoutées au résidu dans le unet d’origine. Si plusieurs adaptateurs sont spécifiés lors de l’initialisation, vous pouvez définir l’échelle correspondante sous forme de liste. | |
| adapter_conditioning_factor (`float`, *facultatif*, valeur par défaut 1.0) : La fraction de timesteps pour laquelle l'adaptateur doit être appliqué. Si `adapter_conditioning_factor` est `0.0`, l'adaptateur n'est pas appliqué du tout. Si `adapter_conditioning_factor` est `1.0`, l'adaptateur est appliqué pour tous les timesteps. Si `adapter_conditioning_factor` est `0.5`, l'adaptateur est appliqué pour la moitié des timesteps. | |
| clip_skip (`int`, *facultatif*) : Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de prompt. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de prompt. | |
| **Retourne :** `~pipelines.stable_diffusion.StableDiffusionAdapterPipelineOutput` ou `tuple` | |
| `~pipelines.stable_diffusion.StableDiffusionAdapterPipelineOutput` si `return_dict` est True, sinon un `tuple`. En cas de 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 : | |
| ```py | |
| >>> import torch | |
| >>> from diffusers import T2IAdapter, StableDiffusionXLAdapterPipeline, DDPMScheduler | |
| >>> from diffusers.utils import load_image | |
| >>> sketch_image = load_image("https://huggingface.co/Adapter/t2iadapter/resolve/main/sketch.png").convert("L") | |
| >>> model_id = "stabilityai/stable-diffusion-xl-base-1.0" | |
| >>> adapter = T2IAdapter.from_pretrained( | |
| ... "Adapter/t2iadapter", | |
| ... subfolder="sketch_sdxl_1.0", | |
| ... torch_dtype=torch.float16, | |
| ... adapter_type="full_adapter_xl", | |
| ... ) | |
| >>> scheduler = DDPMScheduler.from_pretrained(model_id, subfolder="scheduler") | |
| >>> pipe = StableDiffusionXLAdapterPipeline.from_pretrained( | |
| ... model_id, adapter=adapter, torch_dtype=torch.float16, variant="fp16", scheduler=scheduler | |
| ... ).to("cuda") | |
| >>> generator = torch.manual_seed(42) | |
| >>> sketch_image_out = pipe( | |
| ... prompt="a photo of a dog in real world, high quality", | |
| ... negative_prompt="extra digit, fewer digits, cropped, worst quality, low quality", | |
| ... image=sketch_image, | |
| ... generator=generator, | |
| ... guidance_scale=7.5, | |
| ... ).images[0] | |
| ``` | |
| #### enable_attention_slicing[[diffusers.StableDiffusionXLAdapterPipeline.enable_attention_slicing]] | |
| ```python | |
| enable_attention_slicing(slice_size: str | int = 'auto') | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L2030) | |
| **Paramètres :** | |
| slice_size (`str` ou `int`, *facultatif*, par défaut `"auto"`) : lorsque la valeur est `"auto"`, l’entrée des têtes d’attention est divisée par deux, de sorte que l’attention est calculée en deux étapes. Si la valeur est `"max"`, la quantité maximale de mémoire est économisée en n’exécutant qu’une seule tranche à la fois. Si un nombre est fourni, autant de tranches sont utilisées que `attention_head_dim // slice_size`. Dans ce cas, `attention_head_dim` doit être un multiple de `slice_size`. | |
| Active le calcul de l'attention par tranches. Lorsque cette option est activée, le module d'attention divise le tenseur d'entrée en tranches pour calculer l'attention en plusieurs étapes. Pour plus d'une tête d'attention, le calcul est effectué séquentiellement sur chaque tête. Cela est utile pour économiser de la mémoire au prix d'une légère diminution de la vitesse. | |
| > [!WARNING] > ⚠️ N'activez pas le tranchage de l'attention si vous utilisez déjà `scaled_dot_product_attention` (SDPA) | |
| de PyTorch > 2.0 ou xFormers. Ces calculs d'attention sont déjà très économes en mémoire, vous n'aurez donc pas besoin d'activer > cette fonction. Si vous activez le tranchage de l'attention avec SDPA ou xFormers, cela peut entraîner des ralentissements importants ! | |
| Exemples : | |
| ```py | |
| >>> import torch | |
| >>> from diffusers import StableDiffusionPipeline | |
| >>> pipe = StableDiffusionPipeline.from_pretrained( | |
| ... "stable-diffusion-v1-5/stable-diffusion-v1-5", | |
| ... dtype=torch.float16, | |
| ... use_safetensors=True, | |
| ... ) | |
| >>> prompt = "a photo of an astronaut riding a horse on mars" | |
| >>> pipe.enable_attention_slicing() | |
| >>> image = pipe(prompt).images[0] | |
| ``` | |
| #### disable_attention_slicing[[diffusers.StableDiffusionXLAdapterPipeline.disable_attention_slicing]] | |
| ```python | |
| disable_attention_slicing() | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L2067) | |
| Désactive le calcul de l'attention par tranches. Si `enable_attention_slicing` a été appelé précédemment, l'attention est calculée en une seule étape. | |
| #### enable_xformers_memory_efficient_attention[[diffusers.StableDiffusionXLAdapterPipeline.enable_xformers_memory_efficient_attention]] | |
| ```python | |
| enable_xformers_memory_efficient_attention(attention_op: typing.Optional[typing.Callable] = None) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L1975) | |
| **Paramètres :** | |
| attention_op (`Callable`, *facultatif*) : Remplace l'opérateur par défaut `None` pour être utilisé comme argument `op` de la fonction [`memory_efficient_attention()`](https://facebookresearch.github.io/xformers/components/ops.html#xformers.ops.memory_efficient_attention) de xFormers. | |
| Activer l’attention efficace en mémoire de [xFormers](https://facebookresearch.github.io/xformers/). Lorsque cette option est activée, vous devriez observer une réduction de l’utilisation de la mémoire GPU et une accélération potentielle lors de l’inférence. L’accélération lors de l’entraînement n’est pas garantie. | |
| > [!WARNING] > ⚠️ Lorsque l'attention efficace en mémoire et l'attention par tranches sont toutes deux activées, l'attention efficace | |
| attention prend > précédent. | |
| Exemples : | |
| ```py | |
| >>> import torch | |
| >>> from diffusers import DiffusionPipeline | |
| >>> from xformers.ops import MemoryEfficientAttentionFlashAttentionOp | |
| >>> pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-2-1", dtype=torch.float16) | |
| >>> pipe = pipe.to("cuda") | |
| >>> pipe.enable_xformers_memory_efficient_attention(attention_op=MemoryEfficientAttentionFlashAttentionOp) | |
| >>> # Workaround for not accepting attention shape using VAE for Flash Attention | |
| >>> pipe.vae.enable_xformers_memory_efficient_attention(attention_op=None) | |
| ``` | |
| #### disable_xformers_memory_efficient_attention[[diffusers.StableDiffusionXLAdapterPipeline.disable_xformers_memory_efficient_attention]] | |
| ```python | |
| disable_xformers_memory_efficient_attention() | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L2006) | |
| Désactiver l'attention efficace en mémoire de [xFormers](https://facebookresearch.github.io/xformers/). | |
| #### encode_prompt[[diffusers.StableDiffusionXLAdapterPipeline.encode_prompt]] | |
| ```python | |
| encode_prompt(prompt: str, prompt_2: str | None = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, do_classifier_free_guidance: bool = True, negative_prompt: str | None = None, negative_prompt_2: str | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, lora_scale: float | None = None, clip_skip: int | None = None) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/t2i_adapter/pipeline_stable_diffusion_xl_adapter.py#L311) | |
| **Paramètres :** | |
| prompt (`str` ou `list[str]`, *facultatif*) : invite à encoder | |
| prompt_2 (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts à envoyer au `tokenizer_2` et au `text_encoder_2`. S'il n'est pas défini, `prompt` est utilisé dans les deux text-encoders | |
| device : (`torch.device`) : appareil torch | |
| num_images_per_prompt (`int`) : nombre d'images à générer par invite | |
| do_classifier_free_guidance (`bool`) : indique s'il faut utiliser le guidage sans classifieur ou non | |
| negative_prompt (`str` ou `list[str]`, *facultatif*) : Le prompt 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 | |
| prompt_embeds (`torch.Tensor`, *facultatif*) : Incrustations de texte pré-générées. Peut être utilisé pour ajuster facilement les entrées de texte, *par ex.* pondération des prompts. Si non fourni, les incrustations de texte seront générées à partir de l'argument d'entrée `prompt`. | |
| negative_prompt_embeds (`torch.Tensor`, *facultatif*) : Embeddings de texte négatif pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, *par exemple* 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`. | |
| pooled_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_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, pooled negative_prompt_embeds sera généré à partir de l'argument d'entrée `negative_prompt`. | |
| lora_scale (`float`, *facultatif*) : Échelle LoRA appliquée à 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 prompt. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de prompt. | |
| Encode le prompt dans les états cachés de l'encodeur de texte. | |
| #### get_guidance_scale_embedding[[diffusers.StableDiffusionXLAdapterPipeline.get_guidance_scale_embedding]] | |
| ```python | |
| get_guidance_scale_embedding(w: Tensor, embedding_dim: int = 512, dtype: dtype = torch.float32) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/t2i_adapter/pipeline_stable_diffusion_xl_adapter.py#L817) | |
| **Paramètres :** | |
| w (`torch.Tensor`) : Génère des vecteurs d'incorporation avec une échelle de guidage spécifiée afin d'enrichir par la suite 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 | |
Xet Storage Details
- Size:
- 53.2 kB
- Xet hash:
- 91baacb0ef23767bc83c23b0e748a0f638b04dda9376844cb030893a30af10d8
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.