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-сервер