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.

Согласованное двойное присвоение YOLOv10 для обучения без NMS



Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset

Обзор

Детектирование объектов в реальном времени нацелено на точное предсказание категорий и позиций объектов на изображениях с минимальной задержкой. Серия YOLO находится в авангарде этих исследований благодаря балансу между производительностью и эффективностью. Однако зависимость от NMS и архитектурные недостатки препятствовали достижению оптимальных результатов. YOLOv10 решает эти проблемы, внедряя согласованные двойные присвоения для обучения без NMS, а также комплексную стратегию проектирования моделей, ориентированную на эффективность и точность.

Архитектура

Архитектура YOLOv10 опирается на сильные стороны предыдущих моделей YOLO, внедряя при этом ряд ключевых инноваций. Архитектура модели состоит из следующих компонентов:

  1. Backbone: Отвечает за извлечение признаков; в YOLOv10 используется улучшенная версия CSPNet (Cross Stage Partial Network) для улучшения градиентного потока и снижения вычислительной избыточности.
  2. Neck: Предназначена для агрегирования признаков с различных масштабов и их передачи в «голову» (head). Включает слои PAN (Path Aggregation Network) для эффективного слияния признаков на разных масштабах.
  3. One-to-Many Head: Генерирует несколько предсказаний для каждого объекта во время обучения, обеспечивая богатые сигналы контроля и повышая точность обучения.
  4. One-to-One Head: Генерирует одно лучшее предсказание для каждого объекта во время вывода (inference), что устраняет необходимость в NMS, тем самым снижая задержку и повышая эффективность.

Основные характеристики

  1. Обучение без NMS: Использует согласованные двойные присвоения для исключения необходимости в NMS, снижая задержку при выводе.
  2. Комплексное проектирование модели: Всесторонняя оптимизация различных компонентов с точки зрения эффективности и точности, включая облегченные классификационные головы, пространственно-канальное раздельное понижающее дискретизирование и блочное проектирование на основе рангов.
  3. Улучшенные возможности модели: Включает свертки с большими ядрами и модули частичного самовнимания для повышения производительности без значительных вычислительных затрат.

Варианты модели

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.

МодельРазмер входных данныхAPvalFLOPs (G)Задержка (мс)
[YOLOv10n][1]64038.56.71.84
[YOLOv10s][2]64046.321.62.49
[YOLOv10m][3]64051.159.14.74
[YOLOv10b][4]64052.592.05.74
[YOLOv10l][5]64053.2120.37.28
[YOLOv10x][6]64054.4160.410.70

Методология

Согласованные двойные присвоения для обучения без NMS

YOLOv10 использует двойные присвоения меток, сочетая стратегии «один-ко-многим» и «один-к-одному» во время обучения для обеспечения качественного надзора и эффективного развертывания от начала до конца. Согласованная метрика сопоставления выравнивает надзор между обеими стратегиями, повышая качество предсказаний во время вывода.

Комплексное проектирование модели, ориентированное на эффективность и точность

Улучшения эффективности

  1. Облегченная классификационная голова: Снижает вычислительные затраты классификационной головы за счет использования глубинных сепарабельных сверток.
  2. Пространственно-канальное раздельное понижающее дискретизирование: Разделяет пространственное уменьшение и модуляцию каналов для минимизации потери информации и вычислительных затрат.
  3. Блочное проектирование на основе рангов: Адаптирует дизайн блоков на основе внутренней избыточности этапов, обеспечивая оптимальное использование параметров.

Улучшения точности

  1. Свертка с большим ядром: Увеличивает рецептивное поле для повышения способности к извлечению признаков.
  2. Частичное самовнимание (PSA): Включает модули самовнимания для улучшения изучения глобальных представлений с минимальными накладными расходами.

Эксперименты и результаты

YOLOv10 была всесторонне протестирована на стандартных бенчмарках, таких как COCO, продемонстрировав превосходную производительность и эффективность. Модель достигает современных результатов в разных вариантах, демонстрируя значительные улучшения в задержке и точности по сравнению с предыдущими версиями и другими современными детекторами.

Сравнения

Сравнение YOLOv10 с современными детекторами объектов

По сравнению с другими современными детекторами:

  • 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-N4.711.437.02.691.76
Gold-YOLO-N5.612.139.62.921.82
YOLOv8n3.28.737.36.161.77
YOLOv10n2.36.739.51.841.79
YOLOv6-3.0-S18.545.344.33.422.35
Gold-YOLO-S21.546.045.43.822.73
YOLOv8s11.228.644.97.072.33
YOLOv10s7.221.646.82.492.39
RT-DETR-R1820.060.046.54.584.49
YOLOv6-3.0-M34.985.849.15.634.56
Gold-YOLO-M41.387.549.86.385.45
YOLOv8m25.978.950.69.505.09
YOLOv10m15.459.151.34.744.63
YOLOv6-3.0-L59.6150.751.89.027.90
Gold-YOLO-L75.1151.751.810.659.78
YOLOv8l43.7165.252.912.398.06
RT-DETR-R5042.0136.053.19.209.07
YOLOv10l24.4120.353.47.287.21
YOLOv8x68.2257.853.916.8612.83
RT-DETR-R10176.0259.054.313.7113.58
YOLOv10x29.5160.454.410.7010.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)
YOLOv10yolov10n.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.

Комментарии