Diffusers documentation
Guidage par attention perturbée
Guidage par attention perturbée
Perturbed-Attention Guidance (PAG) est un nouveau guidage d'échantillonnage par diffusion qui améliore la qualité des échantillons dans les configurations à la fois non conditionnelles et conditionnelles, sans nécessiter d'entraînement supplémentaire ni l'intégration de modules externes.
PAG a été introduit dans Self-Rectifying Diffusion Sampling with Perturbed-Attention Guidance par Donghoon Ahn, Hyoungwon Cho, Jaewon Min, Wooseok Jang, Jungwoo Kim, SeonHwa Kim, Hyun Hee Park, Kyong Hwan Jin et Seungryong Kim.
L'abstract de l'article est :
Des études récentes ont démontré que les modèles de diffusion sont capables de générer des échantillons de haute qualité, mais que cette qualité dépend fortement des techniques de guidage de l’échantillonnage, telles que le guidage par classifieur (CG) et le guidage sans classifieur (CFG). Ces techniques sont souvent inapplicables en génération inconditionnelle ou dans diverses tâches en aval, comme la restauration d’images. Dans cet article, nous proposons un nouveau guidage d’échantillonnage, appelé Perturbed-Attention Guidance (PAG), qui améliore la qualité des échantillons de diffusion dans les configurations à la fois inconditionnelles et conditionnelles, sans nécessiter d’entraînement supplémentaire ni l’intégration de modules externes. PAG est conçu pour renforcer progressivement la structure des échantillons au fil du processus de débruitage. Il consiste à générer des échantillons intermédiaires dont la structure est dégradée en substituant des cartes d’auto-attention sélectionnées dans le U-Net de diffusion par une matrice identité, en tenant compte de la capacité des mécanismes d’auto-attention à capturer les informations structurelles, et en orientant le processus de débruitage loin de ces échantillons dégradés. Dans les deux cas, ADM et Stable Diffusion, PAG améliore de manière surprenante la qualité des échantillons dans les scénarios conditionnels et même inconditionnels. De plus, PAG améliore significativement les performances de référence dans diverses tâches en aval où les guidages existants, tels que CG ou CFG, ne peuvent pas être pleinement exploités, y compris ControlNet avec des prompts vides et la restauration d’images, comme l’inpainting et la défloutage.
PAG peut être utilisé en spécifiant pag_applied_layers comme paramètre lors de l'instantiation d'un pipeline PAG. Il peut s'agir d'une seule chaîne de caractères ou d'une liste de chaînes. Chaque chaîne peut être un identifiant de couche unique ou une expression régulière pour identifier une ou plusieurs couches.
- Identifiant complet en tant que chaîne normale :
down_blocks.2.attentions.0.transformer_blocks.0.attn1.processor - Identifiant complet en tant que RegEx :
down_blocks.2.(attentions|motion_modules).0.transformer_blocks.0.attn1.processor - Identifiant partiel en tant que RegEx :
down_blocks.2, ouattn1 - Liste d'identifiants (peut être une combinaison de chaînes et de ReGex) :
["blocks.1", "blocks.(14|20)", r"down_blocks\.(2,3)"]
Étant donné que RegEx est pris en charge comme méthode pour correspondre aux identifiants de couches, il est crucial de l’utiliser correctement, sous peine de comportements inattendus. La méthode recommandée pour utiliser PAG consiste à spécifier les couches sous la forme
blocks.{layer_index}etblocks.({layer_index_1|layer_index_2|...}). Toute autre utilisation, bien que possible, peut contourner nos vérifications de base et produire des résultats inattendus.
Tâches générales
Vous pouvez appliquer PAG au StableDiffusionXLPipeline pour des tâches telles que la génération d’images à partir de texte, la transformation d’image en image et l’inpainting. Pour activer PAG pour une tâche spécifique, chargez le pipeline à l’aide de l’API AutoPipeline avec le drapeau enable_pag=True et l’argument pag_applied_layers.
🤗 Diffusers prend actuellement en charge l'utilisation de PAG uniquement avec certains pipelines SDXL et PixArtSigmaPAGPipeline. N'hésitez pas à ouvrir une demande de fonctionnalité si vous souhaitez ajouter la prise en charge de PAG à un nouveau pipeline !
from diffusers import AutoPipelineForText2Image
from diffusers.utils import load_image
import torch
pipeline = AutoPipelineForText2Image.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
enable_pag=True,
pag_applied_layers=["mid"],
dtype=torch.float16
)
pipeline.enable_model_cpu_offload()L'argument
pag_applied_layerspermet de spécifier les couches auxquelles PAG est appliqué. De plus, vous pouvez utiliser la méthodeset_pag_applied_layerspour mettre à jour ces couches après la création du pipeline. Consultez la section pag_applied_layers pour en savoir plus sur l'application de PAG à d'autres couches.
Si vous avez déjà un pipeline créé et chargé, vous pouvez activer PAG dessus en utilisant l'API from_pipe avec le drapeau enable_pag. En interne, un pipeline PAG est créé sur la base du pipeline et de la tâche que vous avez spécifiés. Dans l'exemple ci-dessous, comme nous avons utilisé AutoPipelineForText2Image et transmis un StableDiffusionXLPipeline, un StableDiffusionXLPAGPipeline est créé en conséquence. Notez que cela n'exige pas de mémoire supplémentaire, et vous aurez à la fois StableDiffusionXLPipeline et StableDiffusionXLPAGPipeline chargés et prêts à l'emploi. Vous pouvez en savoir plus sur l'API from_pipe et sur la réutilisation des pipelines dans diffuser ici.
pipeline_sdxl = AutoPipelineForText2Image.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16)
pipeline = AutoPipelineForText2Image.from_pipe(pipeline_sdxl, enable_pag=True)Pour générer une image, vous devez également passer un pag_scale. Lorsque pag_scale augmente, les images acquièrent des structures plus cohérentes sur le plan sémantique et présentent moins d'artefacts. Cependant, une échelle de guidage trop élevée peut entraîner des textures plus lisses et une légère saturation dans les images, de manière similaire au CFG. pag_scale=3.0 est utilisé dans la démo officielle et fonctionne bien dans la plupart des cas d'utilisation, mais n'hésitez pas à expérimenter et à sélectionner la valeur appropriée selon vos besoins ! PAG est désactivé lorsque pag_scale=0.
prompt = "an insect robot preparing a delicious meal, anime style"
for pag_scale in [0.0, 3.0]:
generator = torch.Generator(device="cpu").manual_seed(0)
images = pipeline(
prompt=prompt,
num_inference_steps=25,
guidance_scale=7.0,
generator=generator,
pag_scale=pag_scale,
).images
Vous pouvez utiliser PAG avec les pipelines image-vers-image.
from diffusers import AutoPipelineForImage2Image
from diffusers.utils import load_image
import torch
pipeline = AutoPipelineForImage2Image.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
enable_pag=True,
pag_applied_layers=["mid"],
dtype=torch.float16
)
pipeline.enable_model_cpu_offload()Si vous disposez déjà d'un pipeline image-vers-image et souhaitez y activer PAG, vous pouvez exécuter ceci
pipeline_t2i = AutoPipelineForImage2Image.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16)
pipeline = AutoPipelineForImage2Image.from_pipe(pipeline_t2i, enable_pag=True)Il est également très facile de passer directement d'un pipeline texte-vers-image à un pipeline image-vers-image activant PAG
pipeline_pag = AutoPipelineForText2Image.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16)
pipeline = AutoPipelineForImage2Image.from_pipe(pipeline_t2i, enable_pag=True)Si vous disposez d'un pipeline texte-vers-image avec PAG activé, vous pouvez passer directement à un pipeline image-vers-image tout en gardant PAG activé
pipeline_pag = AutoPipelineForText2Image.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", enable_pag=True, dtype=torch.float16)
pipeline = AutoPipelineForImage2Image.from_pipe(pipeline_t2i)Générons maintenant une image !
pag_scales = 4.0
guidance_scales = 7.0
url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/sdxl-text2img.png"
init_image = load_image(url)
prompt = "a dog catching a frisbee in the jungle"
generator = torch.Generator(device="cpu").manual_seed(0)
image = pipeline(
prompt,
image=init_image,
strength=0.8,
guidance_scale=guidance_scale,
pag_scale=pag_scale,
generator=generator).images[0]from diffusers import AutoPipelineForInpainting
from diffusers.utils import load_image
import torch
pipeline = AutoPipelineForInpainting.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
enable_pag=True,
dtype=torch.float16
)
pipeline.enable_model_cpu_offload()Vous pouvez activer PAG sur un pipeline d'inpainting existant de cette manière
pipeline_inpaint = AutoPipelineForInpainting.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16)
pipeline = AutoPipelineForInpainting.from_pipe(pipeline_inpaint, enable_pag=True)Cela fonctionne toujours lorsque votre pipeline a une tâche différente :
pipeline_t2i = AutoPipelineForText2Image.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16)
pipeline = AutoPipelineForInpaiting.from_pipe(pipeline_t2i, enable_pag=True)Générons une image !
img_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png"
mask_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png"
init_image = load_image(img_url).convert("RGB")
mask_image = load_image(mask_url).convert("RGB")
prompt = "A majestic tiger sitting on a bench"
pag_scales = 3.0
guidance_scales = 7.5
generator = torch.Generator(device="cpu").manual_seed(1)
images = pipeline(
prompt=prompt,
image=init_image,
mask_image=mask_image,
strength=0.8,
num_inference_steps=50,
guidance_scale=guidance_scale,
generator=generator,
pag_scale=pag_scale,
).images
images[0]PAG avec ControlNet
Pour utiliser PAG avec ControlNet, créez d'abord un controlnet. Ensuite, passez le controlnet et les autres arguments PAG à la méthode from_pretrained de l'AutoPipeline pour la tâche spécifiée.
from diffusers import AutoPipelineForText2Image, ControlNetModel
import torch
controlnet = ControlNetModel.from_pretrained(
"diffusers/controlnet-canny-sdxl-1.0", dtype=torch.float16
)
pipeline = AutoPipelineForText2Image.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
controlnet=controlnet,
enable_pag=True,
pag_applied_layers="mid",
dtype=torch.float16
)
pipeline.enable_model_cpu_offload()Si vous disposez déjà d'un pipeline controlnet et souhaitez activer PAG, vous pouvez utiliser l'API
from_pipe:AutoPipelineForText2Image.from_pipe(pipeline_controlnet, enable_pag=True)
Vous pouvez utiliser le pipeline de la même manière que vous utilisez normalement les pipelines ControlNet, avec l'option supplémentaire de spécifier un paramètre pag_scale. Notez que PAG fonctionne bien pour la génération non conditionnelle. Dans cet exemple, nous générerons une image sans prompt.
from diffusers.utils import load_image
canny_image = load_image(
"https://huggingface.co/datasets/YiYiXu/testing-images/resolve/main/pag_control_input.png"
)
for pag_scale in [0.0, 3.0]:
generator = torch.Generator(device="cpu").manual_seed(1)
images = pipeline(
prompt="",
controlnet_conditioning_scale=controlnet_conditioning_scale,
image=canny_image,
num_inference_steps=50,
guidance_scale=0,
generator=generator,
pag_scale=pag_scale,
).images
images[0]
PAG avec IP-Adapter
IP-Adapter est un modèle populaire qui peut être intégré aux modèles de diffusion pour permettre le prompting par image sans aucune modification du modèle sous-jacent. Vous pouvez activer PAG sur un pipeline avec IP-Adapter chargé.
from diffusers import AutoPipelineForText2Image
from diffusers.utils import load_image
from transformers import CLIPVisionModelWithProjection
import torch
image_encoder = CLIPVisionModelWithProjection.from_pretrained(
"h94/IP-Adapter",
subfolder="models/image_encoder",
dtype=torch.float16
)
pipeline = AutoPipelineForText2Image.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
image_encoder=image_encoder,
enable_pag=True,
dtype=torch.float16
).to("cuda") # or "mps", "xpu", "cpu"
pipeline.load_ip_adapter("h94/IP-Adapter", subfolder="sdxl_models", weight_name="ip-adapter-plus_sdxl_vit-h.bin")
pag_scales = 5.0
ip_adapter_scales = 0.8
image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/ip_adapter_diner.png")
pipeline.set_ip_adapter_scale(ip_adapter_scale)
generator = torch.Generator(device="cpu").manual_seed(0)
images = pipeline(
prompt="a polar bear sitting in a chair drinking a milkshake",
ip_adapter_image=image,
negative_prompt="deformed, ugly, wrong proportion, low res, bad anatomy, worst quality, low quality",
num_inference_steps=25,
guidance_scale=3.0,
generator=generator,
pag_scale=pag_scale,
).images
images[0]
PAG réduit les artefacts et améliore la composition globale.
Configurer les paramètres
pag_applied_layers
L'argument pag_applied_layers permet de spécifier les couches auxquelles PAG est appliqué. Par défaut, il ne s'applique qu'aux blocs intermédiaires. Modifier ce paramètre aura un impact significatif sur la sortie. Vous pouvez utiliser la méthode set_pag_applied_layers pour ajuster les couches PAG après la création du pipeline, afin de trouver les couches optimales pour votre modèle.
À titre d’exemple, voici les images générées avec pag_layers = ["down.block_2"] et pag_layers = ["down.block_2", "up.block_1.attentions_0"]
prompt = "an insect robot preparing a delicious meal, anime style"
pipeline.set_pag_applied_layers(pag_layers)
generator = torch.Generator(device="cpu").manual_seed(0)
images = pipeline(
prompt=prompt,
num_inference_steps=25,
guidance_scale=guidance_scale,
generator=generator,
pag_scale=pag_scale,
).images
images[0]
AnimateDiffPAGPipeline
classe diffusers.AnimateDiffPAGPipeline
< source >( vae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizerunet: diffusers.models.unets.unet_2d_condition.UNet2DConditionModel | diffusers.models.unets.unet_motion_model.UNetMotionModelmotion_adapter: MotionAdapterscheduler: KarrasDiffusionSchedulersfeature_extractor: CLIPImageProcessorPil = Noneimage_encoder: CLIPVisionModelWithProjection = Nonepag_applied_layers: str | list[str] = 'mid_block.*attn1' )
Paramètres
- vae (AutoencoderKL) — Modèle de Variational Auto-Encoder (VAE) pour encoder et décoder des images vers et depuis des représentations latentes.
- text_encoder (
CLIPTextModel) — Encodeur de texte figé (clip-vit-large-patch14). - tokenizer (
CLIPTokenizer) — Un CLIPTokenizer pour tokeniser le texte. - unet (UNet2DConditionModel) — Un UNet2DConditionModel utilisé pour créer un UNetMotionModel afin de débruyer les latents vidéo encodés.
- motion_adapter (
MotionAdapter) — UnMotionAdapterà utiliser en combinaison avecunetpour débruyer les latents vidéo encodés. - scheduler (SchedulerMixin) —
Un planificateur à utiliser en combinaison avec
unetpour débruyer les latents de l'image encodée. Peut être l'un des DDIMScheduler, LMSDiscreteScheduler ou PNDMScheduler.
Pipeline pour la génération de vidéos à partir de texte utilisant AnimateDiff et Perturbed Attention Guidance.
Ce modèle hérite de DiffusionPipeline. Consultez la documentation de la classe parente pour les méthodes génériques implémentées pour tous les pipelines (téléchargement, sauvegarde, exécution sur un appareil particulier, etc.).
Le pipeline hérite également des méthodes de chargement suivantes :
- load_textual_inversion() pour charger les embeddings d'inversion textuelle
- load_lora_weights() pour charger les poids LoRA
- save_lora_weights() pour enregistrer les poids LoRA
- load_ip_adapter() pour charger des IP Adapters
__call__
< source >( prompt: str | list[str] | None = Nonenum_frames: int | None = 16height: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 50guidance_scale: float = 7.5negative_prompt: str | list[str] | None = Nonenum_videos_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Noneclip_skip: int | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list[str] = ['latents']decode_chunk_size: int = 16pag_scale: float = 3.0pag_adaptive_scale: float = 0.0 ) → AnimateDiffPipelineOutput or tuple
Paramètres
- prompt (
stroulist[str], facultatif) — Le prompt ou les prompts pour guider la génération d’images. S’il n’est pas défini, vous devez passerprompt_embeds. - height (
int, facultatif, par défautself.unet.config.sample_size * self.vae_scale_factor) — La hauteur en pixels de la vidéo générée. - width (
int, facultatif, par défautself.unet.config.sample_size * self.vae_scale_factor) — La largeur en pixels de la vidéo générée. - num_frames (
int, facultatif, valeur par défaut 16) — Le nombre de frames vidéo générées. La valeur par défaut est de 16 frames, ce qui, à raison de 8 frames par seconde, correspond à 2 secondes de vidéo. - 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 à des vidéos de meilleure qualité, au prix d’une inférence plus lente. - guidance_scale (
float, facultatif, valeur par défaut 7,5) — Une valeur de guidance scale plus élevée encourage le modèle à générer des images étroitement liées auprompttexte, au détriment de la qualité de l'image. Le guidance scale est activé lorsqueguidance_scale > 1. - negative_prompt (
stroulist[str], facultatif) — Le prompt ou les prompts pour guider ce qui ne doit pas être inclus dans la génération d’image. S’il n’est pas défini, vous devez passernegative_prompt_embedsà la place. Ignoré lorsque la guidance n’est pas utilisée (guidance_scale < 1). - num_videos_per_prompt (
int, facultatif, valeur par défaut 1) — Le nombre de vidéos à générer par invite. - eta (
float, facultatif, valeur par défaut 0.0) — Correspond au paramètre eta (η) de l'article DDIM. Ne s'applique qu'au DDIMScheduler et est ignoré par les autres planificateurs. - generator (
torch.Generatoroulist[torch.Generator], facultatif) — Untorch.Generatorpour rendre la génération déterministe. - latents (
torch.Tensor, facultatif) — Latents bruités pré-générés, échantillonnés à partir d'une distribution gaussienne, à utiliser comme entrées pour la génération de vidéo. 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 dugeneratoraléatoire fourni. Les latents doivent avoir la forme(batch_size, num_channel, num_frames, height, width). - prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte (pondération des prompts). S'il n'est pas fourni, les embeddings de texte sont générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte (pondération des prompts). S'ils ne sont pas fournis, lesnegative_prompt_embedssont générés à partir de l'argument d'entréenegative_prompt. - ip_adapter_image — (
PipelineImageInput, facultatif) : Entrée d’image facultative pour travailler avec les IP Adapters. - ip_adapter_image_embeds (
list[torch.Tensor], facultatif) — Embeddings d’image pré-générés pour IP-Adapter. Il doit s’agir d’une liste dont la longueur est égale au nombre d’IP-adapters. Chaque élément doit être un tenseur de forme(batch_size, num_images, emb_dim). Il doit contenir l’embedding d’image négatif sido_classifier_free_guidanceest défini surTrue. S’il n’est pas fourni, les embeddings sont calculés à partir de l’argument d’entréeip_adapter_image. - output_type (
str, facultatif, par défaut"pil") — Le format de sortie de la vidéo générée. Choisissez entretorch.Tensor,PIL.Imageounp.array. - return_dict (
bool, facultatif, par défautTrue) — Indique s'il faut retourner un~pipelines.text_to_video_synthesis.TextToVideoSDPipelineOutputplutôt qu'un simple tuple. - cross_attention_kwargs (
dict, facultatif) — Un dictionnaire de kwargs qui, s'il est spécifié, est transmis auAttentionProcessortel que défini dansself.processor. - clip_skip (
int, facultatif) — Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de l'invite. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de l'invite. - callback_on_step_end (
Callable, facultatif) — Une fonction appelée à la fin de chaque étape de débruitage pendant l'inférence. La fonction est appelée avec les arguments suivants :callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargscontiendra une liste de tous les tenseurs spécifiés parcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, facultatif) — La liste des entrées tensorielles pour la fonctioncallback_on_step_end. Les tenseurs spécifiés dans la liste seront passés en tant qu'argumentcallback_kwargs. Vous ne pourrez inclure que les variables listées dans l'attribut._callback_tensor_inputsde votre classe de pipeline. - decode_chunk_size (
int, facultatif, valeur par défaut 16) — Le nombre de trames à décoder à la fois lors de l’appel de la méthodedecode_latents. - pag_scale (
float, facultatif, valeur par défaut 3.0) — Le facteur d'échelle pour le guidage d'attention perturbée. S'il est défini à 0.0, le guidage d'attention perturbée ne sera pas utilisé. - pag_adaptive_scale (
float, facultatif, valeur par défaut 0.0) — Le facteur d'échelle adaptatif pour le guidage de l'attention perturbée. S'il est défini à 0.0,pag_scaleest utilisé.
Retourne
AnimateDiffPipelineOutput ou tuple
Si return_dict est True, AnimateDiffPipelineOutput est
retourné, sinon un tuple est retourné dont le premier élément est une liste contenant les images générées.
La fonction d'appel du pipeline pour la génération.
Exemples :
>>> import torch
>>> from diffusers import AnimateDiffPAGPipeline, MotionAdapter, DDIMScheduler
>>> from diffusers.utils import export_to_gif
>>> model_id = "SG161222/Realistic_Vision_V5.1_noVAE"
>>> motion_adapter_id = "guoyww/animatediff-motion-adapter-v1-5-2"
>>> motion_adapter = MotionAdapter.from_pretrained(motion_adapter_id)
>>> scheduler = DDIMScheduler.from_pretrained(
... model_id, subfolder="scheduler", beta_schedule="linear", steps_offset=1, clip_sample=False
... )
>>> pipe = AnimateDiffPAGPipeline.from_pretrained(
... model_id,
... motion_adapter=motion_adapter,
... scheduler=scheduler,
... pag_applied_layers=["mid"],
... torch_dtype=torch.float16,
... ).to("cuda")
>>> video = pipe(
... prompt="car, futuristic cityscape with neon lights, street, no human",
... negative_prompt="low quality, bad quality",
... num_inference_steps=25,
... guidance_scale=6.0,
... pag_scale=3.0,
... generator=torch.Generator().manual_seed(42),
... ).frames[0]
>>> export_to_gif(video, "animatediff_pag.gif")encode_prompt
< source >( promptdevicenum_images_per_promptdo_classifier_free_guidancenegative_prompt = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = None )
Paramètres
- prompt (
stroulist[str], facultatif) — prompt à encoder - device — (
torch.device) : torch device - num_images_per_prompt (
int) — nombre d'images à générer par invite - do_classifier_free_guidance (
bool) — indique s'il faut utiliser le classifier free guidance ou non - negative_prompt (
stroulist[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passernegative_prompt_embedsà la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré siguidance_scaleest inférieur à1). - prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entréenegative_prompt. - lora_scale (
float, facultatif) — Un facteur d’échelle LoRA qui sera appliqué à toutes les couches LoRA de l’encodeur de texte si des couches LoRA sont chargées. - clip_skip (
int, facultatif) — Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de l'invite. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de l'invite.
Encode le prompt dans les états cachés de l'encodeur de texte.
HunyuanDiTPAGPipeline
classe diffusers.HunyuanDiTPAGPipeline
< source >( vae: AutoencoderKLtext_encoder: BertModeltokenizer: BertTokenizertransformer: HunyuanDiT2DModelscheduler: DDPMSchedulersafety_checker: diffusers.pipelines.stable_diffusion.safety_checker.StableDiffusionSafetyChecker | None = Nonefeature_extractor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = Nonerequires_safety_checker: bool = Truetext_encoder_2: transformers.models.t5.modeling_t5.T5EncoderModel | None = Nonetokenizer_2: transformers.models.t5.tokenization_t5.T5Tokenizer | None = Nonepag_applied_layers: str | list[str] = 'blocks.1' )
Paramètres
- vae (AutoencoderKL) —
Modèle Variational Auto-Encoder (VAE) pour encoder et décoder des images vers et depuis des représentations latentes. Nous utilisons
sdxl-vae-fp16-fix. - text_encoder (
~transformers.BertModel,~transformers.CLIPTextModel| None) — Encodeur de texte figé (clip-vit-large-patch14). HunyuanDiT utilise un [CLIP bilingue] affiné. - tokenizer (
~transformers.BertTokenizer,~transformers.CLIPTokenizer| None) — UnBertTokenizerouCLIPTokenizerpour tokeniser le texte. - transformer (HunyuanDiT2DModel) — Le modèle HunyuanDiT conçu par Tencent Hunyuan.
- text_encoder_2 (
T5EncoderModel) — L’encodeur mT5. Plus précisément, il s’agit de ‘t5-v1_1-xxl’. - tokenizer_2 (
T5Tokenizer) — Le tokenizer pour l'embedder mT5. - scheduler (DDPMScheduler) — Un planificateur à utiliser en combinaison avec HunyuanDiT pour débruyer les latents d'image encodés.
Pipeline pour la génération d'images à partir de l'anglais/du chinois utilisant HunyuanDiT et Perturbed Attention Guidance.
Ce modèle hérite de DiffusionPipeline. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous les pipelines (tels que le téléchargement ou l'enregistrement, l'exécution sur un appareil particulier, etc.)
HunyuanDiT utilise deux encodeurs de texte : mT5 et [CLIP bilingue](fine-tuned by ourselves)
__call__
< source >( prompt: str | list[str] = Noneheight: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 50guidance_scale: float = 5.0negative_prompt: str | list[str] | None = Nonenum_images_per_prompt: int = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_2: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_2: typing.Optional[torch.Tensor] = Noneprompt_attention_mask: typing.Optional[torch.Tensor] = Noneprompt_attention_mask_2: typing.Optional[torch.Tensor] = Nonenegative_prompt_attention_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_attention_mask_2: typing.Optional[torch.Tensor] = Noneoutput_type: str = 'pil'return_dict: bool = Truecallback_on_step_end: typing.Union[typing.Callable[[int, int, dict], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list[str] = ['latents']guidance_rescale: float = 0.0original_size: tuple[int, int] = (1024, 1024)target_size: tuple[int, int] = Nonecrops_coords_top_left: tuple[int, int] = (0, 0)use_resolution_binning: bool = Truepag_scale: float = 3.0pag_adaptive_scale: float = 0.0 ) → StableDiffusionPipelineOutput or tuple
Paramètres
- prompt (
stroulist[str], facultatif) — Le prompt ou les prompts pour guider la génération d’images. S’il n’est pas défini, vous devez passerprompt_embeds. - height (
int) — La hauteur en pixels de l'image générée. - width (
int) — 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. Ce paramètre est modulé parstrength. - guidance_scale (
float, facultatif, valeur par défaut 7,5) — Une valeur de guidance scale plus élevée encourage le modèle à générer des images étroitement liées auprompttexte, au détriment de la qualité de l'image. Le guidance scale est activé lorsqueguidance_scale > 1. - negative_prompt (
stroulist[str], facultatif) — Le prompt ou les prompts pour guider ce qui ne doit pas être inclus dans la génération d’image. S’il n’est pas défini, vous devez passernegative_prompt_embedsà la place. Ignoré lorsque la guidance n’est pas utilisée (guidance_scale < 1). - num_images_per_prompt (
int, facultatif, valeur par défaut 1) — Le nombre d'images à générer par invite. - eta (
float, facultatif, valeur par défaut 0.0) — Correspond au paramètre eta (η) de l'article DDIM. Ne s'applique qu'au DDIMScheduler et est ignoré par les autres planificateurs. - generator (
torch.Generatoroulist[torch.Generator], facultatif) — Untorch.Generatorpour rendre la génération déterministe. - latents (
torch.Tensor, facultatif) — Latents bruités pré-générés, échantillonnés à partir d’une distribution gaussienne, à utiliser comme entrées pour la génération d’images. Peut servir à ajuster la même génération avec des prompts différents. S’il n’est pas fourni, un tenseur de latents est généré par échantillonnage à l’aide dugeneratoraléatoire fourni. - prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte (pondération des prompts). S'il n'est pas fourni, les embeddings de texte sont générés à partir de l'argument d'entréeprompt. - prompt_embeds_2 (
torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte (pondération des prompts). S'il n'est pas fourni, les embeddings de texte sont générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte (pondération des prompts). S'ils ne sont pas fournis, lesnegative_prompt_embedssont générés à partir de l'argument d'entréenegative_prompt. - negative_prompt_embeds_2 (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte (pondération des prompts). S'ils ne sont pas fournis, lesnegative_prompt_embedssont générés à partir de l'argument d'entréenegative_prompt. - prompt_attention_mask (
torch.Tensor, facultatif) — Masque d'attention pour le prompt. Requis lorsqueprompt_embedsest passé directement. - prompt_attention_mask_2 (
torch.Tensor, facultatif) — Masque d'attention pour le prompt. Requis lorsqueprompt_embeds_2est passé directement. - negative_prompt_attention_mask (
torch.Tensor, facultatif) — Masque d'attention pour le prompt négatif. Requis lorsquenegative_prompt_embedsest passé directement. - negative_prompt_attention_mask_2 (
torch.Tensor, facultatif) — Masque d'attention pour le prompt négatif. Requis lorsquenegative_prompt_embeds_2est passé directement. - output_type (
str, facultatif, par défaut"pil") — Le format de sortie de l’image générée. Choisissez entrePIL.Imageounp.array. - return_dict (
bool, facultatif, par défautTrue) — Indique s'il faut retourner un StableDiffusionPipelineOutput plutôt qu'un simple tuple. - callback_on_step_end (
Callable[[int, int], None],PipelineCallback,MultiPipelineCallbacks, facultatif) — Fonction de rappel ou liste de fonctions de rappel à appeler à la fin de chaque étape de débruitage. - callback_on_step_end_tensor_inputs (
list[str], facultatif) — Une liste des entrées tensorielles qui doivent être transmises à la fonction de rappel. Si non définie, toutes les entrées tensorielles seront transmises. - guidance_rescale (
float, facultatif, valeur par défaut 0.0) — Recalcule le bruit_cfg en fonction deguidance_rescale. Basé sur les résultats de Common Diffusion Noise Schedules and Sample Steps are Flawed. Voir la section 3.4 - original_size (
tuple[int, int], facultatif, par défaut(1024, 1024)) — La taille originale de l'image. Utilisée pour calculer les identifiants de temps. - target_size (
tuple[int, int], facultatif) — La taille cible de l'image. Utilisée pour calculer les identifiants temporels. - crops_coords_top_left (
tuple[int, int], facultatif, par défaut(0, 0)) — Les coordonnées du coin supérieur gauche de la recadrage. Utilisé pour calculer les identifiants de temps. - use_resolution_binning (
bool, facultatif, valeur par défautTrue) — Indique s'il faut utiliser le binning de résolution ou non. SiTrue, la résolution d'entrée est mappée sur la résolution standard la plus proche. Les résolutions prises en charge sont 1024x1024, 1280x1280, 1024x768, 1152x864, 1280x960, 768x1024, 864x1152, 960x1280, 1280x768 et 768x1280. Il est recommandé de définir cette valeur surTrue. - pag_scale (
float, facultatif, valeur par défaut 3.0) — Le facteur d'échelle pour le guidage d'attention perturbée. S'il est défini à 0.0, le guidage d'attention perturbée ne sera pas utilisé. - pag_adaptive_scale (
float, facultatif, valeur par défaut 0.0) — Le facteur d'échelle adaptatif pour le guidage de l'attention perturbée. S'il est défini à 0.0,pag_scaleest utilisé.
Retourne
StableDiffusionPipelineOutput ou tuple
Si return_dict est True, StableDiffusionPipelineOutput est renvoyé,
sinon un tuple est renvoyé dont le premier élément est une liste des images générées et le
deuxième élément est une liste de bool indiquant si l’image générée correspondante contient
du contenu « not-safe-for-work » (nsfw).
La fonction d'appel du pipeline pour la génération avec HunyuanDiT.
Exemples :
>>> import torch
>>> from diffusers import AutoPipelineForText2Image
>>> pipe = AutoPipelineForText2Image.from_pretrained(
... "Tencent-Hunyuan/HunyuanDiT-v1.2-Diffusers",
... torch_dtype=torch.float16,
... enable_pag=True,
... pag_applied_layers=[14],
... ).to("cuda")
>>> # prompt = "an astronaut riding a horse"
>>> prompt = "一个宇航员在骑马"
>>> image = pipe(prompt, guidance_scale=4, pag_scale=3).images[0]encode_prompt
< source >( prompt: strdevice: device = Nonedtype: dtype = Nonenum_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_attention_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_attention_mask: typing.Optional[torch.Tensor] = Nonemax_sequence_length: int | None = Nonetext_encoder_index: int = 0 )
Paramètres
- prompt (
stroulist[str], facultatif) — prompt à encoder - device — (
torch.device) : torch device - dtype (
torch.dtype) — dtype 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 classifier free guidance ou non - negative_prompt (
stroulist[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passernegative_prompt_embedsà la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré siguidance_scaleest inférieur à1). - prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entréenegative_prompt. - prompt_attention_mask (
torch.Tensor, facultatif) — Masque d'attention pour le prompt. Requis lorsqueprompt_embedsest passé directement. - negative_prompt_attention_mask (
torch.Tensor, facultatif) — Masque d'attention pour le prompt négatif. Requis lorsquenegative_prompt_embedsest passé directement. - max_sequence_length (
int, facultatif) — longueur maximale de séquence à utiliser pour le prompt. - text_encoder_index (
int, facultatif) — Index de l’encodeur de texte à utiliser.0pour clip et1pour T5.
Encode le prompt dans les états cachés de l'encodeur de texte.
KolorsPAGPipeline
classe diffusers.KolorsPAGPipeline
< source >( vae: AutoencoderKLtext_encoder: ChatGLMModeltokenizer: ChatGLMTokenizerunet: UNet2DConditionModelscheduler: KarrasDiffusionSchedulersimage_encoder: CLIPVisionModelWithProjection = Nonefeature_extractor: CLIPImageProcessorPil = Noneforce_zeros_for_empty_prompt: bool = Falsepag_applied_layers: str | list[str] = 'mid' )
Paramètres
- vae (AutoencoderKL) — Modèle de Variational Auto-Encoder (VAE) pour encoder et décoder des images vers et depuis des représentations latentes.
- text_encoder (
ChatGLMModel) — Encodeur de texte figé. Kolors utilise ChatGLM3-6B. - tokenizer (
ChatGLMTokenizer) — Tokeniseur de la classe ChatGLMTokenizer. - unet (UNet2DConditionModel) — Architecture U-Net conditionnelle pour le débruitage des latents d'image encodés.
- scheduler (SchedulerMixin) —
Un planificateur à utiliser en combinaison avec
unetpour débruyer les latents de l'image encodée. Peut être l'un des DDIMScheduler, LMSDiscreteScheduler ou PNDMScheduler. - force_zeros_for_empty_prompt (
bool, facultatif, valeur par défaut"False") — Indique si les embeddings du prompt négatif doivent être forcés à 0. Consultez également la configuration deKwai-Kolors/Kolors-diffusers. - pag_applied_layers (
strorlist[str]``, *optional*, defaults to“mid”`) — Définit les couches d’attention du transformeur sur lesquelles appliquer le guidage d’attention perturbé. Peut être une chaîne de caractères ou une liste de chaînes de caractères avec “down”, “mid”, “up”, un bloc transformeur entier ou des couches d’attention spécifiques d’un bloc transformeur, par exemple : [“mid”] [“down”, “mid”] [“down”, “mid”, “up.block_1”] [“down”, “mid”, “up.block_1.attentions_0”, “up.block_1.attentions_1”]
Pipeline pour la génération d'images à partir de texte utilisant Kolors.
Ce modèle hérite de DiffusionPipeline. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous les pipelines (tels que le téléchargement ou l'enregistrement, l'exécution sur un appareil particulier, etc.)
Le pipeline hérite également des méthodes de chargement suivantes :
- load_lora_weights() pour charger les poids LoRA
- save_lora_weights() pour enregistrer les poids LoRA
- load_ip_adapter() pour charger des IP Adapters
__call__
< source >( prompt: str | list[str] = Noneheight: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 50timesteps: list[int] = Nonesigmas: list[float] = Nonedenoising_end: float | None = Noneguidance_scale: float = 5.0negative_prompt: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Noneoriginal_size: tuple[int, int] | None = Nonecrops_coords_top_left: tuple[int, int] = (0, 0)target_size: tuple[int, int] | None = Nonenegative_original_size: tuple[int, int] | None = Nonenegative_crops_coords_top_left: tuple[int, int] = (0, 0)negative_target_size: tuple[int, int] | None = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list[str] = ['latents']pag_scale: float = 3.0pag_adaptive_scale: float = 0.0max_sequence_length: int = 256 ) → ~pipelines.kolors.KolorsPipelineOutput or tuple
Paramètres
- prompt (
stroulist[str], facultatif) — Le prompt ou les prompts pour guider la génération d’image. S’il n’est pas défini, il faut passerprompt_embedsà la place. - 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. Cette valeur est fixée à 1024 par défaut pour obtenir les meilleurs résultats. Toute valeur inférieure à 512 pixels ne fonctionnera pas correctement avec Kwai-Kolors/Kolors-diffusers ni avec des points de contrôle qui n’ont pas été 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. Cette valeur est fixée à 1024 par défaut pour obtenir les meilleurs résultats. Toute valeur inférieure à 512 pixels ne fonctionnera pas correctement avec Kwai-Kolors/Kolors-diffusers ni avec des points de contrôle qui n’ont pas été spécifiquement affinés sur de faibles résolutions. - num_inference_steps (
int, facultatif, valeur par défaut 50) — Le nombre d'étapes de débruitage. Un plus grand nombre d'étapes de débruitage conduit généralement à une image de meilleure qualité, au prix d'une inférence plus lente. - timesteps (
list[int], facultatif) — Timesteps personnalisés à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argumenttimestepsdans leur méthodeset_timesteps. S'il n'est pas défini, le comportement par défaut lorsquenum_inference_stepsest passé sera utilisé. Doit être dans l'ordre décroissant. - sigmas (
list[float], facultatif) — Sigmas personnalisés à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argumentsigmasdans leur méthodeset_timesteps. S'il n'est pas défini, le comportement par défaut lorsquenum_inference_stepsest passé sera utilisé. - denoising_end (
float, facultatif) — Lorsqu’il est spécifié, détermine la fraction (entre 0.0 et 1.0) du processus total de débruitage qui doit être achevée avant qu’il ne soit volontairement interrompu prématurément. En conséquence, l’échantillon retourné conservera encore une quantité substantielle de bruit, telle que déterminée par les pas de temps discrets sélectionnés par le planificateur. Le paramètre denoising_end devrait idéalement être utilisé lorsque ce pipeline fait partie d’une configuration multi-pipelines « Mixture of Denoisers », comme expliqué dans Refining the Image Output - guidance_scale (
float, facultatif, valeur par défaut 5.0) — Échelle de guidage telle que définie dans Classifier-Free Diffusion Guidance.guidance_scaleest défini commewde l’équation 2. de Imagen Paper. L’échelle de guidage est activée en définissantguidance_scale > 1. Une échelle de guidage plus élevée encourage la génération d’images étroitement liées auprompttexte, généralement au détriment de la qualité de l’image. - negative_prompt (
stroulist[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passernegative_prompt_embedsà la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré siguidance_scaleest inférieur à1). - num_images_per_prompt (
int, facultatif, valeur par défaut 1) — Le nombre d'images à générer par invite. - eta (
float, facultatif, valeur par défaut 0.0) — Correspond au paramètre eta (η) du papier DDIM : https://huggingface.co/papers/2010.02502. Ne s'applique qu'à schedulers.DDIMScheduler, sera ignoré pour les autres. - generator (
torch.Generatoroulist[torch.Generator], facultatif) — Un ou une liste de générateurs torch pour rendre la génération déterministe. - latents (
torch.Tensor, facultatif) — Latents bruités pré-générés, échantillonnés à partir d’une distribution gaussienne, à utiliser comme entrées pour la génération d’images. Peut être utilisé pour ajuster la même génération avec des prompts différents. S’il n’est pas fourni, un tenseur de latents sera généré par échantillonnage à l’aide dugeneratoraléatoire fourni. - prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entréeprompt. - pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-poolés pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte pré-poolés seront générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entréenegative_prompt. - negative_pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les pooled negative_prompt_embeds seront générés à partir de l'argument d'entréenegative_prompt. - ip_adapter_image — (
PipelineImageInput, facultatif) : Image d’entrée facultative pour travailler avec les IP Adapters. - ip_adapter_image_embeds (
list[torch.Tensor], facultatif) — Embeddings d’image pré-générés pour IP-Adapter. Il doit s’agir d’une liste dont la longueur est égale au nombre d’IP-adapters. Chaque élément doit être un tenseur de forme(batch_size, num_images, emb_dim). Il doit contenir l’embedding d’image négatif sido_classifier_free_guidanceest défini surTrue. S’il n’est pas fourni, les embeddings sont calculés à partir de l’argument d’entréeip_adapter_image. - output_type (
str, facultatif, par défaut"pil") — Le format de sortie de l'image générée. Choisissez entre PIL :PIL.Image.Imageounp.array. - return_dict (
bool, facultatif, par défautTrue) — Indique s'il faut retourner un~pipelines.kolors.KolorsPipelineOutputplutôt qu'un simple tuple. - cross_attention_kwargs (
dict, facultatif) — Un dictionnaire de kwargs qui, s'il est spécifié, est transmis à l'AttentionProcessordéfini sousself.processordans diffusers.models.attention_processor. - original_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Sioriginal_sizen’est pas identique àtarget_size, l’image apparaîtra sous-échantillonnée ou suréchantillonnée.original_sizeest par défaut(height, width)s’il n’est pas spécifié. Fait partie du micro-conditionnement de SDXL, tel que décrit dans la section 2.2 de https://huggingface.co/papers/2307.01952. - crops_coords_top_left (
tuple[int], facultatif, par défaut (0, 0)) —crops_coords_top_leftpeut être utilisé pour générer une image qui semble « recadrée » à partir de la positioncrops_coords_top_leftvers le bas. Des images bien cadrées et centrées sont généralement obtenues en définissantcrops_coords_top_leftsur (0, 0). Fait partie du micro-conditionnement de SDXL, tel que décrit dans la section 2.2 de https://huggingface.co/papers/2307.01952. - target_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Dans la plupart des cas,target_sizedoit être défini sur la hauteur et la largeur souhaitées de l’image générée. S’il n’est pas spécifié, il prendra par défaut(height, width). Fait partie du micro-conditionnement de SDXL, tel que décrit dans la section 2.2 de https://huggingface.co/papers/2307.01952. - negative_original_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Permet de conditionner négativement le processus de génération en fonction d’une résolution d’image spécifique. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. Pour plus d’informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208. - negative_crops_coords_top_left (
tuple[int], facultatif, valeur par défaut (0, 0)) — Permet de conditionner négativement le processus de génération en fonction de coordonnées de recadrage spécifiques. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. Pour plus d’informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208. - negative_target_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Permet de conditionner négativement le processus de génération en fonction de la résolution de l’image cible. Il doit être identique àtarget_sizedans la plupart des cas. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. Pour plus d’informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208. - callback_on_step_end (
Callable,PipelineCallback,MultiPipelineCallbacks, facultatif) — Une fonction ou une sous-classe dePipelineCallbackouMultiPipelineCallbacksqui est appelée à la fin de chaque étape de débruitage pendant l’inférence, avec les arguments suivants :callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargscontiendra une liste de tous les tenseurs spécifiés parcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, facultatif) — La liste des entrées tensorielles pour la fonctioncallback_on_step_end. Les tenseurs spécifiés dans la liste seront passés en tant qu'argumentcallback_kwargs. Vous ne pourrez inclure que les variables listées dans l'attribut._callback_tensor_inputsde votre classe de pipeline. - pag_scale (
float, facultatif, valeur par défaut 3.0) — Le facteur d'échelle pour le guidage d'attention perturbée. S'il est défini à 0.0, le guidage d'attention perturbée ne sera pas utilisé. - pag_adaptive_scale (
float, facultatif, valeur par défaut 0.0) — Le facteur d'échelle adaptatif pour le guidage de l'attention perturbée. S'il est défini à 0.0,pag_scaleest utilisé. - max_sequence_length (
intpar défaut 256) — Longueur maximale de séquence à utiliser avec leprompt.
Retourne
~pipelines.kolors.KolorsPipelineOutput ou tuple
~pipelines.kolors.KolorsPipelineOutput 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 :
>>> import torch
>>> from diffusers import AutoPipelineForText2Image
>>> pipe = AutoPipelineForText2Image.from_pretrained(
... "Kwai-Kolors/Kolors-diffusers",
... variant="fp16",
... torch_dtype=torch.float16,
... enable_pag=True,
... pag_applied_layers=["down.block_2.attentions_1", "up.block_0.attentions_1"],
... )
>>> pipe = pipe.to("cuda")
>>> prompt = (
... "A photo of a ladybug, macro, zoom, high quality, film, holding a wooden sign with the text 'KOLORS'"
... )
>>> image = pipe(prompt, guidance_scale=5.5, pag_scale=1.5).images[0]encode_prompt
< source >( promptdevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonemax_sequence_length: int = 256 )
Paramètres
- prompt (
stroulist[str], facultatif) — prompt à encoder - device — (
torch.device) : torch device - num_images_per_prompt (
int) — nombre d'images à générer par invite - do_classifier_free_guidance (
bool) — indique s'il faut utiliser le classifier free guidance ou non - negative_prompt (
stroulist[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passernegative_prompt_embedsà la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré siguidance_scaleest inférieur à1). - prompt_embeds (
torch.FloatTensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entréeprompt. - pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-poolés pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte pré-poolés seront générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.FloatTensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entréenegative_prompt. - negative_pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les pooled negative_prompt_embeds seront générés à partir de l'argument d'entréenegative_prompt. - max_sequence_length (
intpar défaut 256) — Longueur maximale de séquence à utiliser avec leprompt.
Encode le prompt dans les états cachés de l'encodeur de texte.
get_guidance_scale_embedding
< source >( w: Tensorembedding_dim: int = 512dtype: dtype = torch.float32 ) → torch.Tensor
Paramètres
- w (
torch.Tensor) — Génère des vecteurs d’incorporation avec une échelle de guidage spécifiée afin d’enrichir ensuite les incorporations de pas de temps. - embedding_dim (
int, facultatif, par défaut 512) — Dimension des embeddings à générer. - dtype (
torch.dtype, facultatif, par défauttorch.float32) — Type de données des embeddings générés.
Retourne
torch.Tensor
Vecteurs d'embedding de forme (len(w), embedding_dim).
StableDiffusionPAGInpaintPipeline
classe diffusers.StableDiffusionPAGInpaintPipeline
< source >( vae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizerunet: UNet2DConditionModelscheduler: KarrasDiffusionSchedulerssafety_checker: StableDiffusionSafetyCheckerfeature_extractor: CLIPImageProcessorPilimage_encoder: CLIPVisionModelWithProjection = Nonerequires_safety_checker: bool = Truepag_applied_layers: str | list[str] = 'mid' )
Paramètres
- vae (AutoencoderKL) — Modèle de Variational Auto-Encoder (VAE) pour encoder et décoder des images vers et depuis des représentations latentes.
- text_encoder (CLIPTextModel) — Encodeur de texte figé (clip-vit-large-patch14).
- tokenizer (CLIPTokenizer) —
Un
CLIPTokenizerpour tokeniser le texte. - unet (UNet2DConditionModel) —
Un
UNet2DConditionModelpour débruyer les latents d'image encodés. - scheduler (SchedulerMixin) —
Un planificateur à utiliser en combinaison avec
unetpour débruyer les latents de l'image encodée. Peut être l'un des DDIMScheduler, LMSDiscreteScheduler ou PNDMScheduler. - safety_checker (
StableDiffusionSafetyChecker) — Module de classification qui estime si les images générées pourraient être considérées comme offensives ou nuisibles. Veuillez consulter la fiche modèle pour plus de détails sur les risques potentiels d’un modèle. - feature_extractor (CLIPImageProcessor) —
Un
CLIPImageProcessorpour extraire les caractéristiques des images générées ; utilisé comme entrées pour lesafety_checker.
Pipeline pour la génération d'images à partir de texte utilisant Stable Diffusion.
Ce modèle hérite de DiffusionPipeline. Consultez la documentation de la classe parente pour les méthodes génériques implémentées pour tous les pipelines (téléchargement, sauvegarde, exécution sur un appareil particulier, etc.).
Le pipeline hérite également des méthodes de chargement suivantes :
- load_textual_inversion() pour charger les embeddings d'inversion textuelle
- load_lora_weights() pour charger les poids LoRA
- save_lora_weights() pour enregistrer les poids LoRA
- from_single_file() pour charger des fichiers
.ckpt - load_ip_adapter() pour charger des IP Adapters
__call__
< source >( prompt: str | list[str] = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonemask_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonemasked_image_latents: Tensor = Noneheight: int | None = Nonewidth: int | None = Nonepadding_mask_crop: int | None = Nonestrength: float = 0.9999num_inference_steps: int = 50timesteps: list[int] = Nonesigmas: list[float] = Noneguidance_scale: float = 7.5negative_prompt: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Noneguidance_rescale: float = 0.0clip_skip: int | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list[str] = ['latents']pag_scale: float = 3.0pag_adaptive_scale: float = 0.0 ) → StableDiffusionPipelineOutput or tuple
Paramètres
- prompt (
stroulist[str], facultatif) — Le prompt ou les prompts pour guider la génération d’images. S’il n’est pas défini, vous devez passerprompt_embeds. - image (
torch.Tensor,PIL.Image.Image,np.ndarray,list[torch.Tensor],list[PIL.Image.Image]oulist[np.ndarray]) —Image, tableau numpy ou tenseur représentant un lot d'images à inpainter (les parties de l'image à masquer avecmask_imageet à repeindre selonprompt). - mask_image (
torch.Tensor,PIL.Image.Image,np.ndarray,list[torch.Tensor],list[PIL.Image.Image]oulist[np.ndarray]) —Image, tableau numpy ou tenseur représentant un lot d’images à masquerimage. Les pixels blancs du masque sont repeints tandis que les pixels noirs sont conservés. Simask_imageest une image PIL, elle est convertie en un seul canal (luminance) avant utilisation. S’il s’agit d’un tableau numpy ou d’un tenseur pytorch, il doit contenir un seul canal de couleur (L) au lieu de 3, la forme attendue pour un tenseur pytorch serait donc(B, 1, H, W),(B, H, W),(1, H, W),(H, W). Et pour un tableau numpy, elle serait(B, H, W, 1),(B, H, W),(H, W, 1)ou(H, W). - masked_image_latents (
torch.Tensor, facultatif) — Latence pré-encodée de l’image masquée (pour l’inpainting). - height (
int, facultatif, par défautself.unet.config.sample_size * self.vae_scale_factor) — La hauteur en pixels de l’image générée. - width (
int, facultatif, par défautself.unet.config.sample_size * self.vae_scale_factor) — La largeur en pixels de l’image générée. - padding_mask_crop (
int, facultatif, valeur par défautNone) — La taille de la marge dans le recadrage à appliquer à l’image et au masque. SiNone, aucun recadrage n’est appliqué à l’image et à mask_image. Sipadding_mask_cropn’est pasNone, une région rectangulaire de même ratio d’aspect que l’image et contenant toute la zone masquée est d’abord identifiée, puis cette zone est étendue en fonction depadding_mask_crop. L’image et mask_image sont ensuite recadrées en fonction de la zone étendue avant d’être redimensionnées à la taille de l’image d’origine pour l’inpainting. Cela est utile lorsque la zone masquée est petite tandis que l’image est grande et contient des informations sans rapport avec l’inpainting, comme l’arrière-plan. - strength (
float, facultatif, valeur par défaut 0.9999) — Indique l'étendue de la transformation de l'imagede référence. Doit être compris entre 0 et 1. L'imageest utilisée comme point de départ et plus lestrengthest élevé, plus du bruit est ajouté. Le nombre d'étapes de débruitage dépend de la quantité de bruit initialement ajoutée. Lorsquestrengthvaut 1, le bruit ajouté est maximal et le processus de débruitage s'exécute pendant le nombre complet d'itérations spécifié dansnum_inference_steps. Une valeur de 1 ignore essentiellement l'image. - num_inference_steps (
int, facultatif, valeur par défaut 50) — Le nombre d'étapes de débruitage. Un plus grand nombre d'étapes de débruitage conduit généralement à une image de meilleure qualité, au prix d'une inférence plus lente. - timesteps (
list[int], facultatif) — Timesteps personnalisés à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argumenttimestepsdans leur méthodeset_timesteps. S'il n'est pas défini, le comportement par défaut lorsquenum_inference_stepsest passé sera utilisé. Doit être dans l'ordre décroissant. - sigmas (
list[float], facultatif) — Sigmas personnalisés à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argumentsigmasdans leur méthodeset_timesteps. S'il n'est pas défini, le comportement par défaut lorsquenum_inference_stepsest passé sera utilisé. - guidance_scale (
float, facultatif, valeur par défaut 7,5) — Une valeur de guidance scale plus élevée encourage le modèle à générer des images étroitement liées auprompttexte, au détriment de la qualité de l'image. Le guidance scale est activé lorsqueguidance_scale > 1. - negative_prompt (
stroulist[str], facultatif) — Le prompt ou les prompts pour guider ce qui ne doit pas être inclus dans la génération d’image. S’il n’est pas défini, vous devez passernegative_prompt_embedsà la place. Ignoré lorsque la guidance n’est pas utilisée (guidance_scale < 1). - num_images_per_prompt (
int, facultatif, valeur par défaut 1) — Le nombre d'images à générer par invite. - eta (
float, facultatif, valeur par défaut 0.0) — Correspond au paramètre eta (η) de l'article DDIM. Ne s'applique qu'au DDIMScheduler et est ignoré par les autres planificateurs. - generator (
torch.Generatoroulist[torch.Generator], facultatif) — Untorch.Generatorpour rendre la génération déterministe. - latents (
torch.Tensor, facultatif) — Latents bruités pré-générés, échantillonnés à partir d’une distribution gaussienne, à utiliser comme entrées pour la génération d’images. Peut servir à ajuster la même génération avec des prompts différents. S’il n’est pas fourni, un tenseur de latents est généré par échantillonnage à l’aide dugeneratoraléatoire fourni. - prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte (pondération des prompts). S'il n'est pas fourni, les embeddings de texte sont générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte (pondération des prompts). S'ils ne sont pas fournis, lesnegative_prompt_embedssont générés à partir de l'argument d'entréenegative_prompt. - ip_adapter_image — (
PipelineImageInput, facultatif) : Image d’entrée facultative pour travailler avec les IP Adapters. - ip_adapter_image_embeds (
list[torch.Tensor], facultatif) — Embeddings d’image pré-générés pour IP-Adapter. Il doit s’agir d’une liste dont la longueur est égale au nombre d’IP-adapters. Chaque élément doit être un tenseur de forme(batch_size, num_images, emb_dim). Il doit contenir l’embedding d’image négatif sido_classifier_free_guidanceest défini surTrue. S’il n’est pas fourni, les embeddings sont calculés à partir de l’argument d’entréeip_adapter_image. - output_type (
str, facultatif, par défaut"pil") — Le format de sortie de l’image générée. Choisissez entrePIL.Imageounp.array. - return_dict (
bool, facultatif, par défautTrue) — Indique s'il faut retourner un StableDiffusionPipelineOutput plutôt qu'un simple tuple. - cross_attention_kwargs (
dict, facultatif) — Un dictionnaire de kwargs qui, s'il est spécifié, est transmis auAttentionProcessortel que défini dansself.processor. - guidance_rescale (
float, facultatif, valeur par défaut 0.0) — Facteur de rescaling du guidance issu de Common Diffusion Noise Schedules and Sample Steps are Flawed. Le facteur de rescaling du guidance doit corriger l'exposition excessive lors de l'utilisation d'un SNR terminal nul. - clip_skip (
int, facultatif) — Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de l'invite. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de l'invite. - callback_on_step_end (
Callable,PipelineCallback,MultiPipelineCallbacks, facultatif) — Une fonction ou une sous-classe dePipelineCallbackouMultiPipelineCallbacksqui est appelée à la fin de chaque étape de débruitage pendant l’inférence, avec les arguments suivants :callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargscontiendra une liste de tous les tenseurs spécifiés parcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, facultatif) — La liste des entrées tensorielles pour la fonctioncallback_on_step_end. Les tenseurs spécifiés dans la liste seront passés en tant qu'argumentcallback_kwargs. Vous ne pourrez inclure que les variables listées dans l'attribut._callback_tensor_inputsde votre classe de pipeline. - pag_scale (
float, facultatif, valeur par défaut 3.0) — Le facteur d'échelle pour le guidage d'attention perturbée. S'il est défini à 0.0, le guidage d'attention perturbée ne sera pas utilisé. - pag_adaptive_scale (
float, facultatif, valeur par défaut 0.0) — Le facteur d'échelle adaptatif pour le guidage de l'attention perturbée. S'il est défini à 0.0,pag_scaleest utilisé.
Retourne
StableDiffusionPipelineOutput ou tuple
Si return_dict est True, StableDiffusionPipelineOutput est renvoyé,
sinon un tuple est renvoyé dont le premier élément est une liste des images générées et le
deuxième élément est une liste de bool indiquant si l’image générée correspondante contient
du contenu « not-safe-for-work » (nsfw).
La fonction d'appel du pipeline pour la génération.
Exemples :
>>> import torch
>>> from diffusers import AutoPipelineForInpainting
>>> pipe = AutoPipelineForInpainting.from_pretrained(
... "stable-diffusion-v1-5/stable-diffusion-v1-5", torch_dtype=torch.float16, enable_pag=True
... )
>>> pipe = pipe.to("cuda")
>>> img_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png"
>>> mask_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png"
>>> init_image = load_image(img_url).convert("RGB")
>>> mask_image = load_image(mask_url).convert("RGB")
>>> prompt = "A majestic tiger sitting on a bench"
>>> image = pipe(
... prompt=prompt,
... image=init_image,
... mask_image=mask_image,
... strength=0.8,
... num_inference_steps=50,
... guidance_scale=guidance_scale,
... generator=generator,
... pag_scale=pag_scale,
... ).images[0]encode_prompt
< source >( promptdevicenum_images_per_promptdo_classifier_free_guidancenegative_prompt = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = None )
Paramètres
- prompt (
stroulist[str], facultatif) — prompt à encoder - device — (
torch.device) : torch device - num_images_per_prompt (
int) — nombre d'images à générer par invite - do_classifier_free_guidance (
bool) — indique s'il faut utiliser le classifier free guidance ou non - negative_prompt (
stroulist[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passernegative_prompt_embedsà la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré siguidance_scaleest inférieur à1). - prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entréenegative_prompt. - lora_scale (
float, facultatif) — Un facteur d’échelle LoRA qui sera appliqué à toutes les couches LoRA de l’encodeur de texte si des couches LoRA sont chargées. - clip_skip (
int, facultatif) — Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de l'invite. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de l'invite.
Encode le prompt dans les états cachés de l'encodeur de texte.
get_guidance_scale_embedding
< source >( w: Tensorembedding_dim: int = 512dtype: dtype = torch.float32 ) → torch.Tensor
Paramètres
- w (
torch.Tensor) — Génère des vecteurs d’incorporation avec une échelle de guidage spécifiée afin d’enrichir ensuite les incorporations de pas de temps. - embedding_dim (
int, facultatif, par défaut 512) — Dimension des embeddings à générer. - dtype (
torch.dtype, facultatif, par défauttorch.float32) — Type de données des embeddings générés.
Retourne
torch.Tensor
Vecteurs d'embedding de forme (len(w), embedding_dim).
StableDiffusionPAGPipeline
classe diffusers.StableDiffusionPAGPipeline
< source >( vae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizerunet: UNet2DConditionModelscheduler: KarrasDiffusionSchedulerssafety_checker: StableDiffusionSafetyCheckerfeature_extractor: CLIPImageProcessorPilimage_encoder: CLIPVisionModelWithProjection = Nonerequires_safety_checker: bool = Truepag_applied_layers: str | list[str] = 'mid' )
Paramètres
- vae (AutoencoderKL) — Modèle de Variational Auto-Encoder (VAE) pour encoder et décoder des images vers et depuis des représentations latentes.
- text_encoder (CLIPTextModel) — Encodeur de texte figé (clip-vit-large-patch14).
- tokenizer (CLIPTokenizer) —
Un
CLIPTokenizerpour tokeniser le texte. - unet (UNet2DConditionModel) —
Un
UNet2DConditionModelpour débruyer les latents d'image encodés. - scheduler (SchedulerMixin) —
Un planificateur à utiliser en combinaison avec
unetpour débruyer les latents de l'image encodée. Peut être l'un des DDIMScheduler, LMSDiscreteScheduler ou PNDMScheduler. - safety_checker (
StableDiffusionSafetyChecker) — Module de classification qui estime si les images générées pourraient être considérées comme offensives ou nuisibles. Veuillez consulter la fiche modèle pour plus de détails sur les risques potentiels d’un modèle. - feature_extractor (CLIPImageProcessor) —
Un
CLIPImageProcessorpour extraire les caractéristiques des images générées ; utilisé comme entrées pour lesafety_checker.
Pipeline pour la génération d'images à partir de texte utilisant Stable Diffusion.
Ce modèle hérite de DiffusionPipeline. Consultez la documentation de la classe parente pour les méthodes génériques implémentées pour tous les pipelines (téléchargement, sauvegarde, exécution sur un appareil particulier, etc.).
Le pipeline hérite également des méthodes de chargement suivantes :
- load_textual_inversion() pour charger les embeddings d'inversion textuelle
- load_lora_weights() pour charger les poids LoRA
- save_lora_weights() pour enregistrer les poids LoRA
- from_single_file() pour charger des fichiers
.ckpt - load_ip_adapter() pour charger des IP Adapters
__call__
< source >( prompt: str | list[str] = Noneheight: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 50timesteps: list[int] = Nonesigmas: list[float] = Noneguidance_scale: float = 7.5negative_prompt: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Noneguidance_rescale: float = 0.0clip_skip: int | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list[str] = ['latents']pag_scale: float = 3.0pag_adaptive_scale: float = 0.0 ) → StableDiffusionPipelineOutput or tuple
Paramètres
- prompt (
stroulist[str], facultatif) — Le prompt ou les prompts pour guider la génération d’images. S’il n’est pas défini, vous devez passerprompt_embeds. - height (
int, facultatif, par défautself.unet.config.sample_size * self.vae_scale_factor) — La hauteur en pixels de l’image générée. - width (
int, facultatif, par défautself.unet.config.sample_size * self.vae_scale_factor) — La largeur en pixels de l’image générée. - num_inference_steps (
int, facultatif, valeur par défaut 50) — Le nombre d'étapes de débruitage. Un plus grand nombre d'étapes de débruitage conduit généralement à une image de meilleure qualité, au prix d'une inférence plus lente. - timesteps (
list[int], facultatif) — Timesteps personnalisés à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argumenttimestepsdans leur méthodeset_timesteps. S'il n'est pas défini, le comportement par défaut lorsquenum_inference_stepsest passé sera utilisé. Doit être dans l'ordre décroissant. - sigmas (
list[float], facultatif) — Sigmas personnalisés à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argumentsigmasdans leur méthodeset_timesteps. S'il n'est pas défini, le comportement par défaut lorsquenum_inference_stepsest passé sera utilisé. - guidance_scale (
float, facultatif, valeur par défaut 7,5) — Une valeur de guidance scale plus élevée encourage le modèle à générer des images étroitement liées auprompttexte, au détriment de la qualité de l'image. Le guidance scale est activé lorsqueguidance_scale > 1. - negative_prompt (
stroulist[str], facultatif) — Le prompt ou les prompts pour guider ce qui ne doit pas être inclus dans la génération d’image. S’il n’est pas défini, vous devez passernegative_prompt_embedsà la place. Ignoré lorsque la guidance n’est pas utilisée (guidance_scale < 1). - num_images_per_prompt (
int, facultatif, valeur par défaut 1) — Le nombre d'images à générer par invite. - eta (
float, facultatif, valeur par défaut 0.0) — Correspond au paramètre eta (η) de l'article DDIM. Ne s'applique qu'au DDIMScheduler et est ignoré par les autres planificateurs. - generator (
torch.Generatoroulist[torch.Generator], facultatif) — Untorch.Generatorpour rendre la génération déterministe. - latents (
torch.Tensor, facultatif) — Latents bruités pré-générés, échantillonnés à partir d’une distribution gaussienne, à utiliser comme entrées pour la génération d’images. Peut servir à ajuster la même génération avec des prompts différents. S’il n’est pas fourni, un tenseur de latents est généré par échantillonnage à l’aide dugeneratoraléatoire fourni. - prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte (pondération des prompts). S'il n'est pas fourni, les embeddings de texte sont générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte (pondération des prompts). S'ils ne sont pas fournis, lesnegative_prompt_embedssont générés à partir de l'argument d'entréenegative_prompt. - ip_adapter_image — (
PipelineImageInput, facultatif) : Image d’entrée facultative pour travailler avec les IP Adapters. - ip_adapter_image_embeds (
list[torch.Tensor], facultatif) — Embeddings d’image pré-générés pour IP-Adapter. Il doit s’agir d’une liste dont la longueur est égale au nombre d’IP-adapters. Chaque élément doit être un tenseur de forme(batch_size, num_images, emb_dim). Il doit contenir l’embedding d’image négatif sido_classifier_free_guidanceest défini surTrue. S’il n’est pas fourni, les embeddings sont calculés à partir de l’argument d’entréeip_adapter_image. - output_type (
str, facultatif, par défaut"pil") — Le format de sortie de l’image générée. Choisissez entrePIL.Imageounp.array. - return_dict (
bool, facultatif, par défautTrue) — Indique s'il faut retourner un StableDiffusionPipelineOutput plutôt qu'un simple tuple. - cross_attention_kwargs (
dict, facultatif) — Un dictionnaire de kwargs qui, s'il est spécifié, est transmis auAttentionProcessortel que défini dansself.processor. - guidance_rescale (
float, facultatif, valeur par défaut 0.0) — Facteur de rescaling du guidance issu de Common Diffusion Noise Schedules and Sample Steps are Flawed. Le facteur de rescaling du guidance doit corriger l'exposition excessive lors de l'utilisation d'un SNR terminal nul. - clip_skip (
int, facultatif) — Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de l'invite. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de l'invite. - callback_on_step_end (
Callable,PipelineCallback,MultiPipelineCallbacks, facultatif) — Une fonction ou une sous-classe dePipelineCallbackouMultiPipelineCallbacksqui est appelée à la fin de chaque étape de débruitage pendant l’inférence, avec les arguments suivants :callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargscontiendra une liste de tous les tenseurs spécifiés parcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, facultatif) — La liste des entrées tensorielles pour la fonctioncallback_on_step_end. Les tenseurs spécifiés dans la liste seront passés en tant qu'argumentcallback_kwargs. Vous ne pourrez inclure que les variables listées dans l'attribut._callback_tensor_inputsde votre classe de pipeline. - pag_scale (
float, facultatif, valeur par défaut 3.0) — Le facteur d'échelle pour le guidage d'attention perturbée. S'il est défini à 0.0, le guidage d'attention perturbée ne sera pas utilisé. - pag_adaptive_scale (
float, facultatif, valeur par défaut 0.0) — Le facteur d'échelle adaptatif pour le guidage de l'attention perturbée. S'il est défini à 0.0,pag_scaleest utilisé.
Retourne
StableDiffusionPipelineOutput ou tuple
Si return_dict est True, StableDiffusionPipelineOutput est renvoyé,
sinon un tuple est renvoyé dont le premier élément est une liste des images générées et le
deuxième élément est une liste de bool indiquant si l’image générée correspondante contient
du contenu « not-safe-for-work » (nsfw).
La fonction d'appel du pipeline pour la génération.
Exemples :
>>> import torch
>>> from diffusers import AutoPipelineForText2Image
>>> pipe = AutoPipelineForText2Image.from_pretrained(
... "stable-diffusion-v1-5/stable-diffusion-v1-5", torch_dtype=torch.float16, enable_pag=True
... )
>>> pipe = pipe.to("cuda")
>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> image = pipe(prompt, pag_scale=0.3).images[0]encode_prompt
< source >( promptdevicenum_images_per_promptdo_classifier_free_guidancenegative_prompt = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = None )
Paramètres
- prompt (
stroulist[str], facultatif) — prompt à encoder - device — (
torch.device) : torch device - num_images_per_prompt (
int) — nombre d'images à générer par invite - do_classifier_free_guidance (
bool) — indique s'il faut utiliser le classifier free guidance ou non - negative_prompt (
stroulist[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passernegative_prompt_embedsà la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré siguidance_scaleest inférieur à1). - prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entréenegative_prompt. - lora_scale (
float, facultatif) — Un facteur d’échelle LoRA qui sera appliqué à toutes les couches LoRA de l’encodeur de texte si des couches LoRA sont chargées. - clip_skip (
int, facultatif) — Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de l'invite. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de l'invite.
Encode le prompt dans les états cachés de l'encodeur de texte.
get_guidance_scale_embedding
< source >( w: Tensorembedding_dim: int = 512dtype: dtype = torch.float32 ) → torch.Tensor
Paramètres
- w (
torch.Tensor) — Génère des vecteurs d’incorporation avec une échelle de guidage spécifiée afin d’enrichir ensuite les incorporations de pas de temps. - embedding_dim (
int, facultatif, par défaut 512) — Dimension des embeddings à générer. - dtype (
torch.dtype, facultatif, par défauttorch.float32) — Type de données des embeddings générés.
Retourne
torch.Tensor
Vecteurs d'embedding de forme (len(w), embedding_dim).
StableDiffusionPAGImg2ImgPipeline
classe diffusers.StableDiffusionPAGImg2ImgPipeline
< source >( vae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizerunet: UNet2DConditionModelscheduler: KarrasDiffusionSchedulerssafety_checker: StableDiffusionSafetyCheckerfeature_extractor: CLIPImageProcessorPilimage_encoder: CLIPVisionModelWithProjection = Nonerequires_safety_checker: bool = Truepag_applied_layers: str | list[str] = 'mid' )
Paramètres
- vae (AutoencoderKL) — Modèle de Variational Auto-Encoder (VAE) pour encoder et décoder des images vers et depuis des représentations latentes.
- text_encoder (CLIPTextModel) — Encodeur de texte figé (clip-vit-large-patch14).
- tokenizer (CLIPTokenizer) —
Un
CLIPTokenizerpour tokeniser le texte. - unet (UNet2DConditionModel) —
Un
UNet2DConditionModelpour débruyer les latents d'image encodés. - scheduler (SchedulerMixin) —
Un planificateur à utiliser en combinaison avec
unetpour débruyer les latents de l'image encodée. Peut être l'un des DDIMScheduler, LMSDiscreteScheduler ou PNDMScheduler. - safety_checker (
StableDiffusionSafetyChecker) — Module de classification qui estime si les images générées pourraient être considérées comme offensives ou nuisibles. Veuillez consulter la fiche modèle pour plus de détails sur les risques potentiels d’un modèle. - feature_extractor (CLIPImageProcessor) —
Un
CLIPImageProcessorpour extraire les caractéristiques des images générées ; utilisé comme entrées pour lesafety_checker.
Pipeline pour la génération d'image à partir d'image guidée par du texte, utilisant Stable Diffusion.
Ce modèle hérite de DiffusionPipeline. Consultez la documentation de la classe parente pour les méthodes génériques implémentées pour tous les pipelines (téléchargement, sauvegarde, exécution sur un appareil particulier, etc.).
Le pipeline hérite également des méthodes de chargement suivantes :
- load_textual_inversion() pour charger les embeddings d'inversion textuelle
- load_lora_weights() pour charger les poids LoRA
- save_lora_weights() pour enregistrer les poids LoRA
- from_single_file() pour charger des fichiers
.ckpt - load_ip_adapter() pour charger des IP Adapters
__call__
< source >( prompt: str | list[str] = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonestrength: float = 0.8num_inference_steps: int | None = 50timesteps: list[int] = Nonesigmas: list[float] = Noneguidance_scale: float | None = 7.5negative_prompt: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float | None = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Noneclip_skip: int = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list[str] = ['latents']pag_scale: float = 3.0pag_adaptive_scale: float = 0.0 ) → StableDiffusionPipelineOutput or tuple
Paramètres
- prompt (
stroulist[str], facultatif) — Le prompt ou les prompts pour guider la génération d’images. S’il n’est pas défini, vous devez passerprompt_embeds. - image (
torch.Tensor,PIL.Image.Image,np.ndarray,list[torch.Tensor],list[PIL.Image.Image]oulist[np.ndarray]) —Image, tableau numpy ou tenseur représentant un lot d’images à utiliser comme point de départ. Pour un tableau numpy comme pour un tenseur pytorch, la plage de valeurs attendue est comprise entre[0, 1]. S’il s’agit d’un tenseur ou d’une liste de tenseurs, la forme attendue doit être(B, C, H, W)ou(C, H, W). S’il s’agit d’un tableau numpy ou d’une liste de tableaux, la forme attendue doit être(B, H, W, C)ou(H, W, C). Il peut également accepter des latents d’image en tant queimage, mais si des latents sont transmis directement, ils ne sont pas réencodés. - strength (
float, facultatif, valeur par défaut 0.8) — Indique l'étendue de la transformation de l'imagede référence. Doit être compris entre 0 et 1. L'imageest utilisée comme point de départ et plus lestrengthest élevé, plus du bruit est ajouté. Le nombre d'étapes de débruitage dépend de la quantité de bruit initialement ajoutée. Lorsquestrengthvaut 1, le bruit ajouté est maximal et le processus de débruitage s'exécute pendant le nombre complet d'itérations spécifié dansnum_inference_steps. Une valeur de 1 ignore essentiellement l'image. - num_inference_steps (
int, facultatif, valeur par défaut 50) — Le nombre d'étapes de débruitage. Un plus grand nombre d'étapes de débruitage conduit généralement à une image de meilleure qualité, au prix d'une inférence plus lente. Ce paramètre est modulé parstrength. - timesteps (
list[int], facultatif) — Timesteps personnalisés à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argumenttimestepsdans leur méthodeset_timesteps. S'il n'est pas défini, le comportement par défaut lorsquenum_inference_stepsest passé sera utilisé. Doit être dans l'ordre décroissant. - sigmas (
list[float], facultatif) — Sigmas personnalisés à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argumentsigmasdans leur méthodeset_timesteps. S'il n'est pas défini, le comportement par défaut lorsquenum_inference_stepsest passé sera utilisé. - guidance_scale (
float, facultatif, valeur par défaut 7,5) — Une valeur de guidance scale plus élevée encourage le modèle à générer des images étroitement liées auprompttexte, au détriment de la qualité de l'image. Le guidance scale est activé lorsqueguidance_scale > 1. - negative_prompt (
stroulist[str], facultatif) — Le prompt ou les prompts pour guider ce qui ne doit pas être inclus dans la génération d’image. S’il n’est pas défini, vous devez passernegative_prompt_embedsà la place. Ignoré lorsque la guidance n’est pas utilisée (guidance_scale < 1). - num_images_per_prompt (
int, facultatif, valeur par défaut 1) — Le nombre d'images à générer par invite. - eta (
float, facultatif, valeur par défaut 0.0) — Correspond au paramètre eta (η) de l'article DDIM. Ne s'applique qu'au DDIMScheduler et est ignoré par les autres planificateurs. - generator (
torch.Generatoroulist[torch.Generator], facultatif) — Untorch.Generatorpour rendre la génération déterministe. - prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte (pondération des prompts). S'il n'est pas fourni, les embeddings de texte sont générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte (pondération des prompts). S'ils ne sont pas fournis, lesnegative_prompt_embedssont générés à partir de l'argument d'entréenegative_prompt. - ip_adapter_image — (
PipelineImageInput, facultatif) : Image d’entrée facultative pour travailler avec les IP Adapters. - ip_adapter_image_embeds (
list[torch.Tensor], facultatif) — Embeddings d’image pré-générés pour IP-Adapter. Il doit s’agir d’une liste dont la longueur est égale au nombre d’IP-adapters. Chaque élément doit être un tenseur de forme(batch_size, num_images, emb_dim). Il doit contenir l’embedding d’image négatif sido_classifier_free_guidanceest défini surTrue. S’il n’est pas fourni, les embeddings sont calculés à partir de l’argument d’entréeip_adapter_image. - output_type (
str, facultatif, par défaut"pil") — Le format de sortie de l’image générée. Choisissez entrePIL.Imageounp.array. - return_dict (
bool, facultatif, par défautTrue) — Indique s'il faut retourner un StableDiffusionPipelineOutput plutôt qu'un simple tuple. - cross_attention_kwargs (
dict, facultatif) — Un dictionnaire de kwargs qui, s'il est spécifié, est transmis auAttentionProcessortel que défini dansself.processor. - clip_skip (
int, facultatif) — Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de l'invite. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de l'invite. - callback_on_step_end (
Callable,PipelineCallback,MultiPipelineCallbacks, facultatif) — Une fonction ou une sous-classe dePipelineCallbackouMultiPipelineCallbacksqui est appelée à la fin de chaque étape de débruitage pendant l’inférence, avec les arguments suivants :callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargscontiendra une liste de tous les tenseurs spécifiés parcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, facultatif) — La liste des entrées tensorielles pour la fonctioncallback_on_step_end. Les tenseurs spécifiés dans la liste seront passés en tant qu'argumentcallback_kwargs. Vous ne pourrez inclure que les variables listées dans l'attribut._callback_tensor_inputsde votre classe de pipeline. - pag_scale (
float, facultatif, valeur par défaut 3.0) — Le facteur d'échelle pour le guidage d'attention perturbée. S'il est défini à 0.0, le guidage d'attention perturbée ne sera pas utilisé. - pag_adaptive_scale (
float, facultatif, valeur par défaut 0.0) — Le facteur d'échelle adaptatif pour le guidage de l'attention perturbée. S'il est défini à 0.0,pag_scaleest utilisé.
Retourne
StableDiffusionPipelineOutput ou tuple
Si return_dict est True, StableDiffusionPipelineOutput est renvoyé,
sinon un tuple est renvoyé dont le premier élément est une liste des images générées et le
deuxième élément est une liste de bool indiquant si l’image générée correspondante contient
du contenu « not-safe-for-work » (nsfw).
La fonction d'appel du pipeline pour la génération.
Exemples :
>>> import torch
>>> from diffusers import AutoPipelineForImage2Image
>>> from diffusers.utils import load_image
>>> pipe = AutoPipelineForImage2Image.from_pretrained(
... "stable-diffusion-v1-5/stable-diffusion-v1-5",
... torch_dtype=torch.float16,
... enable_pag=True,
... )
>>> pipe = pipe.to("cuda")
>>> url = "https://huggingface.co/datasets/patrickvonplaten/images/resolve/main/aa_xl/000000009.png"
>>> init_image = load_image(url).convert("RGB")
>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> image = pipe(prompt, image=init_image, pag_scale=0.3).images[0]encode_prompt
< source >( promptdevicenum_images_per_promptdo_classifier_free_guidancenegative_prompt = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = None )
Paramètres
- prompt (
stroulist[str], facultatif) — prompt à encoder - device — (
torch.device) : torch device - num_images_per_prompt (
int) — nombre d'images à générer par invite - do_classifier_free_guidance (
bool) — indique s'il faut utiliser le classifier free guidance ou non - negative_prompt (
stroulist[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passernegative_prompt_embedsà la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré siguidance_scaleest inférieur à1). - prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entréenegative_prompt. - lora_scale (
float, facultatif) — Un facteur d’échelle LoRA qui sera appliqué à toutes les couches LoRA de l’encodeur de texte si des couches LoRA sont chargées. - clip_skip (
int, facultatif) — Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de l'invite. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de l'invite.
Encode le prompt dans les états cachés de l'encodeur de texte.
get_guidance_scale_embedding
< source >( w: Tensorembedding_dim: int = 512dtype: dtype = torch.float32 ) → torch.Tensor
Paramètres
- w (
torch.Tensor) — Génère des vecteurs d’incorporation avec une échelle de guidage spécifiée afin d’enrichir ensuite les incorporations de pas de temps. - embedding_dim (
int, facultatif, par défaut 512) — Dimension des embeddings à générer. - dtype (
torch.dtype, facultatif, par défauttorch.float32) — Type de données des embeddings générés.
Retourne
torch.Tensor
Vecteurs d'embedding de forme (len(w), embedding_dim).
StableDiffusionControlNetPAGPipeline
classe diffusers.StableDiffusionControlNetPAGPipeline
< source >( vae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizerunet: UNet2DConditionModelcontrolnet: diffusers.models.controlnets.controlnet.ControlNetModel | list[diffusers.models.controlnets.controlnet.ControlNetModel] | tuple[diffusers.models.controlnets.controlnet.ControlNetModel] | diffusers.models.controlnets.multicontrolnet.MultiControlNetModelscheduler: KarrasDiffusionSchedulerssafety_checker: StableDiffusionSafetyCheckerfeature_extractor: CLIPImageProcessorPilimage_encoder: CLIPVisionModelWithProjection = Nonerequires_safety_checker: bool = Truepag_applied_layers: str | list[str] = 'mid' )
Paramètres
- vae (AutoencoderKL) — Modèle de Variational Auto-Encoder (VAE) pour encoder et décoder des images vers et depuis des représentations latentes.
- text_encoder (CLIPTextModel) — Encodeur de texte figé (clip-vit-large-patch14).
- tokenizer (CLIPTokenizer) —
Un
CLIPTokenizerpour tokeniser le texte. - unet (UNet2DConditionModel) —
Un
UNet2DConditionModelpour débruyer les latents d'image encodés. - controlnet (ControlNetModel ou
list[ControlNetModel]) — Fournit un conditionnement supplémentaire auunetpendant 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) —
Un planificateur à utiliser en combinaison avec
unetpour débruyer les latents de l'image encodée. Peut être l'un des DDIMScheduler, LMSDiscreteScheduler ou PNDMScheduler. - safety_checker (
StableDiffusionSafetyChecker) — Module de classification qui estime si les images générées pourraient être considérées comme offensives ou nuisibles. Veuillez consulter la fiche modèle pour plus de détails sur les risques potentiels d’un modèle. - feature_extractor (CLIPImageProcessor) —
Un
CLIPImageProcessorpour extraire les caractéristiques des images générées ; utilisé comme entrées pour lesafety_checker.
Pipeline de génération d'images à partir de texte utilisant Stable Diffusion avec un guidage ControlNet.
Ce modèle hérite de DiffusionPipeline. Consultez la documentation de la classe parente pour les méthodes génériques implémentées pour tous les pipelines (téléchargement, sauvegarde, exécution sur un appareil particulier, etc.).
Le pipeline hérite également des méthodes de chargement suivantes :
- load_textual_inversion() pour charger les embeddings d'inversion textuelle
- load_lora_weights() pour charger les poids LoRA
- save_lora_weights() pour enregistrer les poids LoRA
- from_single_file() pour charger des fichiers
.ckpt - load_ip_adapter() pour charger des IP Adapters
encode_prompt
< source >( promptdevicenum_images_per_promptdo_classifier_free_guidancenegative_prompt = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = None )
Paramètres
- prompt (
stroulist[str], facultatif) — prompt à encoder - device — (
torch.device) : torch device - num_images_per_prompt (
int) — nombre d'images à générer par invite - do_classifier_free_guidance (
bool) — indique s'il faut utiliser le classifier free guidance ou non - negative_prompt (
stroulist[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passernegative_prompt_embedsà la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré siguidance_scaleest inférieur à1). - prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entréenegative_prompt. - lora_scale (
float, facultatif) — Un facteur d’échelle LoRA qui sera appliqué à toutes les couches LoRA de l’encodeur de texte si des couches LoRA sont chargées. - clip_skip (
int, facultatif) — Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de l'invite. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de l'invite.
Encode le prompt dans les états cachés de l'encodeur de texte.
get_guidance_scale_embedding
< source >( w: Tensorembedding_dim: int = 512dtype: dtype = torch.float32 ) → torch.Tensor
Paramètres
- w (
torch.Tensor) — Génère des vecteurs d’incorporation avec une échelle de guidage spécifiée afin d’enrichir ensuite les incorporations de pas de temps. - embedding_dim (
int, facultatif, par défaut 512) — Dimension des embeddings à générer. - dtype (
torch.dtype, facultatif, par défauttorch.float32) — Type de données des embeddings générés.
Retourne
torch.Tensor
Vecteurs d'embedding de forme (len(w), embedding_dim).
StableDiffusionControlNetPAGInpaintPipeline
classe diffusers.StableDiffusionControlNetPAGInpaintPipeline
< source >( vae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizerunet: UNet2DConditionModelcontrolnet: diffusers.models.controlnets.controlnet.ControlNetModel | list[diffusers.models.controlnets.controlnet.ControlNetModel] | tuple[diffusers.models.controlnets.controlnet.ControlNetModel] | diffusers.models.controlnets.multicontrolnet.MultiControlNetModelscheduler: KarrasDiffusionSchedulerssafety_checker: StableDiffusionSafetyCheckerfeature_extractor: CLIPImageProcessorPilimage_encoder: CLIPVisionModelWithProjection = Nonerequires_safety_checker: bool = Truepag_applied_layers: str | list[str] = 'mid' )
Paramètres
- vae (AutoencoderKL) — Modèle de Variational Auto-Encoder (VAE) pour encoder et décoder des images vers et depuis des représentations latentes.
- text_encoder (CLIPTextModel) — Encodeur de texte figé (clip-vit-large-patch14).
- tokenizer (CLIPTokenizer) —
Un
CLIPTokenizerpour tokeniser le texte. - unet (UNet2DConditionModel) —
Un
UNet2DConditionModelpour débruyer les latents d'image encodés. - controlnet (ControlNetModel ou
list[ControlNetModel]) — Fournit un conditionnement supplémentaire auunetpendant 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) —
Un planificateur à utiliser en combinaison avec
unetpour débruyer les latents de l'image encodée. Peut être l'un des DDIMScheduler, LMSDiscreteScheduler ou PNDMScheduler. - safety_checker (
StableDiffusionSafetyChecker) — Module de classification qui estime si les images générées pourraient être considérées comme offensives ou nuisibles. Veuillez consulter la fiche modèle pour plus de détails sur les risques potentiels d’un modèle. - feature_extractor (CLIPImageProcessor) —
Un
CLIPImageProcessorpour extraire les caractéristiques des images générées ; utilisé comme entrées pour lesafety_checker.
Pipeline pour l'inpainting d'images utilisant Stable Diffusion avec un guidage ControlNet.
Ce modèle hérite de DiffusionPipeline. Consultez la documentation de la classe parente pour les méthodes génériques implémentées pour tous les pipelines (téléchargement, sauvegarde, exécution sur un appareil particulier, etc.).
Le pipeline hérite également des méthodes de chargement suivantes :
- load_textual_inversion() pour charger les embeddings d'inversion textuelle
- load_lora_weights() pour charger les poids LoRA
- save_lora_weights() pour enregistrer les poids LoRA
- from_single_file() pour charger des fichiers
.ckpt - load_ip_adapter() pour charger des IP Adapters
> Ce pipeline peut être utilisé avec des points de contrôle spécifiquement affinés pour l'inpainting > (stable-diffusion-v1-5/stable-diffusion-inpainting) ainsi qu'avec > les points de contrôle texte-vers-image Stable Diffusion par défaut > (stable-diffusion-v1-5/stable-diffusion-v1-5). Les points de contrôle texte-vers-image > Stable Diffusion par défaut peuvent être préférables pour les ControlNets affinés sur ceux-ci, tels que > lllyasviel/control_v11p_sd15_inpaint.
__call__
< source >( prompt: str | list[str] = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonemask_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonecontrol_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Noneheight: int | None = Nonewidth: int | None = Nonepadding_mask_crop: int | None = Nonestrength: float = 1.0num_inference_steps: int = 50guidance_scale: float = 7.5negative_prompt: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Nonecontrolnet_conditioning_scale: float | list[float] = 0.5control_guidance_start: float | list[float] = 0.0control_guidance_end: float | list[float] = 1.0clip_skip: int | None = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list[str] = ['latents']pag_scale: float = 3.0pag_adaptive_scale: float = 0.0 ) → StableDiffusionPipelineOutput or tuple
Paramètres
- prompt (
stroulist[str], facultatif) — Le prompt ou les prompts pour guider la génération d’images. S’il n’est pas défini, vous devez passerprompt_embeds. - image (
torch.Tensor,PIL.Image.Image,np.ndarray,list[torch.Tensor], —list[PIL.Image.Image], oulist[np.ndarray]) :Image, tableau NumPy ou tenseur représentant un lot d’images à utiliser comme point de départ. Pour un tableau NumPy et un tenseur PyTorch, la plage de valeurs attendue est comprise entre[0, 1]. S’il s’agit d’un tenseur ou d’une liste de tenseurs, la forme attendue doit être(B, C, H, W)ou(C, H, W). S’il s’agit d’un tableau NumPy ou d’une liste de tableaux, la forme attendue doit être(B, H, W, C)ou(H, W, C). Il peut également accepter des latents d’image en tant queimage, mais si des latents sont transmis directement, ils ne sont pas réencodés. - mask_image (
torch.Tensor,PIL.Image.Image,np.ndarray,list[torch.Tensor], —list[PIL.Image.Image], oulist[np.ndarray]) :Image, tableau NumPy ou tenseur représentant un lot d’images à masquerimage. Les pixels blancs du masque sont repeints tandis que les pixels noirs sont conservés. Simask_imageest une image PIL, elle est convertie en un seul canal (luminance) avant utilisation. S’il s’agit d’un tableau NumPy ou d’un tenseur PyTorch, il doit contenir un seul canal de couleur (L) au lieu de 3, de sorte que la forme attendue pour un tenseur PyTorch serait(B, 1, H, W),(B, H, W),(1, H, W),(H, W). Et pour un tableau NumPy, elle serait(B, H, W, 1),(B, H, W),(H, W, 1)ou(H, W). - control_image (
torch.Tensor,PIL.Image.Image,list[torch.Tensor],list[PIL.Image.Image], —list[list[torch.Tensor]]oulist[list[PIL.Image.Image]]) : La condition d’entrée ControlNet à fournir pour guider leunetlors de la génération. Si le type est spécifié commetorch.Tensor, il est transmis à ControlNet tel quel.PIL.Image.Imageest également accepté en tant qu’image. Les dimensions de l’image de sortie sont par défaut celles deimage. Si la hauteur et/ou la largeur sont transmises,imageest redimensionnée en conséquence. Si plusieurs ControlNets sont spécifiés dansinit, 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éfautself.unet.config.sample_size * self.vae_scale_factor) — La hauteur en pixels de l’image générée. - width (
int, facultatif, par défautself.unet.config.sample_size * self.vae_scale_factor) — La largeur en pixels de l’image générée. - padding_mask_crop (
int, facultatif, valeur par défautNone) — La taille de la marge dans le recadrage à appliquer à l’image et au masque. SiNone, aucun recadrage n’est appliqué à l’image et à mask_image. Sipadding_mask_cropn’est pasNone, une région rectangulaire de même ratio d’aspect que l’image et contenant toute la zone masquée est d’abord identifiée, puis cette zone est étendue en fonction depadding_mask_crop. L’image et mask_image sont ensuite recadrées en fonction de la zone étendue avant d’être redimensionnées à la taille de l’image d’origine pour l’inpainting. Cela est utile lorsque la zone masquée est petite tandis que l’image est grande et contient des informations sans rapport avec l’inpainting, comme l’arrière-plan. - strength (
float, facultatif, valeur par défaut 1.0) — Indique l'étendue de la transformation de l'imagede référence. Doit être compris entre 0 et 1. L'imageest utilisée comme point de départ et plus lestrengthest élevé, plus du bruit est ajouté. Le nombre d'étapes de débruitage dépend de la quantité de bruit initialement ajoutée. Lorsquestrengthvaut 1, le bruit ajouté est maximal et le processus de débruitage s'exécute pendant le nombre complet d'itérations spécifié dansnum_inference_steps. Une valeur de 1 ignore essentiellement l'image. - num_inference_steps (
int, facultatif, valeur par défaut 50) — Le nombre d'étapes de débruitage. Un plus grand nombre d'étapes de débruitage conduit généralement à une image de meilleure qualité, au prix d'une inférence plus lente. - guidance_scale (
float, facultatif, valeur par défaut 7,5) — Une valeur de guidance scale plus élevée encourage le modèle à générer des images étroitement liées auprompttexte, au détriment de la qualité de l'image. Le guidance scale est activé lorsqueguidance_scale > 1. - negative_prompt (
stroulist[str], facultatif) — Le prompt ou les prompts pour guider ce qui ne doit pas être inclus dans la génération d’image. S’il n’est pas défini, vous devez passernegative_prompt_embedsà la place. Ignoré lorsque la guidance n’est pas utilisée (guidance_scale < 1). - num_images_per_prompt (
int, facultatif, valeur par défaut 1) — Le nombre d'images à générer par invite. - eta (
float, facultatif, valeur par défaut 0.0) — Correspond au paramètre eta (η) de l'article DDIM. Ne s'applique qu'au DDIMScheduler et est ignoré par les autres planificateurs. - generator (
torch.Generatoroulist[torch.Generator], facultatif) — Untorch.Generatorpour rendre la génération déterministe. - latents (
torch.Tensor, facultatif) — Latents bruités pré-générés, échantillonnés à partir d’une distribution gaussienne, à utiliser comme entrées pour la génération d’images. Peut servir à ajuster la même génération avec des prompts différents. S’il n’est pas fourni, un tenseur de latents est généré par échantillonnage à l’aide dugeneratoraléatoire fourni. - prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte (pondération des prompts). S'il n'est pas fourni, les embeddings de texte sont générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte (pondération des prompts). S'ils ne sont pas fournis, lesnegative_prompt_embedssont générés à partir de l'argument d'entréenegative_prompt. - ip_adapter_image — (
PipelineImageInput, facultatif) : Image d’entrée facultative pour travailler avec les IP Adapters. - ip_adapter_image_embeds (
list[torch.Tensor], facultatif) — Embeddings d’image pré-générés pour IP-Adapter. Il doit s’agir d’une liste dont la longueur est égale au nombre d’IP-adapters. Chaque élément doit être un tenseur de forme(batch_size, num_images, emb_dim). Il doit contenir l’embedding d’image négatif sido_classifier_free_guidanceest défini surTrue. S’il n’est pas fourni, les embeddings sont calculés à partir de l’argument d’entréeip_adapter_image. - output_type (
str, facultatif, par défaut"pil") — Le format de sortie de l’image générée. Choisissez entrePIL.Imageounp.array. - return_dict (
bool, facultatif, par défautTrue) — Indique s'il faut retourner un StableDiffusionPipelineOutput plutôt qu'un simple tuple. - cross_attention_kwargs (
dict, facultatif) — Un dictionnaire de kwargs qui, s'il est spécifié, est transmis auAttentionProcessortel que défini dansself.processor. - controlnet_conditioning_scale (
floatoulist[float], facultatif, valeur par défaut 0,5) — Les sorties du ControlNet sont multipliées parcontrolnet_conditioning_scaleavant d’être ajoutées au résidu dans leunetd’origine. Si plusieurs ControlNets sont spécifiés dansinit, vous pouvez définir l’échelle correspondante sous forme de liste. - control_guidance_start (
floatoulist[float], facultatif, valeur par défaut 0.0) — Le pourcentage des étapes totales à partir duquel le ControlNet commence à s’appliquer. - control_guidance_end (
floatoulist[float], facultatif, valeur par défaut 1.0) — Le pourcentage des étapes totales à partir duquel le ControlNet cesse d’être appliqué. - clip_skip (
int, facultatif) — Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de l'invite. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de l'invite. - callback_on_step_end (
Callable,PipelineCallback,MultiPipelineCallbacks, facultatif) — Une fonction ou une sous-classe dePipelineCallbackouMultiPipelineCallbacksqui est appelée à la fin de chaque étape de débruitage pendant l’inférence, avec les arguments suivants :callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargscontiendra une liste de tous les tenseurs spécifiés parcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, facultatif) — La liste des entrées tensorielles pour la fonctioncallback_on_step_end. Les tenseurs spécifiés dans la liste seront passés en tant qu'argumentcallback_kwargs. Vous ne pourrez inclure que les variables listées dans l'attribut._callback_tensor_inputsde votre classe de pipeline. - pag_scale (
float, facultatif, valeur par défaut 3.0) — Le facteur d'échelle pour le guidage d'attention perturbée. S'il est défini à 0.0, le guidage d'attention perturbée ne sera pas utilisé. - pag_adaptive_scale (
float, facultatif, valeur par défaut 0.0) — Le facteur d'échelle adaptatif pour le guidage de l'attention perturbée. S'il est défini à 0.0,pag_scaleest utilisé.
Retourne
StableDiffusionPipelineOutput ou tuple
Si return_dict est True, StableDiffusionPipelineOutput est renvoyé,
sinon un tuple est renvoyé dont le premier élément est une liste des images générées et le
deuxième élément est une liste de bool indiquant si l’image générée correspondante contient
du contenu « not-safe-for-work » (nsfw).
La fonction d'appel du pipeline pour la génération.
Exemples :
>>> # !pip install transformers accelerate
>>> import cv2
>>> from diffusers import AutoPipelineForInpainting, ControlNetModel, DDIMScheduler
>>> from diffusers.utils import load_image
>>> import numpy as np
>>> from PIL import Image
>>> 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((512, 512))
>>> 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((512, 512))
>>> 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(
... "lllyasviel/control_v11p_sd15_inpaint", torch_dtype=torch.float16
... )
>>> pipe = AutoPipelineForInpainting.from_pretrained(
... "stable-diffusion-v1-5/stable-diffusion-v1-5",
... controlnet=controlnet,
... torch_dtype=torch.float16,
... enable_pag=True,
... )
>>> pipe.scheduler = DDIMScheduler.from_config(pipe.scheduler.config)
>>> 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,
... pag_scale=0.3,
... ).images[0]encode_prompt
< source >( promptdevicenum_images_per_promptdo_classifier_free_guidancenegative_prompt = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = None )
Paramètres
- prompt (
stroulist[str], facultatif) — prompt à encoder - device — (
torch.device) : torch device - num_images_per_prompt (
int) — nombre d'images à générer par invite - do_classifier_free_guidance (
bool) — indique s'il faut utiliser le classifier free guidance ou non - negative_prompt (
stroulist[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passernegative_prompt_embedsà la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré siguidance_scaleest inférieur à1). - prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entréenegative_prompt. - lora_scale (
float, facultatif) — Un facteur d’échelle LoRA qui sera appliqué à toutes les couches LoRA de l’encodeur de texte si des couches LoRA sont chargées. - clip_skip (
int, facultatif) — Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de l'invite. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de l'invite.
Encode le prompt dans les états cachés de l'encodeur de texte.
get_guidance_scale_embedding
< source >( w: Tensorembedding_dim: int = 512dtype: dtype = torch.float32 ) → torch.Tensor
Paramètres
- w (
torch.Tensor) — Génère des vecteurs d’incorporation avec une échelle de guidage spécifiée afin d’enrichir ensuite les incorporations de pas de temps. - embedding_dim (
int, facultatif, par défaut 512) — Dimension des embeddings à générer. - dtype (
torch.dtype, facultatif, par défauttorch.float32) — Type de données des embeddings générés.
Retourne
torch.Tensor
Vecteurs d'embedding de forme (len(w), embedding_dim).
StableDiffusionXLPAGPipeline
classe diffusers.StableDiffusionXLPAGPipeline
< source >( vae: AutoencoderKLtext_encoder: CLIPTextModeltext_encoder_2: CLIPTextModelWithProjectiontokenizer: CLIPTokenizertokenizer_2: CLIPTokenizerunet: UNet2DConditionModelscheduler: KarrasDiffusionSchedulersimage_encoder: CLIPVisionModelWithProjection = Nonefeature_extractor: CLIPImageProcessorPil = Noneforce_zeros_for_empty_prompt: bool = Trueadd_watermarker: bool | None = Nonepag_applied_layers: str | list[str] = 'mid' )
Paramètres
- vae (AutoencoderKL) — Modèle de Variational Auto-Encoder (VAE) pour encoder et décoder des images vers et depuis des représentations latentes.
- text_encoder (
CLIPTextModel) — Encodeur de texte figé. Stable Diffusion XL utilise la partie texte de CLIP, plus précisément la variante clip-vit-large-patch14. - text_encoder_2 (
CLIPTextModelWithProjection) — Deuxième encodeur de texte figé. Stable Diffusion XL utilise la partie texte et pool de CLIP, plus précisément la variante laion/CLIP-ViT-bigG-14-laion2B-39B-b160k. - tokenizer (
CLIPTokenizer) — Tokeniseur de la classe CLIPTokenizer. - tokenizer_2 (
CLIPTokenizer) — Deuxième Tokenizer de la classe CLIPTokenizer. - unet (UNet2DConditionModel) — Architecture U-Net conditionnelle pour le débruitage des latents d'image encodés.
- scheduler (SchedulerMixin) —
Un planificateur à utiliser en combinaison avec
unetpour débruyer les latents de l'image encodée. Peut être l'un des DDIMScheduler, LMSDiscreteScheduler ou PNDMScheduler. - force_zeros_for_empty_prompt (
bool, facultatif, valeur par défaut"True") — Indique si les embeddings du prompt négatif doivent être forcés à 0. Voir également la configuration destabilityai/stable-diffusion-xl-base-1-0. - add_watermarker (
bool, facultatif) — Indique s'il faut utiliser la bibliothèque invisible_watermark pour appliquer un filigrane aux images de sortie. Si non défini, la valeur par défaut est True si le package est installé, sinon aucun filigrane n'est utilisé.
Pipeline pour la génération d'images à partir de texte utilisant Stable Diffusion XL.
Ce modèle hérite de DiffusionPipeline. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous les pipelines (tels que le téléchargement ou l'enregistrement, l'exécution sur un appareil particulier, etc.)
Le pipeline hérite également des méthodes de chargement suivantes :
- load_textual_inversion() pour charger les embeddings d'inversion textuelle
- from_single_file() pour charger des fichiers
.ckpt - load_lora_weights() pour charger les poids LoRA
- save_lora_weights() pour enregistrer les poids LoRA
- load_ip_adapter() pour charger des IP Adapters
__call__
< source >( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneheight: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 50timesteps: list[int] = Nonesigmas: list[float] = Nonedenoising_end: float | None = Noneguidance_scale: float = 5.0negative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Noneguidance_rescale: float = 0.0original_size: tuple[int, int] | None = Nonecrops_coords_top_left: tuple[int, int] = (0, 0)target_size: tuple[int, int] | None = Nonenegative_original_size: tuple[int, int] | None = Nonenegative_crops_coords_top_left: tuple[int, int] = (0, 0)negative_target_size: tuple[int, int] | None = Noneclip_skip: int | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list[str] = ['latents']pag_scale: float = 3.0pag_adaptive_scale: float = 0.0 ) → ~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput or tuple
Paramètres
- prompt (
stroulist[str], facultatif) — Le prompt ou les prompts pour guider la génération d’image. S’il n’est pas défini, il faut passerprompt_embedsà la place. - prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à envoyer autokenizer_2et autext_encoder_2. S'il n'est pas défini,promptest utilisé dans les deux text-encoders - 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. Cette valeur est fixée à 1024 par défaut pour obtenir les meilleurs résultats. Toute valeur inférieure à 512 pixels ne fonctionnera pas correctement avec stabilityai/stable-diffusion-xl-base-1.0 et les points de contrôle qui ne sont pas spécifiquement affinés sur de faibles résolutions. - width (
int, facultatif, par défaut self.unet.config.sample_size * self.vae_scale_factor) — La largeur en pixels de l’image générée. Cette valeur est fixée à 1024 par défaut pour obtenir les meilleurs résultats. Toute valeur inférieure à 512 pixels ne fonctionnera pas correctement avec stabilityai/stable-diffusion-xl-base-1.0 et les points de contrôle qui ne sont pas spécifiquement affinés sur de faibles résolutions. - num_inference_steps (
int, facultatif, valeur par défaut 50) — Le nombre d'étapes de débruitage. Un plus grand nombre d'étapes de débruitage conduit généralement à une image de meilleure qualité, au prix d'une inférence plus lente. - timesteps (
list[int], facultatif) — Timesteps personnalisés à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argumenttimestepsdans leur méthodeset_timesteps. S'il n'est pas défini, le comportement par défaut lorsquenum_inference_stepsest passé sera utilisé. Doit être dans l'ordre décroissant. - sigmas (
list[float], facultatif) — Sigmas personnalisés à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argumentsigmasdans leur méthodeset_timesteps. S'il n'est pas défini, le comportement par défaut lorsquenum_inference_stepsest passé sera utilisé. - denoising_end (
float, facultatif) — Lorsqu’il est spécifié, détermine la fraction (entre 0.0 et 1.0) du processus total de débruitage qui doit être achevée avant qu’il ne soit volontairement interrompu prématurément. En conséquence, l’échantillon retourné conservera encore une quantité substantielle de bruit, telle que déterminée par les pas de temps discrets sélectionnés par le planificateur. Le paramètre denoising_end devrait idéalement être utilisé lorsque ce pipeline fait partie d’une configuration multi-pipelines « Mixture of Denoisers », comme expliqué dans Refining the Image Output - guidance_scale (
float, facultatif, valeur par défaut 5.0) — Échelle de guidage telle que définie dans Classifier-Free Diffusion Guidance.guidance_scaleest défini commewde l’équation 2. de Imagen Paper. L’échelle de guidage est activée en définissantguidance_scale > 1. Une échelle de guidage plus élevée encourage la génération d’images étroitement liées auprompttexte, généralement au détriment de la qualité de l’image. - negative_prompt (
stroulist[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passernegative_prompt_embedsà la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré siguidance_scaleest inférieur à1). - negative_prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à ne pas utiliser pour guider la génération d’image, à envoyer àtokenizer_2ettext_encoder_2. S’il n’est pas défini,negative_promptest utilisé dans les deux text-encoders - num_images_per_prompt (
int, facultatif, valeur par défaut 1) — Le nombre d'images à générer par invite. - eta (
float, facultatif, valeur par défaut 0.0) — Correspond au paramètre eta (η) du papier DDIM : https://huggingface.co/papers/2010.02502. Ne s'applique qu'à schedulers.DDIMScheduler, sera ignoré pour les autres. - generator (
torch.Generatoroulist[torch.Generator], facultatif) — Un ou une liste de générateurs torch pour rendre la génération déterministe. - latents (
torch.Tensor, facultatif) — Latents bruités pré-générés, échantillonnés à partir d’une distribution gaussienne, à utiliser comme entrées pour la génération d’images. Peut être utilisé pour ajuster la même génération avec des prompts différents. S’il n’est pas fourni, un tenseur de latents sera généré par échantillonnage à l’aide dugeneratoraléatoire fourni. - prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entréenegative_prompt. - pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-poolés pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte pré-poolés seront générés à partir de l'argument d'entréeprompt. - negative_pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les pooled negative_prompt_embeds seront générés à partir de l'argument d'entréenegative_prompt. - ip_adapter_image — (
PipelineImageInput, facultatif) : Image d’entrée facultative pour travailler avec les IP Adapters. - ip_adapter_image_embeds (
list[torch.Tensor], facultatif) — Embeddings d’image pré-générés pour IP-Adapter. Il doit s’agir d’une liste dont la longueur est égale au nombre d’IP-adapters. Chaque élément doit être un tenseur de forme(batch_size, num_images, emb_dim). Il doit contenir l’embedding d’image négatif sido_classifier_free_guidanceest défini surTrue. S’il n’est pas fourni, les embeddings sont calculés à partir de l’argument d’entréeip_adapter_image. - output_type (
str, facultatif, par défaut"pil") — Le format de sortie de l'image générée. Choisissez entre PIL :PIL.Image.Imageounp.array. - return_dict (
bool, facultatif, par défautTrue) — Indique s'il faut retourner un~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutputplutôt qu'un simple tuple. - cross_attention_kwargs (
dict, facultatif) — Un dictionnaire de kwargs qui, s'il est spécifié, est transmis à l'AttentionProcessordéfini sousself.processordans diffusers.models.attention_processor. - guidance_rescale (
float, facultatif, valeur par défaut 0.0) — Facteur de rescaling du guidance proposé par Common Diffusion Noise Schedules and Sample Steps are Flawedguidance_scaleest défini commeφdans l’équation 16. de Common Diffusion Noise Schedules and Sample Steps are Flawed. Le facteur de rescaling du guidance doit corriger l’exposition excessive lors de l’utilisation d’un SNR terminal nul. - original_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Sioriginal_sizen’est pas identique àtarget_size, l’image apparaîtra sous-échantillonnée ou suréchantillonnée.original_sizeest par défaut(height, width)s’il n’est pas spécifié. Fait partie du micro-conditionnement de SDXL, tel que décrit dans la section 2.2 de https://huggingface.co/papers/2307.01952. - crops_coords_top_left (
tuple[int], facultatif, par défaut (0, 0)) —crops_coords_top_leftpeut être utilisé pour générer une image qui semble « recadrée » à partir de la positioncrops_coords_top_leftvers le bas. Des images bien cadrées et centrées sont généralement obtenues en définissantcrops_coords_top_leftsur (0, 0). Fait partie du micro-conditionnement de SDXL, tel que décrit dans la section 2.2 de https://huggingface.co/papers/2307.01952. - target_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Dans la plupart des cas,target_sizedoit être défini sur la hauteur et la largeur souhaitées de l’image générée. S’il n’est pas spécifié, il prendra par défaut(height, width). Fait partie du micro-conditionnement de SDXL, tel que décrit dans la section 2.2 de https://huggingface.co/papers/2307.01952. - negative_original_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Permet de conditionner négativement le processus de génération en fonction d’une résolution d’image spécifique. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. Pour plus d’informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208. - negative_crops_coords_top_left (
tuple[int], facultatif, valeur par défaut (0, 0)) — Permet de conditionner négativement le processus de génération en fonction de coordonnées de recadrage spécifiques. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. Pour plus d’informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208. - negative_target_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Permet de conditionner négativement le processus de génération en fonction de la résolution de l’image cible. Il doit être identique àtarget_sizedans la plupart des cas. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. Pour plus d’informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208. - clip_skip (
int, facultatif) — Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de l'invite. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de l'invite. - callback_on_step_end (
Callable, facultatif) — Une fonction appelée à la fin de chaque étape de débruitage pendant l'inférence. La fonction est appelée avec les arguments suivants :callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargscontiendra une liste de tous les tenseurs spécifiés parcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, facultatif) — La liste des entrées tensorielles pour la fonctioncallback_on_step_end. Les tenseurs spécifiés dans la liste seront passés en tant qu'argumentcallback_kwargs. Vous ne pourrez inclure que les variables listées dans l'attribut._callback_tensor_inputsde votre classe de pipeline. - pag_scale (
float, facultatif, valeur par défaut 3.0) — Le facteur d'échelle pour le guidage d'attention perturbée. S'il est défini à 0.0, le guidage d'attention perturbée ne sera pas utilisé. - pag_adaptive_scale (
float, facultatif, valeur par défaut 0.0) — Le facteur d'échelle adaptatif pour le guidage de l'attention perturbée. S'il est défini à 0.0,pag_scaleest utilisé.
Retourne
~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput ou tuple
~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput 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 :
>>> import torch
>>> from diffusers import AutoPipelineForText2Image
>>> pipe = AutoPipelineForText2Image.from_pretrained(
... "stabilityai/stable-diffusion-xl-base-1.0",
... torch_dtype=torch.float16,
... enable_pag=True,
... )
>>> pipe = pipe.to("cuda")
>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> image = pipe(prompt, pag_scale=0.3).images[0]encode_prompt
< source >( prompt: strprompt_2: str | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | None = Nonenegative_prompt_2: str | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = None )
Paramètres
- prompt (
stroulist[str], facultatif) — prompt à encoder - prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à envoyer autokenizer_2et autext_encoder_2. S'il n'est pas défini,promptest utilisé dans les deux text-encoders - device — (
torch.device) : torch device - num_images_per_prompt (
int) — nombre d'images à générer par invite - do_classifier_free_guidance (
bool) — indique s'il faut utiliser le classifier free guidance ou non - negative_prompt (
stroulist[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passernegative_prompt_embedsà la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré siguidance_scaleest inférieur à1). - negative_prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à ne pas utiliser pour guider la génération d’image, à envoyer àtokenizer_2ettext_encoder_2. S’il n’est pas défini,negative_promptest utilisé dans les deux text-encoders - prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entréenegative_prompt. - pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-poolés pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte pré-poolés seront générés à partir de l'argument d'entréeprompt. - negative_pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les pooled negative_prompt_embeds seront générés à partir de l'argument d'entréenegative_prompt. - lora_scale (
float, facultatif) — Un facteur d’échelle LoRA qui sera appliqué à toutes les couches LoRA de l’encodeur de texte si des couches LoRA sont chargées. - clip_skip (
int, facultatif) — Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de l'invite. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de l'invite.
Encode le prompt dans les états cachés de l'encodeur de texte.
get_guidance_scale_embedding
< source >( w: Tensorembedding_dim: int = 512dtype: dtype = torch.float32 ) → torch.Tensor
Paramètres
- w (
torch.Tensor) — Génère des vecteurs d’incorporation avec une échelle de guidage spécifiée afin d’enrichir ensuite les incorporations de pas de temps. - embedding_dim (
int, facultatif, par défaut 512) — Dimension des embeddings à générer. - dtype (
torch.dtype, facultatif, par défauttorch.float32) — Type de données des embeddings générés.
Retourne
torch.Tensor
Vecteurs d'embedding de forme (len(w), embedding_dim).
StableDiffusionXLPAGImg2ImgPipeline
classe diffusers.StableDiffusionXLPAGImg2ImgPipeline
< source >( vae: AutoencoderKLtext_encoder: CLIPTextModeltext_encoder_2: CLIPTextModelWithProjectiontokenizer: CLIPTokenizertokenizer_2: CLIPTokenizerunet: UNet2DConditionModelscheduler: KarrasDiffusionSchedulersimage_encoder: CLIPVisionModelWithProjection = Nonefeature_extractor: CLIPImageProcessorPil = Nonerequires_aesthetics_score: bool = Falseforce_zeros_for_empty_prompt: bool = Trueadd_watermarker: bool | None = Nonepag_applied_layers: str | list[str] = 'mid' )
Paramètres
- vae (AutoencoderKL) — Modèle de Variational Auto-Encoder (VAE) pour encoder et décoder des images vers et depuis des représentations latentes.
- text_encoder (
CLIPTextModel) — Encodeur de texte figé. Stable Diffusion XL utilise la partie texte de CLIP, plus précisément la variante clip-vit-large-patch14. - text_encoder_2 (
CLIPTextModelWithProjection) — Deuxième encodeur de texte figé. Stable Diffusion XL utilise la partie texte et pool de CLIP, plus précisément la variante laion/CLIP-ViT-bigG-14-laion2B-39B-b160k. - tokenizer (
CLIPTokenizer) — Tokeniseur de la classe CLIPTokenizer. - tokenizer_2 (
CLIPTokenizer) — Deuxième Tokenizer de la classe CLIPTokenizer. - unet (UNet2DConditionModel) — Architecture U-Net conditionnelle pour le débruitage des latents d'image encodés.
- scheduler (SchedulerMixin) —
Un planificateur à utiliser en combinaison avec
unetpour débruyer les latents de l'image encodée. Peut être l'un des DDIMScheduler, LMSDiscreteScheduler ou PNDMScheduler. - requires_aesthetics_score (
bool, facultatif, par défaut"False") — Indique si leunetnécessite qu'une conditionaesthetic_scoresoit transmise lors de l'inférence. Voir également la configuration destabilityai/stable-diffusion-xl-refiner-1-0. - force_zeros_for_empty_prompt (
bool, facultatif, valeur par défaut"True") — Indique si les embeddings du prompt négatif doivent être forcés à 0. Voir également la configuration destabilityai/stable-diffusion-xl-base-1-0. - add_watermarker (
bool, facultatif) — Indique s'il faut utiliser la bibliothèque invisible_watermark pour appliquer un filigrane aux images de sortie. Si non défini, la valeur par défaut est True si le package est installé, sinon aucun filigrane n'est utilisé.
Pipeline pour la génération d'images à partir de texte utilisant Stable Diffusion XL.
Ce modèle hérite de DiffusionPipeline. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous les pipelines (tels que le téléchargement ou l'enregistrement, l'exécution sur un appareil particulier, etc.)
Le pipeline hérite également des méthodes de chargement suivantes :
- load_textual_inversion() pour charger les embeddings d'inversion textuelle
- from_single_file() pour charger des fichiers
.ckpt - load_lora_weights() pour charger les poids LoRA
- save_lora_weights() pour enregistrer les poids LoRA
- load_ip_adapter() pour charger des IP Adapters
__call__
< source >( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonestrength: float = 0.3num_inference_steps: int = 50timesteps: list[int] = Nonesigmas: list[float] = Nonedenoising_start: float | None = Nonedenoising_end: float | None = Noneguidance_scale: float = 5.0negative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Noneguidance_rescale: float = 0.0original_size: tuple[int, int] = Nonecrops_coords_top_left: tuple[int, int] = (0, 0)target_size: tuple[int, int] = Nonenegative_original_size: tuple[int, int] | None = Nonenegative_crops_coords_top_left: tuple[int, int] = (0, 0)negative_target_size: tuple[int, int] | None = Noneaesthetic_score: float = 6.0negative_aesthetic_score: float = 2.5clip_skip: int | None = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list[str] = ['latents']pag_scale: float = 3.0pag_adaptive_scale: float = 0.0 ) → ~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput or tuple
Paramètres
- prompt (
stroulist[str], facultatif) — Le prompt ou les prompts pour guider la génération d’image. S’il n’est pas défini, il faut passerprompt_embedsà la place. - prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à envoyer autokenizer_2et autext_encoder_2. S'il n'est pas défini,promptest utilisé dans les deux text-encoders - image (
torch.TensorouPIL.Image.Imageounp.ndarrayoulist[torch.Tensor]oulist[PIL.Image.Image]oulist[np.ndarray]) — Les images à modifier avec le pipeline. - strength (
float, facultatif, valeur par défaut 0,3) — Indique conceptuellement dans quelle mesure transformer l'imagede référence. Doit être compris entre 0 et 1. L'imageservira de point de départ, en y ajoutant d'autant plus de bruit que la valeur destrengthest élevée. Le nombre d'étapes de débruitage dépend de la quantité de bruit initialement ajoutée. Lorsquestrengthvaut 1, le bruit ajouté sera maximal et le processus de débruitage s'exécutera pendant le nombre complet d'itérations spécifié dansnum_inference_steps. Une valeur de 1 ignore donc essentiellement l'image. Notez que sidenoising_startest déclaré comme un entier, la valeur destrengthsera ignorée. - num_inference_steps (
int, facultatif, valeur par défaut 50) — Le nombre d'étapes de débruitage. Un plus grand nombre d'étapes de débruitage conduit généralement à une image de meilleure qualité, au prix d'une inférence plus lente. - timesteps (
list[int], facultatif) — Timesteps personnalisés à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argumenttimestepsdans leur méthodeset_timesteps. S'il n'est pas défini, le comportement par défaut lorsquenum_inference_stepsest passé sera utilisé. Doit être dans l'ordre décroissant. - sigmas (
list[float], facultatif) — Sigmas personnalisés à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argumentsigmasdans leur méthodeset_timesteps. S'il n'est pas défini, le comportement par défaut lorsquenum_inference_stepsest passé sera utilisé. - denoising_start (
float, facultatif) — Lorsqu’il est 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’imagetransmise est une image partiellement débruitée. Notez que lorsque ce paramètre est spécifié, strength est ignoré. Le paramètredenoising_startest particulièrement utile lorsque ce pipeline est intégré dans une configuration multi-pipelines « Mixture of Denoisers », comme décrit dans Refine Image Quality. - denoising_end (
float, facultatif) — Lorsqu’il est spécifié, détermine la fraction (entre 0.0 et 1.0) du processus total de débruitage qui doit être achevée avant qu’il ne soit volontairement interrompu prématurément. En conséquence, l’échantillon renvoyé conservera encore une quantité substantielle de bruit (environ 20 % des timesteps finaux sont encore nécessaires) et devra être débruité par un pipeline successeur dontdenoising_startest défini à 0.8, afin qu’il ne débruite que les 20 % finaux du planificateur. Le paramètre denoising_end devrait idéalement être utilisé lorsque ce pipeline fait partie d’une configuration multi-pipelines « Mixture of Denoisers », comme décrit dans Refine Image Quality. - guidance_scale (
float, facultatif, valeur par défaut 7,5) — Échelle de guidage telle que définie dans Classifier-Free Diffusion Guidance.guidance_scaleest défini commewde l’équation 2 de Imagen Paper. L’échelle de guidage est activée en définissantguidance_scale > 1. Une échelle de guidage plus élevée encourage la génération d’images étroitement liées auprompttexte, généralement au détriment de la qualité de l’image. - negative_prompt (
stroulist[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passernegative_prompt_embedsà la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré siguidance_scaleest inférieur à1). - negative_prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à ne pas utiliser pour guider la génération d’image, à envoyer àtokenizer_2ettext_encoder_2. S’il n’est pas défini,negative_promptest utilisé dans les deux text-encoders - num_images_per_prompt (
int, facultatif, valeur par défaut 1) — Le nombre d'images à générer par invite. - eta (
float, facultatif, valeur par défaut 0.0) — Correspond au paramètre eta (η) du papier DDIM : https://huggingface.co/papers/2010.02502. Ne s'applique qu'à schedulers.DDIMScheduler, sera ignoré pour les autres. - generator (
torch.Generatoroulist[torch.Generator], facultatif) — Un ou une liste de générateurs torch pour rendre la génération déterministe. - latents (
torch.Tensor, facultatif) — Latents bruités pré-générés, échantillonnés à partir d’une distribution gaussienne, à utiliser comme entrées pour la génération d’images. Peut être utilisé pour ajuster la même génération avec des prompts différents. S’il n’est pas fourni, un tenseur de latents sera généré par échantillonnage à l’aide dugeneratoraléatoire fourni. - prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entréenegative_prompt. - pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-poolés pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte pré-poolés seront générés à partir de l'argument d'entréeprompt. - negative_pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les pooled negative_prompt_embeds seront générés à partir de l'argument d'entréenegative_prompt. - ip_adapter_image — (
PipelineImageInput, facultatif) : Image d’entrée facultative pour travailler avec les IP Adapters. - ip_adapter_image_embeds (
list[torch.Tensor], facultatif) — Embeddings d’image pré-générés pour IP-Adapter. Il doit s’agir d’une liste dont la longueur est égale au nombre d’IP-adapters. Chaque élément doit être un tenseur de forme(batch_size, num_images, emb_dim). Il doit contenir l’embedding d’image négatif sido_classifier_free_guidanceest défini surTrue. S’il n’est pas fourni, les embeddings sont calculés à partir de l’argument d’entréeip_adapter_image. - output_type (
str, facultatif, par défaut"pil") — Le format de sortie de l'image générée. Choisissez entre PIL :PIL.Image.Imageounp.array. - return_dict (
bool, facultatif, par défautTrue) — Indique s'il faut retourner un~pipelines.stable_diffusion.StableDiffusionXLPipelineOutputplutôt qu'un simple tuple. - cross_attention_kwargs (
dict, facultatif) — Un dictionnaire de kwargs qui, s'il est spécifié, est transmis à l'AttentionProcessordéfini sousself.processordans diffusers.models.attention_processor. - guidance_rescale (
float, facultatif, valeur par défaut 0.0) — Facteur de rescaling du guidance proposé par Common Diffusion Noise Schedules and Sample Steps are Flawedguidance_scaleest défini commeφdans l’équation 16. de Common Diffusion Noise Schedules and Sample Steps are Flawed. Le facteur de rescaling du guidance doit corriger l’exposition excessive lors de l’utilisation d’un SNR terminal nul. - original_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Sioriginal_sizen’est pas identique àtarget_size, l’image apparaîtra sous-échantillonnée ou suréchantillonnée.original_sizeest par défaut(height, width)s’il n’est pas spécifié. Fait partie du micro-conditionnement de SDXL, tel que décrit dans la section 2.2 de https://huggingface.co/papers/2307.01952. - crops_coords_top_left (
tuple[int], facultatif, par défaut (0, 0)) —crops_coords_top_leftpeut être utilisé pour générer une image qui semble « recadrée » à partir de la positioncrops_coords_top_leftvers le bas. Des images bien cadrées et centrées sont généralement obtenues en définissantcrops_coords_top_leftsur (0, 0). Fait partie du micro-conditionnement de SDXL, tel que décrit dans la section 2.2 de https://huggingface.co/papers/2307.01952. - target_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Dans la plupart des cas,target_sizedoit être défini sur la hauteur et la largeur souhaitées de l’image générée. S’il n’est pas spécifié, il prendra par défaut(height, width). Fait partie du micro-conditionnement de SDXL, tel que décrit dans la section 2.2 de https://huggingface.co/papers/2307.01952. - negative_original_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Permet de conditionner négativement le processus de génération en fonction d’une résolution d’image spécifique. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. Pour plus d’informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208. - negative_crops_coords_top_left (
tuple[int], facultatif, valeur par défaut (0, 0)) — Permet de conditionner négativement le processus de génération en fonction de coordonnées de recadrage spécifiques. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. Pour plus d’informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208. - negative_target_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Permet de conditionner négativement le processus de génération en fonction de la résolution de l’image cible. Il doit être identique àtarget_sizedans la plupart des cas. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. Pour plus d’informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208. - aesthetic_score (
float, facultatif, valeur par défaut 6.0) — Utilisé pour simuler un score esthétique de l’image générée en influençant la condition de texte positive. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. - negative_aesthetic_score (
float, facultatif, valeur par défaut 2,5) — Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. Peut être utilisé pour simuler un score esthétique de l’image générée en influençant la condition de texte négative. - clip_skip (
int, facultatif) — Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de l'invite. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de l'invite. - callback_on_step_end (
Callable,PipelineCallback,MultiPipelineCallbacks, facultatif) — Une fonction ou une sous-classe dePipelineCallbackouMultiPipelineCallbacksqui est appelée à la fin de chaque étape de débruitage pendant l’inférence, avec les arguments suivants :callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargscontiendra une liste de tous les tenseurs spécifiés parcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, facultatif) — La liste des entrées tensorielles pour la fonctioncallback_on_step_end. Les tenseurs spécifiés dans la liste seront passés en tant qu'argumentcallback_kwargs. Vous ne pourrez inclure que les variables listées dans l'attribut._callback_tensor_inputsde votre classe de pipeline. - pag_scale (
float, facultatif, valeur par défaut 3.0) — Le facteur d'échelle pour le guidage d'attention perturbée. S'il est défini à 0.0, le guidage d'attention perturbée ne sera pas utilisé. - pag_adaptive_scale (
float, facultatif, valeur par défaut 0.0) — Le facteur d'échelle adaptatif pour le guidage de l'attention perturbée. S'il est défini à 0.0,pag_scaleest utilisé.
Retourne
~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput ou tuple
~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput si return_dict est True, sinon un
`tuple. Lors du retour d'un tuple, le premier élément est une liste contenant les images générées.
Fonction appelée lors de l'appel du pipeline pour la génération.
Exemples :
>>> import torch
>>> from diffusers import AutoPipelineForImage2Image
>>> from diffusers.utils import load_image
>>> pipe = AutoPipelineForImage2Image.from_pretrained(
... "stabilityai/stable-diffusion-xl-refiner-1.0",
... torch_dtype=torch.float16,
... enable_pag=True,
... )
>>> pipe = pipe.to("cuda")
>>> url = "https://huggingface.co/datasets/patrickvonplaten/images/resolve/main/aa_xl/000000009.png"
>>> init_image = load_image(url).convert("RGB")
>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> image = pipe(prompt, image=init_image, pag_scale=0.3).images[0]encode_prompt
< source >( prompt: strprompt_2: str | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | None = Nonenegative_prompt_2: str | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = None )
Paramètres
- prompt (
stroulist[str], facultatif) — prompt à encoder - prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à envoyer autokenizer_2et autext_encoder_2. S'il n'est pas défini,promptest utilisé dans les deux text-encoders - device — (
torch.device) : torch device - num_images_per_prompt (
int) — nombre d'images à générer par invite - do_classifier_free_guidance (
bool) — indique s'il faut utiliser le classifier free guidance ou non - negative_prompt (
stroulist[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passernegative_prompt_embedsà la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré siguidance_scaleest inférieur à1). - negative_prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à ne pas utiliser pour guider la génération d’image, à envoyer àtokenizer_2ettext_encoder_2. S’il n’est pas défini,negative_promptest utilisé dans les deux text-encoders - prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entréenegative_prompt. - pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-poolés pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte pré-poolés seront générés à partir de l'argument d'entréeprompt. - negative_pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les pooled negative_prompt_embeds seront générés à partir de l'argument d'entréenegative_prompt. - lora_scale (
float, facultatif) — Un facteur d’échelle LoRA qui sera appliqué à toutes les couches LoRA de l’encodeur de texte si des couches LoRA sont chargées. - clip_skip (
int, facultatif) — Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de l'invite. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de l'invite.
Encode le prompt dans les états cachés de l'encodeur de texte.
get_guidance_scale_embedding
< source >( w: Tensorembedding_dim: int = 512dtype: dtype = torch.float32 ) → torch.Tensor
Paramètres
- w (
torch.Tensor) — Génère des vecteurs d’incorporation avec une échelle de guidage spécifiée afin d’enrichir ensuite les incorporations de pas de temps. - embedding_dim (
int, facultatif, par défaut 512) — Dimension des embeddings à générer. - dtype (
torch.dtype, facultatif, par défauttorch.float32) — Type de données des embeddings générés.
Retourne
torch.Tensor
Vecteurs d'embedding de forme (len(w), embedding_dim).
StableDiffusionXLPAGInpaintPipeline
classe diffusers.StableDiffusionXLPAGInpaintPipeline
< source >( vae: AutoencoderKLtext_encoder: CLIPTextModeltext_encoder_2: CLIPTextModelWithProjectiontokenizer: CLIPTokenizertokenizer_2: CLIPTokenizerunet: UNet2DConditionModelscheduler: KarrasDiffusionSchedulersimage_encoder: CLIPVisionModelWithProjection = Nonefeature_extractor: CLIPImageProcessorPil = Nonerequires_aesthetics_score: bool = Falseforce_zeros_for_empty_prompt: bool = Trueadd_watermarker: bool | None = Nonepag_applied_layers: str | list[str] = 'mid' )
Paramètres
- vae (AutoencoderKL) — Modèle de Variational Auto-Encoder (VAE) pour encoder et décoder des images vers et depuis des représentations latentes.
- text_encoder (
CLIPTextModel) — Encodeur de texte figé. Stable Diffusion XL utilise la partie texte de CLIP, plus précisément la variante clip-vit-large-patch14. - text_encoder_2 (
CLIPTextModelWithProjection) — Deuxième encodeur de texte figé. Stable Diffusion XL utilise la partie texte et pool de CLIP, plus précisément la variante laion/CLIP-ViT-bigG-14-laion2B-39B-b160k. - tokenizer (
CLIPTokenizer) — Tokeniseur de la classe CLIPTokenizer. - tokenizer_2 (
CLIPTokenizer) — Deuxième Tokenizer de la classe CLIPTokenizer. - unet (UNet2DConditionModel) — Architecture U-Net conditionnelle pour le débruitage des latents d'image encodés.
- scheduler (SchedulerMixin) —
Un planificateur à utiliser en combinaison avec
unetpour débruyer les latents de l'image encodée. Peut être l'un des DDIMScheduler, LMSDiscreteScheduler ou PNDMScheduler. - requires_aesthetics_score (
bool, facultatif, valeur par défaut"False") — Indique si leunetnécessite le passage d’une condition aesthetic_score lors de l’inférence. Voir également la configuration destabilityai/stable-diffusion-xl-refiner-1-0. - force_zeros_for_empty_prompt (
bool, facultatif, valeur par défaut"True") — Indique si les embeddings du prompt négatif doivent être forcés à 0. Voir également la configuration destabilityai/stable-diffusion-xl-base-1-0. - add_watermarker (
bool, facultatif) — Indique s'il faut utiliser la bibliothèque invisible_watermark pour appliquer un filigrane aux images de sortie. Si non défini, la valeur par défaut est True si le package est installé, sinon aucun filigrane n'est utilisé.
Pipeline pour la génération d'images à partir de texte utilisant Stable Diffusion XL.
Ce modèle hérite de DiffusionPipeline. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous les pipelines (tels que le téléchargement ou l'enregistrement, l'exécution sur un appareil particulier, etc.)
Le pipeline hérite également des méthodes de chargement suivantes :
- load_textual_inversion() pour charger les embeddings d'inversion textuelle
- from_single_file() pour charger des fichiers
.ckpt - load_lora_weights() pour charger les poids LoRA
- save_lora_weights() pour enregistrer les poids LoRA
- load_ip_adapter() pour charger des IP Adapters
__call__
< source >( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonemask_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonemasked_image_latents: Tensor = Noneheight: int | None = Nonewidth: int | None = Nonepadding_mask_crop: int | None = Nonestrength: float = 0.9999num_inference_steps: int = 50timesteps: list[int] = Nonesigmas: list[float] = Nonedenoising_start: float | None = Nonedenoising_end: float | None = Noneguidance_scale: float = 7.5negative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Noneguidance_rescale: float = 0.0original_size: tuple[int, int] = Nonecrops_coords_top_left: tuple[int, int] = (0, 0)target_size: tuple[int, int] = Nonenegative_original_size: tuple[int, int] | None = Nonenegative_crops_coords_top_left: tuple[int, int] = (0, 0)negative_target_size: tuple[int, int] | None = Noneaesthetic_score: float = 6.0negative_aesthetic_score: float = 2.5clip_skip: int | None = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list[str] = ['latents']pag_scale: float = 3.0pag_adaptive_scale: float = 0.0 ) → ~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput or tuple
Paramètres
- prompt (
stroulist[str], facultatif) — Le prompt ou les prompts pour guider la génération d’image. S’il n’est pas défini, il faut passerprompt_embedsà la place. - prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à envoyer autokenizer_2et autext_encoder_2. S'il n'est pas défini,promptest utilisé dans les deux text-encoders - image (
PIL.Image.Image) —Imageou tenseur représentant un lot d’images qui sera inpainté, c’est-à-dire que certaines parties de l’image seront masquées avecmask_imageet repeintes selonprompt. - mask_image (
PIL.Image.Image) —Imageou tenseur représentant un lot d’images, à utiliser comme masque pourimage. Les pixels blancs du masque seront repeints, tandis que les pixels noirs seront conservés. Simask_imageest une image PIL, elle sera convertie en un seul canal (luminance) avant utilisation. S’il s’agit d’un tenseur, il doit contenir un seul canal de couleur (L) au lieu de trois, la forme attendue étant donc(B, H, W, 1). - masked_image_latents (
torch.Tensor, facultatif) — Latence pré-encodée de l’image masquée (pour l’inpainting). - 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. Cette valeur est fixée à 1024 par défaut pour obtenir les meilleurs résultats. Toute valeur inférieure à 512 pixels ne fonctionnera pas correctement avec stabilityai/stable-diffusion-xl-base-1.0 et les points de contrôle qui ne sont pas spécifiquement affinés sur de faibles résolutions. - width (
int, facultatif, par défaut self.unet.config.sample_size * self.vae_scale_factor) — La largeur en pixels de l’image générée. Cette valeur est fixée à 1024 par défaut pour obtenir les meilleurs résultats. Toute valeur inférieure à 512 pixels ne fonctionnera pas correctement avec stabilityai/stable-diffusion-xl-base-1.0 et les points de contrôle qui ne sont pas spécifiquement affinés sur de faibles résolutions. - padding_mask_crop (
int, facultatif, valeur par défautNone) — La taille de la marge dans le recadrage à appliquer à l’image et au masque. SiNone, aucun recadrage n’est appliqué à l’image et à mask_image. Sipadding_mask_cropn’est pasNone, une région rectangulaire de même ratio d’aspect que l’image et contenant toute la zone masquée est d’abord identifiée, puis cette zone est étendue en fonction depadding_mask_crop. L’image et mask_image sont ensuite recadrées en fonction de la zone étendue avant d’être redimensionnées à la taille de l’image d’origine pour l’inpainting. Cela est utile lorsque la zone masquée est petite tandis que l’image est grande et contient des informations sans rapport avec l’inpainting, comme l’arrière-plan. - strength (
float, facultatif, valeur par défaut 0.9999) — Indique conceptuellement dans quelle mesure transformer la partie masquée de l'imagede référence. Doit être compris entre 0 et 1.imagesera utilisée comme point de départ, en y ajoutant d'autant plus de bruit questrengthest élevée. Le nombre d'étapes de débruitage dépend de la quantité de bruit initialement ajoutée. Lorsquestrengthvaut 1, le bruit ajouté sera maximal et le processus de débruitage s'exécutera pendant le nombre complet d'itérations spécifié dansnum_inference_steps. Une valeur de 1 ignore donc essentiellement la partie masquée de l'imagede référence. Notez que sidenoising_startest déclaré comme un entier, la valeur destrengthsera ignorée. - num_inference_steps (
int, facultatif, valeur par défaut 50) — Le nombre d'étapes de débruitage. Un plus grand nombre d'étapes de débruitage conduit généralement à une image de meilleure qualité, au prix d'une inférence plus lente. - timesteps (
list[int], facultatif) — Timesteps personnalisés à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argumenttimestepsdans leur méthodeset_timesteps. S'il n'est pas défini, le comportement par défaut lorsquenum_inference_stepsest passé sera utilisé. Doit être dans l'ordre décroissant. - sigmas (
list[float], facultatif) — Sigmas personnalisés à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argumentsigmasdans leur méthodeset_timesteps. S'il n'est pas défini, le comportement par défaut lorsquenum_inference_stepsest passé sera utilisé. - denoising_start (
float, facultatif) — Lorsqu’il est 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’imagetransmise est partiellement débruitée. Notez que lorsque ce paramètre est spécifié, strength est ignoré. Le paramètredenoising_startest particulièrement utile lorsque ce pipeline est intégré dans une configuration multi-pipelines « Mixture of Denoisers », comme décrit dans Améliorer la sortie image. - denoising_end (
float, facultatif) — Lorsqu’il est spécifié, détermine la fraction (entre 0.0 et 1.0) du processus total de débruitage qui doit être achevée avant qu’il ne soit volontairement interrompu prématurément. En conséquence, l’échantillon renvoyé conservera encore une quantité substantielle de bruit (environ 20 % des timesteps finaux sont encore nécessaires) et devra être débruité par un pipeline successeur dontdenoising_startest défini à 0.8, afin qu’il ne débruite que les 20 % finaux du planificateur. Le paramètre denoising_end devrait idéalement être utilisé lorsque ce pipeline fait partie d’une configuration multi-pipelines « Mixture of Denoisers », comme décrit dans Refining the Image Output. - guidance_scale (
float, facultatif, valeur par défaut 7,5) — Échelle de guidage telle que définie dans Classifier-Free Diffusion Guidance.guidance_scaleest défini commewde l’équation 2 de Imagen Paper. L’échelle de guidage est activée en définissantguidance_scale > 1. Une échelle de guidage plus élevée encourage la génération d’images étroitement liées auprompttexte, généralement au détriment de la qualité de l’image. - negative_prompt (
stroulist[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passernegative_prompt_embedsà la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré siguidance_scaleest inférieur à1). - negative_prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à ne pas utiliser pour guider la génération d’image, à envoyer àtokenizer_2ettext_encoder_2. S’il n’est pas défini,negative_promptest utilisé dans les deux text-encoders - prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entréenegative_prompt. - pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-poolés pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte pré-poolés seront générés à partir de l'argument d'entréeprompt. - negative_pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les pooled negative_prompt_embeds seront générés à partir de l'argument d'entréenegative_prompt. - ip_adapter_image — (
PipelineImageInput, facultatif) : Image d’entrée facultative pour travailler avec les IP Adapters. - ip_adapter_image_embeds (
list[torch.Tensor], facultatif) — Embeddings d’image pré-générés pour IP-Adapter. Il doit s’agir d’une liste dont la longueur est égale au nombre d’IP-adapters. Chaque élément doit être un tenseur de forme(batch_size, num_images, emb_dim). Il doit contenir l’embedding d’image négatif sido_classifier_free_guidanceest défini surTrue. S’il n’est pas fourni, les embeddings sont calculés à partir de l’argument d’entréeip_adapter_image. - num_images_per_prompt (
int, facultatif, valeur par défaut 1) — Le nombre d'images à générer par invite. - eta (
float, facultatif, valeur par défaut 0.0) — Correspond au paramètre eta (η) du papier DDIM : https://huggingface.co/papers/2010.02502. Ne s'applique qu'à schedulers.DDIMScheduler, sera ignoré pour les autres. - generator (
torch.Generator, facultatif) — Un ou une liste de générateurs torch pour rendre la génération déterministe. - latents (
torch.Tensor, facultatif) — Latents bruités pré-générés, échantillonnés à partir d’une distribution gaussienne, à utiliser comme entrées pour la génération d’images. Peut être utilisé pour ajuster la même génération avec des prompts différents. S’il n’est pas fourni, un tenseur de latents sera généré par échantillonnage à l’aide dugeneratoraléatoire fourni. - output_type (
str, facultatif, par défaut"pil") — Le format de sortie de l'image générée. Choisissez entre PIL :PIL.Image.Imageounp.array. - return_dict (
bool, facultatif, par défautTrue) — Indique s'il faut retourner un StableDiffusionPipelineOutput plutôt qu'un simple tuple. - cross_attention_kwargs (
dict, facultatif) — Un dictionnaire de kwargs qui, s'il est spécifié, est transmis à l'AttentionProcessordéfini sousself.processordans diffusers.models.attention_processor. - original_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Sioriginal_sizen’est pas identique àtarget_size, l’image apparaîtra sous-échantillonnée ou suréchantillonnée.original_sizeest par défaut(height, width)s’il n’est pas spécifié. Fait partie du micro-conditionnement de SDXL, tel que décrit dans la section 2.2 de https://huggingface.co/papers/2307.01952. - crops_coords_top_left (
tuple[int], facultatif, par défaut (0, 0)) —crops_coords_top_leftpeut être utilisé pour générer une image qui semble « recadrée » à partir de la positioncrops_coords_top_leftvers le bas. Des images bien cadrées et centrées sont généralement obtenues en définissantcrops_coords_top_leftsur (0, 0). Fait partie du micro-conditionnement de SDXL, tel que décrit dans la section 2.2 de https://huggingface.co/papers/2307.01952. - target_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Dans la plupart des cas,target_sizedoit être défini sur la hauteur et la largeur souhaitées de l’image générée. S’il n’est pas spécifié, il prendra par défaut(height, width). Fait partie du micro-conditionnement de SDXL, tel que décrit dans la section 2.2 de https://huggingface.co/papers/2307.01952. - negative_original_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Permet de conditionner négativement le processus de génération en fonction d’une résolution d’image spécifique. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. Pour plus d’informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208. - negative_crops_coords_top_left (
tuple[int], facultatif, valeur par défaut (0, 0)) — Permet de conditionner négativement le processus de génération en fonction de coordonnées de recadrage spécifiques. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. Pour plus d’informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208. - negative_target_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Permet de conditionner négativement le processus de génération en fonction de la résolution de l’image cible. Il doit être identique àtarget_sizedans la plupart des cas. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. Pour plus d’informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208. - aesthetic_score (
float, facultatif, valeur par défaut 6.0) — Utilisé pour simuler un score esthétique de l’image générée en influençant la condition de texte positive. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. - negative_aesthetic_score (
float, facultatif, valeur par défaut 2,5) — Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. Peut être utilisé pour simuler un score esthétique de l’image générée en influençant la condition de texte négative. - guidance_rescale (
float, facultatif, valeur par défaut 0.0) — Facteur de rescaling du guidance issu de Common Diffusion Noise Schedules and Sample Steps are Flawed. - clip_skip (
int, facultatif) — Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de l'invite. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de l'invite. - callback_on_step_end (
Callable,PipelineCallback,MultiPipelineCallbacks, facultatif) — Une fonction ou une sous-classe dePipelineCallbackouMultiPipelineCallbacksqui est appelée à la fin de chaque étape de débruitage pendant l’inférence, avec les arguments suivants :callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargscontiendra une liste de tous les tenseurs spécifiés parcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, facultatif) — La liste des entrées tensorielles pour la fonctioncallback_on_step_end. Les tenseurs spécifiés dans la liste seront passés en tant qu'argumentcallback_kwargs. Vous ne pourrez inclure que les variables listées dans l'attribut._callback_tensor_inputsde votre classe de pipeline. - pag_scale (
float, facultatif, valeur par défaut 3.0) — Le facteur d'échelle pour le guidage d'attention perturbée. S'il est défini à 0.0, le guidage d'attention perturbée ne sera pas utilisé. - pag_adaptive_scale (
float, facultatif, valeur par défaut 0.0) — Le facteur d'échelle adaptatif pour le guidage de l'attention perturbée. S'il est défini à 0.0,pag_scaleest utilisé.
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 :
>>> import torch
>>> from diffusers import AutoPipelineForInpainting
>>> from diffusers.utils import load_image
>>> pipe = AutoPipelineForInpainting.from_pretrained(
... "stabilityai/stable-diffusion-xl-base-1.0",
... torch_dtype=torch.float16,
... variant="fp16",
... enable_pag=True,
... )
>>> pipe.to("cuda")
>>> img_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png"
>>> mask_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png"
>>> init_image = load_image(img_url).convert("RGB")
>>> mask_image = load_image(mask_url).convert("RGB")
>>> prompt = "A majestic tiger sitting on a bench"
>>> image = pipe(
... prompt=prompt,
... image=init_image,
... mask_image=mask_image,
... num_inference_steps=50,
... strength=0.80,
... pag_scale=0.3,
... ).images[0]encode_prompt
< source >( prompt: strprompt_2: str | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | None = Nonenegative_prompt_2: str | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = None )
Paramètres
- prompt (
stroulist[str], facultatif) — prompt à encoder - prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à envoyer autokenizer_2et autext_encoder_2. S'il n'est pas défini,promptest utilisé dans les deux text-encoders - device — (
torch.device) : torch device - num_images_per_prompt (
int) — nombre d'images à générer par invite - do_classifier_free_guidance (
bool) — indique s'il faut utiliser le classifier free guidance ou non - negative_prompt (
stroulist[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passernegative_prompt_embedsà la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré siguidance_scaleest inférieur à1). - negative_prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à ne pas utiliser pour guider la génération d’image, à envoyer àtokenizer_2ettext_encoder_2. S’il n’est pas défini,negative_promptest utilisé dans les deux text-encoders - prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entréenegative_prompt. - pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-poolés pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte pré-poolés seront générés à partir de l'argument d'entréeprompt. - negative_pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les pooled negative_prompt_embeds seront générés à partir de l'argument d'entréenegative_prompt. - lora_scale (
float, facultatif) — Un facteur d’échelle LoRA qui sera appliqué à toutes les couches LoRA de l’encodeur de texte si des couches LoRA sont chargées. - clip_skip (
int, facultatif) — Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de l'invite. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de l'invite.
Encode le prompt dans les états cachés de l'encodeur de texte.
get_guidance_scale_embedding
< source >( w: Tensorembedding_dim: int = 512dtype: dtype = torch.float32 ) → torch.Tensor
Paramètres
- w (
torch.Tensor) — Génère des vecteurs d’incorporation avec une échelle de guidage spécifiée afin d’enrichir ensuite les incorporations de pas de temps. - embedding_dim (
int, facultatif, par défaut 512) — Dimension des embeddings à générer. - dtype (
torch.dtype, facultatif, par défauttorch.float32) — Type de données des embeddings générés.
Retourne
torch.Tensor
Vecteurs d'embedding de forme (len(w), embedding_dim).
StableDiffusionXLControlNetPAGPipeline
classe diffusers.StableDiffusionXLControlNetPAGPipeline
< source >( vae: AutoencoderKLtext_encoder: CLIPTextModeltext_encoder_2: CLIPTextModelWithProjectiontokenizer: CLIPTokenizertokenizer_2: CLIPTokenizerunet: UNet2DConditionModelcontrolnet: diffusers.models.controlnets.controlnet.ControlNetModel | list[diffusers.models.controlnets.controlnet.ControlNetModel] | tuple[diffusers.models.controlnets.controlnet.ControlNetModel] | diffusers.models.controlnets.multicontrolnet.MultiControlNetModelscheduler: KarrasDiffusionSchedulersforce_zeros_for_empty_prompt: bool = Trueadd_watermarker: bool | None = Nonefeature_extractor: CLIPImageProcessorPil = Noneimage_encoder: CLIPVisionModelWithProjection = Nonepag_applied_layers: str | list[str] = 'mid' )
Paramètres
- vae (AutoencoderKL) — Modèle de Variational Auto-Encoder (VAE) pour encoder et décoder des images vers et depuis des représentations latentes.
- text_encoder (CLIPTextModel) — Encodeur de texte figé (clip-vit-large-patch14).
- text_encoder_2 (CLIPTextModelWithProjection) — Deuxième encodeur de texte figé (laion/CLIP-ViT-bigG-14-laion2B-39B-b160k).
- tokenizer (CLIPTokenizer) —
Un
CLIPTokenizerpour tokeniser le texte. - tokenizer_2 (CLIPTokenizer) —
Un
CLIPTokenizerpour tokeniser le texte. - unet (UNet2DConditionModel) —
Un
UNet2DConditionModelpour débruyer les latents d'image encodés. - controlnet (ControlNetModel ou
list[ControlNetModel]) — Fournit un conditionnement supplémentaire auunetpendant 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) —
Un planificateur à utiliser en combinaison avec
unetpour débruyer les latents de l'image encodée. Peut être l'un des DDIMScheduler, LMSDiscreteScheduler ou PNDMScheduler. - force_zeros_for_empty_prompt (
bool, facultatif, valeur par défaut"True") — Indique si les embeddings du prompt négatif doivent toujours être définis à 0. Voir également la configuration destabilityai/stable-diffusion-xl-base-1-0. - add_watermarker (
bool, facultatif) — Indique s'il faut utiliser la bibliothèque invisible_watermark pour appliquer un filigrane aux images de sortie. Si non défini, la valeur par défaut estTruesi le package est installé ; sinon, aucun filigrane n'est utilisé.
Pipeline de génération d'images à partir de texte utilisant Stable Diffusion XL avec un guidage ControlNet.
Ce modèle hérite de DiffusionPipeline. Consultez la documentation de la classe parente pour les méthodes génériques implémentées pour tous les pipelines (téléchargement, sauvegarde, exécution sur un appareil particulier, etc.).
Le pipeline hérite également des méthodes de chargement suivantes :
- load_textual_inversion() pour charger les embeddings d'inversion textuelle
- load_lora_weights() pour charger les poids LoRA
- save_lora_weights() pour enregistrer les poids LoRA
- from_single_file() pour charger des fichiers
.ckpt - load_ip_adapter() pour charger des IP Adapters
__call__
< source >( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Noneheight: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 50timesteps: list[int] = Nonesigmas: list[float] = Nonedenoising_end: float | None = Noneguidance_scale: float = 5.0negative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Nonecontrolnet_conditioning_scale: float | list[float] = 1.0control_guidance_start: float | list[float] = 0.0control_guidance_end: float | list[float] = 1.0original_size: tuple[int, int] = Nonecrops_coords_top_left: tuple[int, int] = (0, 0)target_size: tuple[int, int] = Nonenegative_original_size: tuple[int, int] | None = Nonenegative_crops_coords_top_left: tuple[int, int] = (0, 0)negative_target_size: tuple[int, int] | None = Noneclip_skip: int | None = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list[str] = ['latents']pag_scale: float = 3.0pag_adaptive_scale: float = 0.0 ) → StableDiffusionPipelineOutput or tuple
Paramètres
- prompt (
stroulist[str], facultatif) — Le prompt ou les prompts pour guider la génération d’images. S’il n’est pas défini, vous devez passerprompt_embeds. - prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à envoyer àtokenizer_2ettext_encoder_2. S'il n'est pas défini,promptest utilisé dans les deux text-encoders. - image (
torch.Tensor,PIL.Image.Image,np.ndarray,list[torch.Tensor],list[PIL.Image.Image],list[np.ndarray], —list[list[torch.Tensor]],list[list[np.ndarray]]oulist[list[PIL.Image.Image]]) : La condition d’entrée ControlNet à fournir pour guider leunetlors de la génération. Si le type est spécifié commetorch.Tensor, il est transmis à ControlNet tel quel.PIL.Image.Imagepeut également être accepté en tant qu’image. Les dimensions de l’image de sortie sont par défaut celles deimage. Si la hauteur et/ou la largeur sont passées,imageest redimensionnée en conséquence. Si plusieurs ControlNets sont spécifiés dansinit, les images doivent être passées sous forme de liste afin que chaque élément de la liste puisse être correctement groupé (batching) pour l’entrée d’un seul ControlNet. - height (
int, facultatif, par défautself.unet.config.sample_size * self.vae_scale_factor) — La hauteur en pixels de l’image générée. Toute valeur inférieure à 512 pixels ne fonctionnera pas correctement avec stabilityai/stable-diffusion-xl-base-1.0 et les points de contrôle qui ne sont pas spécifiquement affinés sur de faibles résolutions. - width (
int, facultatif, par défautself.unet.config.sample_size * self.vae_scale_factor) — La largeur en pixels de l’image générée. Toute valeur inférieure à 512 pixels ne fonctionnera pas correctement avec stabilityai/stable-diffusion-xl-base-1.0 et les points de contrôle qui ne sont pas spécifiquement affinés sur de faibles résolutions. - num_inference_steps (
int, facultatif, valeur par défaut 50) — Le nombre d'étapes de débruitage. Un plus grand nombre d'étapes de débruitage conduit généralement à une image de meilleure qualité, au prix d'une inférence plus lente. - timesteps (
list[int], facultatif) — Timesteps personnalisés à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argumenttimestepsdans leur méthodeset_timesteps. S'il n'est pas défini, le comportement par défaut lorsquenum_inference_stepsest passé sera utilisé. Doit être dans l'ordre décroissant. - sigmas (
list[float], facultatif) — Sigmas personnalisés à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argumentsigmasdans leur méthodeset_timesteps. S'il n'est pas défini, le comportement par défaut lorsquenum_inference_stepsest passé sera utilisé. - denoising_end (
float, facultatif) — Lorsqu’il est spécifié, détermine la fraction (entre 0.0 et 1.0) du processus total de débruitage qui doit être achevée avant qu’il ne soit volontairement interrompu prématurément. En conséquence, l’échantillon retourné conservera encore une quantité substantielle de bruit, telle que déterminée par les pas de temps discrets sélectionnés par le planificateur. Le paramètre denoising_end devrait idéalement être utilisé lorsque ce pipeline fait partie d’une configuration multi-pipelines « Mixture of Denoisers », comme expliqué dans Refining the Image Output - guidance_scale (
float, facultatif, valeur par défaut 5.0) — Une valeur de guidance scale plus élevée encourage le modèle à générer des images étroitement liées auprompttexte, au détriment de la qualité de l'image. Le guidance scale est activé lorsqueguidance_scale > 1. - negative_prompt (
stroulist[str], facultatif) — Le prompt ou les prompts pour guider ce qui ne doit pas être inclus dans la génération d’image. S’il n’est pas défini, vous devez passernegative_prompt_embedsà la place. Ignoré lorsque la guidance n’est pas utilisée (guidance_scale < 1). - negative_prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts pour guider ce qui ne doit pas être inclus dans la génération d’image. Cela est envoyé àtokenizer_2ettext_encoder_2. S’il n’est pas défini,negative_promptest utilisé dans les deux text-encoders. - num_images_per_prompt (
int, facultatif, valeur par défaut 1) — Le nombre d'images à générer par invite. - eta (
float, facultatif, valeur par défaut 0.0) — Correspond au paramètre eta (η) de l'article DDIM. Ne s'applique qu'au DDIMScheduler et est ignoré par les autres planificateurs. - generator (
torch.Generatoroulist[torch.Generator], facultatif) — Untorch.Generatorpour rendre la génération déterministe. - latents (
torch.Tensor, facultatif) — Latents bruités pré-générés, échantillonnés à partir d’une distribution gaussienne, à utiliser comme entrées pour la génération d’images. Peut servir à ajuster la même génération avec des prompts différents. S’il n’est pas fourni, un tenseur de latents est généré par échantillonnage à l’aide dugeneratoraléatoire fourni. - prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte (pondération des prompts). S'il n'est pas fourni, les embeddings de texte sont générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte (pondération des prompts). S'ils ne sont pas fournis, lesnegative_prompt_embedssont générés à partir de l'argument d'entréenegative_prompt. - pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-poolés pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte (pondération des prompts). S'il n'est pas fourni, les embeddings de texte pré-poolés sont générés à partir de l'argument d'entréeprompt. - negative_pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatif pré-poolés. Peut être utilisé pour ajuster facilement les entrées de texte (pondération des prompts). S'il n'est pas fourni, lesnegative_prompt_embedspoolés sont générés à partir de l'argument d'entréenegative_prompt. - ip_adapter_image — (
PipelineImageInput, facultatif) : Image d’entrée facultative pour travailler avec les IP Adapters. - ip_adapter_image_embeds (
list[torch.Tensor], facultatif) — Embeddings d’image pré-générés pour IP-Adapter. Il doit s’agir d’une liste dont la longueur est égale au nombre d’IP-adapters. Chaque élément doit être un tenseur de forme(batch_size, num_images, emb_dim). Il doit contenir l’embedding d’image négatif sido_classifier_free_guidanceest défini surTrue. S’il n’est pas fourni, les embeddings sont calculés à partir de l’argument d’entréeip_adapter_image. - output_type (
str, facultatif, par défaut"pil") — Le format de sortie de l’image générée. Choisissez entrePIL.Imageounp.array. - return_dict (
bool, facultatif, par défautTrue) — Indique s'il faut retourner un StableDiffusionPipelineOutput plutôt qu'un simple tuple. - cross_attention_kwargs (
dict, facultatif) — Un dictionnaire de kwargs qui, s'il est spécifié, est transmis auAttentionProcessortel que défini dansself.processor. - controlnet_conditioning_scale (
floatoulist[float], facultatif, valeur par défaut 1.0) — Les sorties du ControlNet sont multipliées parcontrolnet_conditioning_scaleavant d’être ajoutées au résidu dans leunetd’origine. Si plusieurs ControlNets sont spécifiés dansinit, vous pouvez définir l’échelle correspondante sous forme de liste. - control_guidance_start (
floatoulist[float], facultatif, valeur par défaut 0.0) — Le pourcentage des étapes totales à partir duquel le ControlNet commence à s’appliquer. - control_guidance_end (
floatoulist[float], facultatif, valeur par défaut 1.0) — Le pourcentage des étapes totales à partir duquel le ControlNet cesse d’être appliqué. - original_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Sioriginal_sizen’est pas identique àtarget_size, l’image apparaîtra sous-échantillonnée ou suréchantillonnée.original_sizeest par défaut(height, width)s’il n’est pas spécifié. Fait partie du micro-conditionnement de SDXL, tel que décrit dans la section 2.2 de https://huggingface.co/papers/2307.01952. - crops_coords_top_left (
tuple[int], facultatif, par défaut (0, 0)) —crops_coords_top_leftpeut être utilisé pour générer une image qui semble « recadrée » à partir de la positioncrops_coords_top_leftvers le bas. Des images bien cadrées et centrées sont généralement obtenues en définissantcrops_coords_top_leftsur (0, 0). Fait partie du micro-conditionnement de SDXL, tel que décrit dans la section 2.2 de https://huggingface.co/papers/2307.01952. - target_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Dans la plupart des cas,target_sizedoit être défini sur la hauteur et la largeur souhaitées de l’image générée. S’il n’est pas spécifié, il prendra par défaut(height, width). Fait partie du micro-conditionnement de SDXL, tel que décrit dans la section 2.2 de https://huggingface.co/papers/2307.01952. - negative_original_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Permet de conditionner négativement le processus de génération en fonction d’une résolution d’image spécifique. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. Pour plus d’informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208. - negative_crops_coords_top_left (
tuple[int], facultatif, valeur par défaut (0, 0)) — Permet de conditionner négativement le processus de génération en fonction de coordonnées de recadrage spécifiques. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. Pour plus d’informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208. - negative_target_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Permet de conditionner négativement le processus de génération en fonction de la résolution de l’image cible. Il doit être identique àtarget_sizedans la plupart des cas. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. Pour plus d’informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208. - clip_skip (
int, facultatif) — Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de l'invite. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de l'invite. - callback_on_step_end (
Callable,PipelineCallback,MultiPipelineCallbacks, facultatif) — Une fonction ou une sous-classe dePipelineCallbackouMultiPipelineCallbacksqui est appelée à la fin de chaque étape de débruitage pendant l’inférence, avec les arguments suivants :callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargscontiendra une liste de tous les tenseurs spécifiés parcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, facultatif) — La liste des entrées tensorielles pour la fonctioncallback_on_step_end. Les tenseurs spécifiés dans la liste seront passés en tant qu'argumentcallback_kwargs. Vous ne pourrez inclure que les variables listées dans l'attribut._callback_tensor_inputsde votre classe de pipeline. - pag_scale (
float, facultatif, valeur par défaut 3.0) — Le facteur d'échelle pour le guidage d'attention perturbée. S'il est défini à 0.0, le guidage d'attention perturbée ne sera pas utilisé. - pag_adaptive_scale (
float, facultatif, valeur par défaut 0.0) — Le facteur d'échelle adaptatif pour le guidage de l'attention perturbée. S'il est défini à 0.0,pag_scaleest utilisé.
Retourne
StableDiffusionPipelineOutput ou tuple
Si return_dict est True, StableDiffusionPipelineOutput est renvoyé,
sinon un tuple contenant les images de sortie est renvoyé.
La fonction d'appel du pipeline pour la génération.
Exemples :
>>> # !pip install opencv-python transformers accelerate
>>> from diffusers import AutoPipelineForText2Image, 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 = AutoPipelineForText2Image.from_pretrained(
... "stabilityai/stable-diffusion-xl-base-1.0",
... controlnet=controlnet,
... vae=vae,
... torch_dtype=torch.float16,
... enable_pag=True,
... )
>>> 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, pag_scale=0.3
... ).images[0]encode_prompt
< source >( prompt: strprompt_2: str | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | None = Nonenegative_prompt_2: str | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = None )
Paramètres
- prompt (
stroulist[str], facultatif) — prompt à encoder - prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à envoyer autokenizer_2et autext_encoder_2. S'il n'est pas défini,promptest utilisé dans les deux text-encoders - device — (
torch.device) : torch device - num_images_per_prompt (
int) — nombre d'images à générer par invite - do_classifier_free_guidance (
bool) — indique s'il faut utiliser le classifier free guidance ou non - negative_prompt (
stroulist[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passernegative_prompt_embedsà la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré siguidance_scaleest inférieur à1). - negative_prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à ne pas utiliser pour guider la génération d’image, à envoyer àtokenizer_2ettext_encoder_2. S’il n’est pas défini,negative_promptest utilisé dans les deux text-encoders - prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entréenegative_prompt. - pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-poolés pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte pré-poolés seront générés à partir de l'argument d'entréeprompt. - negative_pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les pooled negative_prompt_embeds seront générés à partir de l'argument d'entréenegative_prompt. - lora_scale (
float, facultatif) — Un facteur d’échelle LoRA qui sera appliqué à toutes les couches LoRA de l’encodeur de texte si des couches LoRA sont chargées. - clip_skip (
int, facultatif) — Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de l'invite. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de l'invite.
Encode le prompt dans les états cachés de l'encodeur de texte.
get_guidance_scale_embedding
< source >( w: Tensorembedding_dim: int = 512dtype: dtype = torch.float32 ) → torch.Tensor
Paramètres
- w (
torch.Tensor) — Génère des vecteurs d’incorporation avec une échelle de guidage spécifiée afin d’enrichir ensuite les incorporations de pas de temps. - embedding_dim (
int, facultatif, par défaut 512) — Dimension des embeddings à générer. - dtype (
torch.dtype, facultatif, par défauttorch.float32) — Type de données des embeddings générés.
Retourne
torch.Tensor
Vecteurs d'embedding de forme (len(w), embedding_dim).
StableDiffusionXLControlNetPAGImg2ImgPipeline
classe diffusers.StableDiffusionXLControlNetPAGImg2ImgPipeline
< source >( vae: AutoencoderKLtext_encoder: CLIPTextModeltext_encoder_2: CLIPTextModelWithProjectiontokenizer: CLIPTokenizertokenizer_2: CLIPTokenizerunet: UNet2DConditionModelcontrolnet: diffusers.models.controlnets.controlnet.ControlNetModel | list[diffusers.models.controlnets.controlnet.ControlNetModel] | tuple[diffusers.models.controlnets.controlnet.ControlNetModel] | diffusers.models.controlnets.multicontrolnet.MultiControlNetModelscheduler: KarrasDiffusionSchedulersrequires_aesthetics_score: bool = Falseforce_zeros_for_empty_prompt: bool = Trueadd_watermarker: bool | None = Nonefeature_extractor: CLIPImageProcessorPil = Noneimage_encoder: CLIPVisionModelWithProjection = Nonepag_applied_layers: str | list[str] = 'mid' )
Paramètres
- vae (AutoencoderKL) — Modèle de Variational Auto-Encoder (VAE) pour encoder et décoder des images vers et depuis des représentations latentes.
- text_encoder (
CLIPTextModel) — Encodeur de texte figé. Stable Diffusion utilise la partie texte de CLIP, plus précisément la variante clip-vit-large-patch14. - text_encoder_2 (
CLIPTextModelWithProjection) — Deuxième encodeur de texte figé. Stable Diffusion XL utilise la partie texte et pool de CLIP, plus précisément la variante laion/CLIP-ViT-bigG-14-laion2B-39B-b160k. - tokenizer (
CLIPTokenizer) — Tokeniseur de la classe CLIPTokenizer. - tokenizer_2 (
CLIPTokenizer) — Deuxième Tokenizer de la classe CLIPTokenizer. - unet (UNet2DConditionModel) — Architecture U-Net conditionnelle pour le débruitage des latents d'image encodés.
- controlnet (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) —
Un planificateur à utiliser en combinaison avec
unetpour débruyer les latents de l'image encodée. Peut être l'un des DDIMScheduler, LMSDiscreteScheduler ou PNDMScheduler. - requires_aesthetics_score (
bool, facultatif, par défaut"False") — Indique si leunetnécessite qu'une conditionaesthetic_scoresoit transmise lors de l'inférence. Voir également la configuration destabilityai/stable-diffusion-xl-refiner-1-0. - force_zeros_for_empty_prompt (
bool, facultatif, valeur par défaut"True") — Indique si les embeddings du prompt négatif doivent être forcés à 0. Voir également la configuration destabilityai/stable-diffusion-xl-base-1-0. - add_watermarker (
bool, facultatif) — Indique s'il faut utiliser la bibliothèque invisible_watermark pour appliquer un filigrane aux images de sortie. Si non défini, la valeur par défaut est True si le package est installé, sinon aucun filigrane n'est utilisé. - feature_extractor (CLIPImageProcessor) —
Un
CLIPImageProcessorpour extraire les caractéristiques des images générées ; utilisé comme entrées pour lesafety_checker.
Pipeline pour la génération d'image à partir d'image utilisant Stable Diffusion XL avec un guidage ControlNet.
Ce modèle hérite de DiffusionPipeline. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous les pipelines (tels que le téléchargement ou l'enregistrement, l'exécution sur un appareil particulier, etc.)
Le pipeline hérite également des méthodes de chargement suivantes :
- load_textual_inversion() pour charger les embeddings d'inversion textuelle
- load_lora_weights() pour charger les poids LoRA
- save_lora_weights() pour enregistrer les poids LoRA
- load_ip_adapter() pour charger des IP Adapters
__call__
< source >( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonecontrol_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Noneheight: int | None = Nonewidth: int | None = Nonestrength: float = 0.8num_inference_steps: int = 50guidance_scale: float = 5.0negative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecross_attention_kwargs: dict[str, typing.Any] | None = Nonecontrolnet_conditioning_scale: float | list[float] = 0.8guess_mode: bool = Falsecontrol_guidance_start: float | list[float] = 0.0control_guidance_end: float | list[float] = 1.0original_size: tuple[int, int] = Nonecrops_coords_top_left: tuple[int, int] = (0, 0)target_size: tuple[int, int] = Nonenegative_original_size: tuple[int, int] | None = Nonenegative_crops_coords_top_left: tuple[int, int] = (0, 0)negative_target_size: tuple[int, int] | None = Noneaesthetic_score: float = 6.0negative_aesthetic_score: float = 2.5clip_skip: int | None = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list[str] = ['latents']pag_scale: float = 3.0pag_adaptive_scale: float = 0.0 ) → ~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput or tuple
Paramètres
- prompt (
stroulist[str], facultatif) — Le prompt ou les prompts pour guider la génération d’image. S’il n’est pas défini, il faut passerprompt_embedsà la place. - prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à envoyer autokenizer_2et autext_encoder_2. S'il n'est pas défini,promptest utilisé dans les deux text-encoders - image (
torch.Tensor,PIL.Image.Image,np.ndarray,list[torch.Tensor],list[PIL.Image.Image],list[np.ndarray], —list[list[torch.Tensor]],list[list[np.ndarray]]oulist[list[PIL.Image.Image]]) : L'image initiale sera utilisée comme point de départ pour le processus de génération d'image. Peut également accepter des latents d'image en tant queimage; si des latents sont transmis directement, ils ne seront pas réencodés. - control_image (
torch.Tensor,PIL.Image.Image,np.ndarray,list[torch.Tensor],list[PIL.Image.Image],list[np.ndarray], —list[list[torch.Tensor]],list[list[np.ndarray]]oulist[list[PIL.Image.Image]]) : 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é commetorch.Tensor, il est transmis à ControlNet tel quel.PIL.Image.Imagepeut également être accepté en tant qu’image. Les dimensions de l’image de sortie sont par défaut celles deimage. Si la hauteur et/ou la largeur sont passées,imageest redimensionnée en conséquence. Si plusieurs ControlNets sont spécifiés dans init, les images doivent être passées sous forme de liste afin que chaque élément de la liste puisse être correctement groupé pour l’entrée d’un seul controlnet. - height (
int, facultatif, par défaut la taille de control_image) — La hauteur en pixels de l’image générée. Toute valeur inférieure à 512 pixels ne fonctionnera pas bien avec stabilityai/stable-diffusion-xl-base-1.0 et les points de contrôle qui ne sont pas spécifiquement affinés sur de faibles résolutions. - width (
int, facultatif, par défaut la taille de control_image) — La largeur en pixels de l’image générée. Toute valeur inférieure à 512 pixels ne fonctionnera pas bien avec stabilityai/stable-diffusion-xl-base-1.0 et les points de contrôle qui ne sont pas spécifiquement affinés sur de faibles résolutions. - strength (
float, facultatif, valeur par défaut 0.8) — Indique l'étendue de la transformation de l'imagede référence. Doit être compris entre 0 et 1. L'imageest utilisée comme point de départ et plus lestrengthest élevé, plus du bruit est ajouté. Le nombre d'étapes de débruitage dépend de la quantité de bruit initialement ajoutée. Lorsquestrengthvaut 1, le bruit ajouté est maximal et le processus de débruitage s'exécute pendant le nombre complet d'itérations spécifié dansnum_inference_steps. Une valeur de 1 ignore essentiellement l'image. - num_inference_steps (
int, facultatif, valeur par défaut 50) — Le nombre d'étapes de débruitage. Un plus grand nombre d'étapes de débruitage conduit généralement à une image de meilleure qualité, au prix d'une inférence plus lente. - guidance_scale (
float, facultatif, valeur par défaut 7,5) — Échelle de guidage telle que définie dans Classifier-Free Diffusion Guidance.guidance_scaleest défini commewde l’équation 2 de Imagen Paper. L’échelle de guidage est activée en définissantguidance_scale > 1. Une échelle de guidage plus élevée encourage la génération d’images étroitement liées auprompttexte, généralement au détriment de la qualité de l’image. - negative_prompt (
stroulist[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passernegative_prompt_embedsà la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré siguidance_scaleest inférieur à1). - negative_prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à ne pas utiliser pour guider la génération d’image, à envoyer àtokenizer_2ettext_encoder_2. S’il n’est pas défini,negative_promptest utilisé dans les deux text-encoders - num_images_per_prompt (
int, facultatif, valeur par défaut 1) — Le nombre d'images à générer par invite. - eta (
float, facultatif, valeur par défaut 0.0) — Correspond au paramètre eta (η) du papier DDIM : https://huggingface.co/papers/2010.02502. Ne s'applique qu'à schedulers.DDIMScheduler, sera ignoré pour les autres. - generator (
torch.Generatoroulist[torch.Generator], facultatif) — Un ou une liste de générateurs torch pour rendre la génération déterministe. - latents (
torch.Tensor, facultatif) — Latents bruités pré-générés, échantillonnés à partir d’une distribution gaussienne, à utiliser comme entrées pour la génération d’images. Peut être utilisé pour ajuster la même génération avec des prompts différents. S’il n’est pas fourni, un tenseur de latents sera généré par échantillonnage à l’aide dugeneratoraléatoire fourni. - prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entréenegative_prompt. - pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-poolés pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte pré-poolés seront générés à partir de l'argument d'entréeprompt. - negative_pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les pooled negative_prompt_embeds seront générés à partir de l'argument d'entréenegative_prompt. - ip_adapter_image — (
PipelineImageInput, facultatif) : Image d’entrée facultative pour travailler avec les IP Adapters. - ip_adapter_image_embeds (
list[torch.Tensor], facultatif) — Embeddings d’image pré-générés pour IP-Adapter. Il doit s’agir d’une liste dont la longueur est égale au nombre d’IP-adapters. Chaque élément doit être un tenseur de forme(batch_size, num_images, emb_dim). Il doit contenir l’embedding d’image négatif sido_classifier_free_guidanceest défini surTrue. S’il n’est pas fourni, les embeddings sont calculés à partir de l’argument d’entréeip_adapter_image. - output_type (
str, facultatif, par défaut"pil") — Le format de sortie de l'image générée. Choisissez entre PIL :PIL.Image.Imageounp.array. - return_dict (
bool, facultatif, par défautTrue) — Indique s'il faut retourner un StableDiffusionPipelineOutput plutôt qu'un simple tuple. - cross_attention_kwargs (
dict, facultatif) — Un dictionnaire de kwargs qui, s'il est spécifié, est transmis à l'AttentionProcessordéfini sousself.processordans diffusers.models.attention_processor. - controlnet_conditioning_scale (
floatoulist[float], facultatif, valeur par défaut 1.0) — Les sorties du controlnet sont multipliées parcontrolnet_conditioning_scaleavant d’être ajoutées au résidu dans l’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éfautFalse) — Dans ce mode, l’encodeur ControlNet s’efforce de reconnaître le contenu de l’image d’entrée même si vous supprimez tous les prompts. Une valeur deguidance_scalecomprise entre 3.0 et 5.0 est recommandée. - control_guidance_start (
floatoulist[float], facultatif, valeur par défaut 0.0) — Le pourcentage des étapes totales à partir duquel le controlnet commence à s’appliquer. - control_guidance_end (
floatoulist[float], facultatif, valeur par défaut 1.0) — Le pourcentage des étapes totales à partir duquel le controlnet cesse d’appliquer. - original_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Sioriginal_sizen’est pas identique àtarget_size, l’image apparaîtra sous-échantillonnée ou suréchantillonnée.original_sizeest par défaut(height, width)s’il n’est pas spécifié. Fait partie du micro-conditionnement de SDXL, tel que décrit dans la section 2.2 de https://huggingface.co/papers/2307.01952. - crops_coords_top_left (
tuple[int], facultatif, par défaut (0, 0)) —crops_coords_top_leftpeut être utilisé pour générer une image qui semble « recadrée » à partir de la positioncrops_coords_top_leftvers le bas. Des images bien cadrées et centrées sont généralement obtenues en définissantcrops_coords_top_leftsur (0, 0). Fait partie du micro-conditionnement de SDXL, tel que décrit dans la section 2.2 de https://huggingface.co/papers/2307.01952. - target_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Dans la plupart des cas,target_sizedoit être défini sur la hauteur et la largeur souhaitées de l’image générée. S’il n’est pas spécifié, il prendra par défaut(height, width). Fait partie du micro-conditionnement de SDXL, tel que décrit dans la section 2.2 de https://huggingface.co/papers/2307.01952. - negative_original_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Permet de conditionner négativement le processus de génération en fonction d’une résolution d’image spécifique. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. Pour plus d’informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208. - negative_crops_coords_top_left (
tuple[int], facultatif, valeur par défaut (0, 0)) — Permet de conditionner négativement le processus de génération en fonction de coordonnées de recadrage spécifiques. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. Pour plus d’informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208. - negative_target_size (
tuple[int], facultatif, par défaut (1024, 1024)) — Permet de conditionner négativement le processus de génération en fonction de la résolution de l’image cible. Il doit être identique àtarget_sizedans la plupart des cas. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. Pour plus d’informations, consultez ce fil de discussion : https://github.com/huggingface/diffusers/issues/4208. - aesthetic_score (
float, facultatif, valeur par défaut 6.0) — Utilisé pour simuler un score esthétique de l’image générée en influençant la condition de texte positive. Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. - negative_aesthetic_score (
float, facultatif, valeur par défaut 2,5) — Fait partie du micro-conditionnement de SDXL, tel que décrit à la section 2.2 de https://huggingface.co/papers/2307.01952. Peut être utilisé pour simuler un score esthétique de l’image générée en influençant la condition de texte négative. - clip_skip (
int, facultatif) — Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de l'invite. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de l'invite. - callback_on_step_end (
Callable,PipelineCallback,MultiPipelineCallbacks, facultatif) — Une fonction ou une sous-classe dePipelineCallbackouMultiPipelineCallbacksqui est appelée à la fin de chaque étape de débruitage pendant l’inférence, avec les arguments suivants :callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargscontiendra une liste de tous les tenseurs spécifiés parcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, facultatif) — La liste des entrées tensorielles pour la fonctioncallback_on_step_end. Les tenseurs spécifiés dans la liste seront passés en tant qu'argumentcallback_kwargs. Vous ne pourrez inclure que les variables listées dans l'attribut._callback_tensor_inputsde votre classe de pipeline. - pag_scale (
float, facultatif, valeur par défaut 3.0) — Le facteur d'échelle pour le guidage d'attention perturbée. S'il est défini à 0.0, le guidage d'attention perturbée ne sera pas utilisé. - pag_adaptive_scale (
float, facultatif, valeur par défaut 0.0) — Le facteur d'échelle adaptatif pour le guidage de l'attention perturbée. S'il est défini à 0.0,pag_scaleest utilisé.
Retourne
~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput ou tuple
~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput si return_dict est True, sinon un
tuple contenant les images de sortie.
Fonction appelée lors de l'appel du pipeline pour la génération.
Exemples :
>>> # pip install accelerate transformers safetensors diffusers
>>> import torch
>>> import numpy as np
>>> from PIL import Image
>>> from transformers import DPTFeatureExtractor, DPTForDepthEstimation
>>> from diffusers import ControlNetModel, StableDiffusionXLControlNetPAGImg2ImgPipeline, AutoencoderKL
>>> from diffusers.utils import load_image
>>> depth_estimator = DPTForDepthEstimation.from_pretrained("Intel/dpt-hybrid-midas").to("cuda")
>>> feature_extractor = DPTFeatureExtractor.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 = StableDiffusionXLControlNetPAGImg2ImgPipeline.from_pretrained(
... "stabilityai/stable-diffusion-xl-base-1.0",
... controlnet=controlnet,
... vae=vae,
... variant="fp16",
... use_safetensors=True,
... torch_dtype=torch.float16,
... enable_pag=True,
... )
>>> 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
< source >( prompt: strprompt_2: str | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | None = Nonenegative_prompt_2: str | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = Noneclip_skip: int | None = None )
Paramètres
- prompt (
stroulist[str], facultatif) — prompt à encoder - prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à envoyer autokenizer_2et autext_encoder_2. S'il n'est pas défini,promptest utilisé dans les deux text-encoders - device — (
torch.device) : torch device - num_images_per_prompt (
int) — nombre d'images à générer par invite - do_classifier_free_guidance (
bool) — indique s'il faut utiliser le classifier free guidance ou non - negative_prompt (
stroulist[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passernegative_prompt_embedsà la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré siguidance_scaleest inférieur à1). - negative_prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à ne pas utiliser pour guider la génération d’image, à envoyer àtokenizer_2ettext_encoder_2. S’il n’est pas défini,negative_promptest utilisé dans les deux text-encoders - prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entréenegative_prompt. - pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-poolés pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte pré-poolés seront générés à partir de l'argument d'entréeprompt. - negative_pooled_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les pooled negative_prompt_embeds seront générés à partir de l'argument d'entréenegative_prompt. - lora_scale (
float, facultatif) — Un facteur d’échelle LoRA qui sera appliqué à toutes les couches LoRA de l’encodeur de texte si des couches LoRA sont chargées. - clip_skip (
int, facultatif) — Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de l'invite. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de l'invite.
Encode le prompt dans les états cachés de l'encodeur de texte.
StableDiffusion3PAGPipeline
classe diffusers.StableDiffusion3PAGPipeline
< source >( transformer: SD3Transformer2DModelscheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLtext_encoder: CLIPTextModelWithProjectiontokenizer: CLIPTokenizertext_encoder_2: CLIPTextModelWithProjectiontokenizer_2: CLIPTokenizertext_encoder_3: T5EncoderModeltokenizer_3: T5Tokenizerpag_applied_layers: str | list[str] = 'blocks.1' )
Paramètres
- transformer (SD3Transformer2DModel) — Architecture Transformer conditionnelle (MMDiT) pour le débruitage des latents d’image encodés.
- scheduler (FlowMatchEulerDiscreteScheduler) —
Un planificateur à utiliser en combinaison avec
transformerpour débruyer les latents d'image encodés. - vae (AutoencoderKL) — Modèle de Variational Auto-Encoder (VAE) pour encoder et décoder des images vers et depuis des représentations latentes.
- text_encoder (
CLIPTextModelWithProjection) — CLIP, plus précisément la variante clip-vit-large-patch14, avec une couche de projection supplémentaire initialisée avec une matrice diagonale de dimensionhidden_size. - text_encoder_2 (
CLIPTextModelWithProjection) — CLIP, plus précisément la variante laion/CLIP-ViT-bigG-14-laion2B-39B-b160k. - text_encoder_3 (
T5EncoderModel) — Encodeur de texte figé. Stable Diffusion 3 utilise T5, plus précisément la variante t5-v1_1-xxl. - tokenizer (
CLIPTokenizer) — Tokeniseur de la classe CLIPTokenizer. - tokenizer_2 (
CLIPTokenizer) — Deuxième Tokenizer de la classe CLIPTokenizer. - tokenizer_3 (
T5TokenizerFast) — Tokeniseur de la classe T5Tokenizer.
Pipeline PAG pour la génération d'images à partir de texte utilisant Stable Diffusion 3.
__call__
< source >( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneprompt_3: str | list[str] | None = Noneheight: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 28sigmas: list[float] | None = Noneguidance_scale: float = 7.0negative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = Nonenegative_prompt_3: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.FloatTensor] = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truejoint_attention_kwargs: dict[str, typing.Any] | None = Noneclip_skip: int | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list[str] = ['latents']max_sequence_length: int = 256pag_scale: float = 3.0pag_adaptive_scale: float = 0.0 ) → ~pipelines.stable_diffusion_3.StableDiffusion3PipelineOutput or tuple
Paramètres
- prompt (
stroulist[str], facultatif) — Le prompt ou les prompts pour guider la génération d’image. S’il n’est pas défini, il faut passerprompt_embedsà la place. - prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à envoyer àtokenizer_2ettext_encoder_2. S'il n'est pas défini,promptsera utilisé à la place - prompt_3 (
stroulist[str], facultatif) — Le prompt ou les prompts à envoyer àtokenizer_3ettext_encoder_3. S'il n'est pas défini,promptsera utilisé à la place - 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. Cette valeur est fixée à 1024 par défaut pour obtenir les meilleurs résultats. - 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. Cette valeur est fixée à 1024 par défaut pour obtenir les meilleurs résultats. - 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. - sigmas (
list[float], facultatif) — Sigmas personnalisés à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argumentsigmasdans leur méthodeset_timesteps. S'il n'est pas défini, le comportement par défaut lorsquenum_inference_stepsest passé sera utilisé. - guidance_scale (
float, facultatif, valeur par défaut 7.0) — Échelle de guidage telle que définie dans Classifier-Free Diffusion Guidance.guidance_scaleest défini commewde l’équation 2 de Imagen Paper. L’échelle de guidage est activée en définissantguidance_scale > 1. Une échelle de guidage plus élevée encourage la génération d’images étroitement liées auprompttexte, généralement au détriment de la qualité de l’image. - negative_prompt (
stroulist[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passernegative_prompt_embedsà la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré siguidance_scaleest inférieur à1). - negative_prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à ne pas utiliser pour guider la génération d’image, à envoyer àtokenizer_2ettext_encoder_2. S’il n’est pas défini,negative_promptest utilisé à la place - negative_prompt_3 (
stroulist[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image, à envoyer àtokenizer_3ettext_encoder_3. S’il n’est pas défini,negative_promptest utilisé à la place - num_images_per_prompt (
int, facultatif, valeur par défaut 1) — Le nombre d'images à générer par invite. - generator (
torch.Generatoroulist[torch.Generator], facultatif) — Un ou une liste de générateurs torch pour rendre la génération déterministe. - latents (
torch.FloatTensor, facultatif) — Latents bruités pré-générés, échantillonnés à partir d’une distribution gaussienne, à utiliser comme entrées pour la génération d’images. Peut être utilisé pour ajuster la même génération avec des prompts différents. S’il n’est pas fourni, un tenseur de latents sera généré par échantillonnage à l’aide dugeneratoraléatoire fourni. - prompt_embeds (
torch.FloatTensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.FloatTensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entréenegative_prompt. - pooled_prompt_embeds (
torch.FloatTensor, facultatif) — Embeddings de texte pré-poolés pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte pré-poolés seront générés à partir de l'argument d'entréeprompt. - negative_pooled_prompt_embeds (
torch.FloatTensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les pooled negative_prompt_embeds seront générés à partir de l'argument d'entréenegative_prompt. - output_type (
str, facultatif, par défaut"pil") — Le format de sortie de l'image générée. Choisissez entre PIL :PIL.Image.Imageounp.array. - return_dict (
bool, facultatif, par défautTrue) — Indique s'il faut retourner un~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutputplutôt qu'un simple tuple. - joint_attention_kwargs (
dict, facultatif) — Un dictionnaire de kwargs qui, s'il est spécifié, est transmis à l'AttentionProcessordéfini sousself.processordans diffusers.models.attention_processor. - clip_skip (
int, facultatif) — Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de l'invite. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de l'invite. - callback_on_step_end (
Callable, facultatif) — Une fonction appelée à la fin de chaque étape de débruitage pendant l'inférence. La fonction est appelée avec les arguments suivants :callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargscontiendra une liste de tous les tenseurs spécifiés parcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, facultatif) — La liste des entrées tensorielles pour la fonctioncallback_on_step_end. Les tenseurs spécifiés dans la liste seront passés en tant qu'argumentcallback_kwargs. Vous ne pourrez inclure que les variables listées dans l'attribut._callback_tensor_inputsde votre classe de pipeline. - max_sequence_length (
intpar défaut 256) — Longueur maximale de séquence à utiliser avec leprompt. - pag_scale (
float, facultatif, valeur par défaut 3.0) — Le facteur d'échelle pour le guidage d'attention perturbée. S'il est défini à 0.0, le guidage d'attention perturbée ne sera pas utilisé. - pag_adaptive_scale (
float, facultatif, valeur par défaut 0.0) — Le facteur d'échelle adaptatif pour le guidage de l'attention perturbée. S'il est défini à 0.0,pag_scaleest utilisé.
Retourne
~pipelines.stable_diffusion_3.StableDiffusion3PipelineOutput ou tuple
~pipelines.stable_diffusion_3.StableDiffusion3PipelineOutput 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 :
>>> import torch
>>> from diffusers import AutoPipelineForText2Image
>>> pipe = AutoPipelineForText2Image.from_pretrained(
... "stabilityai/stable-diffusion-3-medium-diffusers",
... torch_dtype=torch.float16,
... enable_pag=True,
... pag_applied_layers=["blocks.13"],
... )
>>> pipe.to("cuda")
>>> prompt = "A cat holding a sign that says hello world"
>>> image = pipe(prompt, guidance_scale=5.0, pag_scale=0.7).images[0]
>>> image.save("sd3_pag.png")encode_prompt
< source >( prompt: str | list[str]prompt_2: str | list[str]prompt_3: str | list[str]device: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = Nonenegative_prompt_3: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneclip_skip: int | None = Nonemax_sequence_length: int = 256lora_scale: float | None = None )
Paramètres
- prompt (
stroulist[str], facultatif) — prompt à encoder - prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à envoyer autokenizer_2et autext_encoder_2. S'il n'est pas défini,promptest utilisé dans tous les encodeurs de texte - prompt_3 (
stroulist[str], facultatif) — Le prompt ou les prompts à envoyer autokenizer_3et autext_encoder_3. S'il n'est pas défini,promptest utilisé dans tous les text-encoders - device — (
torch.device) : torch device - num_images_per_prompt (
int) — nombre d'images à générer par invite - do_classifier_free_guidance (
bool) — indique s'il faut utiliser le classifier free guidance ou non - negative_prompt (
stroulist[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passernegative_prompt_embedsà la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré siguidance_scaleest inférieur à1). - negative_prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à ne pas utiliser pour guider la génération d’image, à envoyer àtokenizer_2ettext_encoder_2. S’il n’est pas défini,negative_promptest utilisé dans tous les encodeurs de texte. - negative_prompt_3 (
stroulist[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image, à envoyer àtokenizer_3ettext_encoder_3. S’il n’est pas défini,negative_promptest utilisé dans tous les encodeurs de texte. - prompt_embeds (
torch.FloatTensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.FloatTensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entréenegative_prompt. - pooled_prompt_embeds (
torch.FloatTensor, facultatif) — Embeddings de texte pré-poolés pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte pré-poolés seront générés à partir de l'argument d'entréeprompt. - negative_pooled_prompt_embeds (
torch.FloatTensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les pooled negative_prompt_embeds seront générés à partir de l'argument d'entréenegative_prompt. - clip_skip (
int, facultatif) — Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de l'invite. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de l'invite. - lora_scale (
float, facultatif) — Un facteur d’échelle LoRA qui sera appliqué à toutes les couches LoRA de l’encodeur de texte si des couches LoRA sont chargées.
StableDiffusion3PAGImg2ImgPipeline
classe diffusers.StableDiffusion3PAGImg2ImgPipeline
< source >( transformer: SD3Transformer2DModelscheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLtext_encoder: CLIPTextModelWithProjectiontokenizer: CLIPTokenizertext_encoder_2: CLIPTextModelWithProjectiontokenizer_2: CLIPTokenizertext_encoder_3: T5EncoderModeltokenizer_3: T5Tokenizerpag_applied_layers: str | list[str] = 'blocks.1' )
Paramètres
- transformer (SD3Transformer2DModel) — Architecture Transformer conditionnelle (MMDiT) pour le débruitage des latents d’image encodés.
- scheduler (FlowMatchEulerDiscreteScheduler) —
Un planificateur à utiliser en combinaison avec
transformerpour débruyer les latents d'image encodés. - vae (AutoencoderKL) — Modèle de Variational Auto-Encoder (VAE) pour encoder et décoder des images vers et depuis des représentations latentes.
- text_encoder (
CLIPTextModelWithProjection) — CLIP, plus précisément la variante clip-vit-large-patch14, avec une couche de projection supplémentaire initialisée avec une matrice diagonale de dimensionhidden_size. - text_encoder_2 (
CLIPTextModelWithProjection) — CLIP, plus précisément la variante laion/CLIP-ViT-bigG-14-laion2B-39B-b160k. - text_encoder_3 (
T5EncoderModel) — Encodeur de texte figé. Stable Diffusion 3 utilise T5, plus précisément la variante t5-v1_1-xxl. - tokenizer (
CLIPTokenizer) — Tokeniseur de la classe CLIPTokenizer. - tokenizer_2 (
CLIPTokenizer) — Deuxième Tokenizer de la classe CLIPTokenizer. - tokenizer_3 (
T5TokenizerFast) — Tokeniseur de la classe T5Tokenizer.
pipeline PAG pour la génération d'image à partir d'image utilisant Stable Diffusion 3.
__call__
< source >( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneprompt_3: str | list[str] | None = Noneheight: int | None = Nonewidth: int | None = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonestrength: float = 0.6num_inference_steps: int = 50sigmas: list[float] | None = Noneguidance_scale: float = 7.0negative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = Nonenegative_prompt_3: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.FloatTensor] = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truejoint_attention_kwargs: dict[str, typing.Any] | None = Noneclip_skip: int | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list[str] = ['latents']max_sequence_length: int = 256pag_scale: float = 3.0pag_adaptive_scale: float = 0.0 ) → ~pipelines.stable_diffusion_3.StableDiffusion3PipelineOutput or tuple
Paramètres
- prompt (
stroulist[str], facultatif) — Le prompt ou les prompts pour guider la génération d’image. S’il n’est pas défini, il faut passerprompt_embedsà la place. - prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à envoyer àtokenizer_2ettext_encoder_2. S'il n'est pas défini,promptsera utilisé à la place - prompt_3 (
stroulist[str], facultatif) — Le prompt ou les prompts à envoyer àtokenizer_3ettext_encoder_3. S'il n'est pas défini,promptsera utilisé à la place - height (
int, facultatif, par défautself.default_sample_size * self.vae_scale_factor) — La hauteur en pixels de l'image générée. Cette valeur est fixée à 1024 par défaut pour obtenir les meilleurs résultats. - width (
int, facultatif, par défautself.default_sample_size * self.vae_scale_factor) — La largeur en pixels de l'image générée. Cette valeur est fixée à 1024 par défaut pour obtenir les meilleurs résultats. - image (
torch.Tensor,PIL.Image.Image,np.ndarray,list[torch.Tensor],list[PIL.Image.Image]oulist[np.ndarray]) —Image, tableau numpy ou tenseur représentant un lot d’images à utiliser comme point de départ. Pour un tableau numpy comme pour un tenseur pytorch, la plage de valeurs attendue est comprise entre[0, 1]. S’il s’agit d’un tenseur ou d’une liste de tenseurs, la forme attendue doit être(B, C, H, W)ou(C, H, W). S’il s’agit d’un tableau numpy ou d’une liste de tableaux, la forme attendue doit être(B, H, W, C)ou(H, W, C). Il peut également accepter des latents d’image en tant queimage, mais si des latents sont transmis directement, ils ne sont pas réencodés. - strength (
float, facultatif, valeur par défaut 0.8) — Indique l'étendue de la transformation de l'imagede référence. Doit être compris entre 0 et 1. L'imageest utilisée comme point de départ et plus lestrengthest élevé, plus du bruit est ajouté. Le nombre d'étapes de débruitage dépend de la quantité de bruit initialement ajoutée. Lorsquestrengthvaut 1, le bruit ajouté est maximal et le processus de débruitage s'exécute pendant le nombre complet d'itérations spécifié dansnum_inference_steps. Une valeur de 1 ignore essentiellement l'image. - num_inference_steps (
int, facultatif, valeur par défaut 50) — Le nombre d'étapes de débruitage. Un plus grand nombre d'étapes de débruitage conduit généralement à une image de meilleure qualité, au prix d'une inférence plus lente. - sigmas (
list[float], facultatif) — Sigmas personnalisés à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argumentsigmasdans leur méthodeset_timesteps. S'il n'est pas défini, le comportement par défaut lorsquenum_inference_stepsest passé sera utilisé. - guidance_scale (
float, facultatif, valeur par défaut 7.0) — Échelle de guidage telle que définie dans Classifier-Free Diffusion Guidance.guidance_scaleest défini commewde l’équation 2 de Imagen Paper. L’échelle de guidage est activée en définissantguidance_scale > 1. Une échelle de guidage plus élevée encourage la génération d’images étroitement liées auprompttexte, généralement au détriment de la qualité de l’image. - negative_prompt (
stroulist[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passernegative_prompt_embedsà la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré siguidance_scaleest inférieur à1). - negative_prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à ne pas utiliser pour guider la génération d’image, à envoyer àtokenizer_2ettext_encoder_2. S’il n’est pas défini,negative_promptest utilisé à la place - negative_prompt_3 (
stroulist[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image, à envoyer àtokenizer_3ettext_encoder_3. S’il n’est pas défini,negative_promptest utilisé à la place - num_images_per_prompt (
int, facultatif, valeur par défaut 1) — Le nombre d'images à générer par invite. - generator (
torch.Generatoroulist[torch.Generator], facultatif) — Un ou une liste de générateurs torch pour rendre la génération déterministe. - latents (
torch.FloatTensor, facultatif) — Latents bruités pré-générés, échantillonnés à partir d’une distribution gaussienne, à utiliser comme entrées pour la génération d’images. Peut être utilisé pour ajuster la même génération avec des prompts différents. S’il n’est pas fourni, un tenseur de latents sera généré par échantillonnage à l’aide dugeneratoraléatoire fourni. - prompt_embeds (
torch.FloatTensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.FloatTensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entréenegative_prompt. - pooled_prompt_embeds (
torch.FloatTensor, facultatif) — Embeddings de texte pré-poolés pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte pré-poolés seront générés à partir de l'argument d'entréeprompt. - negative_pooled_prompt_embeds (
torch.FloatTensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les pooled negative_prompt_embeds seront générés à partir de l'argument d'entréenegative_prompt. - output_type (
str, facultatif, par défaut"pil") — Le format de sortie de l'image générée. Choisissez entre PIL :PIL.Image.Imageounp.array. - return_dict (
bool, facultatif, par défautTrue) — Indique s'il faut retourner un~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutputplutôt qu'un simple tuple. - joint_attention_kwargs (
dict, facultatif) — Un dictionnaire de kwargs qui, s'il est spécifié, est transmis à l'AttentionProcessordéfini sousself.processordans diffusers.models.attention_processor. - clip_skip (
int, facultatif) — Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de l'invite. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de l'invite. - callback_on_step_end (
Callable, facultatif) — Une fonction appelée à la fin de chaque étape de débruitage pendant l'inférence. La fonction est appelée avec les arguments suivants :callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargscontiendra une liste de tous les tenseurs spécifiés parcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, facultatif) — La liste des entrées tensorielles pour la fonctioncallback_on_step_end. Les tenseurs spécifiés dans la liste seront passés en tant qu'argumentcallback_kwargs. Vous ne pourrez inclure que les variables listées dans l'attribut._callback_tensor_inputsde votre classe de pipeline. - max_sequence_length (
intpar défaut 256) — Longueur maximale de séquence à utiliser avec leprompt. - pag_scale (
float, facultatif, valeur par défaut 3.0) — Le facteur d'échelle pour le guidage d'attention perturbée. S'il est défini à 0.0, le guidage d'attention perturbée ne sera pas utilisé. - pag_adaptive_scale (
float, facultatif, valeur par défaut 0.0) — Le facteur d'échelle adaptatif pour le guidage de l'attention perturbée. S'il est défini à 0.0,pag_scaleest utilisé.
Retourne
~pipelines.stable_diffusion_3.StableDiffusion3PipelineOutput ou tuple
~pipelines.stable_diffusion_3.StableDiffusion3PipelineOutput 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 :
>>> import torch
>>> from diffusers import StableDiffusion3PAGImg2ImgPipeline
>>> from diffusers.utils import load_image
>>> pipe = StableDiffusion3PAGImg2ImgPipeline.from_pretrained(
... "stabilityai/stable-diffusion-3-medium-diffusers",
... torch_dtype=torch.float16,
... pag_applied_layers=["blocks.13"],
... )
>>> pipe.to("cuda")
>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> url = "https://huggingface.co/datasets/patrickvonplaten/images/resolve/main/aa_xl/000000009.png"
>>> init_image = load_image(url).convert("RGB")
>>> image = pipe(prompt, image=init_image, guidance_scale=5.0, pag_scale=0.7).images[0]encode_prompt
< source >( prompt: str | list[str]prompt_2: str | list[str]prompt_3: str | list[str]device: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = Nonenegative_prompt_3: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneclip_skip: int | None = Nonemax_sequence_length: int = 256lora_scale: float | None = None )
Paramètres
- prompt (
stroulist[str], facultatif) — prompt à encoder - prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à envoyer autokenizer_2et autext_encoder_2. S'il n'est pas défini,promptest utilisé dans tous les encodeurs de texte - prompt_3 (
stroulist[str], facultatif) — Le prompt ou les prompts à envoyer autokenizer_3et autext_encoder_3. S'il n'est pas défini,promptest utilisé dans tous les text-encoders - device — (
torch.device) : torch device - num_images_per_prompt (
int) — nombre d'images à générer par invite - do_classifier_free_guidance (
bool) — indique s'il faut utiliser le classifier free guidance ou non - negative_prompt (
stroulist[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passernegative_prompt_embedsà la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré siguidance_scaleest inférieur à1). - negative_prompt_2 (
stroulist[str], facultatif) — Le prompt ou les prompts à ne pas utiliser pour guider la génération d’image, à envoyer àtokenizer_2ettext_encoder_2. S’il n’est pas défini,negative_promptest utilisé dans tous les encodeurs de texte. - negative_prompt_3 (
stroulist[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image, à envoyer àtokenizer_3ettext_encoder_3. S’il n’est pas défini,negative_promptest utilisé dans tous les encodeurs de texte. - prompt_embeds (
torch.FloatTensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.FloatTensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entréenegative_prompt. - pooled_prompt_embeds (
torch.FloatTensor, facultatif) — Embeddings de texte pré-poolés pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte pré-poolés seront générés à partir de l'argument d'entréeprompt. - negative_pooled_prompt_embeds (
torch.FloatTensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les pooled negative_prompt_embeds seront générés à partir de l'argument d'entréenegative_prompt. - clip_skip (
int, facultatif) — Nombre de couches à ignorer dans CLIP lors du calcul des embeddings de l'invite. Une valeur de 1 signifie que la sortie de la couche pré-finale sera utilisée pour calculer les embeddings de l'invite. - lora_scale (
float, facultatif) — Un facteur d’échelle LoRA qui sera appliqué à toutes les couches LoRA de l’encodeur de texte si des couches LoRA sont chargées.
PixArtSigmaPAGPipeline
classe diffusers.PixArtSigmaPAGPipeline
< source >( tokenizer: T5Tokenizertext_encoder: T5EncoderModelvae: AutoencoderKLtransformer: PixArtTransformer2DModelscheduler: KarrasDiffusionSchedulerspag_applied_layers: str | list[str] = 'blocks.1' )
Pipeline PAG pour la génération d'images à partir de texte utilisant PixArt-Sigma.
__call__
< source >( prompt: str | list[str] = Nonenegative_prompt: str = ''num_inference_steps: int = 20timesteps: list[int] = Nonesigmas: list[float] = Noneguidance_scale: float = 4.5num_images_per_prompt: int | None = 1height: int | None = Nonewidth: int | None = Noneeta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_attention_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_attention_mask: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecallback: typing.Optional[typing.Callable[[int, int, torch.Tensor], NoneType]] = Nonecallback_steps: int = 1clean_caption: bool = Trueuse_resolution_binning: bool = Truemax_sequence_length: int = 300pag_scale: float = 3.0pag_adaptive_scale: float = 0.0 ) → ImagePipelineOutput or tuple
Paramètres
- prompt (
stroulist[str], facultatif) — Le prompt ou les prompts pour guider la génération d’image. S’il n’est pas défini, il faut passerprompt_embedsà la place. - negative_prompt (
stroulist[str], facultatif) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. S’il n’est pas défini, il faut passernegative_prompt_embedsà la place. Ignoré lorsque le guidage n’est pas utilisé (c’est-à-dire ignoré siguidance_scaleest inférieur à1). - num_inference_steps (
int, facultatif, valeur par défaut 100) — Le nombre d'étapes de débruitage. Un plus grand nombre d'étapes de débruitage conduit généralement à une image de meilleure qualité, au prix d'une inférence plus lente. - timesteps (
list[int], facultatif) — Timesteps personnalisés à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argumenttimestepsdans leur méthodeset_timesteps. S'il n'est pas défini, le comportement par défaut lorsquenum_inference_stepsest passé sera utilisé. Doit être dans l'ordre décroissant. - sigmas (
list[float], facultatif) — Sigmas personnalisés à utiliser pour le processus de débruitage avec les planificateurs qui prennent en charge un argumentsigmasdans leur méthodeset_timesteps. S'il n'est pas défini, le comportement par défaut lorsquenum_inference_stepsest passé sera utilisé. - guidance_scale (
float, facultatif, valeur par défaut 4,5) — Échelle de guidage telle que définie dans Classifier-Free Diffusion Guidance.guidance_scaleest défini commewde l'équation 2 de Imagen Paper. L'échelle de guidage est activée en définissantguidance_scale > 1. Une échelle de guidage plus élevée encourage la génération d'images étroitement liées auprompttexte, généralement au détriment de la qualité de l'image. - num_images_per_prompt (
int, facultatif, valeur par défaut 1) — Le nombre d'images à générer par invite. - height (
int, facultatif, par défaut self.unet.config.sample_size) — La hauteur en pixels de l'image générée. - width (
int, facultatif, par défaut self.unet.config.sample_size) — La largeur en pixels de l'image générée. - eta (
float, facultatif, valeur par défaut 0.0) — Correspond au paramètre eta (η) du papier DDIM : https://huggingface.co/papers/2010.02502. Ne s'applique qu'à schedulers.DDIMScheduler, sera ignoré pour les autres. - generator (
torch.Generatoroulist[torch.Generator], facultatif) — Un ou une liste de générateurs torch pour rendre la génération déterministe. - latents (
torch.Tensor, facultatif) — Latents bruités pré-générés, échantillonnés à partir d’une distribution gaussienne, à utiliser comme entrées pour la génération d’images. Peut être utilisé pour ajuster la même génération avec des prompts différents. S’il n’est pas fourni, un tenseur de latents sera généré par échantillonnage à l’aide dugeneratoraléatoire fourni. - prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entréeprompt. - prompt_attention_mask (
torch.Tensor, facultatif) — Masque d'attention pré-généré pour les embeddings de texte. - negative_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Pour PixArt-Sigma, ce prompt négatif doit être "". S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entréenegative_prompt. - negative_prompt_attention_mask (
torch.Tensor, facultatif) — Masque d'attention pré-généré pour les embeddings de texte négatifs. - output_type (
str, facultatif, par défaut"pil") — Le format de sortie de l'image générée. Choisissez entre PIL :PIL.Image.Imageounp.array. - return_dict (
bool, facultatif, par défautTrue) — Indique s'il faut retourner un~pipelines.stable_diffusion.IFPipelineOutputplutôt qu'un simple tuple. - callback (
Callable, facultatif) — Une fonction qui sera appelée toutes lescallback_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 fonctioncallbackest appelée. Si non spécifié, le callback est appelé à chaque étape. - clean_caption (
bool, facultatif, par défautTrue) — Indique s'il faut nettoyer la légende avant de créer les embeddings. Nécessite l'installation debeautifulsoup4etftfy. Si les dépendances ne sont pas installées, les embeddings seront créés à partir du prompt brut. - use_resolution_binning (
boolpar défautTrue) — Si défini surTrue, la hauteur et la largeur demandées sont d’abord mappées sur les résolutions les plus proches à l’aide deASPECT_RATIO_1024_BIN. Après le décodage des latents produits en images, elles sont redimensionnées pour revenir à la résolution demandée. Utile pour générer des images non carrées. - max_sequence_length (
intpar défaut 300) — Longueur maximale de la séquence à utiliser avec leprompt. - pag_scale (
float, facultatif, valeur par défaut 3.0) — Le facteur d'échelle pour le guidage d'attention perturbée. S'il est défini à 0.0, le guidage d'attention perturbée ne sera pas utilisé. - pag_adaptive_scale (
float, facultatif, valeur par défaut 0.0) — Le facteur d'échelle adaptatif pour le guidage de l'attention perturbée. S'il est défini à 0.0,pag_scaleest utilisé.
Retourne
ImagePipelineOutput ou tuple
Si return_dict est True, ImagePipelineOutput est retourné, sinon un tuple est retourné dont 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 :
>>> import torch
>>> from diffusers import AutoPipelineForText2Image
>>> pipe = AutoPipelineForText2Image.from_pretrained(
... "PixArt-alpha/PixArt-Sigma-XL-2-1024-MS",
... torch_dtype=torch.float16,
... pag_applied_layers=["blocks.14"],
... enable_pag=True,
... )
>>> pipe = pipe.to("cuda")
>>> prompt = "A small cactus with a happy face in the Sahara desert"
>>> image = pipe(prompt, pag_scale=4.0, guidance_scale=1.0).images[0]encode_prompt
< source >( prompt: str | list[str]do_classifier_free_guidance: bool = Truenegative_prompt: str = ''num_images_per_prompt: int = 1device: typing.Optional[torch.device] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_attention_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_attention_mask: typing.Optional[torch.Tensor] = Noneclean_caption: bool = Falsemax_sequence_length: int = 300**kwargs )
Paramètres
- prompt (
stroulist[str], facultatif) — prompt à encoder - negative_prompt (
stroulist[str], facultatif) — Le prompt à ne pas utiliser pour guider la génération de l’image. S’il n’est pas défini, il faut passernegative_prompt_embedsà la place. Ignoré lorsque la guidance n’est pas utilisée (c’est-à-dire ignoré siguidance_scaleest inférieur à1). Pour PixArt-Alpha, cette valeur doit être "". - do_classifier_free_guidance (
bool, facultatif, valeur par défautTrue) — indique s'il faut utiliser le classifier free guidance ou non - num_images_per_prompt (
int, facultatif, valeur par défaut 1) — nombre d'images à générer par invite - device — (
torch.device, facultatif) : dispositif torch sur lequel placer les embeddings résultants - prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entréeprompt. - negative_prompt_embeds (
torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Pour PixArt-Alpha, il doit s’agir des embeddings de la chaîne "" - clean_caption (
bool, par défautFalse) — SiTrue, la fonction prétraite et nettoie la légende fournie avant l’encodage. - max_sequence_length (
int, par défaut 300) — Longueur maximale de séquence à utiliser pour le prompt.
Encode le prompt dans les états cachés de l'encodeur de texte.