Цели проекта
- Точно считать количество товаров на фото/видео в реальном времени.
- Поддержать обучение под конкретные SKU (бутылки, пачки, коробки).
- Работать в сложных условиях: разные ракурсы, освещение, частичное перекрытие.
- Обеспечить лёгкую интеграцию с кассой/WMS через API.
Почему это важно
- Сокращает время обслуживания
- Минимизирует ошибки персонала
- Помогает в учёте и аналитике продаж
- Удобно интегрировать в существующую инфраструктуру магазина или склада
Реализация проекта
Схема потока: Камера/Фото → Предобработка (resize, нормализация) → YOLOv8 → ByteTrack → Логика подсчёта (анти‑дубликат, таймаут трека) → Визуализация/Overlay → API‑ответ → Логи/метрики.
- Анализ задачи
Мы выяснили, что список товаров у клиента ограничен определёнными категориями (бутылки, пачки, коробки и т.д.). Это позволило сфокусироваться на распознавании конкретных классов объектов и увеличить точность.
- Выбор архитектуры
Мы использовали YOLOv8, как современную и быструю CNN-модель для детекции объектов. Альтернативы (Faster R-CNN, EfficientDet) рассматривались, но YOLOv8 показала лучшее сочетание скорости и качества для работы в реальном времени.
- Обработка изображений и видео
- Фото: детекция и подсчёт объектов на одном кадре.
- Видео: подключили трекинг с помощью ByteTrack для избежания двойного учёта одного и того же предмета при движении камеры или тележки.
- Обучение под конкретные товары
- Использовали Label Studio для разметки.
- Применили data augmentation — изменяли яркость, контраст, повороты и масштабирование, чтобы модель была устойчива к разным условиям освещённости и углам съёмки.
- Тестирование и оптимизация
- Проверяли точность на контрольных наборах данных.
- Добились высокой скорости инференса на GPU с использованием CUDA — подсчёт за доли секунды.
Ограничения и как мы их решаем
- Жёсткие окклюзии: повышаем угол камеры, доп‑кадры сверху, хард‑кейсы в датасет.
- Глянцевые поверхности/блики: корректируем экспозицию, добавляем аугментации glare.
- Схожие формы разных SKU: обучение на конкретных упаковках + контроль по цветам/текстурам.
- Движение камеры: стабилизация/кадрирование ROI, трекинг с инерцией треков.
Стек технологий
- Python + OpenCV — предобработка изображений и интеграция с камерой
- Ultralytics YOLOv8 — детекция объектов
- ByteTrack / DeepSORT — трекинг объектов в видео
- Label Studio / Roboflow — разметка данных
- FastAPI — API для интеграции с кассовым ПО и системами учёта
- CUDA — ускорение на GPU
Результат:
- Точность подсчёта по фото: 96%
- Точность по видео с трекингом: 93%
- Скорость: до 25 кадров в секунду в режиме реального времени
- Возможность масштабировать на новые типы товаров без полной переразметки — достаточно дообучения.
