Что такое YOLOv8?
YOLOv8 - это новейшее семейство моделей обнаружения объектов на базе YOLO от Ultralytics, обеспечивающих самые современные характеристики.
По сравнению с предыдущими версиями YOLO, модель YOLOv8 работает быстрее и точнее, обеспечивая при этом единую структуру для обучения моделей для выполнения
Обнаружение объектов,
Сегментация экземпляров,
Классификации изображений.
На момент написания этой статьи в репозиторий Ultralytics YOLOv8 еще предстоит добавить множество функций. Это включает в себя полный набор функций экспорта для обученных моделей. Кроме того, Ultralytics выпустит статью на Arxiv, в которой сравнивается YOLOv8 с другими современными моделями.
Что нового в YOLOv8
Ultralytics выпустили совершенно новый репозиторий для моделей YOLO. Он построен как единая платформа для обучения моделям обнаружения объектов, сегментации экземпляров и классификации изображений.
Вот некоторые ключевые особенности новой версии:
Удобный для пользователя API (командная строка + Python).
Быстрее и точнее.
-
Поддерживает
Обнаружение объектов,
Сегментация экземпляров,
Классификация изображений.
Расширяемый для всех предыдущих версий.
Новая Backbone сеть.
Новая Anchor-Free head.
Новая функция потерь.
YOLOv8 также обладает высокой эффективностью и гибкостью, поддерживает множество форматов экспорта, и модель может работать на CPU и GPU.
Модели, доступные в YOLOv8
В каждой категории моделей YOLOv8 есть пять моделей для обнаружения, сегментации и классификации. YOLOv8 Nano - самый быстрый и маленький, в то время как YOLOv8 Extra Large (YOLOv8x) - самый точный, но самый медленный среди них.
YOLOv8 поставляется в комплекте со следующими предварительно подготовленными моделями:
Контрольные точки обнаружения объектов обучены на основе набора данных COCO detection с разрешением изображения 640.
Контрольные точки сегментации экземпляра, обученные на наборе данных сегментации COCO с разрешением изображения 640.
Модели классификации изображений предварительно обучены на базе данных ImageNet с разрешением изображения 224.
Давайте посмотрим на результат, используя модели обнаружения и сегментации экземпляров YOLOv8x.
Как использовать YOLOv8?
Для использования всего потенциала YOLOv8 требуется установка требований из репозитория, а также ultralytics
пакета.
Чтобы установить требования, нам нужно сначала клонировать репозиторий.
git clone https://github.com/ultralytics/ultralytics.git
Затем установите требуемые библиотеки.
pip install -r requirements.txt
В последней версии Ultralytics YOLOv8 предоставляет как полный интерфейс командной строки (CLI) API, так и Python SDK для выполнения обучения, проверки и вывода.
Чтобы использовать yolo
CLI, нам необходимо установить ultralytics
пакет.
pip install ultralytics
Как использовать YOLOv8 с помощью интерфейса командной строки (CLI)?
После установки необходимых пакетов мы можем получить доступ к командной строке YOLOv8 с помощью yolo
команды. Ниже приведен пример выполнения вывода обнаружения объекта с использованием yolo
командной строки.
yolo task=detect \
mode=predict \
model=yolov8n.pt \
source="image.jpg"
task
Флаг может принимать три аргумента: detect
, classify
, и segment
. Аналогично, режим может быть любым из train
, val
, или predict
. Мы также можем передать режим as export
при экспорте обученной модели.
Как использовать YOLOv8 с помощью Python API?
Мы также можем создать простой файл Python, импортировать модуль YOLO и выполнить задачу по нашему выбору.
from ultralytics import YOLO
model = YOLO("yolov8n.pt") # загрузите предварительно обученную модель YOLOv8n
model.train(data="coco128.yaml") # обучите модель
model.val() # оцените производительность модели на наборе проверки
model.predict(source="https://ultralytics.com/images/bus.jpg") # предсказать по изображению
model.export(format="onnx") # экспортируйте модель в формат ONNX
Например, приведенный выше код сначала обучит модель YOLOv8 Nano на основе набора данных COCO128, оценит ее в наборе проверки и выполнит прогнозирование на образце изображения.
Давайте воспользуемся yolo
CLI и выполним вывод, используя модели обнаружения объектов, сегментации экземпляров и классификации изображений.
Вывод результатов для обнаружения объектов
Следующая команда запускает обнаружение видео с использованием модели YOLOv8 Nano.
yolo task=detect mode=predict model=yolov8n.pt source='input/video_3.mp4' show=True
Вывод выполняется со скоростью почти 105 кадров в секунду на графическом процессоре ноутбука GTX 1060. И мы получаем следующий результат.
Клип 1. Вывод обнаружения с использованием наномодели YOLOv8.
Модель YOLOv8 Nano на нескольких кадрах путает кошек с собаками. Давайте запустим обнаружение на том же видео, используя модель YOLOv8 Extra Large, и проверим результаты.
yolo task=detect mode=predict model=yolov8x.pt source='input/video_3.mp4' show=True
Сверхбольшая модель работает в среднем со скоростью 17 кадров в секунду на графическом процессоре GTX 1060.
Клип 2. Вывод обнаружения с использованием сверхбольшой модели YOLOv8.
Хотя на этот раз ошибочных классификаций немного меньше, тем не менее модель ошибочно определяет скамейку в нескольких кадрах.
Вывод результатов, например, для сегментации
Выполнить вывод с использованием модели сегментации экземпляра YOLOv8 так же просто. Нам просто нужно изменить task
и model
имя в приведенной выше команде.
yolo task=segment mode=predict model=yolov8x-seg.pt source='input/video_3.mp4' show=True
Поскольку сегментация экземпляров сочетается с обнаружением объектов, на этот раз средний FPS составил около 13.
Клип 3. Вывод сегментации с использованием сверхбольшой модели YOLOv8.
Карты сегментации на выходе выглядят довольно чистыми. Даже когда кошка прячется под блоком на последних нескольких кадрах, модель способна обнаружить и сегментировать ее.
Результаты вывода для классификации изображений
Наконец, поскольку YOLOv8 уже предоставляет предварительно подготовленные модели классификации, давайте запустим классификационный вывод на том же видео, используя yolov8x-cls
модель. Это самая большая модель классификации, которую предоставляет репозиторий.
Клип 4. Вывод классификации с использованием сверхбольшой модели YOLOv8.
По умолчанию видео снабжено комментариями к 5 лучшим классам, которые предсказывает модель. Без какой-либо последующей обработки аннотации напрямую соответствуют именам классов ImageNet.
YOLOv8 vs YOLOv5
В следующих таблицах показано всестороннее сравнение между YOLOv8 и YOLOv5.
Общее сравнение
Сравнение обнаружения объектов
Сравнение сегментации экземпляров
Сравнение классификации изображений
Понятно, что последние модели YOLOv8 намного лучше по сравнению с YOLOv5, за исключением одной из классификационных моделей.
Заключение
В этой статье мы рассмотрели последнюю версию моделей YOLO, то есть YOLOv8. Мы рассмотрели новые модели, их производительность, а также интерфейс командной строки, который поставляется вместе с пакетом. Наряду с этим, мы также сделали выводы на основе видеозаписей.
Комментарии (5)
maxwolf
13.01.2023 03:29А есть тесты насколько оно хорошо/быстро/вообще живёт на обычных mid-range CPU по сравнению с v3? Это я в разрезе прикручивания к zoneminder…
dimanosov007 Автор
13.01.2023 15:59В репозитории сегодня как раз появилось сравнение с предыдущими версиями, но там только до 5 версии, с 3 скорее всего не будет сравнения
можно посмотреть по ссылке
Dynasaur
13.01.2023 15:36что-то не запускается под Виндусом. Выдаёт
File "...\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line 1420, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] Не удается найти указанный файл
ZlodeiBaal
Там все сравнения у них поломанные несколько. Вот пример с Roboflow с сравнением с другими Yolo:
Как видно, когда они говорят о приросте mAP, то они сравнивают с моделями которые имеют в 1.5-2 раза больше FLOPs.
Ничего плохого в этом нет, я почти уверен что оно не будет хуже Yolov5. Но про значительное улучшение скорости про той же точности можно забыть.
И да, пока что там они не дотянули до Yolov5 по качеству репозитория (экспорты, баги, и.т.д.).
В целом, если кому интересно, более полный мой фидбек тут.