Buckets:
| # Adaptor lama | |
| Metode-metode ini masih didukung, terutama pada checkpoint keluarga Stable Diffusion. Untuk pekerjaan baru, lebih disarankan menggunakan [LoRA](../tutorials/using_peft_for_inference), [IP-Adapter](./ip_adapter), dan [ControlNet](./controlnet). | |
| ## T2I-Adapter | |
| [T2I-Adapter](https://huggingface.co/papers/2302.08453) adalah adapter untuk generasi yang dapat dikendalikan. Adapter ini mempelajari pemetaan dari sinyal kontrol (misalnya, peta kedalaman atau tepi canny) ke fitur internal model pretrained, lalu menambahkan panduan tersebut selama proses generasi. Perannya mirip dengan [ControlNet](./controlnet), tetapi T2I-Adapter merupakan adapter plug-in yang lebih ringan. | |
| Muat adapter yang dikondisikan kontrol, lalu muat pipeline dengan [from_pretrained()](/docs/diffusers/main/id/api/pipelines/overview#diffusers.DiffusionPipeline.from_pretrained) dan lewati dengan `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, | |
| ) | |
| ``` | |
| Buat gambar canny dengan [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) | |
| ``` | |
| Lewatkan gambar canny ke pipeline untuk menghasilkan gambar. | |
| ```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] | |
| ``` | |
| gambar asli | |
| canny image | |
| gambar yang dihasilkan | |
| Lihat juga [pelatihan T2I-Adapter](../training/t2i_adapters). | |
| ### MultiAdapter | |
| Komposisikan beberapa kontrol (misalnya, canny dan depth) dengan `MultiAdapter`. Teruskan daftar adapter ke `MultiAdapter`, lalu teruskan gambar kontrol yang sesuai sebagai daftar ke 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), | |
| ] | |
| ) | |
| ``` | |
| Lewatkan adapter, prompt, dan gambar kontrol ke [StableDiffusionXLAdapterPipeline](/docs/diffusers/main/id/api/pipelines/stable_diffusion/adapter#diffusers.StableDiffusionXLAdapterPipeline). Gunakan parameter `adapter_conditioning_scale` untuk menentukan seberapa besar bobot yang diberikan pada masing-masing kontrol. | |
| ```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] | |
| ``` | |
| canny image | |
| peta kedalaman | |
| gambar yang dihasilkan | |
| ## Textual Inversion | |
| [Textual Inversion](https://huggingface.co/papers/2208.01618) mempersonalisasi model ke sebuah konsep dari 3-5 gambar dengan fine-tuning word embeddings yang terikat pada token unik (`<sks>`). Anda kemudian dapat menggunakan token tersebut dalam prompt Anda untuk menghasilkan konsepnya (misalnya, pixel art). | |
| Bobot Textual Inversion biasanya hanya beberapa KB karena hanya berupa word embeddings. Muat setelah [from_pretrained()](/docs/diffusers/main/id/api/pipelines/overview#diffusers.DiffusionPipeline.from_pretrained) dengan [load_textual_inversion()](/docs/diffusers/main/id/api/loaders/textual_inversion#diffusers.loaders.TextualInversionLoaderMixin.load_textual_inversion), dan sertakan token unik dalam prompt untuk memicu generasi. | |
| ```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] | |
| ``` | |
| Untuk melatih embedding, lihat [Melatih textual inversion](../training/text_inversion). | |
| Textual Inversion juga dapat dilatih untuk mempelajari *negative embeddings* untuk mengarahkan generasi menjauh dari karakteristik yang tidak diinginkan seperti "blurry" atau "ugly", sehingga berguna untuk meningkatkan kualitas gambar. | |
| EasyNegative adalah embedding negatif yang banyak digunakan dan berisi beberapa konsep negatif yang dipelajari. Muat embedding negatif dan tentukan nama file serta token yang terkait dengan embedding negatif tersebut. Teruskan token ke `negative_prompt` di pipeline Anda untuk mengaktifkannya. | |
| ```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:
- 6.98 kB
- Xet hash:
- bfe0c91419677b740fc9f45288f09f72ed711c288bbf17abb0790d824a946f2c
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.