YOLOv10: обнаружение объектов в реальном времени от начала до конца#
YOLOv10, выпущенная в мае 2024 года и созданная на базе пакета Ultralytics для Python исследователями из Университета Цинхуа, представляет новый подход к обнаружению объектов в реальном времени, устраняя недостатки постобработки и архитектуры моделей, характерные для предыдущих версий YOLO. Благодаря устранению подавления немаксимумов (NMS) и оптимизации различных компонентов модели YOLOv10 при выпуске продемонстрировала отличную производительность при значительно меньших вычислительных затратах. Архитектура без NMS с обработкой от начала до конца положила начало подходу, который получил дальнейшее развитие в YOLO26.

Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset
Обзор#
Обнаружение объектов в реальном времени направлено на точное предсказание категорий и положения объектов на изображениях с низкой задержкой. Серия YOLO занимает передовые позиции в этом направлении благодаря балансу производительности и эффективности. Однако зависимость от NMS и неэффективность архитектуры препятствовали достижению оптимальной производительности. YOLOv10 решает эти проблемы, вводя согласованные двойные назначения для обучения без NMS и стратегию целостного проектирования моделей с учетом эффективности и точности.
Архитектура#
Архитектура YOLOv10 опирается на сильные стороны предыдущих моделей YOLO и при этом включает несколько важных инноваций. Архитектура модели состоит из следующих компонентов:
- Основа: отвечающая за извлечение признаков, основа YOLOv10 использует улучшенную версию CSPNet (сеть частичных этапов) для улучшения прохождения градиентов и уменьшения вычислительной избыточности.
- Шея: шея агрегирует признаки разных масштабов и передает их в голову. Она включает слои PAN (сеть агрегации путей) для эффективного слияния многомасштабных признаков.
- Голова One-to-Many: во время обучения генерирует несколько предсказаний для каждого объекта, обеспечивая丰富ные сигналы обучения и повышая точность обучения.
- Голова One-to-One: во время вывода генерирует одно лучшее предсказание для каждого объекта, устраняя необходимость в NMS, уменьшая задержку и повышая эффективность.
Ключевые особенности#
- Обучение без NMS: использует согласованные двойные назначения, устраняя необходимость в NMS и уменьшая задержку вывода.
- Holistic Model Design: Comprehensive optimization of various components from both efficiency and accuracy perspectives, including lightweight classification heads, spatial-channel decoupled downsampling, and rank-guided block design.
- Расширенные возможности модели: использует свёртки с большими ядрами и модули частичного самовнимания для повышения производительности без значительных вычислительных затрат.
Варианты моделей#
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][1] | 640 | 38.5 | 6.7 | 1.84 |
| [YOLOv10s][2] | 640 | 46.3 | 21.6 | 2.49 |
| [YOLOv10m][3] | 640 | 51.1 | 59.1 | 4.74 |
| [YOLOv10b][4] | 640 | 52.5 | 92.0 | 5.74 |
| [YOLOv10l][5] | 640 | 53.2 | 120.3 | 7.28 |
| [YOLOv10x][6] | 640 | 54.4 | 160.4 | 10.70 |
Методология#
Согласованные двойные назначения для обучения без NMS#
YOLOv10 использует двойное назначение меток, объединяя стратегии «один ко многим» и «один к одному» во время обучения для обеспечения качественного контроля и эффективного развертывания End-to-End. Прогнозирование и валидация в Ultralytics по умолчанию используют голову «один ко многим» с NMS; установи nms=False, чтобы выбрать голову без NMS. Согласованная метрика сопоставления выравнивает контроль между обеими стратегиями, повышая качество предсказаний во время инференса.
Целостное проектирование модели с учетом эффективности и точности#
Повышение эффективности#
- Легковесная голова классификации: уменьшает вычислительные затраты головы классификации за счет использования глубинно-разделимых сверток.
- Spatial-Channel Decoupled Downsampling: Decouples spatial reduction and channel modulation to minimize information loss and computational cost.
- Проектирование блоков с учетом ранга: адаптирует структуру блоков на основе внутренней избыточности этапов, обеспечивая оптимальное использование параметров.
Повышение точности#
- Свертка с большим ядром: увеличивает рецептивное поле, улучшая способность извлекать признаки.
- Частичное self-attention (PSA): включает модули self-attention для улучшения обучения глобальным представлениям при минимальных дополнительных затратах.
Эксперименты и результаты#
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 и измерены по собственному протоколу, поэтому их нельзя напрямую сравнивать со значениями на страницах моделей Ultralytics:
| Модель | Параметры (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 |
Значения параметров и FLOPs относятся к объединенной модели после model.fuse(), которая объединяет слои Conv и BatchNorm и удаляет вспомогательную голову детектирования One-to-Many. Предобученные контрольные точки сохраняют полную архитектуру обучения, поэтому их показатели могут быть выше.
Примеры использования#
Для предсказания на новых изображениях с помощью YOLOv10. Модели также можно обучать на облачных GPU через Ultralytics Platform:
from ultralytics import YOLO
# Load a pretrained YOLOv10n model
model = YOLO("yolov10n.pt")
# Perform object detection on an image
results = model("image.jpg")
# Display the results
results[0].show()Для обучения 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)Поддерживаемые задачи и режимы#
Серия моделей YOLOv10 предлагает набор моделей, каждая из которых оптимизирована для высокопроизводительного обнаружения объектов. Эти модели рассчитаны на разные вычислительные потребности и требования к точности, что делает их универсальными для широкого спектра приложений.
| Модель | Имена файлов | Задачи | Обучение | Валидация | Вывод | Экспорт |
|---|---|---|---|---|---|---|
| YOLOv10 | yolov10n.pt yolov10s.pt yolov10m.pt yolov10b.pt yolov10l.pt yolov10x.pt | Обнаружение объектов | ✅ | ✅ | ✅ | ✅ |
Экспорт YOLOv10#
Из-за новых операций, добавленных в YOLOv10, в настоящее время поддерживаются не все форматы экспорта, предоставляемые Ultralytics. В следующей таблице указано, какие форматы были успешно преобразованы с помощью Ultralytics для YOLOv10. Если ты можешь внести изменение, добавляющее поддержку экспорта дополнительных форматов для YOLOv10, создай pull request.
| Формат экспорта | Поддержка экспорта | Вывод экспортированной модели | Примечания |
|---|---|---|---|
| TorchScript | ✅ | ✅ | Стандартный формат модели PyTorch. |
| ONNX | ✅ | ✅ | Широко поддерживается для развертывания. |
| OpenVINO | ✅ | ✅ | Оптимизировано для оборудования Intel. |
| TensorRT | ✅ | ✅ | Оптимизировано для GPU NVIDIA. |
| CoreML | ✅ | ✅ | Только для устройств Apple. |
| TF SavedModel | ✅ | ✅ | Стандартный формат моделей TensorFlow. |
| TF GraphDef | ✅ | ✅ | Устаревший формат TensorFlow. |
| LiteRT | ✅ | ✅ | Оптимизировано для мобильных устройств, встраиваемых систем и браузеров (LiteRT.js). |
| TF Edge TPU | ✅ | ✅ | Только для устройств Google Edge TPU. |
| PaddlePaddle | ❌ | ❌ | Популярен в Китае; глобальная поддержка ограничена. |
| NCNN | ✅ | ❌ | The torch.topk operator is not supported by the NCNN runtime. |
Заключение#
На момент выхода YOLOv10 установил новый стандарт обнаружения объектов в реальном времени, устранив недостатки предыдущих версий YOLO и внедрив инновационные стратегии проектирования. Его подход без NMS впервые реализовал сквозное обнаружение объектов в семействе YOLO. Актуальную модель Ultralytics с улучшенной производительностью и инференсом без NMS см. в разделе YOLO26.
Цитирование и благодарности#
Мы хотели бы поблагодарить авторов YOLOv10 из Университета Цинхуа за их масштабные исследования и значительный вклад в развитие фреймворка Ultralytics:
@inproceedings{wang2024yolov10,
title={YOLOv10: Real-Time End-to-End Object Detection},
author={Wang, Ao and Chen, Hui and Liu, Lihao and Chen, Kai and Lin, Zijia and Han, Jungong and Ding, Guiguang},
booktitle={Advances in Neural Information Processing Systems},
doi = {10.52202/079017-3429},
url = {https://proceedings.neurips.cc/paper_files/paper/2024/file/c34ddd05eb089991f06f3c5dc36836e0-Paper-Conference.pdf},
volume={37},
pages={107984--108011},
year={2024}
}Подробное описание реализации, архитектурных инноваций и экспериментальных результатов см. в научной статье YOLOv10 и репозитории GitHub команды Университета Цинхуа.
Часто задаваемые вопросы#
YOLOv10, разработанный исследователями из Университета Цинхуа, представляет несколько ключевых инноваций для обнаружения объектов в реальном времени. Он устраняет необходимость в подавлении немаксимумов (NMS), используя согласованные двойные назначения во время обучения и оптимизированные компоненты модели для повышения производительности при сниженных вычислительных затратах. Подробнее о его архитектуре и ключевых особенностях см. в разделе обзор YOLOv10.
Для простого выполнения инференса можно использовать библиотеку Ultralytics YOLO для Python или интерфейс командной строки (CLI). Ниже приведены примеры предсказания на новых изображениях с использованием YOLOv10:
Примерfrom ultralytics import YOLO # Load the pretrained YOLOv10n model model = YOLO("yolov10n.pt") results = model("image.jpg") results[0].show()Больше примеров использования см. в разделе Примеры использования.
YOLOv10 предлагает несколько вариантов моделей для разных задач:
- YOLOv10n: подходит для сред с крайне ограниченными ресурсами
- YOLOv10s: обеспечивает баланс между скоростью и точностью
- YOLOv10m: для задач общего назначения
- YOLOv10b: повышенная точность за счёт увеличенной ширины модели
- YOLOv10l: высокая точность за счёт увеличения вычислительных затрат
- YOLOv10x: максимальные точность и производительность
Каждый вариант разработан с учётом различных вычислительных ресурсов и требований к точности, что делает их универсальными для широкого спектра приложений. Дополнительную информацию см. в разделе Варианты моделей.
YOLOv10 обучается с согласованными двойными назначениями, благодаря чему егоголова «один к одному» формирует единое лучшее предсказание для каждого объекта, что исключает необходимость в подавлении немаксимумов (NMS) при инференсе. Предсказание и валидация в Ultralytics по умолчанию используют голову «один ко многим» с NMS; задай
nms=False, чтобы выбрать голову без NMS и исключить этап NMS. Подробное объяснение см. в разделе Consistent Dual Assignments for NMS-Free Training.YOLOv10 поддерживает несколько форматов экспорта, включая TorchScript, ONNX, OpenVINO и TensorRT. Однако из-за новых операций YOLOv10 в настоящее время поддерживает не все форматы экспорта, доступные в Ultralytics. Сведения о поддерживаемых форматах и инструкции по экспорту см. в разделе Экспорт YOLOv10.
YOLOv10 превосходит предыдущие версии YOLO и другие современные модели как по точности, так и по эффективности. Например, YOLOv10s работает в 1,8 раза быстрее RT-DETR-R18 при схожем показателе AP на наборе данных COCO. YOLOv10b демонстрирует задержку на 46% меньше и на 25% меньше параметров, чем YOLOv9-C, при одинаковой производительности. Подробные результаты тестирования приведены в разделе Сравнения.