Ultralytics YOLO27:

YOLOv10: обнаружение объектов в реальном времени от начала до конца#

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

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



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

Обзор#

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

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

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

  1. Основа: отвечающая за извлечение признаков, основа YOLOv10 использует улучшенную версию CSPNet (сеть частичных этапов) для улучшения прохождения градиентов и уменьшения вычислительной избыточности.
  2. Шея: шея агрегирует признаки разных масштабов и передает их в голову. Она включает слои PAN (сеть агрегации путей) для эффективного слияния многомасштабных признаков.
  3. Голова One-to-Many: во время обучения генерирует несколько предсказаний для каждого объекта, обеспечивая丰富ные сигналы обучения и повышая точность обучения.
  4. Голова One-to-One: во время вывода генерирует одно лучшее предсказание для каждого объекта, устраняя необходимость в NMS, уменьшая задержку и повышая эффективность.

Ключевые особенности#

  1. Обучение без NMS: использует согласованные двойные назначения, устраняя необходимость в NMS и уменьшая задержку вывода.
  2. Holistic Model Design: Comprehensive optimization of various components from both efficiency and accuracy perspectives, including lightweight classification heads, spatial-channel decoupled downsampling, and rank-guided block design.
  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)Задержка (мс)
[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 использует двойное назначение меток, объединяя стратегии «один ко многим» и «один к одному» во время обучения для обеспечения качественного контроля и эффективного развертывания End-to-End. Прогнозирование и валидация в Ultralytics по умолчанию используют голову «один ко многим» с NMS; установи nms=False, чтобы выбрать голову без NMS. Согласованная метрика сопоставления выравнивает контроль между обеими стратегиями, повышая качество предсказаний во время инференса.

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

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

  1. Легковесная голова классификации: уменьшает вычислительные затраты головы классификации за счет использования глубинно-разделимых сверток.
  2. Spatial-Channel Decoupled Downsampling: Decouples spatial reduction and channel modulation to minimize information loss and computational cost.
  3. Проектирование блоков с учетом ранга: адаптирует структуру блоков на основе внутренней избыточности этапов, обеспечивая оптимальное использование параметров.

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

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

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

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 и измерены по собственному протоколу, поэтому их нельзя напрямую сравнивать со значениями на страницах моделей 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.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 относятся к объединенной модели после model.fuse(), которая объединяет слои Conv и BatchNorm и удаляет вспомогательную голову детектирования One-to-Many. Предобученные контрольные точки сохраняют полную архитектуру обучения, поэтому их показатели могут быть выше.

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

Для предсказания на новых изображениях с помощью 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 предлагает набор моделей, каждая из которых оптимизирована для высокопроизводительного обнаружения объектов. Эти модели рассчитаны на разные вычислительные потребности и требования к точности, что делает их универсальными для широкого спектра приложений.

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

Экспорт YOLOv10#

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

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

Заключение#

На момент выхода 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
    
    # Load the pretrained YOLOv10n model
    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. Подробное объяснение см. в разделе Consistent Dual Assignments for NMS-Free Training.

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

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

Комментарии