Buckets:

mishig's picture
|
download
raw
8.85 kB
# Устаревшие адаптеры
Эти методы по-прежнему поддерживаются, особенно для чекпоинтов семейства Stable Diffusion. Для новых работ рекомендуется использовать [LoRA](../tutorials/using_peft_for_inference), [IP-Adapter](./ip_adapter) и [ControlNet](./controlnet).
## T2I-Adapter
[T2I-Adapter](https://huggingface.co/papers/2302.08453) — это адаптер для управляемой генерации. Он обучает отображение управляющего сигнала (например, карты глубины или канни-контуров) во внутренние признаки предобученной модели и добавляет это руководство в процессе генерации. По своей роли он похож на [ControlNet](./controlnet), но представляет собой более лёгкий подключаемый адаптер.
Загрузите адаптер с управлением по условию, затем загрузите конвейер с помощью [from_pretrained()](/docs/diffusers/v0.43.0/ru/api/pipelines/overview#diffusers.DiffusionPipeline.from_pretrained) и передайте его с параметром `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,
)
```
Сгенерируйте изображение с эффектом canny с помощью [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)
```
Передайте изображение canny в конвейер для генерации изображения.
```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]
```
original image
canny image
сгенерированное изображение
См. также [обучение T2I-Adapter](../training/t2i_adapters).
### MultiAdapter
Составляйте несколько контролей (например, canny и depth) с помощью `MultiAdapter`. Передайте список адаптеров в `MultiAdapter`, затем передайте соответствующие контрольные изображения в виде списка в пайплайн.
```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),
]
)
```
Передайте адаптеры, промпт и управляющие изображения в [StableDiffusionXLAdapterPipeline](/docs/diffusers/v0.43.0/ru/api/pipelines/stable_diffusion/adapter#diffusers.StableDiffusionXLAdapterPipeline). Используйте параметр `adapter_conditioning_scale`, чтобы определить вес, который следует назначить каждому управлению.
```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
карта глубины
сгенерированное изображение
## Textual Inversion
[Textual Inversion](https://huggingface.co/papers/2208.01618) персонализирует модель под концепцию по 3–5 изображениям, обучая эмбеддинги слов, связанные с уникальным токеном (`<sks>`). Затем вы можете использовать этот токен в промпте, чтобы генерировать концепцию (например, пиксель-арт).
Веса Textual Inversion обычно занимают всего несколько КБ, поскольку представляют собой лишь эмбеддинги слов. Загружайте их после [from_pretrained()](/docs/diffusers/v0.43.0/ru/api/pipelines/overview#diffusers.DiffusionPipeline.from_pretrained) с помощью [load_textual_inversion()](/docs/diffusers/v0.43.0/ru/api/loaders/textual_inversion#diffusers.loaders.TextualInversionLoaderMixin.load_textual_inversion) и включайте уникальный токен в промпт для запуска генерации.
```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]
```
Чтобы обучить эмбеддинги, см. [Обучение текстовой инверсии](../training/text_inversion).
Textual Inversion также можно обучать для получения *отрицательных эмбеддингов*, чтобы направлять генерацию в сторону, противоположную нежелательным характеристикам, таким как «размытость» или «некрасивость», что делает его полезным для улучшения качества изображений.
EasyNegative — это широко используемое отрицательное вложение, содержащее несколько выученных отрицательных концепций. Загрузите отрицательные вложения и укажите имя файла и токен, связанные с отрицательными вложениями. Передайте токен в `negative_prompt` в вашем конвейере, чтобы активировать его.
```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:
8.85 kB
·
Xet hash:
693157f3760c4b88a5d9e8a5e4bf3e40209731a79954a2d318c9f51fb2a93b53

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.