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 — набор нод:

  1. Load ControlNet Model — загрузить модель
  2. Load Image — загрузить изображение-условие
  3. 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-сервер