Изучите Ultralytics YOLOv8
Обзор
Ultralytics выпустила YOLOv8 10 января 2023 года, предложив передовую производительность с точки зрения точности и скорости. Основываясь на достижениях предыдущих версий YOLO, YOLOv8 представила новые функции и оптимизации, которые делают ее идеальным выбором для различных задач обнаружения объектов в широком спектре приложений.
Смотреть: Обзор моделей Ultralytics YOLOv8
Ключевые особенности YOLOv8
- Передовые архитектуры Backbone и Neck: YOLOv8 использует самые современные архитектуры backbone и neck, что приводит к улучшенному извлечению признаков и производительности обнаружения объектов.
- Ultralytics Head без привязки к якорям: В YOLOv8 используется Ultralytics Head без привязки к якорям, что способствует повышению точности и эффективности процесса обнаружения по сравнению с подходами, основанными на якорях.
- Оптимизированный компромисс между точностью и скоростью: Ориентируясь на поддержание оптимального баланса между точностью и скоростью, YOLOv8 подходит для задач обнаружения объектов в реальном времени в различных областях применения.
- Разнообразие предварительно обученных моделей: YOLOv8 предлагает ряд предварительно обученных моделей для различных задач и требований к производительности, что упрощает поиск подходящей модели для вашего конкретного случая использования.
Поддерживаемые задачи и режимы
Серия YOLOv8 предлагает широкий спектр моделей, каждая из которых специализируется на конкретных задачах в области компьютерного зрения. Эти модели предназначены для удовлетворения различных требований, от обнаружения объектов до более сложных задач, таких как сегментация экземпляров, обнаружение позы/ключевых точек, обнаружение ориентированных объектов и классификация.
Каждый вариант серии YOLOv8 оптимизирован для своей конкретной задачи, что обеспечивает высокую производительность и точность. Кроме того, эти модели совместимы с различными режимами работы, включая вывод, валидацию, обучение и экспорт, что облегчает их использование на различных этапах развертывания и разработки.
Модель | Имена файлов | Задача | Инференс | Валидация | Обучение | Экспорт |
---|---|---|---|---|---|---|
YOLOv8 | yolov8n.pt yolov8s.pt yolov8m.pt yolov8l.pt yolov8x.pt |
Обнаружение | ✅ | ✅ | ✅ | ✅ |
YOLOv8-seg | yolov8n-seg.pt yolov8s-seg.pt yolov8m-seg.pt yolov8l-seg.pt yolov8x-seg.pt |
Сегментация экземпляров | ✅ | ✅ | ✅ | ✅ |
YOLOv8-pose | yolov8n-pose.pt yolov8s-pose.pt yolov8m-pose.pt yolov8l-pose.pt yolov8x-pose.pt yolov8x-pose-p6.pt |
Поза/Ключевые точки | ✅ | ✅ | ✅ | ✅ |
YOLOv8-obb | yolov8n-obb.pt yolov8s-obb.pt yolov8m-obb.pt yolov8l-obb.pt yolov8x-obb.pt |
Ориентированное обнаружение | ✅ | ✅ | ✅ | ✅ |
YOLOv8-cls | yolov8n-cls.pt yolov8s-cls.pt yolov8m-cls.pt yolov8l-cls.pt yolov8x-cls.pt |
Классификация | ✅ | ✅ | ✅ | ✅ |
В этой таблице представлен обзор вариантов моделей YOLOv8, в котором освещается их применимость в конкретных задачах и их совместимость с различными режимами работы, такими как вывод, валидация, обучение и экспорт. Это демонстрирует универсальность и надежность серии YOLOv8, что делает их подходящими для различных приложений в области компьютерного зрения.
Метрики производительности
Производительность
Примеры использования этих моделей, обученных на COCO, которые включают 80 предварительно обученных классов, см. в документации по обнаружению.
Модель | размер (пиксели) |
mAPval 50-95 |
Скорость CPU ONNX (мс) |
Скорость A100 TensorRT (мс) |
параметры (M) |
FLOPs (B) |
---|---|---|---|---|---|---|
YOLOv8n | 640 | 37.3 | 80.4 | 0.99 | 3.2 | 8.7 |
YOLOv8s | 640 | 44.9 | 128.4 | 1.20 | 11.2 | 28.6 |
YOLOv8m | 640 | 50.2 | 234.7 | 1.83 | 25.9 | 78.9 |
YOLOv8l | 640 | 52.9 | 375.2 | 2.39 | 43.7 | 165.2 |
YOLOv8x | 640 | 53.9 | 479.1 | 3.53 | 68.2 | 257.8 |
Примеры использования этих моделей, обученных на Open Image V7, которые включают 600 предварительно обученных классов, см. в документации по обнаружению.
Модель | размер (пиксели) |
mAPval 50-95 |
Скорость CPU ONNX (мс) |
Скорость A100 TensorRT (мс) |
параметры (M) |
FLOPs (B) |
---|---|---|---|---|---|---|
YOLOv8n | 640 | 18.4 | 142.4 | 1.21 | 3.5 | 10.5 |
YOLOv8s | 640 | 27.7 | 183.1 | 1.40 | 11.4 | 29.7 |
YOLOv8m | 640 | 33.6 | 408.5 | 2.26 | 26.2 | 80.6 |
YOLOv8l | 640 | 34.9 | 596.9 | 2.43 | 44.1 | 167.4 |
YOLOv8x | 640 | 36.3 | 860.6 | 3.56 | 68.7 | 260.6 |
Примеры использования этих моделей, обученных на COCO, которые включают 80 предварительно обученных классов, см. в документации по сегментации.
Модель | размер (пиксели) |
mAPbox 50-95 |
mAPmask 50-95 |
Скорость CPU ONNX (мс) |
Скорость A100 TensorRT (мс) |
параметры (M) |
FLOPs (B) |
---|---|---|---|---|---|---|---|
YOLOv8n-seg | 640 | 36.7 | 30.5 | 96.1 | 1.21 | 3.4 | 12.6 |
YOLOv8s-seg | 640 | 44.6 | 36.8 | 155.7 | 1.47 | 11.8 | 42.6 |
YOLOv8m-seg | 640 | 49.9 | 40.8 | 317.0 | 2.18 | 27.3 | 110.2 |
YOLOv8l-seg | 640 | 52.3 | 42.6 | 572.4 | 2.79 | 46.0 | 220.5 |
YOLOv8x-seg | 640 | 53.4 | 43.4 | 712.1 | 4.02 | 71.8 | 344.1 |
Примеры использования этих моделей, обученных на ImageNet и включающих 1000 предварительно обученных классов, смотрите в документации по классификации.
Модель | размер (пиксели) |
acc top1 |
acc top5 |
Скорость CPU ONNX (мс) |
Скорость A100 TensorRT (мс) |
параметры (M) |
FLOPs (B) при 224 |
---|---|---|---|---|---|---|---|
YOLOv8n-cls | 224 | 69.0 | 88.3 | 12.9 | 0.31 | 2.7 | 0.5 |
YOLOv8s-cls | 224 | 73.8 | 91.7 | 23.4 | 0.35 | 6.4 | 1.7 |
YOLOv8m-cls | 224 | 76.8 | 93.5 | 85.4 | 0.62 | 17.0 | 5.3 |
YOLOv8l-cls | 224 | 76.8 | 93.5 | 163.0 | 0.87 | 37.5 | 12.3 |
YOLOv8x-cls | 224 | 79.0 | 94.6 | 232.0 | 1.01 | 57.4 | 19.0 |
Примеры использования этих моделей, обученных на COCO и включающих 1 предварительно обученный класс ('person'), смотрите в документации по оценке позы.
Модель | размер (пиксели) |
mAPpose 50-95 |
mAPpose 50 |
Скорость CPU ONNX (мс) |
Скорость A100 TensorRT (мс) |
параметры (M) |
FLOPs (B) |
---|---|---|---|---|---|---|---|
YOLOv8n-pose | 640 | 50.4 | 80.1 | 131.8 | 1.18 | 3.3 | 9.2 |
YOLOv8s-pose | 640 | 60.0 | 86.2 | 233.2 | 1.42 | 11.6 | 30.2 |
YOLOv8m-pose | 640 | 65.0 | 88.8 | 456.3 | 2.00 | 26.4 | 81.0 |
YOLOv8l-pose | 640 | 67.6 | 90.0 | 784.5 | 2.59 | 44.4 | 168.6 |
YOLOv8x-pose | 640 | 69.2 | 90.2 | 1607.1 | 3.73 | 69.4 | 263.2 |
YOLOv8x-pose-p6 | 1280 | 71.6 | 91.2 | 4088.7 | 10.04 | 99.1 | 1066.4 |
Примеры использования этих моделей, обученных на DOTAv1 и включающих 15 предварительно обученных классов, смотрите в документации по ориентированному обнаружению.
Модель | размер (пиксели) |
mAPtest 50 |
Скорость CPU ONNX (мс) |
Скорость A100 TensorRT (мс) |
параметры (M) |
FLOPs (B) |
---|---|---|---|---|---|---|
YOLOv8n-obb | 1024 | 78.0 | 204.77 | 3.57 | 3.1 | 23.3 |
YOLOv8s-obb | 1024 | 79.5 | 424.88 | 4.07 | 11.4 | 76.3 |
YOLOv8m-obb | 1024 | 80.5 | 763.48 | 7.61 | 26.4 | 208.6 |
YOLOv8l-obb | 1024 | 80.7 | 1278.42 | 11.83 | 44.5 | 433.8 |
YOLOv8x-obb | 1024 | 81.36 | 1759.10 | 13.23 | 69.5 | 676.7 |
YOLOv8 Примеры использования
В этом примере представлены простые примеры обучения и логического вывода YOLOv8. Полную документацию по этим и другим режимам см. на страницах документации Predict, Train, Val и Export.
Обратите внимание, что приведенный ниже пример предназначен для моделей YOLOv8 Detect для обнаружения объектов. Для получения информации о дополнительных поддерживаемых задачах см. документацию Segment, Classify, OBB и Pose.
Пример
PyTorch предварительно обученные *.pt
модели, а также конфигурационные *.yaml
файлы могут быть переданы в YOLO()
класс для создания экземпляра модели в python:
from ultralytics import YOLO
# Load a COCO-pretrained YOLOv8n model
model = YOLO("yolov8n.pt")
# Display model information (optional)
model.info()
# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference with the YOLOv8n model on the 'bus.jpg' image
results = model("path/to/bus.jpg")
Для непосредственного запуска моделей доступны команды CLI:
# Load a COCO-pretrained YOLOv8n model and train it on the COCO8 example dataset for 100 epochs
yolo train model=yolov8n.pt data=coco8.yaml epochs=100 imgsz=640
# Load a COCO-pretrained YOLOv8n model and run inference on the 'bus.jpg' image
yolo predict model=yolov8n.pt source=path/to/bus.jpg
Цитирование и благодарности
Публикация Ultralytics YOLOv8
Ultralytics не публиковала официальную исследовательскую статью по YOLOv8 из-за быстро развивающегося характера моделей. Мы сосредоточены на развитии технологий и упрощении их использования, а не на создании статической документации. Для получения самой актуальной информации об архитектуре, функциях и использовании YOLO, пожалуйста, обратитесь к нашему репозиторию GitHub и документации.
Если вы используете модель YOLOv8 или любое другое программное обеспечение из этого репозитория в своей работе, пожалуйста, сошлитесь на него, используя следующий формат:
@software{yolov8_ultralytics,
author = {Glenn Jocher and Ayush Chaurasia and Jing Qiu},
title = {Ultralytics YOLOv8},
version = {8.0.0},
year = {2023},
url = {https://github.com/ultralytics/ultralytics},
orcid = {0000-0001-5950-6979, 0000-0002-7603-6750, 0000-0003-3783-7069},
license = {AGPL-3.0}
}
Обратите внимание, что DOI находится на рассмотрении и будет добавлен в цитату, как только он станет доступен. Модели YOLOv8 предоставляются в соответствии с лицензиями AGPL-3.0 и Enterprise.
Часто задаваемые вопросы
Что такое YOLOv8 и чем она отличается от предыдущих версий YOLO?
YOLOv8 разработан для улучшения производительности обнаружения объектов в реальном времени с помощью расширенных функций. В отличие от более ранних версий, YOLOv8 включает anchor-free split Ultralytics head, современные архитектуры backbone и neck, а также предлагает оптимизированный компромисс между точностью и скоростью, что делает его идеальным для различных приложений. Для получения более подробной информации ознакомьтесь с разделами «Обзор» и «Ключевые особенности».
Как я могу использовать YOLOv8 для различных задач компьютерного зрения?
YOLOv8 поддерживает широкий спектр задач компьютерного зрения, включая обнаружение объектов, сегментацию экземпляров, обнаружение позы/ключевых точек, обнаружение ориентированных объектов и классификацию. Каждый вариант модели оптимизирован для своей конкретной задачи и совместим с различными режимами работы, такими как Inference, Validation, Training и Export. Обратитесь к разделу Поддерживаемые задачи и режимы для получения дополнительной информации.
Каковы метрики производительности для моделей YOLOv8?
Модели YOLOv8 демонстрируют современную производительность в различных наборах данных для бенчмаркинга. Например, модель YOLOv8n достигает mAP (средняя точность) 37,3 на наборе данных COCO и скорости 0,99 мс на A100 TensorRT. Подробные метрики производительности для каждого варианта модели в различных задачах и наборах данных можно найти в разделе Метрики производительности.
Как обучить модель YOLOv8?
Обучение модели YOLOv8 можно выполнить с помощью Python или CLI. Ниже приведены примеры обучения модели с использованием предварительно обученной на COCO модели YOLOv8 на наборе данных COCO8 в течение 100 эпох:
Пример
from ultralytics import YOLO
# Load a COCO-pretrained YOLOv8n model
model = YOLO("yolov8n.pt")
# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
yolo train model=yolov8n.pt data=coco8.yaml epochs=100 imgsz=640
Для получения более подробной информации посетите документацию по Обучению.
Можно ли протестировать модели YOLOv8 для оценки производительности?
Да, модели YOLOv8 можно оценивать на производительность с точки зрения скорости и точности в различных форматах экспорта. Вы можете использовать PyTorch, ONNX, TensorRT и другие форматы для оценки. Ниже приведены примеры команд для оценки с использованием Python и CLI:
Пример
from ultralytics.utils.benchmarks import benchmark
# Benchmark on GPU
benchmark(model="yolov8n.pt", data="coco8.yaml", imgsz=640, half=False, device=0)
yolo benchmark model=yolov8n.pt data='coco8.yaml' imgsz=640 half=False device=0
Для получения дополнительной информации ознакомьтесь с разделом Метрики производительности.