Что такое yolo v5
YoloV5 для распознавания марок автомобилей
Введение
Недавно был опубликован анонс новой YOLOv5, которая идейно дает гораздо лучший процент распознавания на датасете COCO, чем предыдущие версии. Автор решил испробовать новую модель на задаче распознавания марок автомобилей.
Данные
Предобработка
Поскольку labelImg использует формат Pascal VOC и пишет разметку в XML-файлы, а YOLOv5 использует TXT-файлы со строками следующего формата: «номер-класса x-центра y-центра width height», все нормированное на единицу, — мы должны преобразовать разметку к этому формату. Помещаем фотографии в директорию CAR_BRANDS/ и пишем код для преобразования:
Мы будем загонять в нейросеть фото размера (416, 416), поэтому следующая функция поможет нам их отресайзить:
Аугментация
Для аугментации был использован ресурс roboflow, однако вы можете пользоваться любым доступным вам методом аугментации. Фото были размножены до количества 4130, типы аугментации — Crop, Brightness, Exposure, Noise. Итоговые файлы были разделены на трейн, валидацию и тест в соотношении 7:2:1.
Обучение
Скачаем YOLOv5 с ее репозитория на гитхабе и установим requirements:
Информация о данных будет храниться в файле data.yaml. Создадим этот файл со следующим содержанием:
где train — путь до директории, содержащей изображения для трейна, valid — валидационные изображения, nc — количество классов, names — имена классов. Также необходимо положить архитектуру в директорию yolov5/models/. Возьмем за основу архитектуру yolov5s.yaml и поместим в custom_yolov5s.yaml следующую информацию:
Теперь можно приступить к обучению. Перейдем в yolov5/:
и обучим нашу модель:
Результаты
Для того, чтобы протестировать модель, вводим следующее:
При желании можно увеличить или уменьшить значение параметра conf — это позволит отбирать предсказания с вероятностью, большей, чем указано в conf.
И, напоследок, посмотрим повнимательнее на процесс обучения. Во время обучения YOLOv5 делает с фотографиями нечто подобное:
Алгоритм YOLO простым языком
Jun 24 · 4 min read
Что такое YOLO? Эта аббревиатура расшифровывается как “You Only Look Once” (“Стоит только раз взглянуть”). YOLO — современный алгоритм глубокого обучения, который широко используется для обнаружения объектов. Он был разработан Джозефом Редмоном и Али Фархади в 2016 году.
Чем YOLO отличается от других алгоритмов глубокого обучения для обнаружения объектов?
Основное отличие YOLO от других алгоритмов сверточной нейронно й сети (CNN), используемых для обнаружения объектов, заключается в том, что он очень быстро опознает объекты в режиме реального времени. Принцип работы YOLO подразумевает ввод сразу всего изображения, которое проходит через сверточную нейронную сеть только один раз. Именно поэтому он называется “Стоит только раз взглянуть”. В других алгоритмах этот процесс происходит многократно, то есть изображение проходит через CNN снова и снова. Так что YOLO обладает преимуществом высокоскоростного обнаружения объектов, чем не могут похвастать другие алгоритмы.
Представьте себе автомобиль, оснащенный функцией самостоятельного вождения, который использует обычный алгоритм обнаружения объектов сети CNN. Если алгоритм заметит впереди препятствие, машина затормозит сама. Но в данном случае все будет происходить медленно, и алгоритм увидит объект-препятствие довольно поздно. Это может привести к аварии. Теперь представьте себе ту же ситуацию с YOLO. На этот раз автомобиль оснащен алгоритмом YOLO и остановится как раз вовремя, так как очень быстро обнаружит препятствие в режиме реального времени.
Как работает YOLO?
Алгоритм YOLO был обучен на определенном типе набора данных, который состоит из 80 различных типов классов (см. ниже):
Алгоритм YOLO способен обнаруживать все эти 80 видов объектов на изображении. Он также может быть специально обучен, чтобы легко находить новые объекты. Набор данных, который использовался для обучения обнаружения 80 классов объектов, известен под названием “Coco”.
Мы расскажем о работе алгоритма YOLO очень кратко и просто, так как эта статья предназначена для новичков!
Сначала изображение, которое вводится в сеть, разделяется на секции. Возьмем для примера матрицу-сетку 3×3.
Итак, этому изображению был дан формат матрицы размером 3×3. На данном фото в общей сложности 9 секций. Каждая из них имеет определенные параметры. Если мы допустим, что общее количество классов, которые мы ищем на рисунке, равно 3 (предположительно это будут человек, автомобиль и самолет), то каждая секция будет иметь в общей сложности 8 параметров. Но почему именно 8? Потому что каждая секция содержит 5 параметров и три параметра класса. Эти 5 параметров перечислены ниже:
Чтобы комментировать эти параметры, нам нужно знать, что такое ограничивающие рамки. При подготовке обучающих данных мы должны выделить объект, который хотим обнаружить на изображении. Делаем мы это с помощью ограничивающих рамок. Как правило, они представляют собой квадраты или прямоугольники, которые выделяют определенную часть изображения (как на примере ниже):
В данном случае нам нужно обнаружить автомобили, поэтому мы помещаем ограничивающие рамки вокруг всех автомобилей, присутствующих на нем. Теперь нам необходимо узнать значения 5 параметров в каждой секции в матрице 3×3. Ниже представлена фотография отдельной секции, в которой есть автомобиль.
Красная точка в середине обозначает центр ограничивающей рамки. Горизонтальная синяя стрелка — это параметр “tx” (расстояние между красной точкой и самой левой частью этой секции). Вертикальная синяя стрелка — это “ty” (расстояние между красной точкой и самой верхней частью секции). Горизонтальная белая стрелка — это ширина ограничительной рамки по отношению к секции (параметр “tw”). Вертикальная белая стрелка обозначает высоту ограничивающей рамки по отношению к секции и указывается как “th”.
Параметр “po”, также известный как индекс объектности, выражает вероятность успешного обнаружения объекта в ограничивающей рамке. И да, вы угадали, значение 0,99 на первой картинке этой статьи— индекс объектности, указывающий на наличие лица в ограничивающей рамке, которая его окружает. Индексы “p1”, “p2” и “p3” говорят нам о вероятности того, что этот объект окажется человеком, автомобилем или самолетом соответственно. Все 9 секций, присутствующих в матрице 3×3, имеют эти 8 параметров, и именно они помогают алгоритму YOLO точно обнаружить объект.
Заключение
Работа алгоритма YOLO по корректному обнаружению объектов не обходится без некоторых сложностей. Здесь мы просто хотели дать вам краткое представление о его функционировании простым языком.
Детекция объектов с помощью YOLOv5
Введение
Иногда возникает необходимость быстро сделать кастомную модель для детекции, но разбираться в специфике компьютерного зрения и зоопарке моделей нет времени. Так появился краткий обзор проблемы детекции, и пошаговый туториал для обучения и инференса модели YOLOv5 в сервисе Google Colab.
Архитектура
Сеть скейлит исходное изображение в несколько feature map‘ов с использованием skip-connection и прочих архитектурных фишек. Полученные карты признаков приводятся в одно разрешение с помощью апсемплинга и конкатенируются. Затем предсказываются классы и bounding box‘ы для объектов, далее для каждого объекта выбирается самый вероятный bounding box с помощью Non-Maximum Suppression. Подробнее можно почитать на Medium. Да, статья на Medium про YOLOv4, но отличие v5 только в том, что v5 реализована на pytorch.
Реализация
За основу взят репозиторий ultralytics.
Установка
Структура датасета
Файлы изображений и меток разделены по разным папкам, в корне лежит файл конфигурации yaml, который имеет следующий формат:
Разметка
Разметка осуществляется в следующем формате:
Label_ID_1 X_CENTER_NORM Y_CENTER_NORM WIDTH_NORM HEIGHT_NORM
Значения для каждого bounding box’а вычисляются следующим образом:
Для разметки можно использовать программу LabelImg.
Обучение
Обучение производится с помощью скрипта train.py с ключами:
Существуют и другие настройки, о них можно почитать на странице проекта.
Инференс
Запустить модель можно несколькими способами:
Скрипта detect.py указав веса модели и файл для детекции
Результаты
Видно, что есть и пропуски, и ошибки распознавания, но сетка училась на сотне примеров из поисковой выдачи гугла, так что с ростом количества данных должно расти и качество предсказания.
Заключение
Код для запуска и пример датасета доступен в репозитории на github. Исправления и дополнения приветствуются.
YOLOv5: state-of-the-art модель для распознавания объектов
YOLOv5 — обновленная версия YOLO, state-of-the-art модели для распознавания объектов в реальном времени. YOLOv5 выдает предсказания со скоростью 140 кадров в секунду.
Эволюция YOLO моделей
YOLO (You Only Look Once) — это семейство моделей, которые стали популярны благодаря легковесности и качеству предсказаний. Такие характеристики позволяю использовать YOLO для задач распознавания объектов в реальном времени и на портативных устройствах.
Сравнение YOLO моделей с state-of-the-art
YOLOv2 и YOLOv3 версии YOLO последовательно улучшали качество и скорость предсказаний. В апреле 2020 представили четвертую версию модели YOLOv4. Улучшению качества YOLOv4 способствовали изменения в аугментации данных и архитектуре модлеи.
Чем отличается YOLOv5
Релиз YOLOv5 включается в себя 5 моделей разных размеров: YOLOv5s (самая маленькая), YOLOv5m, YOLOv5l, YOLOv5x (самая большая).
YOLOv5 — это первая модель из семейства YOLO, которую писали на PyTorch. Предыдущие модели были написаны на Darknet, фреймворке создателя архитектуры. Darknet проигрывает PyTorch в контексте производительности и возможностям конфигурации моделей. Имплементация модели на PyTorch позволяет пользоваться преимуществами фреймворка: поддержка и деплой модели.
В Colab ноутбуке с Tesla P100 YOLOv5 модель выдает предсказания на инференсе со скоростью 0.007 секунд за изображение. Это равноценно 140 кадрам в секунду. Для сравнения YOLOv4 работает на инференсе со скоростью 50 кадров в секунду.
По результатам тестирования на датасете BCCD, модель выдает предсказания с 0.895 mAP после обучения за 100 эпох. При этом веса модели весят около 27 мегабайт. У YOLOv4 файл с весами весит 244 мегабайта. YOLOv5 меньше, чем YOLOv4, примерно на 90%.
Что такое yolo v5
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.
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 export your custom datasets directly to YOLOv5 for training with Roboflow |
YOLOv5-P5 640 Figure (click to expand)
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!
For YOLOv5 bugs and feature requests please visit GitHub Issues. For business inquiries or professional support requests please visit https://ultralytics.com/contact.
About
YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite