YOLOv6: обнаружение объектов нового поколения — обзор и сравнение
Область компьютерного зрения быстро развивалась в последние годы и достигла результатов, которые несколько лет назад казались научной фантастикой. От анализа рентгеновских снимков и диагностики пациентов до (полу)автономных автомобилей — мы наблюдаем грядущую революцию. Эти прорывы имеют много причин — создание лучших и более доступных вычислительных ресурсов, а также тот факт, что они ближе всего к науке данных с открытым исходным кодом (OSDS). Предоставление исходного кода сообществу раскрывает мудрость толпы и позволяет внедрять инновации и решать проблемы в масштабе.
Одним из самых популярных проектов ОС в области компьютерного зрения является YOLO (You Only Look Once). YOLO — это эффективный алгоритм обнаружения объектов в реальном времени, впервые описанный в основополагающей статье 2015 года Джозефа Редмона и др. YOLO делит изображение на систему сеток, и каждая сетка обнаруживает объекты внутри себя. Его можно использовать для логического вывода в реальном времени, и он требует очень мало вычислительных ресурсов.
Сегодня, спустя 7 лет после выпуска первой версии YOLO, исследовательская группа Meituan опубликовала новую модель YOLOv6 — и она готова надрать **!
История ЙОЛО
Обнаружение объектов до YOLO
До YOLO в этой области доминировала двухэтапная архитектура обнаружения объектов. Он использовал классификаторы на основе регионов, чтобы найти области, а затем передать их более надежному классификатору. Хотя этот метод дает точные результаты с высокой средней точностью (mAP), он очень ресурсоемкий и требует множества итераций в своей работе.
Как работает YOLO?
YOLO предложил другую методологию, в которой оба этапа проводятся в одной и той же нейронной сети. Сначала изображение делится на ячейки, каждая из которых имеет область одинакового размера SxS. Затем каждая ячейка обнаруживает и находит содержащиеся в ней объекты с координатами ограничивающей рамки (относительно ее координат) с меткой объекта и вероятностью присутствия объекта в ячейке.
Поскольку каждая ячейка «работает сама по себе», она может обрабатывать сетку одновременно и снижает требуемые вычислительные мощности и время, необходимое для обучения и вывода. Фактически, YOLO достигает самых современных результатов, превосходя другие алгоритмы обнаружения объектов в реальном времени.
Какие версии есть у YOLO?
- YOLOv1 (июнь 2015 г.): Вы только посмотрите один раз: унифицированное обнаружение объектов в реальном времени
- YOLOv2 (декабрь 2016 г.): YOLO9000: лучше, быстрее, сильнее
- YOLOv3 (апрель 2018 г.): YOLOv3: постепенное улучшение
- YOLOv4 (апрель 2020 г.): YOLOv4: Оптимальная скорость и точность обнаружения объектов
- YOLOv5 (май 2020 г.): Репозиторий Github (документ еще не выпущен)
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. В настоящее время сопровождающие сосредоточены на расширении типов моделей, вариантов развертывания и инструментов квантования. Тем не менее, как и в случае любого проекта с открытым исходным кодом, сообщество может сильно повлиять на его дорожную карту и кривую прогресса.
Хотя проект все еще находится на ранней стадии, он выглядит очень многообещающе, и мне интересно посмотреть, какие другие тесты он побьет в будущем.