Инстанс-сегментация 5-ти книг в домашних условиях с использованием YOLOv8 разных размеров. Разметка выполнена в Label Studio, запущеном в docker-контейнере и экспортирована в формате YOLO.
| ID | Название |
|---|---|
| 0 | Etyud v bagrovykh tonakh |
| 1 | Golaya obezyana |
| 2 | Logika |
| 3 | Neposlushnoye ditya biosfery |
| 4 | Summa tekhnologii |
- 190 изображений 5-ти классов книг, размеченных в Label Studio.
- Сплиты: 152 train / 19 val / 19 test (80 / 10 / 10)
- Формат меток: YOLO segmentation —
class_id x1 y1 x2 y2 ... xn yn(нормализованные координаты)
Три модели YOLOv8 segmentation обучены на 50 эпохах на одних и тех же данных.
Результаты на тестовом наборе:
| Модель | Mask mAP50 | Mask mAP50-95 | Recall | Precision |
|---|---|---|---|---|
| yolov8n-seg | 0.930 | 0.913 | 0.867 | 0.973 |
| yolov8s-seg | 0.947 | 0.947 | 0.967 | 0.939 |
| yolov8m-seg | 0.966 | 0.918 | 0.967 | 0.953 |
Выводы (IoU=default, conf=default):
- yolov8s-seg лидирует по mAP50-95, хотя yolov8m-seg лучше находит объекты.
- yolov8n-seg пропускает примерно 13% книг, что довольно много.
- Если смотреть метрики по классам, то все модели имеют просадку даже по mAP50 на классах "Golaya obezyana" и "Neposlushnoye ditya biosfery" (может свидетельствовать об ошибках в разметке).
books-segmentation/
├── raw_data/ # Экспорт из Label Studio
│ ├── images/
│ ├── labels/
│ └── classes.txt
├── data/ # Разбивка train/val/test
│ ├── images/{train,val,test}/
│ └── labels/{train,val,test}/
├── configs/
│ └── dataset.yaml # Конфиг датасета
├── test_video/ # Тестовое видео и результаты инференса
├── runs/ # Результаты обучения
├── main.ipynb # EDA, обучение, оценка, инференс и трекинг
├── requirements.txt
└── README.md
pip install ultralytics opencv-python torch
