Image Generation
ControlNet
Метод условной генерации изображений, управляющий позой, контуром, глубиной и другими параметрами.
Что такое ControlNet
ControlNet — нейросетевая архитектура (Lvmin Zhang, 2023), добавляющая структурные условия к генерации Stable Diffusion. Вместо управления только текстовым промптом ControlNet принимает дополнительное изображение-условие: карту поз, контур, карту глубины, нормали и т.д.
Это позволяет точно контролировать пространственную структуру результата: поза персонажа, расположение объектов, углы граней — при сохранении стилистической свободы SD.
Типы ControlNet
| Тип | Условие | Применение |
|---|---|---|
| Canny | Карта краёв (Canny edge) | Точное воспроизведение контуров |
| OpenPose | Скелет позы | Управление позой персонажа |
| Depth | Карта глубины | Сохранение перспективы |
| HED | Мягкие края | Создание с переносом структуры |
| Scribble | Простые линии | Набросок → изображение |
| Normal | Карта нормалей | 3D-детали поверхностей |
| Lineart | Линейный арт | Покраска раскрасок |
| Inpaint | Маска + контекст | Умный инпейнтинг |
Использование в ComfyUI
В ComfyUI ControlNet — набор нод:
- Load ControlNet Model — загрузить модель
- Load Image — загрузить изображение-условие
- Apply ControlNet — соединить с сэмплером
Использование в Diffusers
from diffusers import ControlNetModel, StableDiffusionControlNetPipeline
from diffusers.utils import load_image
import torch
controlnet = ControlNetModel.from_pretrained(
"lllyasviel/sd-controlnet-canny", torch_dtype=torch.float16
)
pipe = StableDiffusionControlNetPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5",
controlnet=controlnet, torch_dtype=torch.float16
).to("cuda")
# Подготовить карту краёв
import cv2, numpy as np
from PIL import Image
image = np.array(Image.open("input.jpg"))
canny = cv2.Canny(image, 100, 200)
canny_pil = Image.fromarray(canny)
result = pipe(
"A girl in a red dress, masterpiece",
image=canny_pil,
controlnet_conditioning_scale=0.8,
).images[0]
Связанные термины
- Stable Diffusion — модель, с которой работает ControlNet
- ComfyUI — node-based UI для работы с ControlNet
- img2img — смежная техника преобразования изображений
- inpainting — ControlNet Inpaint для умного заполнения
Готовы запустить GPU-задачу?
Запустить GPU-сервер