2.9 KiB
Обучение детектора мозаики (аниме)
Готовых публичных моделей детекции мозаики для рисованного/аниме контента нет, поэтому обучаем свою на синтетике: берём чистые (без цензуры) кадры, случайно накладываем мозаику и получаем разметку автоматически.
1. Подготовить чистые изображения
Сложите кадры без цензуры в папку (чем разнообразнее, тем лучше; от ~500
картинок для черновой модели, тысячи — для нормальной). Кадры можно нарезать из
чистых видео — например, любым плеером или нашим извлечением (папка проекта
frames/).
2. Сгенерировать датасет
.\.venv\Scripts\Activate.ps1
python scripts\training\gen_mosaic_dataset.py --input C:\clean_frames --output dataset_mosaic --variants 3
Получите dataset_mosaic/ с images/, labels/ и data.yaml
(класс 0: mosaic, формат сегментации YOLO). Часть кадров остаётся чистыми
(негативы) — это снижает ложные срабатывания.
Полезные флаги: --neg-frac 0.2, --tile-min/--tile-max (размер плиток мозаики),
--area-min/--area-max (доля площади под мозаику), --shapes rect,ellipse.
3. Обучить
pip install -e ".[yolo]"
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121 # CUDA
python scripts\training\train_mosaic.py --data dataset_mosaic\data.yaml --epochs 100
Веса появятся в runs/segment/mosaic/weights/best.pt.
4. Подключить в приложении
Параметры → Детектор: YOLO → Обзор… и выбрать best.pt, затем
Файл → Детектировать заново. Класс mosaic маппится в CensorType.MOSAIC,
маски превращаются в контуры обводки.
Советы по качеству
- Разнообразьте источник (разные стили, сцены, освещение).
- Варьируйте размер плиток и областей (флаги выше) — мозаика в реальности разная.
- Доля негативов 15–25 % обычно хорошо снижает ложные срабатывания.
- GPU NVIDIA сильно ускоряет; на CPU обучение очень медленное.
- Дальше можно добавить классы
bar(плашки) — генератор легко расширить.