Что такое 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 для выполнения обучения, проверки и вывода.

Чтобы использовать yoloCLI, нам необходимо установить ultralyticsпакет.

pip install ultralytics

Как использовать YOLOv8 с помощью интерфейса командной строки (CLI)?

После установки необходимых пакетов мы можем получить доступ к командной строке YOLOv8 с помощью yoloкоманды. Ниже приведен пример выполнения вывода обнаружения объекта с использованием yolo командной строки.

yolo task=detect \
mode=predict \
model=yolov8n.pt \
source="image.jpg"

taskФлаг может принимать три аргумента: detectclassify, и segment. Аналогично, режим может быть любым из trainval, или 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, оценит ее в наборе проверки и выполнит прогнозирование на образце изображения.

Давайте воспользуемся yoloCLI и выполним вывод, используя модели обнаружения объектов, сегментации экземпляров и классификации изображений.

Вывод результатов для обнаружения объектов

Следующая команда запускает обнаружение видео с использованием модели 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.
Модели YOLOv8 сравниваются с моделями YOLOv5.

Сравнение обнаружения объектов

Модели обнаружения объектов YOLOv8 против YOLOv5.
Модели обнаружения объектов YOLOv8 против YOLOv5.

Сравнение сегментации экземпляров

Модели сегментации экземпляров YOLOv8 против YOLOv5
Модели сегментации экземпляров YOLOv8 против YOLOv5

Сравнение классификации изображений

Модели классификации изображений YOLOv8 против YOLOv5.
Модели классификации изображений YOLOv8 против YOLOv5.

Понятно, что последние модели YOLOv8 намного лучше по сравнению с YOLOv5, за исключением одной из классификационных моделей.

Заключение

В этой статье мы рассмотрели последнюю версию моделей YOLO, то есть YOLOv8. Мы рассмотрели новые модели, их производительность, а также интерфейс командной строки, который поставляется вместе с пакетом. Наряду с этим, мы также сделали выводы на основе видеозаписей.

Комментарии (5)


  1. ZlodeiBaal
    11.01.2023 18:43
    +3

    Там все сравнения у них поломанные несколько. Вот пример с Roboflow с сравнением с другими Yolo:

    Как видно, когда они говорят о приросте mAP, то они сравнивают с моделями которые имеют в 1.5-2 раза больше FLOPs.

    Ничего плохого в этом нет, я почти уверен что оно не будет хуже Yolov5. Но про значительное улучшение скорости про той же точности можно забыть.

    И да, пока что там они не дотянули до Yolov5 по качеству репозитория (экспорты, баги, и.т.д.).

    В целом, если кому интересно, более полный мой фидбек тут.


  1. maxwolf
    13.01.2023 03:29

    А есть тесты насколько оно хорошо/быстро/вообще живёт на обычных mid-range CPU по сравнению с v3? Это я в разрезе прикручивания к zoneminder…


    1. dimanosov007 Автор
      13.01.2023 15:59

      В репозитории сегодня как раз появилось сравнение с предыдущими версиями, но там только до 5 версии, с 3 скорее всего не будет сравнения

      можно посмотреть по ссылке


  1. 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] Не удается найти указанный файл


  1. Dynasaur
    13.01.2023 22:01

    из под убунты заработало как минимум частично