Учебник

Стилизация фото под любую задачу без дорогого GPU

У вас есть фото продукта, портрет клиента или сцена для соцсетей, а нужно быстро поменять стиль - под иллюстрацию, акварель, киберпанк. Разбираем три инструмента: ControlNet, IPAdapter и Flux Redux. Каждый работает без программиста. Выбираете по задаче и бюджету. Получаете готовый workflow для ComfyUI и пример кода для облачной стилизации.

Макс Космов··6 мин чтения

У вас есть фото продукта, портрет клиента или сцена для соцсетей, а нужно быстро поменять стиль - под иллюстрацию, акварель, киберпанк. Разбираем три инструмента: ControlNet, IPAdapter и Flux Redux. Каждый работает без программиста. Выбираете по задаче и бюджету. Получаете готовый workflow для ComfyUI и пример кода для облачной стилизации.

Принцип img2img: denoise_strength как главный параметр

Img2img - это когда вы берёте существующее изображение и говорите нейросети: «сделай то же самое, но в другом стиле». Главный рычаг управления - параметр denoise_strength (сила шума). Чем выше, тем сильнее изменения.

denoise_strength 0.1-0.3 - слабое изменение. Сохраняется цветовая схема, общая структура, даже детали. Подходит для: незначительного улучшения качества, небольшого изменения атмосферы, тонкой стилизации.

denoise_strength 0.4-0.6 - умеренное изменение. Структура сохраняется (где стоят объекты), но детали переписываются. Самый рабочий диапазон для стилизации: структура оригинала + новый стиль.

denoise_strength 0.7-0.9 - сильное изменение. Остаётся только общая компоновка. Для радикальной смены стиля или атмосферы при сохранении грубой композиции.

denoise_strength 1.0 - полная перегенерация. Входное изображение фактически игнорируется, используется только как «семя» для шума.

Практическое правило: начинать с 0.5, оценивать результат, двигаться вверх или вниз. Нет универсального значения - зависит от задачи и исходного изображения.

ControlNet: управление структурой через условия

ControlNet - это расширение для локальных моделей, которое добавляет дополнительное условие к генерации. Вместо «вот промпт, делай что хочешь», говорит «вот промпт И вот структурная информация, которой нужно следовать».

Типы условий:

Canny - обнаружение контуров. Из входного изображения извлекаются рёбра, модель генерирует изображение с теми же контурами. Идеально для: сохранения формы объектов при смене стиля, архитектурные виды, технические иллюстрации.

Depth - карта глубины. Сохраняет трёхмерную структуру сцены (что ближе, что дальше). Полезно для: смены фона без изменения перспективы, реалистичных сцен с правильными пространственными отношениями.

OpenPose - скелет позы человека. Обнаруживает суставы (17 точек тела), модель генерирует человека в той же позе. Для: переноса позы от одного персонажа к другому, создания серий в разных стилях с одинаковой позой.

Lineart - чистые линии, как в комиксе или манге. Для: стилизации под иллюстрацию, создания раскрасок.

Tile - работает с крупными фрагментами текстуры. Для: улучшения качества существующих изображений, upscaling с добавлением деталей.

Установка в ComfyUI через Manager: Install Custom Nodes - поиск «ControlNet». Или в Forge/A1111: Extensions - Install from URL - ControlNet репозиторий.

Пайплайн style transfer в ComfyUI

Минимальный сценарий для стилизации через ControlNet в ComfyUI:

Load Image -> Canny Preprocessor -> ControlNet Apply
Load Checkpoint -> CLIP Text Encode (+/-)
KSampler (принимает: model, conditioning, latent, controlnet)
VAE Decode -> Save Image

По шагам в ComfyUI:

  1. Load Image (нод) - загружаем исходное фото
  2. CannyEdgePreprocessor - обнаруживаем контуры (параметры: low_threshold 50-100, high_threshold 150-200)
  3. Load ControlNet Model - загружаем модель ControlNet (нужна отдельная загрузка под вашу базовую модель: control_v11p_sd15_canny или xl версия)
  4. Apply ControlNet - связываем preprocessing + conditioning
  5. Load Checkpoint + CLIP Text Encode - обычный промпт с новым стилем
  6. KSampler - CFG 7-9 (чуть выше для ControlNet), denoise 0.75-0.85, steps 25
  7. VAE Decode + Save Image

Параметр strength в Apply ControlNet (0.0-2.0): сила влияния контуров. При 0.5 - контуры как рекомендация, при 1.5 - жёсткое следование.

IPAdapter: перенос стиля без промпта

IPAdapter решает другую задачу: переносит визуальный «язык» референс-изображения без текстового описания стиля. Загружаем фотографию маслом Моне - получаем стиль Моне. Загружаем кадр из Blade Runner - получаем cyberpunk noir.

Принцип: IPAdapter кодирует референс-изображение через визуальный энкодер (CLIP Vision), а не текстовый. Эти визуальные векторные представления добавляются к attention слоям диффузионной модели.

Установка: ComfyUI Manager - Install Custom Nodes - IPAdapter-plus. Также нужны модели IPAdapter (скачать с HuggingFace: h94/IP-Adapter).

Сценарий: Load Image (reference) -> IPAdapter Encode -> Apply IPAdapter to KSampler

Параметр ip_adapter_weight (0.1-1.0):

  • 0.3-0.5: лёгкое влияние стиля, промпт доминирует
  • 0.6-0.8: баланс стиля и содержания
  • 0.9-1.0: стиль доминирует, промпт как подсказка

Отличие от LoRA при переносе стиля: LoRA обучена на наборе изображений конкретного стиля - работает стабильно, но требует предварительного обучения. IPAdapter работает с любым референсом без обучения - более гибко, менее предсказуемо.

Flux Redux через Replicate

Flux Redux - облачный img2img без локального GPU. Работает через Replicate API.

Код ниже запускает стилизацию изображения через Flux Redux на платформе Replicate: входное фото передаётся в формате base64, а сила изменения регулируется параметром prompt_strength.

import replicate
import base64

with open("input_photo.jpg", "rb") as f:
 img_b64 = base64.b64encode(f.read()).decode()

output = replicate.run(
 "black-forest-labs/flux-redux-dev",
 input={
 "redux_image": f"data:image/jpeg;base64,{img_b64}",
 "prompt": "Same scene as watercolor illustration, soft brush strokes, pastel colors",
 "prompt_strength": 0.6,
 "num_inference_steps": 28,
 "guidance": 3.5
 }
)

prompt_strength в Flux Redux = denoise_strength: 0.3-0.5 для тонкой стилизации, 0.7-0.8 для радикальной смены стиля.

Главное отличие от классического img2img: Flux Redux использует визуальный энкодер FLUX Redux Encoder для «понимания» содержимого входного изображения, а не просто добавляет шум. Это даёт более когерентный результат при трансформации: объекты узнаваемы, структура сохраняется лучше чем при обычном img2img с высоким denoise.

Промпт-стратегии для стилизации в Midjourney

Midjourney Vary (Region) - инструмент локального редактирования. После апскейла изображения: кнопка «Vary (Region)», рисуем маску области, пишем новый промпт только для этой области. Используется для: замены фона, изменения одного объекта, добавления элемента.

Drag and drop image reference для стилизации: https://source-image.jpg a portrait in the style of Renaissance painting, oil on canvas, chiaroscuro lighting --iw 0.8 --stylize 500

Важный параметр --iw (Image Weight 0-3) - насколько сильно референс-изображение влияет на результат. При 0.5 - равный вес изображения и промпта. При 2.0 - изображение доминирует.

Для серии с единым стилем: фиксируем --sref URL + конкретные --sw, создаём 10-20 вариантов на разных сценах. Получаем серию в единой стилистике без ControlNet и без локального GPU.

Кейсы для бизнеса

Разберём на примере небольшой студии контента, которая ведёт соцсети для 5 клиентов. Это пример, не реальный кейс автора.

Ре-стилизация продуктовых фото: исходный продукт на белом фоне -> Flux Redux с prompt_strength 0.5 и промптом нового фона. Сохраняется форма и цвет продукта, фон полностью меняется. 10 вариантов фона за 20 минут.

Перевод фотопортрета в иллюстрацию: фото реального человека -> ComfyUI img2img + ControlNet OpenPose (сохраняет позу) + промпт «anime illustration» + LoRA аниме-стиля. Узнаваемость позы: 95%, стиль: полностью новый.

Серия арт-постов в едином стиле: первый пост создаётся вручную в нужном стиле -> IPAdapter берёт его как референс (weight 0.65) + prompt для каждого нового поста. Серия из 12 постов выглядит как сделанная одним иллюстратором.

Практика: три стилизации одной фотографии

Задание: взять реальную фотографию (пейзаж или портрет) и сделать три версии.

Версия 1 - Flux Redux (облачно): загружаем фото -> prompt: "same scene as Japanese ukiyo-e woodblock print, flat colors, bold outlines", prompt_strength 0.65. Время: 20-30 секунд, $0.025.

Версия 2 - Midjourney Vary (Region): апскейл фото, кнопка Vary Region -> выделяем всю сцену -> Studio Ghibli style illustration, soft watercolor, fantasy atmosphere --stylize 700. Время: 30-60 секунд, расходует GPU-минуты.

Версия 3 - ComfyUI IPAdapter (локально): загружаем фото + референс-изображение в нужном стиле (например, кадр из Moebius) -> IPAdapter weight 0.7 -> промпт уточняет сцену. Время: 20-40 секунд на RTX 4070, $0 (локально).

Сравниваем три результата: каждый инструмент даёт разный компромисс между контролем, скоростью и стоимостью.

Частые вопросы

Как выбрать правильный denoise_strength?

Начинать с 0.5 и оценивать. Если входное изображение узнаётся слишком хорошо - поднимать к 0.7. Если теряется нужная структура - снижать к 0.35-0.4. Для портретов с узнаваемым лицом: 0.4-0.55 максимум, иначе лицо «поплывёт». Для пейзажей и объектов где точность не критична: можно идти до 0.8.

Чем IPAdapter отличается от LoRA при переносе стиля?

LoRA - это обученная «прошивка» конкретного стиля. Требует предварительного обучения на 20-100 изображениях стиля. Работает предсказуемо и стабильно на знакомых стилях. IPAdapter - работает с любым референсом без обучения. Загружаете любое изображение и переносите его визуальный язык. Гибче, но менее предсказуемо - результат зависит от качества референса.

Можно ли сохранить лицо человека при полной смене фона и стиля?

С трудом, но возможно. Лучшая стратегия: ControlNet + маска (inpainting). Маскируем область фона, лицо в маске = «сохранить», фон в маске = «изменить». Denoise только для фоновой зоны. В ComfyUI: отдельный KSampler для замаскированной области с высоким denoise (0.9) + ControlNet для сохранения структуры лица (Canny, strength 0.3-0.5).

Flux Redux работает с любыми изображениями?

Да, любые изображения принимаются. Лучший результат - фотографии с чёткими объектами и контрастом. Слабее работает на: очень тёмных изображениях, абстракциях без чёткой структуры, низком разрешении (< 512px). Исходное изображение автоматически нормализуется до нужного размера.

Как автоматизировать массовую стилизацию через API?

Flux Redux через Replicate API - лучший вариант для автоматизации без локального GPU. Пример: папка с 50 продуктовыми фотографиями, скрипт на Python проходит по каждой, отправляет в Redux с промптом нового фона, сохраняет результат. Для 50 изображений при denoise 0.6 через Flux Redux dev: около $1.25 и 20-30 минут работы скрипта.

Что дальше

Следующий шаг - попробовать любой из трёх инструментов на одной фотографии. Бесплатно: Flux Redux даёт $5 кредитов на Replicate при регистрации. Хватит на 200 стилизаций. ControlNet и IPAdapter бесплатны локально, если есть видеокарта от 8 ГБ.

AI Компас (t.me/kosmoslab_ai) - канал для предпринимателей в РФ и СНГ, которые применяют AI в своём бизнесе без программиста. Разбираем инструменты и схемы - без курсов и теории.