Yolo v5 описание
Иногда возникает необходимость быстро сделать кастомную модель для детекции, но разбираться в специфике компьютерного зрения и зоопарке моделей нет времени. Так появился краткий обзор проблемы детекции, и пошаговый туториал для обучения и инференса модели YOLOv5 в сервисе Google Colab.
Результаты
Видно, что есть и пропуски, и ошибки распознавания, но сетка училась на сотне примеров из поисковой выдачи гугла, так что с ростом количества данных должно расти и качество предсказания.
Заключение
Код для запуска и пример датасета доступен в репозитории на github. Исправления и дополнения приветствуются.
Архитектура
YOLOv5 относится к архитектуре One-Stage detector - подход, который предсказывает координаты определённого количества bounding box'ов с результатами классификации и вероятности нахождения объекта, и в дальнейшем корректируя их местоположение. В целом такую архитектуру можно представить в следующем виде:
Сеть скейлит исходное изображение в несколько feature map'ов с использованием skip-connection и прочих архитектурных фишек. Полученные карты признаков приводятся в одно разрешение с помощью апсемплинга и конкатенируются. Затем предсказываются классы и bounding box'ы для объектов, далее для каждого объекта выбирается самый вероятный bounding box с помощью Non-Maximum Suppression. Подробнее можно почитать на Medium. Да, статья на Medium про YOLOv4, но отличие v5 только в том, что v5 реализована на pytorch.
Реализация
За основу взят репозиторий ultralytics.
Структура датасета
Файлы изображений и меток разделены по разным папкам, в корне лежит файл конфигурации yaml, который имеет следующий формат:
Обучение
Обучение производится с помощью скрипта train.py с ключами:
--data , путь к датасету
--img , разрешение картинки
--epochs , количество эпох - рекомендуется 300-500
--cfg , конфиг размера s/m/l
--weights , стартовые веса
Существуют и другие настройки, о них можно почитать на странице проекта.
После обучения можно сохранить лучшую модель, которая расположена в ../yolov5/runs/train/exp/weights/best.pt
Установка
Инференс
Запустить модель можно несколькими способами:
Скрипта detect.py указав веса модели и файл для детекции
Кастомная функция predict на основе detect.py , которую можно найти в репозитории.
Чем отличается YOLOv5
Релиз YOLOv5 включается в себя 5 моделей разных размеров: YOLOv5s (самая маленькая), YOLOv5m, YOLOv5l, YOLOv5x (самая большая).
В Colab ноутбуке с Tesla P100 YOLOv5 модель выдает предсказания на инференсе со скоростью 0.007 секунд за изображение. Это равноценно 140 кадрам в секунду. Для сравнения YOLOv4 работает на инференсе со скоростью 50 кадров в секунду.
По результатам тестирования на датасете BCCD, модель выдает предсказания с 0.895 mAP после обучения за 100 эпох. При этом веса модели весят около 27 мегабайт. У YOLOv4 файл с весами весит 244 мегабайта. YOLOv5 меньше, чем YOLOv4, примерно на 90%.
- Open with Desktop
- View raw
- Copy raw contents Copy raw contents
Copy raw contents
Copy raw contents
YOLOv5 🚀 is a family of object detection architectures and models pretrained on the COCO dataset, and represents Ultralytics open-source research into future vision AI methods, incorporating lessons learned and best practices evolved over thousands of hours of research and development.
See the YOLOv5 Docs for full documentation on training, testing and deployment.
Inference with YOLOv5 and PyTorch Hub. Models automatically download from the latest YOLOv5 release.
detect.py runs inference on a variety of sources, downloading models automatically from the latest YOLOv5 release and saving results to runs/detect .
Run commands below to reproduce results on COCO dataset (dataset auto-downloads on first use). Training times for YOLOv5s/m/l/x are 2/4/6/8 days on a single V100 (multi-GPU times faster). Use the largest --batch-size your GPU allows (batch sizes shown for 16 GB devices).
Get started in seconds with our verified environments. Click each icon below for details.
Weights and Biases | Roboflow ⭐ NEW |
---|---|
Automatically track and visualize all your YOLOv5 training runs in the cloud with Weights & Biases | Label and automatically export your custom datasets directly to YOLOv5 for training with Roboflow |
YOLOv5-P5 640 Figure (click to expand)
- COCO AP val denotes [email protected]:0.95 metric measured on the 5000-image COCO val2017 dataset over various inference sizes from 256 to 1536.
- GPU Speed measures average inference time per image on COCO val2017 dataset using a AWS p3.2xlarge V100 instance at batch-size 32.
- EfficientDet data from google/automl at batch size 8.
- Reproduce by python val.py --task study --data coco.yaml --iou 0.7 --weights yolov5n6.pt yolov5s6.pt yolov5m6.pt yolov5l6.pt yolov5x6.pt
We love your input! We want to make contributing to YOLOv5 as easy and transparent as possible. Please see our Contributing Guide to get started, and fill out the YOLOv5 Survey to send us feedback on your experiences. Thank you to all our contributors!
YOLOv5 🚀 is a family of object detection architectures and models pretrained on the COCO dataset, and represents Ultralytics open-source research into future vision AI methods, incorporating lessons learned and best practices evolved over thousands of hours of research and development.
See the YOLOv5 Docs for full documentation on training, testing and deployment.
Inference with YOLOv5 and PyTorch Hub. Models automatically download from the latest YOLOv5 release.
detect.py runs inference on a variety of sources, downloading models automatically from the latest YOLOv5 release and saving results to runs/detect .
Run commands below to reproduce results on COCO dataset (dataset auto-downloads on first use). Training times for YOLOv5s/m/l/x are 2/4/6/8 days on a single V100 (multi-GPU times faster). Use the largest --batch-size your GPU allows (batch sizes shown for 16 GB devices).
Get started in seconds with our verified environments. Click each icon below for details.
Weights and Biases | Roboflow ⭐ NEW |
---|---|
Automatically track and visualize all your YOLOv5 training runs in the cloud with Weights & Biases | Label and automatically export your custom datasets directly to YOLOv5 for training with Roboflow |
YOLOv5-P5 640 Figure (click to expand)
- COCO AP val denotes [email protected]:0.95 metric measured on the 5000-image COCO val2017 dataset over various inference sizes from 256 to 1536.
- GPU Speed measures average inference time per image on COCO val2017 dataset using a AWS p3.2xlarge V100 instance at batch-size 32.
- EfficientDet data from google/automl at batch size 8.
- Reproduce by python val.py --task study --data coco.yaml --iou 0.7 --weights yolov5n6.pt yolov5s6.pt yolov5m6.pt yolov5l6.pt yolov5x6.pt
We love your input! We want to make contributing to YOLOv5 as easy and transparent as possible. Please see our Contributing Guide to get started, and fill out the YOLOv5 Survey to send us feedback on your experiences. Thank you to all our contributors!
Разметка
Разметка осуществляется в следующем формате:
Label_ID_1 X_CENTER_NORM Y_CENTER_NORM WIDTH_NORM HEIGHT_NORM
Для каждого изображения <image_name>.jpg создается файл <image_name>.txt с разметкой.
Значения для каждого bounding box'а вычисляются следующим образом:
Для разметки можно использовать программу LabelImg.
Эволюция YOLO моделей
Сравнение YOLO моделей с state-of-the-art
YOLOv2 и YOLOv3 версии YOLO последовательно улучшали качество и скорость предсказаний. В апреле 2020 представили четвертую версию модели YOLOv4. Улучшению качества YOLOv4 способствовали изменения в аугментации данных и архитектуре модлеи.
Читайте также: