Генерация и правка гибридных подписей (booru-теги + описание естественным языком) для датасетов обучения LoRA — локально, через ваши vision-модели.
Чтобы обучить LoRA или файнтюн, рядом с каждой картинкой нужен текстовый файл с
описанием: cat.jpg → cat.txt. На сотнях изображений писать это руками — долгий
монотонный вечер.
Tag Manager создаёт подписи за вас: показываете ему папку — он прогоняет её через локальную vision-модель и пишет капшены по вашему промпту. Когда датасет готов, те же файлы можно массово отредактировать: поправить теги, добавить триггер-слово, пройтись по галерее.
Работает полностью локально. Достаточно поднять свою vision-модель с OpenAI-совместимым API.
- Генерация подписей через локальную VLM (OpenAI-совместимый API)
- Гибридный формат: booru-теги + описание естественным языком
- Безопасное обновление уже готовых капшенов (дополнить / перегенерить + мёрж, защита ручных правок)
- Массовое редактирование и чистка тегов (дубли, пробелы, регистр) — с предпросмотром и бэкапом
.bak - Стоп-лист тегов: автоудаление нежелательных тегов при генерации и массовое применение к датасету
- Триггер-слово во всём датасете разом
- Галерея с поиском по тегу, ручной правкой, перегенерацией выбранных и удалением
- Аудит датасета перед обучением: битые файлы, дубли, сироты, проблемные капшены
- История массовых операций с откатом последнего действия
- Экспорт dataset-конфига для тренера (OneTrainer JSON / kohya TOML)
- ETA и скорость генерации, браузерное уведомление по завершении
- Пауза и докачка на долгих прогонах
WD14 генерирует только booru-теги. Некоторые современные модели (например Anima) лучше работают на смешанных подписях: теги + описание естественным языком. Tag Manager позволяет получать такие подписи через VLM и затем удобно их редактировать.
- Python 3.10+
- Запущенный сервер с vision-моделью и OpenAI-совместимым API. Проверено с oobabooga и llama.cpp. Подойдёт любая мультимодальная модель: Gemma (MoE), Qwen2.5-VL, LLaVA, Pixtral, MiniCPM-V, Llama 3.2 Vision — что выбрать, см. FAQ.
Модель вы запускаете сами — например, в oobabooga на вкладке Model. Tag Manager её не грузит: просто подключается к уже работающему OpenAI-совместимому API. Обычная текстовая модель не подойдёт — она проигнорирует изображение. Если вы вообще не запускали локальные модели — начните с FAQ, там всё расписано по шагам.
git clone https://github.com/OrcPoin/tag-manager.git
cd tag-manager
pip install -r requirements.txt
streamlit run app.pyНа Windows можно вместо последней команды дважды кликнуть run.bat. Обновиться до
свежей версии — двойной клик по update.bat (нужен установленный git).
- В сайдбаре укажите адрес API (например
http://127.0.0.1:5000/v1) и имя модели, нажмите «Проверить соединение». - Выберите папку с картинками, режим обработки и промпт (есть готовые пресеты).
- При желании задайте триггер-слово — оно встанет первой строкой каждого
.txt. - Нажмите «Запустить».
Генерация идёт в фоне, поэтому интерфейс не виснет даже на долгих прогонах: обработку
можно поставить на паузу и править капшены вручную. Прогресс пишется в progress.json —
можно прервать и продолжить позже; в режиме докачки приложение доделает только
незавершённые файлы.
Когда датасет готов, вкладки «Теги» и «Галерея» дают навести порядок: посмотреть
частоты тегов, массово поправить их (с предпросмотром и .bak), проставить триггер,
пробежать по галерее с поиском по тегу. Правки трогают только тег-строки — проза и
скобочные блоки персонажей не портятся. Перед самим обучением вкладка «Здоровье»
покажет битые файлы, дубли, сироты и слабые капшены, а лишнее уберёт в карантин.
Формат задаёте вы промптом. Дефолтный пресет даёт гибрид «теги + проза», удобный для style-LoRA:
1girl, blue hair, smile, school uniform, outdoors, day
A medium shot with the subject centered.
(blue hair, on the left: she waves at the viewer, smiling.)
Такой формат хорошо подходит для моделей, понимающих одновременно booru-теги и описание сцены.
Массовые операции понимают этот формат и правят только строку тегов, не задевая прозу.
Не запускал локальные модели. С чего начать?
Tag Manager сам модель не запускает — он подключается к уже работающему серверу. Поэтому сначала поднимаете сервер с vision-моделью, потом вписываете его адрес в сайдбар.
Нужны три вещи:
- Сервер — держит модель в памяти и отвечает по сети. Либо
llama-serverиз llama.cpp (запуск из консоли), либо oobabooga (всё мышкой). Новичку проще oobabooga. - Файлы модели — для vision-моделей обычно два GGUF: сама модель и
mmproj-*.gguf(«глаза» модели). Подробнее — в пункте про mmproj. - Адрес API — сервер слушает порт, например
http://127.0.0.1:5000/v1. Этот адрес и вписываете, потом жмёте «Проверить соединение».
Дальше — инструкции для oobabooga и llama.cpp ниже, выбор модели — там же.
Запуск через oobabooga (проще для новичка)
Модель грузится и настраивается мышкой, MoE и mmproj подхватываются сами.
- Установите oobabooga по инструкции (есть установщик в один клик для Windows).
- Положите файлы модели в
text-generation-webui/models/— саму модель иmmproj-*.ggufрядом. - Вкладка Model → выберите модель → Load.
- Включите API: вкладка Session → галочка
openai(или запуск с--api). Порт по умолчанию —5000. - В сайдбаре Tag Manager впишите
http://127.0.0.1:5000/v1и нажмите «Проверить соединение». Имя модели подтянет кнопка 🔄.
Запуск через llama.cpp (один бинарник)
Легче по ресурсам, но модель и её «глаза» подключаете сами в командной строке. Скачайте
llama.cpp, GGUF модели и её
mmproj-*.gguf, затем:
llama-server -m model.gguf --mmproj mmproj-model.gguf --port 5000 -ngl 99--mmproj— файл-проектор для vision. Без него картинки не работают (см. пункт про mmproj).--port 5000— порт, его же вписываете в Tag Manager как.../5000/v1.-ngl 99— слоёв на видеокарту (99 = всё; уменьшите, если не хватает VRAM).
Что такое mmproj.gguf и зачем он нужен?
Без него vision-модель не видит картинки — это самая частая причина, почему «ничего не работает».
Мультимодальная GGUF-модель — это обычно два файла: сама модель (model.gguf) и отдельный
проектор зрения mmproj-*.gguf. Лежат они в одной репе на HuggingFace, но качать надо оба.
Скачаете только основной — модель запустится как текстовая и картинки проигнорирует.
- В llama.cpp проектор подключается флагом
--mmproj mmproj-model.gguf. - В oobabooga достаточно положить
mmproj-*.ggufв папку с моделью — подхватится сам.
Какую модель выбрать?
Нужна мультимодальная (vision) модель — текстовая проигнорирует картинку.
Сам использую Gemma в MoE-версии (gemma-4-26B-A4B-it-UD-Q4_K_M.gguf) для качественных
описаний на английском. MoE (Mixture of Experts) значит, что из 26B параметров на каждый
токен работает лишь часть — по скорости и аппетиту к VRAM модель ближе к маленькой, а по
качеству к большой. В oobabooga MoE настраивается автоматически; в llama.cpp хватает
обычной команды запуска.
Если нужны только теги, без описания — берите WD14, а не VLM (см. «Почему не WD14»). Сила Tag Manager — в связке «теги + проза».
Альтернативы, если Gemma не подошла:
- Qwen2.5-VL — очень детальная, читает текст на картинке, размеры 3B/7B/72B. Плотная (не MoE), крупные версии тяжелее для VRAM.
- MiniCPM-V — лёгкая и быстрая, для слабых машин; на сложных сценах уступает.
- Pixtral — хорошо «понимает сцену» целиком, но прожорлива по памяти.
- LLaVA — классика с кучей гайдов, но постарше и слабее в деталях.
- Llama 3.2 Vision — стабильная, средняя по детальности тегов.
Берите столько параметров, сколько влезает в VRAM с запасом. И mmproj нужен для конкретной модели свой.
Какие режимы обработки бывают?
В выпадающем списке «Режим обработки» на вкладке генерации:
- Докачать — пропустить то, что уже сделано этим приложением (по реестру). Безопасный
дефолт: чужие старые
.txtне считаются «готовыми». - Все файлы — перезаписать всё заново.
- Только без капшенов — обработать файлы, у которых вообще нет
.txt. - Пропускать по дате — пропустить, если
.txtновее картинки. - Обновить существующие — умный повторный прогон, см. следующий пункт.
Как работает режим «Обновить существующие»?
Режим для доработки уже готовых капшенов без потери ручных правок. Можно запускать повторно — если ничего не изменилось, файлы не будут перезаписаны.
Механизм — как получить новый текст:
- Дополнить существующий — модель видит картинку И старый капшен, отвечает только недостающим/неверным. Быстрее и дешевле, хорош для дополнения тегов.
- Полная регенерация + мёрж — модель генерит капшен с нуля, затем приложение автоматически сливает старый и новый по стратегиям ниже.
Стратегия тегов — что делать с тег-строкой:
- Добавить недостающие — к старым тегам дописываются те, что есть в новом капшене, но отсутствуют в старом. Дубли не появятся.
- Заменить теги новыми — тег-строка берётся целиком из нового капшена.
- Оставить старые теги — теги не трогаются.
Стратегия прозы — что делать с описательными блоками (COMPOSITION / CHARACTERS и т.д.):
- Сохранить старую прозу — проза остаётся как есть (безопасный дефолт).
- Взять новую прозу — проза заменяется из нового капшена.
Политика ручных правок — если вы редактировали .txt вручную после генерации:
- Не трогать — файл пропускается целиком (дефолт).
- Только дополнить теги — дописать недостающие теги, прозу не менять.
- Отложить на ручной просмотр — файл попадёт в список для проверки.
- Обновлять как обычно — правки не защищены.
Фильтры — какие файлы вообще попадают в обновление:
- Устаревший промпт — капшен сделан другим промптом, чем текущий.
- Сменилась модель — капшен сделан другой моделью.
- Плохое качество — капшен не проходит проверку качества.
- Все файлы — обновить всё, что имеет
.txt.
Перед записью рядом с каждым файлом создаётся .bak.
Генерация идёт 8–10 минут — это нормально?
Для thinking-моделей на сложных сценах — да. Таймаут и Max tokens в config.py подняты
с запасом, чтобы длинный, но корректный анализ не обрывался. Простые картинки — быстрее.
Испортил теги массовой правкой. Как откатить?
Перед каждой массовой операцией рядом с файлом создаётся .bak. Вкладка «Теги» →
под-вкладка «История» — там список последних операций и кнопка «Откатить последнюю»,
которая вернёт .txt из бэкапа. Если после операции был ещё один прогон — .bak
перезаписан и откат невозможен.
Что такое стоп-лист тегов?
Файл stoplist.txt (один тег на строку, # = комментарий). Теги из стоп-листа
автоматически удаляются из каждого капшена при генерации. Можно также применить стоп-лист
к уже готовому датасету массово (вкладка «Теги»). Редактируется в сайдбаре.
Где хранятся настройки и пресеты?
В папке приложения: settings.json, presets.json, лог — processing_log.txt. Все
локальные, в репозиторий не попадают.
MIT © OrcPoin




