YOLOv6: обнаружение объектов нового поколения — обзор и сравнение

Область компьютерного зрения быстро развивалась в последние годы и достигла результатов, которые несколько лет назад казались научной фантастикой. От анализа рентгеновских снимков и диагностики пациентов до (полу)автономных автомобилей — мы наблюдаем грядущую революцию. Эти прорывы имеют много причин — создание лучших и более доступных вычислительных ресурсов, а также тот факт, что они ближе всего к науке данных с открытым исходным кодом (OSDS). Предоставление исходного кода сообществу раскрывает мудрость толпы и позволяет внедрять инновации и решать проблемы в масштабе.

Одним из самых популярных проектов ОС в области компьютерного зрения является YOLO (You Only Look Once). YOLO — это эффективный алгоритм обнаружения объектов в реальном времени, впервые описанный в основополагающей статье 2015 года Джозефа Редмона и др. YOLO делит изображение на систему сеток, и каждая сетка обнаруживает объекты внутри себя. Его можно использовать для логического вывода в реальном времени, и он требует очень мало вычислительных ресурсов.

Сегодня, спустя 7 лет после выпуска первой версии YOLO, исследовательская группа Meituan опубликовала новую модель YOLOv6 — и она готова надрать **!

История ЙОЛО

Обнаружение объектов до YOLO

До YOLO в этой области доминировала двухэтапная архитектура обнаружения объектов. Он использовал классификаторы на основе регионов, чтобы найти области, а затем передать их более надежному классификатору. Хотя этот метод дает точные результаты с высокой средней точностью (mAP), он очень ресурсоемкий и требует множества итераций в своей работе.

Как работает YOLO?

YOLO предложил другую методологию, в которой оба этапа проводятся в одной и той же нейронной сети. Сначала изображение делится на ячейки, каждая из которых имеет область одинакового размера SxS. Затем каждая ячейка обнаруживает и находит содержащиеся в ней объекты с координатами ограничивающей рамки (относительно ее координат) с меткой объекта и вероятностью присутствия объекта в ячейке.

Поскольку каждая ячейка «работает сама по себе», она может обрабатывать сетку одновременно и снижает требуемые вычислительные мощности и время, необходимое для обучения и вывода. Фактически, YOLO достигает самых современных результатов, превосходя другие алгоритмы обнаружения объектов в реальном времени.

Какие версии есть у YOLO?

YOLOv6 здесь, чтобы пнуть A ** и взять имена

MT-YOLOv6 был вдохновлен оригинальной одноэтапной архитектурой YOLO и, таким образом, был (смело) назван его авторами YOLOv6. Хотя он обеспечивает выдающиеся результаты, важно отметить, что MT-YOLOv6 не является частью официальной серии YOLO.

YOLOv6 — это одноэтапная структура обнаружения объектов, предназначенная для промышленных приложений, с эффективной конструкцией и высокой производительностью, ориентированной на аппаратное обеспечение. Он превосходит YOLOv5 по точности обнаружения и скорости вывода, что делает его лучшей версией ОС архитектуры YOLO для производственных приложений.

YOLOv6 Достижения

  • YOLOv6-nano - достигает 35,0 mAP на наборе данных COCO val2017 с 1242 кадрами в секунду на T4 с использованием TensorRT FP16 для вывода bs32.
  • YOLOv6-s — достигает 43,1 mAP на наборе данных COCO val2017 с 520 FPS на T4 с использованием TensorRT FP16 для вывода bs32.

Вывод одного изображения

YOLOv6s (красный) обеспечивают лучшую среднюю точность (mAP), чем все предыдущие версии YOLOv5, с примерно в 2 раза более быстрым временем вывода. Мы также видим огромный разрыв в производительности между архитектурой на основе YOLO и EfficientDet, основанной на двухэтапном обнаружении объектов.

Видео вывод

Как и в случае с выводом одного изображения, YOLOv6 обеспечивает лучшие результаты для видео по всему спектру кадров в секунду. Интересно отметить изменение кривой для ~550–620 FPS. Интересно, имеет ли это какое-то отношение к производительности оборудования и уменьшают ли сопровождающие смещение аппаратного обеспечения при проведении своих экспериментов.

Ориентир

  • Сравнения mAP и скорости различных детекторов объектов тестируются на наборе данных COCO val2017.
  • Результаты скорости других методов были проверены в среде сопровождающих с использованием официальной кодовой базы и модели, если они не были найдены в соответствующем официальном выпуске.

Отказ от ответственности: приведенный выше обзор основан на утверждениях авторов, и нам еще предстоит их проверить.

YOLOv5 против YOLOv6

Сравнительное сравнение между YOLOv5 и YOLOv6

Изучая тесты обеих моделей, мне было трудно сравнивать яблоки с яблоками. В YOLOv6 меньше типов моделей (отсутствуют m/l/x) и нет информации об изображениях размером более 640 пикселей. Для тестов, о которых сообщили оба проекта, мы можем ясно видеть улучшение mAP для YOLOv6. Тем не менее, v6 имеет в 2 раза больше параметров и флопов, чем v5, поэтому мне захотелось самому погрузиться в процесс обучения и перепроверить результаты ниже.

Качественное сравнение между YOLOv5 и YOLOv6

Я использовал версию s обеих моделей для обнаружения объектов на следующих изображениях:

Мы ясно видим, что YOLOv6s обнаруживают больше объектов на изображении и с большей уверенностью относятся к их меткам.

Гибкость

Оба проекта имеют схожие подходы к созданию моделей разных размеров. Самая большая разница в том, что YOLOv5 использует YAML, тогда как YOLOv6 определяет параметры модели непосредственно в Python. Предварительный взгляд также указывает на то, что YOLOv5 может быть в определенной степени более настраиваемым.

Однако тот факт, что YOLOv6 настолько гибкий, означает, что в будущем мы можем увидеть более крупные версии YOLOv6 с еще более точными прогнозами!

Если вы создадите большую модель YOLOv6, дайте нам знать в Discord! Мы бы хотели это увидеть!

Применение

Вы можете взаимодействовать с последней версией YOLOv6 с помощью приложения DagsHub. Если вы хотите использовать его на своем локальном компьютере, выполните следующие действия:

Установка

git clone https://dagshub.com/nirbarazida/YOLOv6 cd
YOLOv6 pip install -r requirements.txt 
dvc pull

Вывод

Используйте YOLOv6s:python tools/infer.py --weights yolov6s.pt --source <path to image/directory>

Используйте YOLOv6n: python tools/infer.py --weights yolov6n.pt --source <path to image/directory>

Заключение

YOLOv6 — один из самых захватывающих проектов OSDS, недавно выпущенных. Он обеспечивает самые современные результаты и значительное улучшение по всем направлениям по сравнению с предыдущими версиями YOLO. В настоящее время сопровождающие сосредоточены на расширении типов моделей, вариантов развертывания и инструментов квантования. Тем не менее, как и в случае любого проекта с открытым исходным кодом, сообщество может сильно повлиять на его дорожную карту и кривую прогресса.

Хотя проект все еще находится на ранней стадии, он выглядит очень многообещающе, и мне интересно посмотреть, какие другие тесты он побьет в будущем.