YOLOv10: детектирование объектов в реальном времени от начала до конца
YOLOv10, released in May 2024 and built on the Ultralytics Python package by researchers at Tsinghua University, introduces a new approach to real-time object detection, addressing both the post-processing and model architecture deficiencies found in previous YOLO versions. By eliminating non-maximum suppression (NMS) and optimizing various model components, YOLOv10 achieved excellent performance with significantly reduced computational overhead at its time of release. Its NMS-free end-to-end design pioneered an approach that has been further developed in YOLO26.

Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset
Обзор
Детектирование объектов в реальном времени нацелено на точное предсказание категорий и позиций объектов на изображениях с минимальной задержкой. Серия YOLO находится в авангарде этих исследований благодаря балансу между производительностью и эффективностью. Однако зависимость от NMS и архитектурные недостатки препятствовали достижению оптимальных результатов. YOLOv10 решает эти проблемы, внедряя согласованные двойные присвоения для обучения без NMS, а также комплексную стратегию проектирования моделей, ориентированную на эффективность и точность.
Архитектура
Архитектура YOLOv10 опирается на сильные стороны предыдущих моделей YOLO, внедряя при этом ряд ключевых инноваций. Архитектура модели состоит из следующих компонентов:
- Backbone: Отвечает за извлечение признаков; в YOLOv10 используется улучшенная версия CSPNet (Cross Stage Partial Network) для улучшения градиентного потока и снижения вычислительной избыточности.
- Neck: Предназначена для агрегирования признаков с различных масштабов и их передачи в «голову» (head). Включает слои PAN (Path Aggregation Network) для эффективного слияния признаков на разных масштабах.
- One-to-Many Head: Генерирует несколько предсказаний для каждого объекта во время обучения, обеспечивая богатые сигналы контроля и повышая точность обучения.
- One-to-One Head: Генерирует одно лучшее предсказание для каждого объекта во время вывода (inference), что устраняет необходимость в NMS, тем самым снижая задержку и повышая эффективность.
Основные характеристики
- Обучение без NMS: Использует согласованные двойные присвоения для исключения необходимости в NMS, снижая задержку при выводе.
- Комплексное проектирование модели: Всесторонняя оптимизация различных компонентов с точки зрения эффективности и точности, включая облегченные классификационные головы, пространственно-канальное раздельное понижающее дискретизирование и блочное проектирование на основе рангов.
- Улучшенные возможности модели: Включает свертки с большими ядрами и модули частичного самовнимания для повышения производительности без значительных вычислительных затрат.
Варианты модели
YOLOv10 представлена в различных масштабах для удовлетворения различных потребностей применения:
- YOLOv10n: Nano-версия для сред с крайне ограниченными ресурсами.
- YOLOv10s: Small-версия, балансирующая скорость и точность.
- YOLOv10m: Medium-версия для общего использования.
- YOLOv10b: Сбалансированная версия с увеличенной шириной для более высокой точности.
- YOLOv10l: Large-версия для более высокой точности ценой увеличения вычислительных ресурсов.
- YOLOv10x: Extra-large-версия для максимальной точности и производительности.
Производительность
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 использует двойные присвоения меток, сочетая стратегии «один-ко-многим» и «один-к-одному» во время обучения для обеспечения качественного надзора и эффективного развертывания от начала до конца. Согласованная метрика сопоставления выравнивает надзор между обеими стратегиями, повышая качество предсказаний во время вывода.
Комплексное проектирование модели, ориентированное на эффективность и точность
Улучшения эффективности
- Облегченная классификационная голова: Снижает вычислительные затраты классификационной головы за счет использования глубинных сепарабельных сверток.
- Пространственно-канальное раздельное понижающее дискретизирование: Разделяет пространственное уменьшение и модуляцию каналов для минимизации потери информации и вычислительных затрат.
- Блочное проектирование на основе рангов: Адаптирует дизайн блоков на основе внутренней избыточности этапов, обеспечивая оптимальное использование параметров.
Улучшения точности
- Свертка с большим ядром: Увеличивает рецептивное поле для повышения способности к извлечению признаков.
- Частичное самовнимание (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 |
Значения параметров и FLOPs указаны для объединенной (fused) модели после вызова model.fuse(), который объединяет слои Conv и BatchNorm и удаляет вспомогательную «один-ко-многим» голову обнаружения. Предобученные чекпоинты сохраняют полную архитектуру обучения и могут показывать более высокие значения.
Примеры использования
Для предсказания на новых изображениях с помощью 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 предлагает ряд вариантов, каждый из которых оптимизирован для высокопроизводительного Object Detection. Эти модели соответствуют различным вычислительным потребностям и требованиям к точности, что делает их универсальными для широкого спектра приложений.
| Модель | Имена файлов | Задачи | Логический вывод | Валидация | Обучение | Экспорт (Export) |
|---|---|---|---|---|---|---|
| YOLOv10 | yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt | Обнаружение объектов | ✅ | ✅ | ✅ | ✅ |
Экспорт YOLOv10
Из-за новых операций, введенных в YOLOv10, не все форматы экспорта, предоставляемые Ultralytics, поддерживаются в данный момент. В следующей таблице указано, какие форматы были успешно конвертированы с использованием Ultralytics для YOLOv10. Смело создавай pull request, если можешь внести изменения для вклада в добавление поддержки экспорта дополнительных форматов для YOLOv10.
| Формат экспорта | Поддержка экспорта | Инференс экспортированной модели | Примечания |
|---|---|---|---|
| TorchScript | ✅ | ✅ | Стандартный формат моделей PyTorch. |
| ONNX | ✅ | ✅ | Широко поддерживается для развертывания. |
| OpenVINO | ✅ | ✅ | Оптимизирован для оборудования Intel. |
| TensorRT | ✅ | ✅ | Оптимизирован для GPU NVIDIA. |
| 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 и внедрив инновационные стратегии проектирования. Его подход без NMS стал новаторским для сквозного обнаружения объектов в семействе YOLO. Для получения последней модели Ultralytics с улучшенной производительностью и инференсом без NMS, смотри YOLO26.
Цитирование и благодарности
Мы хотели бы выразить признательность авторам 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}
}Для подробной информации о реализации, архитектурных инновациях и экспериментальных результатах обратись к научной статье и GitHub-репозиторию YOLOv10 от команды Университета Цинхуа.
Часто задаваемые вопросы (FAQ)
Что такое YOLOv10 и чем она отличается от предыдущих версий YOLO?
YOLOv10, разработанная исследователями из Университета Цинхуа, представляет несколько ключевых инноваций в обнаружении объектов в реальном времени. Она исключает необходимость в подавлении немаксимумов (NMS) за счет использования согласованных двойных назначений во время обучения и оптимизированных компонентов модели для превосходной производительности при сниженных вычислительных затратах. Для получения более подробной информации о её архитектуре и ключевых функциях ознакомься с разделом обзора YOLOv10.
Как начать работу с запуском инференса с использованием 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 и каковы их варианты использования?
YOLOv10 предлагает несколько вариантов моделей, чтобы удовлетворить различные потребности:
- YOLOv10n: подходит для сред с крайне ограниченными ресурсами
- YOLOv10s: баланс скорости и точности
- YOLOv10m: универсальное использование
- YOLOv10b: повышенная точность за счет увеличенной ширины
- YOLOv10l: высокая точность ценой больших вычислительных ресурсов
- YOLOv10x: максимальная точность и производительность
Каждый вариант разработан для различных вычислительных потребностей и требований к точности, что делает их универсальными для множества приложений. Изучи раздел Model Variants для получения дополнительной информации.
Как подход без NMS в YOLOv10 улучшает производительность?
YOLOv10 устраняет необходимость в немаксимальном подавлении (NMS) во время вывода благодаря использованию согласованных двойных назначений (consistent dual assignments) при обучении. Этот подход снижает задержку вывода и повышает эффективность прогнозирования. Архитектура также включает голову «один-к-одному» для вывода, гарантируя, что для каждого объекта получается один наилучший прогноз. Подробное объяснение см. в разделе Consistent Dual Assignments for NMS-Free Training.
Где я могу найти параметры экспорта для моделей YOLOv10?
YOLOv10 поддерживает несколько форматов экспорта, включая TorchScript, ONNX, OpenVINO и TensorRT. Однако не все форматы экспорта, предоставляемые Ultralytics, в настоящее время поддерживаются для YOLOv10 из-за его новых операций. Подробную информацию о поддерживаемых форматах и инструкции по экспорту см. в разделе Exporting YOLOv10.
Каковы показатели производительности моделей YOLOv10?
YOLOv10 превосходит предыдущие версии YOLO и другие современные модели как по точности, так и по эффективности. Например, YOLOv10s работает в 1,8 раза быстрее, чем RT-DETR-R18, при аналогичном AP на наборе данных COCO. YOLOv10b показывает на 46% меньшую задержку и на 25% меньше параметров, чем YOLOv9-C, при той же производительности. Подробные тесты производительности можно найти в разделе Comparisons.