Аппаратное обеспечение:
- 2 камеры со скользящим затвором (без глобального затвора)
- Макс. 90 кадров в секунду при разрешении 1920×??? разрешение (потоки RTSP)
- ЦП: Core i3 7100 (без выделенного графического процессора)
- OpenCV + PyTorch (YOLOv5-n для обнаружения номеров, специальный YOLO для символов)
- Flask API для обслуживания последнего обнаруженного номера
- MySQL для хранения транспортных средств/журналов
- Многопоточный захват видео (Vidgear CamGear)
- Захват RTSP-потоков (камеры входа/выхода)
- Пропуск кадров на основе Processing_interval (для снижения нагрузки)
- Предварительная обработка: изменение размера, обрезка нижней области (вход), выравнивание гистограммы Y-канала
- Сначала Модель YOLO обнаруживает ограничивающую рамку пластины
- Обрезать пластину → вторая модель YOLO распознает символы
- Результат анализа (преобразованы персидские символы)
- Для камеры выхода: запросить в базе данных открытый журнал записей и обновить время выхода
Обнаружение отстает от прямой трансляции. С камерами 90 FPS мне приходится пропускать много кадров(
Код: Выделить всё
processing_interval=5Что я пробовал:
- Пропуск кадров
- Понижение входного разрешения (макс. ширина 960 пикселей)
- Потоковая обработка для обнаружения отдельно от захвата
- YOLOv5-n (самая облегченная версия)
Учитывая мои аппаратные ограничения (только процессор, камеры с рольставнями), каковы наилучшие стратегии для улучшения производительности, близкой к реальному времени?
Мне не нужно полное обнаружение 90 кадров в секунду, но я хочу, чтобы система работала в режиме реального времени (макс. задержка 2–3 секунды). В настоящее время задержки под нагрузкой могут достигать 10+ секунд.
Подробнее здесь: https://stackoverflow.com/questions/798 ... ion-system
Мобильная версия