Перейти к содержанию

YOLOv10: Обнаружение объектов в реальном времени End-to-End

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

YOLOv10 последовательное двойное назначение для обучения без NMS



Смотреть: Как обучить YOLOv10 на наборе данных SKU-110k, используя Ultralytics | Набор данных розничной торговли

Обзор

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

Архитектура

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

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

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

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

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

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.

МодельВходной размерAPvalFLOPs (G)Задержка (мс)
YOLOv10n64038.56.71.84
YOLOv10s64046.321.62.49
YOLOv10m64051.159.14.74
YOLOv10b64052.592.05.74
YOLOv10l64053.2120.37.28
YOLOv10x64054.4160.410.70

Методология

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

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

Комплексная эффективность - Модельный дизайн, ориентированный на точность

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

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

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

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

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

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

Сравнения

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

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

  • 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

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

Для прогнозирования новых изображений с помощью YOLOv10:

Пример

from ultralytics import YOLO

# Load a pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")

# Perform object detection on an image
results = model("image.jpg")

# Display the results
results[0].show()
# Load a COCO-pretrained YOLOv10n model and run inference on the 'bus.jpg' image
yolo detect predict model=yolov10n.pt source=path/to/bus.jpg

Для обучения 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)
# Build a YOLOv10n model from scratch and train it on the COCO8 example dataset for 100 epochs
yolo train model=yolov10n.yaml data=coco8.yaml epochs=100 imgsz=640

# Build a YOLOv10n model from scratch and run inference on the 'bus.jpg' image
yolo predict model=yolov10n.yaml source=path/to/bus.jpg

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

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

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

Экспорт YOLOv10

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

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

Заключение

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

Цитирование и благодарности

Мы хотели бы выразить благодарность авторам 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}
}

Для получения подробной информации о реализации, архитектурных инновациях и экспериментальных результатах, пожалуйста, обратитесь к исследовательской статье YOLOv10 и репозиторию GitHub команды Университета Цинхуа.

Часто задаваемые вопросы

Что такое YOLOv10 и чем он отличается от предыдущих версий YOLO?

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

Как начать работу с выводом данных с использованием YOLOv10?

Для простого inference вы можете использовать библиотеку Ultralytics YOLO python или интерфейс командной строки (CLI). Ниже приведены примеры прогнозирования новых изображений с использованием YOLOv10:

Пример

from ultralytics import YOLO

# Load the pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")
results = model("image.jpg")
results[0].show()
yolo detect predict model=yolov10n.pt source=path/to/image.jpg

Для получения дополнительных примеров использования посетите наш раздел Примеры использования.

Какие варианты моделей предлагает YOLOv10 и каковы их варианты использования?

YOLOv10 предлагает несколько вариантов моделей для различных случаев использования:

  • YOLOv10n: Подходит для сред с крайне ограниченными ресурсами
  • YOLOv10s: Баланс скорости и точности
  • YOLOv10m: Общее назначение
  • YOLOv10b: Более высокая точность с увеличенной шириной
  • YOLOv10l: Высокая точность за счет вычислительных ресурсов
  • YOLOv10x: Максимальная точность и производительность

Каждый вариант разработан для различных вычислительных потребностей и требований к точности, что делает их универсальными для различных приложений. Изучите раздел Варианты моделей для получения дополнительной информации.

Как подход без NMS в YOLOv10 повышает производительность?

YOLOv10 устраняет необходимость в non-maximum suppression (NMS) во время inference, используя согласованные двойные назначения для обучения. Этот подход снижает задержку inference и повышает эффективность прогнозирования. Архитектура также включает в себя head «один к одному» для inference, гарантируя, что каждый объект получит один наилучший прогноз. Подробное объяснение см. в разделе Consistent Dual Assignments for NMS-Free Training.

Где я могу найти параметры экспорта для моделей YOLOv10?

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

Каковы эталонные показатели производительности для моделей YOLOv10?

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



📅 Создано 1 год назад ✏️ Обновлено 25 дней назад
glenn-jocherRizwanMunawarleonnilY-T-GLaughing-qMatthewNoyceUltralyticsAssistanthasanghaffari93zhixuweiabirami-vinaBurhan-Q

Комментарии