Данный проект выполнен в рамках курса "Глубокое обучение на практике" от магистратуры ITMO AI Talent Hub.
Для обучения модели был выбран датасет RTSD. Изображения получены с широкоформатного видеорегистратора, который снимает с частотой 5 кадров в секунду. Разрешения изображений от 1280×720 до 1920×1080. Фотографии были сделаны в разное время года (весна, осень, зима), в разное время суток (утро, день, вечер) и при различных погодных условиях (дождь, снег, яркое солнце). В наборе используется 155 знак дорожного движения, формат разметки - COCO.
Подробный анализ датасета (EDA) находится в файле: "EDA_Russian_traffic_signs.ipynb"
Также можно увидеть что из себя представляют изображения данного датасета:
Данные, использованные для обучения представлены с разметкой COCO. Модели YOLO требуют собственый формат представления, соответственно было выполнено преобразование данных в YOLO-формат. Для преобразования использовался скрипт JSON2YOLO, представленный на Ultralytics. Процесс конвертации - в файле prepare_data.ypinb.
Были взяты четыре модели, все они представлены в таблице ниже. Модели были запущены в одних условиях и обучены на 20 эпохах.
Metrics | YOLOv5su | YOLOv8n | YOLOv8n640 | YOLOv8s640 |
---|---|---|---|---|
precision |
0.74297 | 0.81094 | 0.72414 | 0.79494 |
recall |
0.74024 | 0.7301 | 0.63267 | 0.75753 |
mAP50 |
0.80417 | 0.81824 | 0.70368 | 0.83163 |
mAP50-95 |
0.60305 | 0.62838 | 0.51832 | 0.62737 |
- YOLO8 1280 cpu: 3ms preprocess 72ms inference 1.5 postprocess cuda: 3.5 ms preprocess 4ms inference 0.5 postprocess
- YOLO8s 640 cpu: 1ms 50ms 1ms cuda 0.5ms 4.5ms 1ms cpu - core i513600 cuda: rtx 4070ti
=======
Итоговый продукт представляет собой веб-сервис + Android приложение.
Веб-приложение позволяет загрузить видеоряд с локального ПК или с YouTube. Если на видео будет обнаружен знак дорожного движения, то в реальном времени он будет выделен bounding-box'ом с текстовой подписью номера знака из ПДД. Например:
Внешний вид интерфейса веб-сервиса
- Веб-приложение: streamlit
- Модель: YOLOv8m
Приложение позволяет в реальном времени получать информацию о знаках дорожного движения в кадре смартфона.
Демонстрация работы приложения в реальных условиях:
pip install -r requirements.txt
streamlit run app.py
После 1-го запуска установится доп библиотека. Нужно будет перезапустить сервис еще раз.
Приложение опубликовано в RuStore и доступно для загрузки по ссылке или QR-код