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

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

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

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

Обзор

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

Архитектура

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

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

Методология

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

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)
mAPval
50-95
Латентность
(мс)
Латентность - вперед
(мс)
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

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

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

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

Экспорт YOLOv10

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

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

ВОПРОСЫ И ОТВЕТЫ

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

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

Как начать делать выводы с помощью YOLOv10?

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

Пример

from ultralytics import YOLO

# Load the pre-trained YOLOv10-N 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 предлагает несколько вариантов моделей, рассчитанных на разные случаи использования:

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

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

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

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

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

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

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

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



Создано 2024-05-25, Обновлено 2024-07-24
Авторы: hasanghaffari93 (1), glenn-jocher (5), zhixuwei (1), abirami-vina (1), RizwanMunawar (3), Burhan-Q (1)

Комментарии