Ultralytics YOLO27:
Get Started

YOLOv10: сквозное обнаружение объектов в реальном времени#

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

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



Смотри: Как обучить YOLOv10 на датасете SKU-110k с помощью Ultralytics | Датасет розничной торговли

Обзор#

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

Архитектура#

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

  1. Основная сеть: отвечает за извлечение признаков. В YOLOv10 основная сеть использует усовершенствованную версию CSPNet (Cross Stage Partial Network), которая улучшает распространение градиентов и снижает избыточные вычисления.
  2. Шея: предназначена для агрегации признаков разных масштабов и их передачи в голову модели. Она включает слои PAN (Path Aggregation Network) для эффективного слияния признаков разных масштабов.
  3. Голова One-to-Many: во время обучения генерирует несколько предсказаний для каждого объекта, обеспечивая богатый сигнал для обучения и повышая точность обучения.
  4. Голова One-to-One: во время инференса формирует одно наиболее точное предсказание для каждого объекта, устраняя необходимость в 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.

МодельРазмер входных данныхAPпроверкаFLOPs (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 использует двойное назначение меток: во время обучения сочетает стратегии one-to-many и one-to-one, обеспечивая полноценный контроль и эффективное сквозное развертывание. По умолчанию Ultralytics использует для предсказания и валидации голову one-to-many с NMS; задай nms=False, чтобы выбрать голову без NMS. Метрика согласованного сопоставления выравнивает контроль для обеих стратегий, повышая качество предсказаний во время инференса.

Комплексное проектирование модели с учётом эффективности и точности#

Повышение эффективности#

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

Повышение точности#

  1. Свёртка с большим ядром: увеличивает рецептивное поле, улучшая возможности извлечения признаков.
  2. Частичный self-attention (PSA): добавляет модули self-attention, чтобы улучшить обучение глобальным представлениям с минимальными дополнительными затратами.

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

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

Сравнения#

Сравнение 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 исследовательской работе и измерены по собственному протоколу, поэтому их нельзя напрямую сравнивать со значениями на страницах моделей Ultralytics:

МодельПараметры
(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.738.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.32.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.14.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.27.287.21
YOLOv8x68.2257.853.916.8612.83
RT-DETR-R10176.0259.054.313.7113.58
YOLOv10x29.5160.454.410.7010.60

Значения параметров и FLOPs указаны для объединённой модели после model.fuse(): в ней слои Conv и BatchNorm объединены, а вспомогательная голова детекции one-to-many удалена. Предобученные контрольные точки сохраняют полную архитектуру обучения, поэтому указанные значения могут быть выше.

Примеры использования#

Модели также можно обучать на облачных GPU через платформу Ultralytics. Чтобы выполнять предсказания на новых изображениях с YOLOv10:

Пример
from ultralytics import YOLO

# Загрузи предобученную модель YOLOv10n
model = YOLO("yolov10n.pt")

# Выполнить обнаружение объектов на изображении
results = model("image.jpg")

# Отобрази результаты
results[0].show()

Чтобы обучить YOLOv10 на собственном датасете:

Пример
from ultralytics import YOLO

# Загрузи модель YOLOv10n с нуля
model = YOLO("yolov10n.yaml")

# Обучить модель
model.train(data="coco8.yaml", epochs=100, imgsz=640)

Поддерживаемые задачи и режимы#

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

МодельИмена файловЗадачиОбучениеВалидацияИнференсЭкспорт
YOLOv10yolov10n.pt yolov10s.pt yolov10m.pt yolov10b.pt yolov10l.pt yolov10x.ptОбнаружение объектов✅✅✅✅

Экспорт YOLOv10#

Из-за новых операций, появившихся в YOLOv10, сейчас поддерживаются не все форматы экспорта Ultralytics. В таблице ниже перечислены форматы, в которые YOLOv10 успешно экспортируется с помощью Ultralytics. Если ты можешь внести изменение в код, чтобы добавить поддержку экспорта YOLOv10 в другие форматы, создай pull request.

Формат экспортаПоддержка экспортаИнференс экспортированной моделиПримечания
TorchScript✅✅Стандартный формат модели PyTorch.
ONNX✅✅Широко поддерживается при развертывании.
OpenVINO✅✅Оптимизирован для оборудования Intel.
TensorRT✅✅Оптимизирован для GPU NVIDIA.
CoreML✅✅Только для устройств Apple.
TF SavedModel✅✅Стандартный формат модели TensorFlow.
TF GraphDef✅✅Устаревший формат TensorFlow.
TF Edge TPU✅✅Только для устройств Edge TPU от Google.
LiteRT✅✅Оптимизирован для мобильных и встраиваемых устройств, а также браузеров (LiteRT.js).
PaddlePaddle❌❌Популярен в Китае; за его пределами поддерживается реже.
NCNN✅❌Оператор torch.topk не поддерживается средой выполнения NCNN.

Заключение#

На момент выхода 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
    
    # Загружаем предварительно обученную модель YOLOv10n
    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. Подробное объяснение смотри в разделе Согласованные двойные назначения для обучения без NMS.

  • YOLOv10 поддерживает несколько форматов экспорта, включая TorchScript, ONNX, OpenVINO и TensorRT. Однако из-за новых операций YOLOv10 пока поддерживает не все форматы экспорта, доступные в Ultralytics. Подробную информацию о поддерживаемых форматах и инструкциях по экспорту смотри в разделе Экспорт YOLOv10.

  • YOLOv10 превосходит предыдущие версии YOLO и другие современные модели как по точности, так и по эффективности. Например, YOLOv10s в 1,8 раза быстрее RT-DETR-R18 при сопоставимом AP на наборе данных COCO. YOLOv10b демонстрирует на 46% меньшую задержку и на 25% меньше параметров, чем YOLOv9-C, при той же производительности. Подробные результаты тестирования смотри в разделе Сравнения.

Комментарии