Buckets:
| # ControlNet avec Stable Diffusion XL | |
| ControlNet a été introduit dans [Adding Conditional Control to Text-to-Image Diffusion Models](https://huggingface.co/papers/2302.05543) par Lvmin Zhang, Anyi Rao et Maneesh Agrawala. | |
| Avec un modèle ControlNet, vous pouvez fournir une image de contrôle supplémentaire pour conditionner et contrôler la génération de Stable Diffusion. Par exemple, si vous fournissez une carte de profondeur, le modèle ControlNet génère une image qui préserve les informations spatiales de la carte de profondeur. C'est une méthode plus flexible et plus précise pour contrôler le processus de génération d'images. | |
| L'abstract de l'article est : | |
| *Nous présentons ControlNet, une architecture de réseau de neurones permettant d’ajouter des contrôles de conditionnement spatial à de grands modèles de diffusion texte-vers-image pré-entraînés. ControlNet verrouille les grands modèles de diffusion prêts pour la production et réutilise leurs couches d’encodage profondes et robustes, pré-entraînées sur des milliards d’images, comme un socle solide pour apprendre un ensemble varié de contrôles conditionnels. L’architecture neuronale est connectée par des « zéro convolutions » (couches de convolution initialisées à zéro) qui font progressivement croître les paramètres depuis zéro et garantissent qu’aucun bruit nuisible ne puisse affecter l’ajustement fin. Nous testons divers contrôles de conditionnement, par exemple les contours, la profondeur, la segmentation, la pose humaine, etc., avec Stable Diffusion, en utilisant une ou plusieurs conditions, avec ou sans prompts. Nous montrons que l’entraînement des ControlNets est robuste avec des jeux de données petits (<50k) et grands (>1m). Des résultats étendus montrent que ControlNet peut faciliter des applications plus larges pour contrôler les modèles de diffusion d’images.* | |
| Vous pouvez trouver d'autres points de contrôle ControlNet plus petits pour Stable Diffusion XL (SDXL) au sein de l'organisation 🤗 [Diffusers](https://huggingface.co/diffusers) du Hub. | |
| > [!WARNING] | |
| > 🧪 De nombreux points de contrôle SDXL ControlNet sont expérimentaux et il reste beaucoup de place pour l'amélioration. N'hésitez pas à ouvrir un [Issue](https://github.com/huggingface/diffusers/issues/new/choose) et à nous faire part de vos retours sur la manière dont nous pourrions nous améliorer ! | |
| Si vous ne voyez pas de point de contrôle qui vous intéresse, vous pouvez entraîner votre propre SDXL ControlNet avec notre [script d'entraînement](https://github.com/huggingface/diffusers/blob/main/examples/controlnet/README_sdxl.md). | |
| > [!TIP] | |
| > Pensez à consulter le [guide des Schedulers](../../using-diffusers/schedulers) pour apprendre à explorer le compromis entre la vitesse et la qualité du scheduler, et à consulter la section [réutilisation des composants entre les pipelines](../../using-diffusers/loading#reusing-models-in-multiple-pipelines) pour apprendre à charger efficacement les mêmes composants dans plusieurs pipelines. | |
| ## StableDiffusionXLControlNetPipeline[[diffusers.StableDiffusionXLControlNetPipeline]] | |
| #### diffusers.StableDiffusionXLControlNetPipeline[[diffusers.StableDiffusionXLControlNetPipeline]] | |
| ```python | |
| diffusers.StableDiffusionXLControlNetPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, text_encoder_2: CLIPTextModelWithProjection, tokenizer: CLIPTokenizer, tokenizer_2: CLIPTokenizer, unet: UNet2DConditionModel, controlnet: diffusers.models.controlnets.controlnet.ControlNetModel | list[diffusers.models.controlnets.controlnet.ControlNetModel] | tuple[diffusers.models.controlnets.controlnet.ControlNetModel] | diffusers.models.controlnets.multicontrolnet.MultiControlNetModel, scheduler: KarrasDiffusionSchedulers, force_zeros_for_empty_prompt: bool = True, add_watermarker: bool | None = None, feature_extractor: CLIPImageProcessorPil = None, image_encoder: CLIPVisionModelWithProjection = None) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/controlnet/pipeline_controlnet_sd_xl.py#L180) | |
| **Paramètres :** | |
| vae ([AutoencoderKL](/docs/diffusers/main/fr/api/models/autoencoderkl#diffusers.AutoencoderKL)) : modèle Variational Auto-Encoder (VAE) permettant d’encoder et de décoder des images vers et depuis des représentations latentes. | |
| text_encoder ([CLIPTextModel](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPTextModel)) : encodeur de texte figé ([clip-vit-large-patch14](https://huggingface.co/openai/clip-vit-large-patch14)). | |
| text_encoder_2 ([CLIPTextModelWithProjection](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPTextModelWithProjection)) : deuxième encodeur de texte figé ([laion/CLIP-ViT-bigG-14-laion2B-39B-b160k](https://huggingface.co/laion/CLIP-ViT-bigG-14-laion2B-39B-b160k)). | |
| tokenizer ([CLIPTokenizer](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPTokenizer)) : Un `CLIPTokenizer` pour tokeniser le texte. | |
| tokenizer_2 ([CLIPTokenizer](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPTokenizer)) : Un `CLIPTokenizer` pour tokeniser le texte. | |
| unet ([UNet2DConditionModel](/docs/diffusers/main/fr/api/models/unet2d-cond#diffusers.UNet2DConditionModel)) : un `UNet2DConditionModel` pour débruyer les latents d'image encodés. | |
| controlnet ([ControlNetModel](/docs/diffusers/main/fr/api/models/controlnet#diffusers.ControlNetModel) ou `list[ControlNetModel]`) : Fournit un conditionnement supplémentaire au `unet` pendant le processus de débruitage. Si vous définissez plusieurs ControlNets sous forme de liste, les sorties de chaque ControlNet sont additionnées pour créer un conditionnement supplémentaire combiné. | |
| 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). | |
| 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 de `stabilityai/stable-diffusion-xl-base-1-0`. | |
| add_watermarker (`bool`, *facultatif*) : Indique s'il faut utiliser la bibliothèque [invisible_watermark](https://github.com/ShieldMnt/invisible-watermark/) pour apposer un filigrane sur les images de sortie. Si non défini, la valeur par défaut est `True` si le package est installé ; sinon, aucun filigrane n'est utilisé. | |
| Pipeline de génération d'images à partir de texte utilisant Stable Diffusion XL avec un guidage ControlNet. | |
| 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 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()](/docs/diffusers/main/fr/api/loaders/textual_inversion#diffusers.loaders.TextualInversionLoaderMixin.load_textual_inversion) pour charger les embeddings d'inversion textuelle | |
| - [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 | |
| - [from_single_file()](/docs/diffusers/main/fr/api/loaders/single_file#diffusers.loaders.FromSingleFileMixin.from_single_file) pour charger des fichiers `.ckpt` | |
| - [load_ip_adapter()](/docs/diffusers/main/fr/api/loaders/ip_adapter#diffusers.loaders.IPAdapterMixin.load_ip_adapter) pour charger des IP Adapters | |
| #### __appel__[[diffusers.StableDiffusionXLControlNetPipeline.__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, cross_attention_kwargs: dict[str, typing.Any] | None = None, controlnet_conditioning_scale: float | list[float] = 1.0, guess_mode: bool = False, control_guidance_start: float | list[float] = 0.0, control_guidance_end: float | list[float] = 1.0, original_size: tuple[int, int] = None, crops_coords_top_left: tuple[int, int] = (0, 0), target_size: tuple[int, int] = 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, clip_skip: int | None = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], **kwargs) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/controlnet/pipeline_controlnet_sd_xl.py#L999) | |
| **Paramètres :** | |
| prompt (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts pour guider la génération d’images. S’il n’est pas défini, vous devez passer `prompt_embeds`. | |
| prompt_2 (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts à envoyer à `tokenizer_2` et `text_encoder_2`. S'il n'est pas défini, `prompt` est utilisé dans les deux encodeurs de texte. | |
| 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]]` ou `list[list[PIL.Image.Image]]`) : La condition d’entrée ControlNet à fournir pour guider le `unet` lors de la génération. Si le type est spécifié comme `torch.Tensor`, il est transmis à ControlNet tel quel. `PIL.Image.Image` peut également être accepté en tant qu’image. Les dimensions de l’image de sortie sont par défaut celles de `image`. Si la hauteur et/ou la largeur sont passées, `image` est redimensionnée en conséquence. Si plusieurs ControlNets sont spécifiés dans `init`, les images doivent être passées sous forme de liste afin que chaque élément de la liste puisse être correctement groupé (batching) 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. 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) ni avec des 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) ni avec des 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) : Une valeur d'échelle de guidage plus élevée encourage le modèle à générer des images étroitement liées au `prompt` texte, au détriment de la qualité de l'image. L'échelle de guidage est activée lorsque `guidance_scale > 1`. | |
| negative_prompt (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts pour guider ce qu'il ne faut pas inclure dans la génération d'image. S'il n'est pas défini, vous devez passer `negative_prompt_embeds` à la place. Ignoré lorsque la guidance n'est pas utilisée (`guidance_scale < 1`). | |
| negative_prompt_2 (`str` ou `list[str]`, *facultatif*) : Le prompt ou les prompts pour guider ce qu'il ne faut pas inclure dans la génération d'image. Cela est envoyé à `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 (η) de l'article [DDIM](https://huggingface.co/papers/2010.02502). S'applique uniquement au [DDIMScheduler](/docs/diffusers/main/fr/api/schedulers/ddim#diffusers.DDIMScheduler) et est ignoré par les autres planificateurs. | |
| generator (`torch.Generator` ou `list[torch.Generator]`, *facultatif*) : Un [`torch.Generator`](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 est 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 (pondération des prompts). Si non fourni, les incrustations de texte sont générées à partir de l'argument d'entrée `prompt`. | |
| negative_prompt_embeds (`torch.Tensor`, *facultatif*) : Incrustations de texte négatif pré-générées. Peut être utilisé pour ajuster facilement les entrées de texte (pondération des prompts). Si non fourni, `negative_prompt_embeds` sont générés à 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 (pondération des prompts). S'ils ne sont pas fournis, les embeddings de texte sont 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 et agrégés. Peut être utilisé pour ajuster facilement les entrées de texte (pondération des prompts). S'ils ne sont pas fournis, les `negative_prompt_embeds` agrégés sont générés à partir de l'argument d'entrée `negative_prompt`. | |
| ip_adapter_image : (`PipelineImageInput`, *facultatif*) : Entrée d'image facultative pour travailler avec les IP Adapters. | |
| 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.Image` ou `np.array`. | |
| return_dict (`bool`, *facultatif*, par défaut `True`) : Indique s'il faut retourner un [StableDiffusionPipelineOutput](/docs/diffusers/main/fr/api/pipelines/stable_diffusion/img2img#diffusers.pipelines.stable_diffusion.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'`AttentionProcessor` tel que défini dans [`self.processor`](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py). | |
| controlnet_conditioning_scale (`float` ou `list[float]`, *facultatif*, valeur par défaut 1.0) : Les sorties du ControlNet sont multipliées par `controlnet_conditioning_scale` avant d’être ajoutées au résidu dans le `unet` d’origine. Si plusieurs ControlNets sont spécifiés dans `init`, vous pouvez définir l’échelle correspondante sous forme de liste. | |
| guess_mode (`bool`, *facultatif*, valeur par défaut `False`) : 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 de `guidance_scale` comprise entre 3,0 et 5,0 est recommandée. | |
| control_guidance_start (`float` ou `list[float]`, *facultatif*, valeur par défaut 0.0) : Le pourcentage des étapes totales à partir duquel le ControlNet commence à s'appliquer. | |
| control_guidance_end (`float` ou `list[float]`, *facultatif*, par défaut 1.0) : Le pourcentage des étapes totales auquel le ControlNet cesse d’appliquer son effet. | |
| 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). | |
| 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. | |
| 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. | |
| callback_on_step_end (`Callable`, `PipelineCallback`, `MultiPipelineCallbacks`, *facultatif*) : une fonction ou une sous-classe de `PipelineCallback` ou `MultiPipelineCallbacks` qui 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_kwargs` contiendra une liste de tous les tenseurs, tels que spécifiés par `callback_on_step_end_tensor_inputs`. | |
| callback_on_step_end_tensor_inputs (`list`, *facultatif*) : La liste des entrées tensorielles pour la fonction `callback_on_step_end`. Les tenseurs spécifiés dans la liste seront passés en tant qu'argument `callback_kwargs`. Vous ne pourrez inclure que les variables listées dans l'attribut `._callback_tensor_inputs` de votre classe de pipeline. | |
| **Retourne :** [StableDiffusionPipelineOutput](/docs/diffusers/main/fr/api/pipelines/stable_diffusion/img2img#diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput) ou `tuple` | |
| Si `return_dict` est `True`, [StableDiffusionPipelineOutput](/docs/diffusers/main/fr/api/pipelines/stable_diffusion/img2img#diffusers.pipelines.stable_diffusion.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 : | |
| ```py | |
| >>> # !pip install opencv-python transformers accelerate | |
| >>> from diffusers import StableDiffusionXLControlNetPipeline, ControlNetModel, AutoencoderKL | |
| >>> from diffusers.utils import load_image | |
| >>> import numpy as np | |
| >>> import torch | |
| >>> import cv2 | |
| >>> from PIL import Image | |
| >>> prompt = "aerial view, a futuristic research complex in a bright foggy jungle, hard lighting" | |
| >>> negative_prompt = "low quality, bad quality, sketches" | |
| >>> # download an image | |
| >>> image = load_image( | |
| ... "https://hf.co/datasets/hf-internal-testing/diffusers-images/resolve/main/sd_controlnet/hf-logo.png" | |
| ... ) | |
| >>> # initialize the models and pipeline | |
| >>> controlnet_conditioning_scale = 0.5 # recommended for good generalization | |
| >>> controlnet = ControlNetModel.from_pretrained( | |
| ... "diffusers/controlnet-canny-sdxl-1.0", torch_dtype=torch.float16 | |
| ... ) | |
| >>> vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix", torch_dtype=torch.float16) | |
| >>> pipe = StableDiffusionXLControlNetPipeline.from_pretrained( | |
| ... "stabilityai/stable-diffusion-xl-base-1.0", controlnet=controlnet, vae=vae, torch_dtype=torch.float16 | |
| ... ) | |
| >>> pipe.enable_model_cpu_offload() | |
| >>> # get canny image | |
| >>> image = np.array(image) | |
| >>> image = cv2.Canny(image, 100, 200) | |
| >>> image = image[:, :, None] | |
| >>> image = np.concatenate([image, image, image], axis=2) | |
| >>> canny_image = Image.fromarray(image) | |
| >>> # generate image | |
| >>> image = pipe( | |
| ... prompt, controlnet_conditioning_scale=controlnet_conditioning_scale, image=canny_image | |
| ... ).images[0] | |
| ``` | |
| #### encode_prompt[[diffusers.StableDiffusionXLControlNetPipeline.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/controlnet/pipeline_controlnet_sd_xl.py#L299) | |
| **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.StableDiffusionXLControlNetPipeline.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/controlnet/pipeline_controlnet_sd_xl.py#L938) | |
| **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 | |
| ## StableDiffusionXLControlNetImg2ImgPipeline[[diffusers.StableDiffusionXLControlNetImg2ImgPipeline]] | |
| #### diffusers.StableDiffusionXLControlNetImg2ImgPipeline[[diffusers.StableDiffusionXLControlNetImg2ImgPipeline]] | |
| ```python | |
| diffusers.StableDiffusionXLControlNetImg2ImgPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, text_encoder_2: CLIPTextModelWithProjection, tokenizer: CLIPTokenizer, tokenizer_2: CLIPTokenizer, unet: UNet2DConditionModel, controlnet: diffusers.models.controlnets.controlnet.ControlNetModel | list[diffusers.models.controlnets.controlnet.ControlNetModel] | tuple[diffusers.models.controlnets.controlnet.ControlNetModel] | diffusers.models.controlnets.multicontrolnet.MultiControlNetModel, scheduler: KarrasDiffusionSchedulers, requires_aesthetics_score: bool = False, force_zeros_for_empty_prompt: bool = True, add_watermarker: bool | None = None, feature_extractor: CLIPImageProcessorPil = None, image_encoder: CLIPVisionModelWithProjection = None) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/controlnet/pipeline_controlnet_sd_xl_img2img.py#L161) | |
| **Paramètres :** | |
| 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). | |
| text_encoder_2 (` CLIPTextModelWithProjection`) : deuxième encodeur de texte figé. Stable Diffusion XL utilise la partie texte et pool de [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModelWithProjection), plus précisément la variante [laion/CLIP-ViT-bigG-14-laion2B-39B-b160k](https://huggingface.co/laion/CLIP-ViT-bigG-14-laion2B-39B-b160k). | |
| tokenizer (`CLIPTokenizer`) : Tokenizer de la classe [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer). | |
| tokenizer_2 (`CLIPTokenizer`) : Second 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. | |
| controlnet ([ControlNetModel](/docs/diffusers/main/fr/api/models/controlnet#diffusers.ControlNetModel) ou `list[ControlNetModel]`) : Fournit un conditionnement supplémentaire au unet pendant le processus de débruitage. Si vous définissez plusieurs ControlNets sous forme de liste, les sorties de chaque ControlNet sont additionnées pour créer un conditionnement supplémentaire combiné. | |
| 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). | |
| requires_aesthetics_score (`bool`, *facultatif*, valeur par défaut `"False"`) : Indique si le `unet` nécessite qu'une condition `aesthetic_score` soit transmise lors de l'inférence. Voir également la configuration de `stabilityai/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 à être toujours définis à 0. Voir également la configuration de `stabilityai/stable-diffusion-xl-base-1-0`. | |
| add_watermarker (`bool`, *facultatif*) : Indique s'il faut utiliser la bibliothèque [invisible_watermark](https://github.com/ShieldMnt/invisible-watermark/) pour apposer un filigrane sur les 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](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPImageProcessor)) : un `CLIPImageProcessor` pour extraire des caractéristiques des images générées ; utilisé comme entrées pour le `safety_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](/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 | |
| - [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.StableDiffusionXLControlNetImg2ImgPipeline.__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, control_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, strength: float = 0.8, num_inference_steps: int = 50, 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, cross_attention_kwargs: dict[str, typing.Any] | None = None, controlnet_conditioning_scale: float | list[float] = 0.8, guess_mode: bool = False, control_guidance_start: float | list[float] = 0.0, control_guidance_end: float | list[float] = 1.0, original_size: tuple[int, int] = None, crops_coords_top_left: tuple[int, int] = (0, 0), target_size: tuple[int, int] = 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, aesthetic_score: float = 6.0, negative_aesthetic_score: float = 2.5, clip_skip: int | None = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], **kwargs) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/controlnet/pipeline_controlnet_sd_xl_img2img.py#L1077) | |
| **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`, `np.ndarray`, `list[torch.Tensor]`, `list[PIL.Image.Image]`, `list[np.ndarray]`, : `list[list[torch.Tensor]]`, `list[list[np.ndarray]]` ou `list[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 que `image` ; si des latents sont transmis directement, ils ne seront pas réencodés. | |
| control_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]]` ou `list[list[PIL.Image.Image]]`) : La condition d’entrée de ControlNet. ControlNet utilise cette condition d’entrée pour générer des directives pour Unet. Si le type est spécifié comme `torch.Tensor`, il est transmis à ControlNet tel quel. `PIL.Image.Image` peut également être accepté en tant qu’image. Les dimensions de l’image de sortie sont par défaut celles de `image`. Si la hauteur et/ou la largeur sont transmises, `image` est redimensionnée en conséquence. Si plusieurs ControlNets sont spécifiés lors de l’initialisation, les images doivent être transmises sous forme de liste afin que chaque élément de la liste puisse être correctement groupé (batching) 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](https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0) ni avec des 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](https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0) ni avec des 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 dans quelle mesure transformer l'`image` de référence. Doit être compris entre 0 et 1. `image` est utilisé comme point de départ et plus le `strength` est élevé, plus du bruit est ajouté. Le nombre d'étapes de débruitage dépend de la quantité de bruit initialement ajoutée. Lorsque `strength` vaut 1, le bruit ajouté est maximal et le processus de débruitage s'exécute pendant le nombre complet d'itérations spécifié dans `num_inference_steps`. Une valeur de 1 ignore essentiellement `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](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 [StableDiffusionPipelineOutput](/docs/diffusers/main/fr/api/pipelines/stable_diffusion/img2img#diffusers.pipelines.stable_diffusion.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'`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). | |
| controlnet_conditioning_scale (`float` ou `list[float]`, *facultatif*, valeur par défaut 1.0) : Les sorties du controlnet sont multipliées par `controlnet_conditioning_scale` avant d’être ajoutées au résidu dans le unet d’origine. Si plusieurs ControlNets sont spécifiés à l’initialisation, vous pouvez définir l’échelle correspondante sous forme de liste. | |
| guess_mode (`bool`, *facultatif*, valeur par défaut `False`) : Dans ce mode, l'encodeur ControlNet s'efforcera de reconnaître le contenu de l'image d'entrée même si vous supprimez tous les prompts. Une valeur de `guidance_scale` comprise entre 3,0 et 5,0 est recommandée. | |
| control_guidance_start (`float` ou `list[float]`, *facultatif*, valeur par défaut 0.0) : Le pourcentage des étapes totales à partir duquel le controlnet commence à s'appliquer. | |
| control_guidance_end (`float` ou `list[float]`, *facultatif*, par défaut 1.0) : Le pourcentage des étapes totales auquel le controlnet cesse d'être appliqué. | |
| 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). | |
| 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. | |
| 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 dans la section 2.2 de [https://huggingface.co/papers/2307.01952](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 dans la section 2.2 de [https://huggingface.co/papers/2307.01952](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égatif. | |
| 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. | |
| callback_on_step_end (`Callable`, `PipelineCallback`, `MultiPipelineCallbacks`, *facultatif*) : une fonction ou une sous-classe de `PipelineCallback` ou `MultiPipelineCallbacks` qui 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_kwargs` contiendra une liste de tous les tenseurs, tels que spécifiés par `callback_on_step_end_tensor_inputs`. | |
| callback_on_step_end_tensor_inputs (`list`, *facultatif*) : La liste des entrées tensorielles pour la fonction `callback_on_step_end`. Les tenseurs spécifiés dans la liste seront passés en tant qu'argument `callback_kwargs`. Vous ne pourrez inclure que les variables listées dans l'attribut `._callback_tensor_inputs` de votre classe de pipeline. | |
| **Retourne :** [StableDiffusionPipelineOutput](/docs/diffusers/main/fr/api/pipelines/stable_diffusion/img2img#diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput) ou `tuple` | |
| [StableDiffusionPipelineOutput](/docs/diffusers/main/fr/api/pipelines/stable_diffusion/img2img#diffusers.pipelines.stable_diffusion.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 : | |
| ```py | |
| >>> # pip install accelerate transformers safetensors diffusers | |
| >>> import torch | |
| >>> import numpy as np | |
| >>> from PIL import Image | |
| >>> from transformers import DPTImageProcessor, DPTForDepthEstimation | |
| >>> from diffusers import ControlNetModel, StableDiffusionXLControlNetImg2ImgPipeline, AutoencoderKL | |
| >>> from diffusers.utils import load_image | |
| >>> depth_estimator = DPTForDepthEstimation.from_pretrained("Intel/dpt-hybrid-midas").to("cuda") | |
| >>> feature_extractor = DPTImageProcessor.from_pretrained("Intel/dpt-hybrid-midas") | |
| >>> controlnet = ControlNetModel.from_pretrained( | |
| ... "diffusers/controlnet-depth-sdxl-1.0-small", | |
| ... variant="fp16", | |
| ... use_safetensors=True, | |
| ... torch_dtype=torch.float16, | |
| ... ) | |
| >>> vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix", torch_dtype=torch.float16) | |
| >>> pipe = StableDiffusionXLControlNetImg2ImgPipeline.from_pretrained( | |
| ... "stabilityai/stable-diffusion-xl-base-1.0", | |
| ... controlnet=controlnet, | |
| ... vae=vae, | |
| ... variant="fp16", | |
| ... use_safetensors=True, | |
| ... torch_dtype=torch.float16, | |
| ... ) | |
| >>> pipe.enable_model_cpu_offload() | |
| >>> def get_depth_map(image): | |
| ... image = feature_extractor(images=image, return_tensors="pt").pixel_values.to("cuda") | |
| ... with torch.no_grad(), torch.autocast("cuda"): | |
| ... depth_map = depth_estimator(image).predicted_depth | |
| ... depth_map = torch.nn.functional.interpolate( | |
| ... depth_map.unsqueeze(1), | |
| ... size=(1024, 1024), | |
| ... mode="bicubic", | |
| ... align_corners=False, | |
| ... ) | |
| ... depth_min = torch.amin(depth_map, dim=[1, 2, 3], keepdim=True) | |
| ... depth_max = torch.amax(depth_map, dim=[1, 2, 3], keepdim=True) | |
| ... depth_map = (depth_map - depth_min) / (depth_max - depth_min) | |
| ... image = torch.cat([depth_map] * 3, dim=1) | |
| ... image = image.permute(0, 2, 3, 1).cpu().numpy()[0] | |
| ... image = Image.fromarray((image * 255.0).clip(0, 255).astype(np.uint8)) | |
| ... return image | |
| >>> prompt = "A robot, 4k photo" | |
| >>> image = load_image( | |
| ... "https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/kandinsky/cat.png" | |
| ... ).resize((1024, 1024)) | |
| >>> controlnet_conditioning_scale = 0.5 # recommended for good generalization | |
| >>> depth_image = get_depth_map(image) | |
| >>> images = pipe( | |
| ... prompt, | |
| ... image=image, | |
| ... control_image=depth_image, | |
| ... strength=0.99, | |
| ... num_inference_steps=50, | |
| ... controlnet_conditioning_scale=controlnet_conditioning_scale, | |
| ... ).images | |
| >>> images[0].save(f"robot_cat.png") | |
| ``` | |
| #### encode_prompt[[diffusers.StableDiffusionXLControlNetImg2ImgPipeline.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/controlnet/pipeline_controlnet_sd_xl_img2img.py#L291) | |
| **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. | |
| ## StableDiffusionXLControlNetInpaintPipeline[[diffusers.StableDiffusionXLControlNetInpaintPipeline]] | |
| #### diffusers.StableDiffusionXLControlNetInpaintPipeline[[diffusers.StableDiffusionXLControlNetInpaintPipeline]] | |
| ```python | |
| diffusers.StableDiffusionXLControlNetInpaintPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, text_encoder_2: CLIPTextModelWithProjection, tokenizer: CLIPTokenizer, tokenizer_2: CLIPTokenizer, unet: UNet2DConditionModel, controlnet: diffusers.models.controlnets.controlnet.ControlNetModel | list[diffusers.models.controlnets.controlnet.ControlNetModel] | tuple[diffusers.models.controlnets.controlnet.ControlNetModel] | diffusers.models.controlnets.multicontrolnet.MultiControlNetModel, scheduler: KarrasDiffusionSchedulers, requires_aesthetics_score: bool = False, force_zeros_for_empty_prompt: bool = True, add_watermarker: bool | None = None, feature_extractor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = None, image_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | None = None) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/controlnet/pipeline_controlnet_inpaint_sd_xl.py#L170) | |
| **Paramètres :** | |
| 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 XL 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). | |
| text_encoder_2 (` CLIPTextModelWithProjection`) : deuxième encodeur de texte figé. Stable Diffusion XL utilise la partie texte et pool de [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModelWithProjection), plus précisément la variante [laion/CLIP-ViT-bigG-14-laion2B-39B-b160k](https://huggingface.co/laion/CLIP-ViT-bigG-14-laion2B-39B-b160k). | |
| tokenizer (`CLIPTokenizer`) : Tokenizer de la classe [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer). | |
| tokenizer_2 (`CLIPTokenizer`) : Second 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). | |
| Pipeline pour la génération d'images à partir de texte utilisant Stable Diffusion XL. | |
| 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 | |
| - [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 | |
| - [from_single_file()](/docs/diffusers/main/fr/api/loaders/single_file#diffusers.loaders.FromSingleFileMixin.from_single_file) pour charger des fichiers `.ckpt` | |
| - [load_ip_adapter()](/docs/diffusers/main/fr/api/loaders/ip_adapter#diffusers.loaders.IPAdapterMixin.load_ip_adapter) pour charger des IP Adapters | |
| #### __appel__[[diffusers.StableDiffusionXLControlNetInpaintPipeline.__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, mask_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, control_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]]]] = None, height: int | None = None, width: int | None = None, padding_mask_crop: int | None = None, strength: float = 0.9999, num_inference_steps: int = 50, denoising_start: float | None = 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, 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, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, cross_attention_kwargs: dict[str, typing.Any] | None = None, controlnet_conditioning_scale: float | list[float] = 1.0, guess_mode: bool = False, control_guidance_start: float | list[float] = 0.0, control_guidance_end: float | list[float] = 1.0, guidance_rescale: float = 0.0, original_size: tuple[int, int] = None, crops_coords_top_left: tuple[int, int] = (0, 0), target_size: tuple[int, int] = None, aesthetic_score: float = 6.0, negative_aesthetic_score: float = 2.5, clip_skip: int | None = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], **kwargs) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/controlnet/pipeline_controlnet_inpaint_sd_xl.py#L1167) | |
| **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 (`PIL.Image.Image`) : `Image`, ou tenseur représentant un lot d'images qui sera inpainté, *c'est-à-dire* que certaines parties de l'image seront masquées avec `mask_image` et repeintes selon `prompt`. | |
| mask_image (`PIL.Image.Image`) : `Image` ou tenseur représentant un lot d'images, à masquer avec `image`. Les pixels blancs du masque seront repeints, tandis que les pixels noirs seront conservés. Si `mask_image` est 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 (`PipelineImageInput` ou `list[PipelineImageInput]`, *facultatif*) : La condition d’entrée ControlNet à fournir pour guider le `unet` lors de la génération. Si le type est spécifié comme `torch.Tensor`, il est transmis à ControlNet tel quel. `PIL.Image.Image` peut également être accepté en tant qu’image. Les dimensions de l’image de sortie sont par défaut celles de `image`. Si la hauteur et/ou la largeur sont passées, `image` est redimensionnée en conséquence. Si plusieurs ControlNets sont spécifiés dans `init`, les images doivent être passées sous forme de liste afin que chaque élément de la liste puisse être correctement groupé (batched) 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éfaut `None`) : La taille de la marge dans le recadrage à appliquer à l'image et au masquage. Si `None`, aucun recadrage n'est appliqué à l'image et à mask_image. Si `padding_mask_crop` n'est pas `None`, il recherche d'abord une région rectangulaire ayant le même ratio d'aspect que l'image et contenant toute la zone masquée, puis élargit cette zone en fonction de `padding_mask_crop`. L'image et mask_image sont ensuite recadrées en fonction de la zone élargie 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 non pertinentes pour l'inpainting, telles que 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'`image` de référence. Doit être compris entre 0 et 1. `image` sera utilisé comme point de départ, en y ajoutant d'autant plus de bruit que `strength` est élevé. Le nombre d'étapes de débruitage dépend de la quantité de bruit initialement ajoutée. Lorsque `strength` vaut 1, le bruit ajouté sera maximal et le processus de débruitage s'exécutera pendant le nombre complet d'itérations spécifié dans `num_inference_steps`. Une valeur de 1 ignore donc essentiellement la partie masquée de l'`image` de référence. Notez que si `denoising_start` est déclaré comme un entier, la valeur de `strength` sera 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`, *facultatif*) : Si spécifié, indique la fraction (entre 0.0 et 1.0) du processus total de débruitage à ignorer avant son lancement. Par conséquent, la partie initiale du processus de débruitage est sautée et il est supposé que l'`image` transmise est partiellement débruitée. Notez que lorsque ce paramètre est spécifié, la force sera ignorée. Le paramètre `denoising_start` est particulièrement utile lorsque ce pipeline est intégré dans une configuration multi-pipelines « Mixture of Denoisers », comme détaillé dans [**Amélioration de la sortie image**](https://huggingface.co/docs/diffusers/api/pipelines/stable_diffusion/stable_diffusion_xl#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 à achever 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 dernières étapes de temps sont encore nécessaires) et devrait être débruité par un pipeline successeur dont `denoising_start` est 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étaillé dans [**Amélioration de la sortie image**](https://huggingface.co/docs/diffusers/api/pipelines/stable_diffusion/stable_diffusion_xl#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](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 | |
| 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`. | |
| 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`. | |
| 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`. | |
| 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`, *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. | |
| 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 [StableDiffusionPipelineOutput](/docs/diffusers/main/fr/api/pipelines/stable_diffusion/img2img#diffusers.pipelines.stable_diffusion.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'`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). | |
| controlnet_conditioning_scale (`float` ou `list[float]`, *facultatif*, valeur par défaut 1.0) : Les sorties du ControlNet sont multipliées par `controlnet_conditioning_scale` avant d’être ajoutées au résidu dans le `unet` d’origine. Si plusieurs ControlNets sont spécifiés dans `init`, vous pouvez définir l’échelle correspondante sous forme de liste. | |
| guess_mode (`bool`, *facultatif*, valeur par défaut `False`) : 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 de `guidance_scale` comprise entre 3,0 et 5,0 est recommandée. | |
| control_guidance_start (`float` ou `list[float]`, *facultatif*, valeur par défaut 0.0) : Le pourcentage des étapes totales à partir duquel le ControlNet commence à s'appliquer. | |
| control_guidance_end (`float` ou `list[float]`, *facultatif*, par défaut 1.0) : Le pourcentage des étapes totales auquel le ControlNet cesse d’appliquer son effet. | |
| guidance_rescale (`float`, *facultatif*, valeur par défaut 0.0) : Facteur de recalage du guidage issu de [Common Diffusion Noise Schedules and Sample Steps are Flawed](https://arxiv.org/pdf/2305.08891.pdf). | |
| 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 `(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](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 `(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](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 dans la section 2.2 de [https://huggingface.co/papers/2307.01952](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 dans la section 2.2 de [https://huggingface.co/papers/2307.01952](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égatif. | |
| 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. | |
| callback_on_step_end (`Callable`, `PipelineCallback`, `MultiPipelineCallbacks`, *facultatif*) : une fonction ou une sous-classe de `PipelineCallback` ou `MultiPipelineCallbacks` qui 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_kwargs` contiendra une liste de tous les tenseurs, tels que spécifiés par `callback_on_step_end_tensor_inputs`. | |
| callback_on_step_end_tensor_inputs (`list`, *facultatif*) : La liste des entrées tensorielles pour la fonction `callback_on_step_end`. Les tenseurs spécifiés dans la liste seront passés en tant qu'argument `callback_kwargs`. Vous ne pourrez inclure que les variables listées dans l'attribut `._callback_tensor_inputs` de votre classe de pipeline. | |
| **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 : | |
| ```py | |
| >>> # !pip install transformers accelerate | |
| >>> from diffusers import StableDiffusionXLControlNetInpaintPipeline, ControlNetModel, DDIMScheduler | |
| >>> from diffusers.utils import load_image | |
| >>> from PIL import Image | |
| >>> import numpy as np | |
| >>> import torch | |
| >>> init_image = load_image( | |
| ... "https://huggingface.co/datasets/diffusers/test-arrays/resolve/main/stable_diffusion_inpaint/boy.png" | |
| ... ) | |
| >>> init_image = init_image.resize((1024, 1024)) | |
| >>> generator = torch.Generator(device="cpu").manual_seed(1) | |
| >>> mask_image = load_image( | |
| ... "https://huggingface.co/datasets/diffusers/test-arrays/resolve/main/stable_diffusion_inpaint/boy_mask.png" | |
| ... ) | |
| >>> mask_image = mask_image.resize((1024, 1024)) | |
| >>> def make_canny_condition(image): | |
| ... image = np.array(image) | |
| ... image = cv2.Canny(image, 100, 200) | |
| ... image = image[:, :, None] | |
| ... image = np.concatenate([image, image, image], axis=2) | |
| ... image = Image.fromarray(image) | |
| ... return image | |
| >>> control_image = make_canny_condition(init_image) | |
| >>> controlnet = ControlNetModel.from_pretrained( | |
| ... "diffusers/controlnet-canny-sdxl-1.0", torch_dtype=torch.float16 | |
| ... ) | |
| >>> pipe = StableDiffusionXLControlNetInpaintPipeline.from_pretrained( | |
| ... "stabilityai/stable-diffusion-xl-base-1.0", controlnet=controlnet, torch_dtype=torch.float16 | |
| ... ) | |
| >>> pipe.enable_model_cpu_offload() | |
| >>> # generate image | |
| >>> image = pipe( | |
| ... "a handsome man with ray-ban sunglasses", | |
| ... num_inference_steps=20, | |
| ... generator=generator, | |
| ... eta=1.0, | |
| ... image=init_image, | |
| ... mask_image=mask_image, | |
| ... control_image=control_image, | |
| ... ).images[0] | |
| ``` | |
| #### encode_prompt[[diffusers.StableDiffusionXLControlNetInpaintPipeline.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/controlnet/pipeline_controlnet_inpaint_sd_xl.py#L291) | |
| **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. | |
| ## StableDiffusionPipelineOutput[[diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput]] | |
| #### diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput[[diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput]] | |
| ```python | |
| diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput(images: list[PIL.Image.Image] | numpy.ndarray, nsfw_content_detected: list[bool] | None) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_diffusion/pipeline_output.py#L10) | |
| **Paramètres :** | |
| images (`list[PIL.Image.Image]` ou `np.ndarray`) : liste d'images PIL débruitées de longueur `batch_size` ou tableau NumPy de forme `(batch_size, height, width, num_channels)`. | |
| nsfw_content_detected (`list[bool]`) : liste indiquant si l'image générée correspondante contient du contenu « not-safe-for-work » (nsfw) ou `None` si la vérification de sécurité n'a pas pu être effectuée. | |
| Classe de sortie pour les pipelines Stable Diffusion. | |
Xet Storage Details
- Size:
- 88.3 kB
- Xet hash:
- 113d75fa76f3af05a1e4ed113696c9c30c59245db5bcb8b4c02e9c14edd204cd
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.