Buckets:
| # Adaptateurs legacy | |
| Ces méthodes sont toujours prises en charge, en particulier sur les points de contrôle de la famille Stable Diffusion. Pour les nouveaux travaux, privilégiez [LoRA](../tutorials/using_peft_for_inference), [IP-Adapter](./ip_adapter) et [ControlNet](./controlnet). | |
| ## T2I-Adapter | |
| [T2I-Adapter](https://huggingface.co/papers/2302.08453) est un adaptateur pour la génération contrôlable. Il apprend une correspondance entre un signal de contrôle (par exemple, une carte de profondeur ou des bords canny) et les caractéristiques internes d'un modèle pré-entraîné, puis ajoute ce guidage pendant la génération. Il joue un rôle similaire à celui de [ControlNet](./controlnet), mais il s'agit d'un adaptateur plus léger à brancher. | |
| Chargez un adaptateur conditionné par un contrôle, puis chargez le pipeline avec [from_pretrained()](/docs/diffusers/main/fr/api/pipelines/overview#diffusers.DiffusionPipeline.from_pretrained) et passez-le avec `adapter=`. | |
| ```py | |
| import torch | |
| from diffusers import T2IAdapter, StableDiffusionXLAdapterPipeline, AutoencoderKL | |
| t2i_adapter = T2IAdapter.from_pretrained( | |
| "TencentARC/t2i-adapter-canny-sdxl-1.0", | |
| dtype=torch.float16, | |
| ) | |
| ``` | |
| Générer une image canny avec [opencv-python](https://github.com/opencv/opencv-python). | |
| ```py | |
| import cv2 | |
| import numpy as np | |
| from PIL import Image | |
| from diffusers.utils import load_image | |
| original_image = load_image( | |
| "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/non-enhanced-prompt.png" | |
| ) | |
| image = np.array(original_image) | |
| low_threshold = 100 | |
| high_threshold = 200 | |
| image = cv2.Canny(image, low_threshold, high_threshold) | |
| image = image[:, :, None] | |
| image = np.concatenate([image, image, image], axis=2) | |
| canny_image = Image.fromarray(image) | |
| ``` | |
| Transmettez l'image canny au pipeline pour générer une image. | |
| ```py | |
| vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix", dtype=torch.float16) | |
| pipeline = StableDiffusionXLAdapterPipeline.from_pretrained( | |
| "stabilityai/stable-diffusion-xl-base-1.0", | |
| adapter=t2i_adapter, | |
| vae=vae, | |
| dtype=torch.float16, | |
| ).to("cuda") # or "mps", "xpu", "cpu" | |
| prompt = """ | |
| A photorealistic overhead image of a cat reclining sideways in a flamingo pool floatie holding a margarita. | |
| The cat is floating leisurely in the pool and completely relaxed and happy. | |
| """ | |
| pipeline( | |
| prompt, | |
| image=canny_image, | |
| num_inference_steps=100, | |
| guidance_scale=10, | |
| ).images[0] | |
| ``` | |
| image d'origine | |
| image canny | |
| image générée | |
| Voir aussi [Entraînement de T2I-Adapter](../training/t2i_adapters). | |
| ### MultiAdapter | |
| Composez plusieurs contrôles (par exemple, canny et depth) avec `MultiAdapter`. Transmettez une liste d’adaptateurs à `MultiAdapter`, puis transmettez les images de contrôle correspondantes sous forme de liste au pipeline. | |
| ```py | |
| import torch | |
| from diffusers.utils import load_image | |
| from diffusers import StableDiffusionXLAdapterPipeline, AutoencoderKL, MultiAdapter, T2IAdapter | |
| canny_image = load_image( | |
| "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/canny-cat.png" | |
| ) | |
| depth_image = load_image( | |
| "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/sdxl_depth_image.png" | |
| ) | |
| controls = [canny_image, depth_image] | |
| prompt = [""" | |
| a relaxed rabbit sitting on a striped towel next to a pool with a tropical drink nearby, | |
| bright sunny day, vacation scene, 35mm photograph, film, professional, 4k, highly detailed | |
| """] | |
| adapters = MultiAdapter( | |
| [ | |
| T2IAdapter.from_pretrained("TencentARC/t2i-adapter-canny-sdxl-1.0", dtype=torch.float16), | |
| T2IAdapter.from_pretrained("TencentARC/t2i-adapter-depth-midas-sdxl-1.0", dtype=torch.float16), | |
| ] | |
| ) | |
| ``` | |
| Transmettez les adaptateurs, le prompt et les images de contrôle à [StableDiffusionXLAdapterPipeline](/docs/diffusers/main/fr/api/pipelines/stable_diffusion/adapter#diffusers.StableDiffusionXLAdapterPipeline). Utilisez le paramètre `adapter_conditioning_scale` pour déterminer le poids à accorder à chaque contrôle. | |
| ```py | |
| vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix", dtype=torch.float16) | |
| pipeline = StableDiffusionXLAdapterPipeline.from_pretrained( | |
| "stabilityai/stable-diffusion-xl-base-1.0", | |
| dtype=torch.float16, | |
| vae=vae, | |
| adapter=adapters, | |
| ).to("cuda") # or "mps", "xpu", "cpu" | |
| pipeline( | |
| prompt, | |
| image=controls, | |
| height=1024, | |
| width=1024, | |
| adapter_conditioning_scale=[0.7, 0.7] | |
| ).images[0] | |
| ``` | |
| image canny | |
| carte de profondeur | |
| image générée | |
| ## Inversion textuelle | |
| [Textual Inversion](https://huggingface.co/papers/2208.01618) personnalise un modèle pour un concept à partir de 3 à 5 images en ajustant finement les embeddings de mots liés à un jeton unique (`<sks>`). Vous pouvez ensuite utiliser ce jeton dans votre invite pour générer le concept (par exemple, du pixel art). | |
| Les poids de Textual Inversion ne font généralement que quelques Ko, car il s’agit uniquement d’embeddings de mots. Chargez-les après [from_pretrained()](/docs/diffusers/main/fr/api/pipelines/overview#diffusers.DiffusionPipeline.from_pretrained) à l’aide de [load_textual_inversion()](/docs/diffusers/main/fr/api/loaders/textual_inversion#diffusers.loaders.TextualInversionLoaderMixin.load_textual_inversion), et incluez le jeton unique dans le prompt pour déclencher la génération. | |
| ```py | |
| import torch | |
| from diffusers import AutoPipelineForText2Image | |
| pipeline = AutoPipelineForText2Image.from_pretrained( | |
| "stable-diffusion-v1-5/stable-diffusion-v1-5", | |
| dtype=torch.float16 | |
| ).to("cuda") # or "mps", "xpu", "cpu" | |
| ``` | |
| ```py | |
| pipeline.load_textual_inversion("sd-concepts-library/gta5-artwork") | |
| prompt = "A cute brown bear eating a slice of pizza, stunning color scheme, masterpiece, illustration, <gta5-artwork> style" | |
| pipeline(prompt).images[0] | |
| ``` | |
| Pour entraîner des embeddings, consultez [Entraîner le textual inversion](../training/text_inversion). | |
| Textual Inversion peut également être entraîné pour apprendre des *embeddings négatifs* afin d’orienter la génération loin des caractéristiques indésirables telles que « flou » ou « laid », ce qui le rend utile pour améliorer la qualité des images. | |
| EasyNegative est un négatif d’embedding largement utilisé qui contient plusieurs concepts négatifs appris. Chargez les embeddings négatifs et spécifiez le nom du fichier et le jeton associés aux embeddings négatifs. Transmettez le jeton à `negative_prompt` dans votre pipeline pour l’activer. | |
| ```py | |
| import torch | |
| from diffusers import AutoPipelineForText2Image | |
| pipeline = AutoPipelineForText2Image.from_pretrained( | |
| "stable-diffusion-v1-5/stable-diffusion-v1-5", | |
| dtype=torch.float16 | |
| ).to("cuda") # or "mps", "xpu", "cpu" | |
| pipeline.load_textual_inversion( | |
| "EvilEngine/easynegative", | |
| weight_name="easynegative.safetensors", | |
| token="easynegative" | |
| ) | |
| prompt = "A cute brown bear eating a slice of pizza, stunning color scheme, masterpiece, illustration" | |
| negative_prompt = "easynegative" | |
| pipeline(prompt, negative_prompt=negative_prompt).images[0] | |
| ``` | |
Xet Storage Details
- Size:
- 7.26 kB
- Xet hash:
- ba54a55d7269e28d2d60b0de5625a2c0ec728caca52913feea165aefe855709d
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.