Данный pet-project нацелен на реализацию детекции и распознавания дорожных знаков на изображениях.
За основу взят датасет с фотографиями дорожной сцены, координатами и типами дорожных знаков.
Датасет содержит синтетические и реальные изображения, 15 типов дорожных знаков, а также разбиение на тренировочные, тестовые и валидационные данные. Каждое изображение в датасете имеет размер 416x416 пикселей.
Были использованы такие пакеты:
- PyTorch Lightning для дообучения YOLOv8n с использованием встроенных аугментаций
- TensorRT и PyCUDA для оптимального инференса модели в FP16
- MLflow для логгирования экспериментов
- Docker, conda и poetry для создания воспроизводимой среды, управления окружениями и зависимостями
- DVC для возможности версионирования датасета
- hydra для управления конфигами
- pre-commit для контроля за качеством кода
- fire для удобного создания CLIs
Todo:
- Реализовать квантизацию модели
- Добавить замеры влияния на скорость/качество квантизации и TRT инференса
- Добавить визуализацию ONNX графа в netron.app
- Добавить покрытие тестами
git clone https://github.com/Gaussiandra/traffic-signs-detection.git
cd traffic-signs-detection/
docker-compose build
docker-compose up -d
docker attach tsd_model
conda activate dev
cd tsd/
dvc pull
python commands.py train_model detector/configs/base_config_64.yaml
И затем следить за обучением на localhost:5000
python commands.py convert_to_onnx detector/configs/base_config_64.yaml checkpoints/train-exp/epoch\=00-val_loss\=62.7809.ckpt model.onnx
python commands.py convert_to_trt model.onnx engine.trt
python commands.py benchmark_torch detector/configs/base_config_64.yaml checkpoints/train-exp/epoch\=00-val_loss\=62.7809.ckpt your_photo.png
python commands.py benchmark_trt detector/configs/base_config_64.yaml engine.trt your_photo.png