Система автоматической проверки наличия товаров в видеороликах с использованием технологий компьютерного зрения и глубокого обучения. Программа анализирует видеоролики и определяет, присутствуют ли в них заданные товары на основе их изображений.
- Анализ видеофайлов с извлечением ключевых кадров
- Обнаружение объектов на видео с использованием YOLO
- Сравнение обнаруженных объектов с изображениями товаров
- Определение таймкодов, на которых найдены товары
- Поддержка различных категорий товаров с настраиваемыми параметрами
- Веб-интерфейс для удобного использования
- Python 3.8 или выше
- PyTorch
- Ultralytics YOLO
- PyWebIO
- OpenCV
- PIL (Pillow)
- Scikit-learn
- ffmpeg (для скачивания и обработки видео)
git clone https://github.com/ваш-репозиторий/система-проверки-товаров.gitpip install -r requirements.txt
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126Также нужно скачать ffmpeg (https://www.ffmpeg.org/) и добавить его в PATH
Система автоматически скачивает и использует модели YOLO и EfficientNet. Модель YOLO (yolo11n.pt) должна находиться в корневой директории проекта.
Самый простой способ использования - запустить веб-интерфейс через скрипт start_app.bat (Windows) или вручную запустить:
python app.pyПосле запуска откроется браузер с веб-интерфейсом:
- Выберите папку с данными, содержащую
videos.jsonи подпапки с изображениями - Дождитесь загрузки моделей (индикатор покажет прогресс)
- Введите индекс записи для проверки или используйте пакетную проверку
Система ожидает следующую структуру данных:
videos.json- содержит информацию о видео и товарах- Папки с изображениями товаров:
images_1/{id}- основные изображенияimages_2-3/{id}- дополнительные изображенияimages_4-5/{id}- дополнительные изображения
Также можно использовать командную строку для проверки:
python test_comparison.py --index 0 --data path/to/data --debugПараметры:
--index- индекс записи в JSON-файле (по умолчанию 0)--data- путь к папке с данными--debug- включить режим отладки (сохранение промежуточных результатов)--threshold- пользовательский порог сходства (от 0.0 до 1.0)
-
Загрузка моделей:
- YOLO для обнаружения объектов на видео и изображениях
- EfficientNet для извлечения признаков и сравнения
-
Обработка видео:
- Извлечение кадров с заданной частотой
- Обнаружение объектов на каждом кадре
- Извлечение признаков для каждого объекта
-
Обработка изображений товаров:
- Анализ изображений товаров с помощью YOLO
- Извлечение признаков товаров
-
Сравнение:
- Сравнение признаков товаров с признаками объектов на видео
- Определение сходства с использованием косинусной меры
- Фильтрация результатов по порогу сходства
-
Вывод результатов:
- Отображение найденных совпадений с таймкодами
- Визуализация результатов в веб-интерфейсе
В файле test_comparison.py можно настраивать порог сходства:
CONFIDENCE_THRESHOLD- порог уверенности для YOLO (по умолчанию 0.25)IOU_THRESHOLD- порог IoU для NMS (по умолчанию 0.45)FRAME_RATE- частота извлечения кадров (кадров в секунду)
Если у вас возникают проблемы с использованием GPU:
- Проверьте установку CUDA и PyTorch с поддержкой CUDA
- Используйте функцию
clear_cudaв веб-интерфейсе для очистки кэша CUDA - При нехватке памяти GPU уменьшите параметр
MAX_IMAGE_SIZE
Для корректной работы скачивания видео убедитесь, что:
- ffmpeg установлен и доступен в PATH или в папке проекта
- Есть доступ к URL видео
- Достаточно свободного места на диске