Работают text2image, image2image. Есть поддержка LoRA. Через IPAdapter работает замена лиц, стилизация
Бот для теста: @stablecats_bot
Необходима рабочая установка ComfyUI с дополнительными модулями:
- ComfyUI-Impact-Pack
- ComfyUI_UltimateSDUpscale
Необходима также установка моделей для сегментации: face_yolov8m.pt
Апскейлер: 4xNMKDSuperscale_4xNMKDSuperscale.pt
ControlNet модель: control_v11f1e_sd15_tile.pth
Файл default_lora.safetensors из каталога assets необходимо скопировать в ваш каталог LoRA. Это workaround для workflow без LoRA.
Переименовать файл config.yaml.samlpe в config.yaml и настроить под себя:
network:
BOT_TOKEN: 'xxx:xxxxxx' - токен telegram бота
SERVER_ADDRESS: "127.0.0.1:8188" - адрес API ComfyUI
bot:
TRANSLATE: True - Переводить ли языки промпта на английский (через deep_translate)
DENY_MESSAGE: "Access denied" - Сообщение, если пользователь не в белом списке
HELP_TEXT: "Для генерации можно использовать текст на русском языке
По-умолчанию каритнка создаётся в разрешении 512x512 пикселей
В промпте можно указать размер ШИРИНАхВЫСОТА. Например - 1024x512.
Команды:
/upscale .... - создаст картинку высокого разрешения
/face .... - исправит дефекты лиц"
comfyui:
DEFAULT_MODEL: 'revAnimatedFp16_122.safetensors' - имя модели по-умолчанию
DEFAULT_VAE: 'vaeFtMse840000Ema_v10.safetensors' - имя VAE модели по-умолчанию
DEFAULT_CONTROLNET: 'control_v11f1e_sd15_tile.pth' - модель ControlNet для image2image
SAMPLER: 'uni_pc' - используемый сэмплер
SAMPLER_STEPS: 30 - количество шагов денойса
MAX_STEPS: 100
TOKEN_MERGE_RATIO: '0.6'
CLIP_SKIP: '-1'
CONTROLNET_STRENGTH: '0.9'
DEFAULT_WIDTH: 512
DEFAULT_HEIGHT: 512
MAX_WIDTH: 2048 - ограничение ширины
MAX_HEIGHT: 2048 - ограничение высоты
BEAUTIFY_PROMPT: ',masterpiece, perfect, small details, highly detailed, best, high quality, professional photo' - добавляется к промпту
NEGATIVE_PROMPT: 'low quality, worst quality, embedding:badhandv4, blurred, deformed, embedding:EasyNegative, embedding:badquality, watermark, text, font, signage, artist name, text, caption, jpeg artifacts' - настройте под свои нужды негативный промпт
Используются workflow для генерации, в каталоги workflows они находятся в формате ComfyUI API
По-умолчанию при получении чистого промпта генерируется картинка с размерами DEFAULT_WIDTHxDEFAULT_HEIGHT, размер можно указывать в формате WIDTHxHEIGHT
Ответом от бота будут два сообщения: картинка (с потерей качетсва из-за сжатия телеграмом) и PNG файл с исходным качеством.
Если боту отправить картинку, то картинка будет преобразована, согласно промпту, в данном случае команды /face
, /upscale
также работают. Важно! Для img2img использутеся COntrolNet, а не классический денойс,что позволяет дать максимально приближенный к оригиналу результат.
Для добавления своего негативного промпта вместо встроенного - можно добавить к сообщению через разделитель |
Пример полного промпта (image2image) с отправкой референсной картинки:
@rev #vlozhkin:0.4 $0.6 %50 768x512 /face pretty woman in red|blurred, bad quality
@rev
- выбор модели (revAnimated)#vlozhkin:0.4
- установка LoRA с силой 0.4$0.6
- коэффициент ControlNet (0 - нет, 1 - максимум)%50
- 50 шаков сэмплера768x512
- разрешение на входе/face
- улучшение лиц и апсекйлpretty woman in red
- позитивный промпт|
- разделитель промптовblurred, bad quality
- негативный промпт
%50
- указать количество шагов сэмплера
$0.5
- strength для image2image controlnet модели
/models
- список моделей
/loras
- список доступных LoRA
Исходная картинка | Результат |
---|---|
Милый демон с белой змеиной чешуёй, изумрудные глаза, острые когти 1024x1024 |
В каталоге upload сохраняются картинки отправленные боту
Каталог generated - результаты генераций
/start
, /help
- информация об использовании из HELP_TEXT
/upscale
- апскейл готовой картинки
/face
- коррекциея лиц (каждое лицо на картинке увеличит время генерации)
/me
- установка фото лица (пустая команда для очистки), можно указать вес лица добавив его к команде. Например /me 0.7
/style
- установка картинки для стилизации (пустая команда для очистки), можно указать вес cnbkz добавив его к команде. Например /style 0.7
Используется whitelist, если whitelist в config.yaml - пустой, то доступ открыт для всех. В список добавляйте telegram uid разрешённых пользователей.
whitelist:
- uid1
- uid2
В config.yaml необходимо добавить свои строки в раздел loras
. Далее LoRA подключается добавлением в промпт #имя_LoRA
. Например #vlozhkin
. Можно указать strength - #lora_name:0.5
Формат строки LoRA: имя для бота
|имя файла модели LoRA
|strength по-умолчанию
|строка, которая будет добавлена в начало промпта
Пример:
loras:
- 'vlozhkin|vlozhkin3.safetensors|1|vlozhkin style illustration'