Implement multi-model detection in HVideoTool: updated the detection system to support multiple YOLO models simultaneously, enhancing detection capabilities. Reflected changes in the UI with a new model selection menu and updated documentation in README and CLAUDE.md to guide users on model management and configuration.
This commit is contained in:
@@ -64,10 +64,11 @@
|
||||
кадрам с детекцией ◀/▶ (`[`/`]`). На ползунке **бирюзовыми метками** отмечены кадры
|
||||
с найденной цензурой; строки списка **подсвечиваются цветом** (🔴 цензура найдена,
|
||||
🟢 проверено и чисто).
|
||||
- Детекция — через **YOLO** (модель LADA для мозаики). Порог уверенности
|
||||
настраивается прямо в тулбаре.
|
||||
- Выбор файла весов модели кнопкой **«Модель…»** (нужная модель ищется в `models/`
|
||||
автоматически при открытии проекта).
|
||||
- Детекция — через **YOLO**, **несколько моделей сразу** (как ADetailer): сложите веса
|
||||
в `models/yolo/<категория>/` (например `models/yolo/mosaic/`, `models/yolo/face/`) и
|
||||
отметьте нужные галочками в меню **«Модели»** тулбара. При расчёте кадра прогоняются
|
||||
все выбранные модели, их детекции попадают в общую таблицу и рисуются оверлеем —
|
||||
**цвет по категории-папке**. Порог уверенности — в тулбаре.
|
||||
- **Индикатор устройства** в строке состояния: «⚡ CUDA» или «🖥 CPU». Клик по «CPU»
|
||||
показывает диагностику (почему GPU не задействован) и команды установки PyTorch с
|
||||
CUDA. Если CUDA недоступна, YOLO и DeepMosaics автоматически работают на CPU
|
||||
@@ -82,8 +83,8 @@
|
||||
- **дозапуск** — «Детектировать все» пропускает уже посчитанные кадры;
|
||||
- **отказоустойчивость** — при отмене/закрытии посчитанное не теряется.
|
||||
|
||||
Кэш помечен «удостоверением» детектора (детектор + модель + порог `conf`/`imgsz`).
|
||||
Если открыть проект **другим** детектором, чужой кэш не загружается (чтобы не выдавать
|
||||
Кэш помечен «удостоверением» — **набором выбранных моделей** + `conf`/`imgsz`. Если
|
||||
открыть проект с **другим набором моделей**, чужой кэш не загружается (чтобы не выдавать
|
||||
старые результаты за текущие). Полностью пересчитать — кнопка **«Все заново»**.
|
||||
|
||||
> Ключи внутри файла — **имена файлов**, поэтому кэш переживает перемещение/
|
||||
@@ -187,19 +188,30 @@ python -m hvideotool "C:\path\to\МойПроект" --model models\lada_mosaic_
|
||||
|
||||
---
|
||||
|
||||
## Модель детектора
|
||||
## Модели детекции (мульти-YOLO)
|
||||
|
||||
Детекция — **только YOLO** (интерфейс абстрагирован в `core/detection/base.py`):
|
||||
ML-детектор на базе [Ultralytics](https://github.com/ultralytics/ultralytics)
|
||||
(`core/detection/yolo.py`), **сегментационная** модель — маски превращаются в
|
||||
контуры. Рекомендуемые веса — [**LADA mosaic detection**](https://huggingface.co/ladaapp/lada).
|
||||
Детекция — **только YOLO**, но можно держать и включать **несколько моделей сразу**
|
||||
(как ADetailer). Структура папок:
|
||||
|
||||
```
|
||||
models/yolo/
|
||||
├── mosaic/ # модель(и) детекции мозаики (LADA) — категория "mosaic", красный цвет
|
||||
├── face/ # напр. yolov8-face — категория "face", зелёный цвет
|
||||
└── <своё>/ # любая категория = имя папки = ярлык + цвет
|
||||
```
|
||||
|
||||
Каждая модель — **сегментационная** YOLO ([Ultralytics](https://github.com/ultralytics/ultralytics),
|
||||
`core/detection/yolo.py`), маски превращаются в контуры. Включайте модели галочками в
|
||||
меню **«Модели»** тулбара (там же «Добавить модель…» — скопирует `.pt` в нужную
|
||||
категорию). При расчёте кадра прогоняются **все включённые** модели, детекции
|
||||
объединяются (`core/detection/multi.py`), **цвет и ярлык — по категории-папке**.
|
||||
Рекомендуемые веса для мозаики — [**LADA mosaic detection**](https://huggingface.co/ladaapp/lada).
|
||||
(Старый эвристический classic-CV детектор и комбинированный режим удалены — давали
|
||||
много ложных срабатываний.)
|
||||
|
||||
> **⚠️ Берите правильную модель.** Для YOLO нужна модель **детекции цензуры**
|
||||
> (LADA `lada_mosaic_detection_model_v4_accurate.pt`). Если по ошибке указать
|
||||
> обычную COCO-модель (`yolo11n-seg.pt`), она будет детектить людей/предметы и
|
||||
> помечать их как `unknown` — это и есть «шум». Файл LADA лежит в `models/`.
|
||||
> **⚠️ Берите правильную модель для мозаики.** В `models/yolo/mosaic/` нужна модель
|
||||
> **детекции цензуры** (LADA `lada_mosaic_detection_model_v4_accurate.pt`). Обычная
|
||||
> COCO-модель (`yolo11n-seg.pt`) детектит людей/предметы — это «шум».
|
||||
|
||||
> **Домен важен.** Модель LADA обучена на **реальном видео** (JAV); на части
|
||||
> рисованного/аниме контента работает, на части — плохо. Хорошего публичного
|
||||
@@ -213,7 +225,7 @@ ML-детектор на базе [Ultralytics](https://github.com/ultralytics/u
|
||||
```powershell
|
||||
python scripts\training\gen_mosaic_dataset.py --input C:\clean_frames --output dataset_mosaic
|
||||
python scripts\training\train_mosaic.py --data dataset_mosaic\data.yaml --epochs 100
|
||||
# затем: тулбар → «Модель…» → runs\segment\mosaic\weights\best.pt
|
||||
# затем скопируйте runs\segment\mosaic\weights\best.pt в models\yolo\mosaic\ и включите галочкой
|
||||
```
|
||||
|
||||
Установка YOLO-детектора:
|
||||
@@ -222,10 +234,11 @@ python scripts\training\train_mosaic.py --data dataset_mosaic\data.yaml --epochs
|
||||
pip install -e ".[yolo]"
|
||||
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121
|
||||
|
||||
curl.exe -L -o models\lada_mosaic_detection_model_v4_accurate.pt `
|
||||
New-Item -ItemType Directory -Force models\yolo\mosaic | Out-Null
|
||||
curl.exe -L -o models\yolo\mosaic\lada_mosaic_detection_model_v4_accurate.pt `
|
||||
"https://huggingface.co/ladaapp/lada/resolve/main/lada_mosaic_detection_model_v4_accurate.pt?download=true"
|
||||
|
||||
python -m hvideotool --model models\lada_mosaic_detection_model_v4_accurate.pt
|
||||
python -m hvideotool # модель из models\yolo\mosaic подхватится и включится автоматически
|
||||
```
|
||||
|
||||
> **⚠️ Лицензия.** Ultralytics YOLO и веса LADA — **AGPL-3.0**; код DeepMosaics —
|
||||
@@ -239,7 +252,7 @@ python -m hvideotool --model models\lada_mosaic_detection_model_v4_accurate.pt
|
||||
hvideotool/
|
||||
├── __main__.py # точка входа + CLI (всё опционально)
|
||||
├── app.py # инициализация QApplication
|
||||
├── config.py # настройки: пороги детекции, оверлей, детектор/модель
|
||||
├── config.py # настройки: порог/оверлей, detector_models (мульти-YOLO), движок восстановления
|
||||
├── settings_store.py # дефолты новых проектов + последний/недавние → settings.json
|
||||
├── ui/
|
||||
│ ├── main_window.py # окно: список файлов | картинка | таблица детекций
|
||||
@@ -248,13 +261,15 @@ hvideotool/
|
||||
└── core/
|
||||
├── imageio.py # unicode-safe чтение/запись картинок (Windows-пути)
|
||||
├── project.py # Project: раскладка (project.json/frames/detections.json/collections) + настройки
|
||||
├── video/frame.py # Frame (картинка BGR + индекс + pts) — вход детектора
|
||||
├── detection/ # только YOLO
|
||||
├── video/frame.py # Frame (картинка BGR + индекс) — вход детектора
|
||||
├── detection/ # только YOLO, мульти-модель
|
||||
│ ├── base.py # Detector (ABC): detect(frame) -> list[Detection]
|
||||
│ ├── factory.py # build_detector(config) -> yolo
|
||||
│ ├── types.py # Detection (+ to_dict/from_dict), CensorType
|
||||
│ ├── cache.py # сохранение/загрузка кэша детекций (detections.json)
|
||||
│ └── yolo.py # YOLO-детектор (Ultralytics, маски→полигоны)
|
||||
│ ├── factory.py # build_detector -> MultiYoloDetector по выбранным моделям
|
||||
│ ├── registry.py # поиск моделей в models/yolo/<категория>/*.pt
|
||||
│ ├── multi.py # MultiYoloDetector: прогон нескольких моделей + объединение
|
||||
│ ├── types.py # Detection (+ label/категория, .display), CensorType
|
||||
│ ├── cache.py # кэш детекций (ключ = набор моделей + conf/imgsz)
|
||||
│ └── yolo.py # YOLO-детектор (Ultralytics, маски→полигоны, ярлык категории)
|
||||
└── restore/ # только DeepMosaics
|
||||
├── base.py # Restorer (ABC): restore() + restore_sequence() + .temporal
|
||||
├── factory.py # build_restorer -> deepmosaics | deepmosaics_video
|
||||
@@ -273,7 +288,7 @@ hvideotool/
|
||||
| Язык | Python ≥ 3.11 |
|
||||
| GUI | PySide6 (Qt 6) |
|
||||
| Обработка картинок | OpenCV / NumPy |
|
||||
| Детектор | Ultralytics YOLO + PyTorch/CUDA (веса LADA) |
|
||||
| Детектор | Ultralytics YOLO, мульти-модель (models/yolo/<кат>) |
|
||||
| Расцензуривание | DeepMosaics (встроен) + PyTorch/CUDA |
|
||||
|
||||
## Лицензия
|
||||
|
||||
Reference in New Issue
Block a user