Кейсы / portrait-ai-bot ⟶ Проект для клиента CASE ID · 028
Автоматизация Нейросети

Телеграм-бот художественной обработки портретов на нейросетях

Пользователь присылает фотографию в Telegram и получает четыре варианта художественной стилизации: генеративный пайплайн на SDXL сохраняет сходство лица и повторяет ручной стиль ретушёра

Детали проекта
RESULT

Результаты проекта

7 шагов Автоматический пайплайн от лица до готового кадра
4 варианта Бот присылает на выбор за один прогон
Своя LoRA Модель дообучена под нужный стиль обработки
01. Задача

Что нужно было сделать

Художественная обработка портрета — это ручная работа в графическом редакторе. Вырезать лицо, вычистить дефекты старого или неудачного снимка, перевести в монохром, вытянуть линии и контраст, добавить фон и мягкое свечение по контуру — и всё это на каждой фотографии заново.

Что болит:

  • Каждый заказ упирается в занятость конкретного ретушёра
  • Результат зависит от исполнителя — стиль плывёт от кадра к кадру
  • Исходники приходят разного качества: телефонные снимки, сканы, старые фото
  • Заказчику нужно показать варианты, а сделать несколько версий вручную дорого

Задача: повторить нейросетью ручной стиль обработки и отдать его пользователю в самом простом интерфейсе — Telegram: прислал фото, выбрал режим, получил готовые варианты. При этом человек на портрете должен остаться узнаваемым — это главное требование и главная техническая сложность.

Задача проекта
02. Прототип

Как мы это видим

Спроектировали бота как единственный интерфейс: без сайта, регистрации и личного кабинета — сценарий в три касания.

Как работает бот:

  • Пользователь отправляет фото — снимком или файлом (jpg, png, webp, heic)
  • Выбирает режим обработки: без свечения по контуру или с ним
  • Для режима со свечением — выбирает один из четырёх типов: обычное, мелкозернистое, крупнозернистое и «косой дождь»
  • Видит статус: место в очереди, ход обработки, оценку ожидания
  • Получает четыре готовых варианта одним сообщением — можно выбрать подходящий или заказать другой режим

Тяжёлая генерация вынесена в фоновую очередь: бот остаётся отзывчивым, а задачи выполняются по одной на GPU-сервере, не перегружая его.

Прототип проекта
03. Структура

Как мы это строили

За простым диалогом — пайплайн из семи шагов, где каждый шаг решает свою узкую задачу. Одной генерацией такой результат не получается: нейросеть без подготовки кадра «уплывает» с лица и теряет сходство.

Как устроен пайплайн:

  1. Поиск и кроп лица — YOLOv8 находит человека в кадре, SAM отделяет его от фона, снимок приводится к квадрату 1024 px.
  2. Восстановление лица — CodeFormer вытягивает детали на размытых, шумных и старых фотографиях; сила восстановления подобрана так, чтобы черты не «пластмассовели».
  3. Фон и монохром — подстановка чистого фона и перевод в градации серого.
  4. Работа с линиями — нерезкое маскирование и лапласиан на OpenCV: контуры и фактура становятся читаемыми до генерации.
  5. Генеративная стилизация — Stable Diffusion XL через API Automatic1111 на своём GPU-сервере: чекпойнт DreamShaper XL Turbo, дообученная под нужный стиль LoRA, а поверх — InstantID и IP-Adapter через ControlNet. Именно эта связка удерживает сходство лица: модель стилизует кадр, но опирается на геометрию и идентичность исходного портрета.
  6. Свечение по контуру — отдельные скрипты на четыре типа эффекта, применяются к результату генерации.
  7. Стилистические варианты — из финального кадра собираются четыре версии с разной подачей, чтобы пользователю было из чего выбрать.

Архитектура сервиса: Telegram-бот на aiogram 3 общается с FastAPI; тяжёлые задачи уходят в Celery с Redis в качестве брокера и хранилища очереди; воркер обрабатывает задачи по одной, чтобы не конкурировать за видеопамять. Модели YOLO и SAM загружаются один раз при старте процесса, а не на каждый запрос. Отдельные эндпоинты отдают позицию в очереди, статус задачи и готовый файл — бот опрашивает их и держит пользователя в курсе. Промежуточные результаты каждого шага сохраняются: это позволяет разбирать неудачные кадры и настраивать пайплайн по конкретным примерам.

Структура проекта
04. Результат

Что получилось

Ручная операция превратилась в сервис самообслуживания: обработка идёт без участия ретушёра, а стиль не зависит от исполнителя и настроения.

Что получилось:

  • Обработка запускается из Telegram — без сайта, приложения и регистрации
  • Четыре готовых варианта за один прогон и пять режимов подачи на выбор
  • Сходство лица сохраняется за счёт связки InstantID + ControlNet и собственной LoRA
  • Пайплайн вытягивает исходники плохого качества — старые и телефонные снимки
  • Очередь на Celery и Redis: сервис принимает заявки непрерывно и обрабатывает их по мере освобождения GPU, показывая пользователю место в очереди
  • Стиль настраивается централизованно — правкой промпта, LoRA и параметров шагов, а не переучиванием исполнителей
7 шаговАвтоматический пайплайн от лица до готового кадра
4 вариантаБот присылает на выбор за один прогон
Своя LoRAМодель дообучена под нужный стиль обработки
Результат проекта
— Результаты

Результаты проекта в цифрах

Измеримый эффект, который получил клиент после внедрения решения

M/01 7 шагов

Автоматический пайплайн от лица до готового кадра

M/02 4 варианта

Бот присылает на выбор за один прогон

M/03 Своя LoRA

Модель дообучена под нужный стиль обработки

Готовы реализовать подобный проект?

Свяжитесь с нами для обсуждения вашего проекта и получения персонального предложения

— Свяжитесь с нами

Обсудим
ваш проект.

Выберите удобный способ связи или заполните форму — мы ответим в течение 30 минут.

200+проектов
30 минвремя ответа
85%возвращаются
ЗАЯВКА · BUILD#NEW

Оставьте заявку