YOLOv10: Детектирование объектов в реальном времени из конца в конец#
YOLOv10, выпущенный в мае 2024 года и созданный на базе пакета Python Ultralytics исследователями из Университета Цинхуа, представляет новый подход к обнаружению объектов в реальном времени, устраняя недостатки постпроцессинга и архитектуры моделей, присущие предыдущим версиям 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 (Cross Stage Partial Network) для оптимизации потока градиентов и уменьшения вычислительной избыточности.
- Neck: Предназначена для агрегирования признаков с разных масштабов и передачи их в head. Включает слои PAN (Path Aggregation Network) для эффективного слияния многомасштабных признаков.
- One-to-Many Head: Генерирует несколько предсказаний для каждого объекта во время обучения, обеспечивая богатые сигналы контроля и повышая точность обучения.
- One-to-One Head: Генерирует единственное лучшее предсказание для объекта во время вывода, чтобы исключить необходимость NMS, тем самым снижая задержку и повышая эффективность.
Ключевые особенности#
- Обучение без NMS: Использует согласованное двойное назначение для исключения необходимости в NMS, снижая задержку инференса.
- Holistic Model Design: Комплексная оптимизация различных компонентов с точки зрения эффективности и точности, включая облегченные классификационные головы, пространственно-канальную декоплированную понижающую выборку и блочный дизайн с ранжированием.
- Расширенные возможности модели: Включает свертки с большим ядром и модули частичного самовнимания для повышения производительности без значительных вычислительных затрат.
Варианты модели#
YOLOv10 выпускается в различных масштабах для удовлетворения разных потребностей приложений:
- YOLOv10n: Nano-версия для сред с крайне ограниченными ресурсами.
- YOLOv10s: Small-версия, балансирующая скорость и точность.
- YOLOv10m: Medium-версия для универсального использования.
- YOLOv10b: Balanced-версия с увеличенной шириной для более высокой точности.
- 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 использует двойное назначение меток, сочетая стратегии «один-к-многим» и «один-к-одному» во время обучения для обеспечения богатого контроля и эффективного сквозного развертывания. Согласованная метрика сопоставления выравнивает надзор между обеими стратегиями, повышая качество предсказаний во время инференса.
Проектирование модели, ориентированное на комплексную эффективность и точность#
Улучшения эффективности#
- Облегченная классификационная голова: Снижает вычислительные затраты классификационной головы за счет использования depth-wise separable convolutions.
- Пространственно-канальная декоплированная понижающая выборка: Разделяет пространственное сокращение и канальную модуляцию для минимизации потери информации и вычислительных затрат.
- Блочный дизайн с ранжированием: Адаптирует дизайн блоков на основе внутренней избыточности стадий, обеспечивая оптимальное использование параметров.
Улучшения точности#
- Свертка с большим ядром: Увеличивает рецептивное поле для улучшения способности извлечения признаков.
- Partial 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 с другими современными моделями:
| Модель | Params (M) | FLOPs (G) | mAPval 50-95 | Latency (ms) | Latency-forward (ms) |
|---|---|---|---|---|---|
| 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 и удаляет вспомогательную голову обнаружения «один-к-многим». Предобученные чекпоинты сохраняют полную архитектуру обучения и могут показывать большие значения.
Примеры использования#
Для предсказания на новых изображениях с помощью YOLOv10. Модели также можно обучать на облачных GPU через платформу Ultralytics:
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 предлагает линейку моделей, каждая из которых оптимизирована для высокопроизводительного обнаружения объектов. Эти модели удовлетворяют различные вычислительные потребности и требования к точности, что делает их универсальными для широкого спектра применений.
| Модель | Имена файлов | Задачи | Training | Validation | Inference | Экспорт |
|---|---|---|---|---|---|---|
| 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 | ✅ | ✅ | Оптимизировано для графических процессоров NVIDIA. |
| CoreML | ✅ | ✅ | Ограничено устройствами Apple. |
| TF SavedModel | ✅ | ✅ | Стандартный формат модели TensorFlow. |
| TF GraphDef | ✅ | ✅ | Устаревший формат TensorFlow. |
| LiteRT | ✅ | ✅ | Оптимизировано для мобильных устройств, встраиваемых систем и браузеров (LiteRT.js). |
| TF Edge TPU | ✅ | ✅ | Специфично для устройств Google Edge TPU. |
| PaddlePaddle | ❌ | ❌ | Популярно в Китае; меньшая глобальная поддержка. |
| NCNN | ✅ | ❌ | Слой torch.topk не существует или не зарегистрирован |
Заключение#
На момент своего выпуска YOLOv10 установил новый стандарт в обнаружении объектов в реальном времени, устранив недостатки предыдущих версий YOLO и внедрив инновационные стратегии проектирования. Его подход без NMS положил начало обнаружению объектов со сквозным обучением в семействе YOLO. Актуальную модель Ultralytics с улучшенной производительностью и инференсом без NMS см. в разделе YOLO26.
Цитирование и благодарности#
Мы выражаем признательность авторам YOLOv10 из Tsinghua University за их масштабные исследования и значительный вклад в фреймворк 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}
}Для получения подробной информации о реализации, архитектурных инновациях и результатах экспериментов обращайся к научной статье и репозиторию GitHub по YOLOv10 от команды Tsinghua University.
FAQ#
Что такое YOLOv10 и чем он отличается от предыдущих версий YOLO?#
YOLOv10, разработанный исследователями из Tsinghua University, представляет несколько ключевых инноваций в обнаружении объектов в реальном времени. Он устраняет необходимость в подавлении немаксимумов (NMS) за счет использования согласованного двойного назначения во время обучения и оптимизированных компонентов модели для достижения превосходной производительности при сниженных вычислительных затратах. Подробную информацию об архитектуре и ключевых особенностях см. в разделе обзора YOLOv10.
Как начать работу с запуском вывода с помощью YOLOv10?#
Для удобного вывода ты можешь использовать библиотеку Python Ultralytics YOLO или интерфейс командной строки (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: максимальная точность и производительность
Каждый вариант разработан под различные вычислительные потребности и требования к точности, что делает модели универсальными для самых разных применений. Дополнительную информацию ищи в разделе Варианты моделей.
Как подход без NMS в YOLOv10 улучшает производительность?#
YOLOv10 исключает необходимость в подавлении немаксимумов (NMS) во время инференса благодаря использованию согласованного двойного назначения для обучения. Этот подход снижает задержку инференса и повышает эффективность предсказаний. Архитектура также включает голову «один-к-одному» для инференса, гарантируя, что каждый объект получает одно наилучшее предсказание. Подробное объяснение см. в разделе Согласованное двойное назначение для обучения без NMS.
Где я могу найти варианты экспорта для моделей YOLOv10?#
YOLOv10 поддерживает несколько форматов экспорта, включая TorchScript, ONNX, OpenVINO и TensorRT. Однако из-за новых операций в настоящее время для YOLOv10 поддерживаются не все форматы экспорта от Ultralytics. Информацию о поддерживаемых форматах и инструкции по экспорту см. в разделе Экспорт YOLOv10.
Каковы показатели производительности моделей YOLOv10?#
YOLOv10 превосходит предыдущие версии YOLO и другие современные модели как по точности, так и по эффективности. Например, YOLOv10s работает в 1.8 раза быстрее, чем RT-DETR-R18, при аналогичном AP на датасете COCO. YOLOv10b демонстрирует на 46% меньшую задержку и на 25% меньше параметров, чем YOLOv9-C, при той же производительности. Подробные бенчмарки можно найти в разделе Сравнения.