YOLOv10: Сквозное обнаружение объектов в реальном времени
YOLOv10, разработанный на основе Ultralytics пакета Python исследователями из Университета Цинхуа, представляет новый подход к обнаружению объектов в реальном времени, устраняя недостатки постобработки и архитектуры моделей, обнаруженные в предыдущих версиях YOLO. Благодаря устранению немаксимального подавления (NMS) и оптимизации различных компонентов модели, YOLOv10 достигает современной производительности со значительно сниженными вычислительными затратами. Обширные эксперименты демонстрируют превосходный компромисс между точностью и задержкой для различных масштабов моделей.
Смотреть: Как обучить YOLOv10 на наборе данных SKU-110k с использованием Ultralytics | Набор данных розничной торговли
Обзор
Обнаружение объектов в реальном времени направлено на точное прогнозирование категорий объектов и их местоположения на изображениях с низкой задержкой. Серия YOLO находится в авангарде этих исследований благодаря балансу между производительностью и эффективностью. Однако зависимость от NMS и архитектурные неэффективности препятствуют достижению оптимальной производительности. YOLOv10 решает эти проблемы, внедряя согласованные двойные назначения для обучения без NMS и целостную стратегию проектирования модели, основанную на эффективности и точности.
Архитектура
Архитектура YOLOv10 опирается на сильные стороны предыдущих моделей YOLO, представляя при этом несколько ключевых нововведений. Архитектура модели состоит из следующих компонентов:
- Backbone: Backbone в YOLOv10, отвечающий за извлечение признаков, использует улучшенную версию CSPNet (Cross Stage Partial Network) для улучшения потока градиентов и уменьшения вычислительной избыточности.
- Neck: Neck предназначен для агрегирования признаков из разных масштабов и передачи их в head. Он включает в себя слои PAN (Path Aggregation Network) для эффективного многомасштабного слияния признаков.
- One-to-Many Head: Генерирует несколько прогнозов для каждого объекта во время обучения, чтобы обеспечить богатые контролирующие сигналы и повысить точность обучения.
- One-to-One Head: Генерирует один наилучший прогноз для каждого объекта во время вывода, чтобы устранить необходимость в NMS, тем самым снижая задержку и повышая эффективность.
Основные характеристики
- Обучение без NMS: Использует согласованные двойные назначения, чтобы устранить необходимость в NMS, снижая задержку при выводе.
- Holistic Model Design: Комплексная оптимизация различных компонентов с точки зрения эффективности и точности, включая облегченные классификационные head, пространственно-канальную развязанную дискретизацию и блочный дизайн, управляемый рангом.
- Расширенные возможности модели: Включает крупноядерные свертки и модули частичного самовнимания для повышения производительности без значительных вычислительных затрат.
Варианты моделей
YOLOv10 поставляется в различных масштабах моделей для удовлетворения различных потребностей приложений:
- YOLOv10n: Nano версия для сред с крайне ограниченными ресурсами.
- YOLOv10s: Малая версия, обеспечивающая баланс скорости и точности.
- YOLOv10m: Средняя версия для общего назначения.
- YOLOv10b: Сбалансированная версия с увеличенной шириной для повышения точности.
- YOLOv10l: Большая версия для повышения точности за счет увеличения вычислительных ресурсов.
- YOLOv10x: Сверхбольшая версия для максимальной точности и производительности.
Производительность
YOLOv10 превосходит предыдущие версии YOLO и другие современные модели как по точности, так и по эффективности. Например, YOLOv10s в 1.8 раза быстрее, чем RT-DETR-R18 с аналогичным AP на наборе данных COCO, а YOLOv10b имеет на 46% меньшую задержку и на 25% меньше параметров, чем YOLOv9-C при той же производительности.
Производительность
Задержка измерена с использованием TensorRT FP16 на GPU T4.
Модель | Входной размер | APval | FLOPs (G) | Задержка (мс) |
---|---|---|---|---|
YOLOv10n | 640 | 38.5 | 6.7 | 1.84 |
YOLOv10s | 640 | 46.3 | 21.6 | 2.49 |
YOLOv10m | 640 | 51.1 | 59.1 | 4.74 |
YOLOv10b | 640 | 52.5 | 92.0 | 5.74 |
YOLOv10l | 640 | 53.2 | 120.3 | 7.28 |
YOLOv10x | 640 | 54.4 | 160.4 | 10.70 |
Методология
Согласованные двойные назначения для обучения без NMS
YOLOv10 использует двойное назначение меток, сочетая стратегии «один ко многим» и «один к одному» во время обучения, чтобы обеспечить насыщенный контроль и эффективное сквозное развертывание. Последовательная метрика соответствия выравнивает контроль между обеими стратегиями, повышая качество прогнозов во время инференса.
Комплексная эффективность - Модельный дизайн, ориентированный на точность
Повышение эффективности
- Облегченная классификационная голова: Снижает вычислительные издержки классификационной головы за счет использования depth-wise separable convolutions.
- Пространственно-канальная развязанная понижающая дискретизация: Развязывает пространственное уменьшение и канальную модуляцию, чтобы минимизировать потерю информации и вычислительные затраты.
- Блочный дизайн, управляемый рангом: Адаптирует блочный дизайн на основе внутренней избыточности этапа, обеспечивая оптимальное использование параметров.
Повышение точности
- Свертка с большим ядром: Увеличивает поле восприятия для улучшения возможности извлечения признаков.
- Частичное само-внимание (PSA): Включает модули само-внимания для улучшения глобального обучения представлений с минимальными накладными расходами.
Эксперименты и результаты
YOLOv10 был тщательно протестирован на стандартных бенчмарках, таких как COCO, демонстрируя превосходную производительность и эффективность. Модель достигает самых современных результатов в различных вариантах, демонстрируя значительные улучшения в задержке и точности по сравнению с предыдущими версиями и другими современными детекторами.
Сравнения
По сравнению с другими современными детекторами:
- YOLOv10s / x в 1,8× / 1,3× быстрее, чем RT-DETR-R18 / R101 с аналогичной точностью
- YOLOv10b имеет на 25% меньше параметров и на 46% меньшую задержку, чем YOLOv9-C при той же точности
- YOLOv10l / x превосходят YOLOv8l / x на 0,3 AP / 0,5 AP с 1,8× / 2,3× меньшим количеством параметров
Производительность
Вот подробное сравнение вариантов YOLOv10 с другими современными моделями:
Модель | Параметры (M) |
FLOPs (G) |
mAPval 50-95 |
Задержка (мс) |
Задержка-прямой проход (мс) |
---|---|---|---|---|---|
YOLOv6-3.0-N | 4.7 | 11.4 | 37.0 | 2.69 | 1.76 |
Gold-YOLO-N | 5.6 | 12.1 | 39.6 | 2.92 | 1.82 |
YOLOv8n | 3.2 | 8.7 | 37.3 | 6.16 | 1.77 |
YOLOv10n | 2.3 | 6.7 | 39.5 | 1.84 | 1.79 |
YOLOv6-3.0-S | 18.5 | 45.3 | 44.3 | 3.42 | 2.35 |
Gold-YOLO-S | 21.5 | 46.0 | 45.4 | 3.82 | 2.73 |
YOLOv8s | 11.2 | 28.6 | 44.9 | 7.07 | 2.33 |
YOLOv10s | 7.2 | 21.6 | 46.8 | 2.49 | 2.39 |
RT-DETR-R18 | 20.0 | 60.0 | 46.5 | 4.58 | 4.49 |
YOLOv6-3.0-M | 34.9 | 85.8 | 49.1 | 5.63 | 4.56 |
Gold-YOLO-M | 41.3 | 87.5 | 49.8 | 6.38 | 5.45 |
YOLOv8m | 25.9 | 78.9 | 50.6 | 9.50 | 5.09 |
YOLOv10m | 15.4 | 59.1 | 51.3 | 4.74 | 4.63 |
YOLOv6-3.0-L | 59.6 | 150.7 | 51.8 | 9.02 | 7.90 |
Gold-YOLO-L | 75.1 | 151.7 | 51.8 | 10.65 | 9.78 |
YOLOv8l | 43.7 | 165.2 | 52.9 | 12.39 | 8.06 |
RT-DETR-R50 | 42.0 | 136.0 | 53.1 | 9.20 | 9.07 |
YOLOv10l | 24.4 | 120.3 | 53.4 | 7.28 | 7.21 |
YOLOv8x | 68.2 | 257.8 | 53.9 | 16.86 | 12.83 |
RT-DETR-R101 | 76.0 | 259.0 | 54.3 | 13.71 | 13.58 |
YOLOv10x | 29.5 | 160.4 | 54.4 | 10.70 | 10.60 |
Примеры использования
Для предсказания новых изображений с использованием YOLOv10:
Пример
from ultralytics import YOLO
# Load a pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")
# Perform object detection on an image
results = model("image.jpg")
# Display the results
results[0].show()
# Load a COCO-pretrained YOLOv10n model and run inference on the 'bus.jpg' image
yolo detect predict model=yolov10n.pt source=path/to/bus.jpg
Для обучения YOLOv10 на пользовательском наборе данных:
Пример
from ultralytics import YOLO
# Load YOLOv10n model from scratch
model = YOLO("yolov10n.yaml")
# Train the model
model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Build a YOLOv10n model from scratch and train it on the COCO8 example dataset for 100 epochs
yolo train model=yolov10n.yaml data=coco8.yaml epochs=100 imgsz=640
# Build a YOLOv10n model from scratch and run inference on the 'bus.jpg' image
yolo predict model=yolov10n.yaml source=path/to/bus.jpg
Поддерживаемые задачи и режимы
Серия моделей YOLOv10 предлагает ряд моделей, каждая из которых оптимизирована для высокопроизводительного обнаружения объектов. Эти модели удовлетворяют различные вычислительные потребности и требования к точности, что делает их универсальными для широкого спектра приложений.
Модель | Имена файлов | Задачи | Инференс | Валидация | Обучение | Экспорт |
---|---|---|---|---|---|---|
YOLOv10 | yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt |
Обнаружение объектов | ✅ | ✅ | ✅ | ✅ |
Экспорт YOLOv10
В связи с новыми операциями, представленными в YOLOv10, не все форматы экспорта, предоставляемые Ultralytics, в настоящее время поддерживаются. В следующей таблице указано, какие форматы были успешно преобразованы с использованием Ultralytics для YOLOv10. Вы можете открыть запрос на внесение изменений, если у вас есть возможность предоставить изменения для добавления поддержки экспорта дополнительных форматов для YOLOv10.
Формат экспорта | Поддержка экспорта | Инференс экспортированной модели | Примечания |
---|---|---|---|
TorchScript | ✅ | ✅ | Стандартный формат модели PyTorch. |
ONNX | ✅ | ✅ | Широко поддерживается для развертывания. |
OpenVINO | ✅ | ✅ | Оптимизировано для оборудования Intel. |
TensorRT | ✅ | ✅ | Оптимизировано для NVIDIA GPUs. |
CoreML | ✅ | ✅ | Ограничено устройствами Apple. |
TF SavedModel | ✅ | ✅ | Стандартный формат модели TensorFlow. |
TF GraphDef | ✅ | ✅ | Устаревший формат TensorFlow. |
TF Lite | ✅ | ✅ | Оптимизировано для мобильных и встраиваемых систем. |
TF Edge TPU | ✅ | ✅ | Специально для устройств Google Edge TPU. |
TF.js | ✅ | ✅ | JavaScript среда для использования в браузере. |
PaddlePaddle | ❌ | ❌ | Популярен в Китае; меньшая глобальная поддержка. |
NCNN | ✅ | ❌ | Слой torch.topk не существует или не зарегистрирован |
Заключение
YOLOv10 устанавливает новый стандарт в обнаружении объектов в реальном времени, устраняя недостатки предыдущих версий YOLO и внедряя инновационные стратегии проектирования. Его способность обеспечивать высокую точность при низких вычислительных затратах делает его идеальным выбором для широкого спектра реальных приложений, включая производство, розничную торговлю и автономные транспортные средства.
Цитирование и благодарности
Мы хотели бы выразить признательность авторам YOLOv10 из Университета Цинхуа за их обширные исследования и значительный вклад в структуру Ultralytics:
@article{THU-MIGyolov10,
title={YOLOv10: Real-Time End-to-End Object Detection},
author={Ao Wang, Hui Chen, Lihao Liu, et al.},
journal={arXiv preprint arXiv:2405.14458},
year={2024},
institution={Tsinghua University},
license = {AGPL-3.0}
}
Для получения подробной информации о реализации, архитектурных инновациях и экспериментальных результатах, пожалуйста, обратитесь к научной статье YOLOv10 и репозиторию GitHub команды Университета Цинхуа.
Часто задаваемые вопросы
Что такое YOLOv10 и чем он отличается от предыдущих версий YOLO?
YOLOv10, разработанный исследователями из Университета Цинхуа, представляет несколько ключевых инноваций в обнаружении объектов в реальном времени. Он устраняет необходимость в немаксимальном подавлении (NMS) за счет использования согласованных двойных назначений во время обучения и оптимизированных компонентов модели для превосходной производительности со сниженными вычислительными затратами. Для получения более подробной информации о его архитектуре и ключевых особенностях, ознакомьтесь с разделом обзора YOLOv10.
Как начать работу с выводом результатов, используя YOLOv10?
Для простого вывода вы можете использовать библиотеку Ultralytics YOLO на языке python или интерфейс командной строки (CLI). Ниже приведены примеры прогнозирования новых изображений с использованием YOLOv10:
Пример
from ultralytics import YOLO
# Load the pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")
results = model("image.jpg")
results[0].show()
yolo detect predict model=yolov10n.pt source=path/to/image.jpg
Для получения дополнительных примеров использования посетите наш раздел Примеры использования.
Какие варианты моделей предлагает YOLOv10 и каковы их варианты использования?
YOLOv10 предлагает несколько вариантов моделей для различных случаев использования:
- YOLOv10n: Подходит для сред с крайне ограниченными ресурсами
- YOLOv10s: Баланс скорости и точности
- YOLOv10m: Общее назначение
- YOLOv10b: Более высокая точность с увеличенной шириной
- YOLOv10l: Высокая точность за счет вычислительных ресурсов
- YOLOv10x: Максимальная точность и производительность
Каждый вариант разработан для различных вычислительных потребностей и требований к точности, что делает их универсальными для различных приложений. Изучите раздел Варианты моделей для получения дополнительной информации.
Как подход без NMS в YOLOv10 улучшает производительность?
YOLOv10 устраняет необходимость в немаксимальном подавлении (NMS) во время вывода, используя согласованные двойные назначения для обучения. Этот подход снижает задержку вывода и повышает эффективность прогнозирования. Архитектура также включает в себя структуру «один к одному» для вывода, гарантируя, что каждый объект получит один наилучший прогноз. Для получения подробного объяснения см. раздел Согласованные двойные назначения для обучения без NMS.
Где я могу найти параметры экспорта для моделей YOLOv10?
YOLOv10 поддерживает несколько форматов экспорта, включая TorchScript, ONNX, OpenVINO и TensorRT. Однако не все форматы экспорта, предоставляемые Ultralytics, в настоящее время поддерживаются для YOLOv10 из-за его новых операций. Для получения подробной информации о поддерживаемых форматах и инструкциях по экспорту посетите раздел Экспорт YOLOv10.
Каковы показатели производительности для моделей YOLOv10?
YOLOv10 превосходит предыдущие версии YOLO и другие современные модели как по точности, так и по эффективности. Например, YOLOv10s в 1.8 раза быстрее, чем RT-DETR-R18, с аналогичным AP на наборе данных COCO. YOLOv10b демонстрирует на 46% меньшую задержку и на 25% меньше параметров, чем YOLOv9-C, при той же производительности. Подробные сравнительные тесты можно найти в разделе Comparisons.