Перейти к содержимому

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

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

YOLOv10 последовательное двойное задание для тренировок без НМС

Обзор

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

Архитектура

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

  1. Backbone: Отвечая за извлечение признаков, магистраль в YOLOv10 использует улучшенную версию CSPNet (Cross Stage Partial Network), чтобы улучшить градиентный поток и уменьшить вычислительную избыточность.
  2. Neck: The neck is designed to aggregate features from different scales and passes them to the head. It includes PAN (Path Aggregation Network) layers for effective multi-scale feature fusion.
  3. One-to-Many Head: генерирует несколько предсказаний для каждого объекта во время обучения, чтобы обеспечить богатые сигналы супервизора и повысить точность обучения.
  4. One-to-One Head: генерирует одно лучшее предсказание для каждого объекта во время умозаключения, чтобы устранить необходимость в NMS, тем самым уменьшая задержку и повышая эффективность.

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

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

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

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

  • YOLOv10-N: нано-версия для крайне ограниченных ресурсов.
  • YOLOv10-S: маленькая версия, балансирующая между скоростью и точностью.
  • YOLOv10-M: средняя версия для универсального использования.
  • YOLOv10-B: сбалансированная версия с увеличенной шириной для большей точности.
  • YOLOv10-L: Большая версия для повышения точности за счет увеличения вычислительных ресурсов.
  • YOLOv10-X: Экстрабольшая версия для максимальной точности и производительности.

Производительность

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

Модель Размер входа APval FLOPs (G) Латентность (мс)
YOLOv10-N 640 38.5 6.7 1.84
YOLOv10-S 640 46.3 21.6 2.49
YOLOv10-M 640 51.1 59.1 4.74
YOLOv10-B 640 52.5 92.0 5.74
YOLOv10-L 640 53.2 120.3 7.28
YOLOv10-X 640 54.4 160.4 10.70

Латентность измеряется с помощью TensorRT FP16 на графическом процессоре T4.

Методология

Последовательные двойные задания для тренировок без НМС

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

Холистический дизайн моделей, ориентированный на эффективность и точность

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

  1. Облегченная классификационная головка: Уменьшение вычислительных затрат на головку классификации за счет использования разделительных сверток по глубине.
  2. Пространственно-канальный Decoupled Down sampling: Разделяй пространственное сокращение и канальную модуляцию, чтобы минимизировать потерю информации и вычислительные затраты.
  3. Rank-Guided Block Design: Адаптирует дизайн блока на основе присущей ему избыточности этапов, обеспечивая оптимальное использование параметров.

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

  1. Конволюция с большим ядром: Увеличивает рецептивное поле, чтобы повысить способность к извлечению признаков.
  2. Partial Self-Attention (PSA): включает в себя модули самовнушения, чтобы улучшить обучение глобальных представлений с минимальными накладными расходами.

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

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

Сравнения

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

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

  • YOLOv10-S / X на 1,8× / 1,3× быстрее, чем RT-DETR-R18 / R101 при схожей точности.
  • У YOLOv10-B на 25% меньше параметров и на 46% меньше задержек, чем у YOLOv9-C, при той же точности.
  • YOLOv10-L / X превосходит YOLOv8-L / X на 0,3 AP / 0,5 AP с 1,8× / 2,3× меньшим количеством параметров.

Вот подробное сравнение вариантов YOLOv10 с другими современными моделями:

Модель Params (M) FLOPs (G) APval (%) Латентность (мс) Латентность (вперед) (мс)
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
YOLOv8-N 3.2 8.7 37.3 6.16 1.77
YOLOv10-N 2.3 6.7 39.5 1.84 1.79
YOLOv6-3.0-S 18.5 45.3 44.3 3.42 2.35
Золото -YOLO-S 21.5 46.0 45.4 3.82 2.73
YOLOv8-S 11.2 28.6 44.9 7.07 2.33
YOLOv10-S 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
Золото -YOLO-M 41.3 87.5 49.8 6.38 5.45
YOLOv8-M 25.9 78.9 50.6 9.50 5.09
YOLOv10-M 15.4 59.1 51.3 4.74 4.63
YOLOv6-3.0-L 59.6 150.7 51.8 9.02 7.90
Золото -YOLO-L 75.1 151.7 51.8 10.65 9.78
YOLOv8-L 43.7 165.2 52.9 12.39 8.06
RT-DETR-R50 42.0 136.0 53.1 9.20 9.07
YOLOv10-L 24.4 120.3 53.4 7.28 7.21
YOLOv8-X 68.2 257.8 53.9 16.86 12.83
RT-DETR-R101 76.0 259.0 54.3 13.71 13.58
YOLOv10-X 29.5 160.4 54.4 10.70 10.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

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

The YOLOv10 models series offers a range of models, each optimized for high-performance Object Detection. These models cater to varying computational needs and accuracy requirements, making them versatile for a wide array of applications.

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

Exporting YOLOv10

Due to the new operations introduced with YOLOv10, not all export formats provided by Ultralytics are currently supported. The following table outlines which formats have been successfully converted using Ultralytics for YOLOv10. Feel free to open a pull request if you're able to provide a contribution change for adding export support of additional formats for YOLOv10.

Export Format Supported
TorchScript
ONNX
OpenVINO
TensorRT
CoreML
TF SavedModel
TF GraphDef
TF Lite
TF Край TPU
TF.js
PaddlePaddle
NCNN

Заключение

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 команды Университета Цинхуа.



Created 2024-05-25, Updated 2024-06-24
Authors: RizwanMunawar (3), Burhan-Q (1), glenn-jocher (3)

Комментарии