Генератор стикеров в ComfyUI
Чтобы поддерживать рабочий тонус и развивать навыки, я решил собрать локальный генератор стикерпаков. Первоначальная идея уместить всё в один воркфлоу ComfyUI быстро отпала: если делать из этого качественный инструмент, объём работы получается слишком большим и комплексным.
Обзор воркфлоу
- Ядром системы служит локальная мультимодальная LLM, например Qwen 3.6. С ней можно работать в обычном диалоге, без необходимости каждый раз вручную разбирать технические детали или глубоко анализировать промпт.
- При этом большая часть подготовки сетапа как раз ушла на настройку промптов и скиллов, чтобы система стабильно работала на каждом этапе.
- Для каждого этапа написан отдельный скилл. Он опирается на правила генерации для конкретной модели, которая используется на текущем шаге. Все изображения и анимации создаются в заранее собранных воркфлоу ComfyUI.
- Продолжать работу можно с любого этапа пайплайна: перегенерировать варианты, переделывать персонажа, смешивать идеи между разными версиями. Главная цель сборки — максимальный контроль результата при минимуме ручных правок: инпейнтинга, масок и ручной дорисовки.
- Так как это не коммерческий продукт, а экспериментальный пайплайн, я оставил управление в формате переписки с агентом в консоли (TUI, обычно через OpenCode), а визуальный контроль результатов — в файловом менеджере. Отдельную оболочку с кнопками и превью я пока не делал, чтобы не распыляться: интерфейс легко может занять до 80% всей работы над проектом.
Примерный пайплайн
Генерация идеи
В режиме диалога с ботом, с примерами или без них, можно сформулировать общую концепцию персонажа или с помощью случайных генераций нащупать нужный образ. Любое описание или предложение сразу проверяется генерацией. После утверждения внешнего вида создаётся легенда персонажа: что обязательно должно быть видно, какие детали исключаются и какие признаки нужно сохранять.
В показанном на примерах случае я решил сделать эмотикон — аватар для сайта, в той же цветовой палитре и тематике. После удачной первой идеи начался поиск конкретики. Сначала я пробовал мультяшный стилизованный образ, но он не подошёл, поэтому для основного персонажа я остановился на более реалистичной стилистике.
Консистентность
Чтобы создавать новые эмоции, движения и другие варианты исполнения персонажа, дополнительно генерируются боковой и задний виды. Они используются как референсы для сохранения формы, деталей и общего образа.
Эмоции
Используя три ракурса как референсы, можно создавать разные вариации персонажа: позы, ракурсы, эмоции, взаимодействие с предметами и другие состояния. В основной цикл заложен минимальный базовый набор эмоций, дополнительный набор и любые варианты на усмотрение автора. Жёстких ограничений здесь нет.
Анимация
Анимацию можно делать по одному первому кадру или по двум кадрам — первому и последнему. Второй вариант лучше помогает сохранить консистентность и точнее следовать задумке автора. Одинаковые первый и последний кадры хорошо подходят для зацикленных сюжетов.
Ключевые компоненты
LLM
Подойдёт любая достаточно сильная модель, но лучше использовать мультимодальную: она может самостоятельно проверять результат и давать более точную обратную связь. Из хорошо показавших себя моделей:
- Qwen 3.6
- Qwen 3.5
- Gemma 4
Скиллы
Для разных задач агенту даются разные настройки, которым он следует.
- Общий оркестратор по пайплайну
- Создание промпта по правилам конкретной модели и сборка технического текстового запроса
- Итеративный цикл настройки генерации с визуальным контролем результата
Воркфлоу ComfyUI
- Z-image Turbo — первичная генерация, поиск вариантов и идей
- Flux 2 Klein — редактирование, создание новых ракурсов и состояний
- WAN 2.2 и LTX 2.3 — анимация. У каждой модели свои плюсы и минусы.
- Для WAN я разбил пайплайн на два отдельных этапа (превью и финализация), чтобы экономить ресурсы. Для этого сохраняется латент первого прохода анимации. Простой ноды сохранения латента по указанному пути я не нашёл, поэтому пришлось добавить кастомные ноды для этих целей.
Прозрачный фон
Один из самых болезненных этапов для реалистичных стикерпаков, особенно если в изображении много эффектов и полупрозрачных областей.
- RmBG с улучшением краёв — простой и быстрый вариант. Для стилизованных стикерпаков с чётким контуром этого подхода часто достаточно.
- Qwen Image Layered — долго, дорого, результат не всегда предсказуем, но в некоторых случаях справляется лучше остальных.
- SAM3 — ещё один продвинутый вариант. Используется, когда первый подход явно не справился и нужно уточнить результат.
Дополнительно
- ffmpeg — сборка анимаций и работа с файлами.
- Pillow — слои, полученные после разделения через Qwen Image Layered, можно скомбинировать в любом порядке. Если стандартное объединение не подходит (иногда предумножение альфа-канала сильно съедает мелкие детали), этот модуль аккуратнее собирает слои.
Результаты
Все стадии пайплайна сохраняются в соответствующих папках проекта. Обновляющийся по мере тестов стикерпак доступен в Telegram.
PS. Полноценный прогон пайплайна прошёл, когда я решил сделать «семейный» стикерпак. Ориентиром был как стиль, так и тематика с отсылками на бытовые ситуации. Ну и сам главный персонаж — ёжик в разных жизненных ситуациях. В общей сложности такой стикерпак можно сделать дома за один рабочий день.