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

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

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, снижая задержку при выводе.
  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.

Модель Входной размер APval FLOPs (G) Задержка (мс)
YOLOv10n 640 38.5 6.7 1.84
YOLOv10s 640 46.3 21.6 2.49
YOLOv10m 640 51.1 59.1 4.74
YOLOv10b 640 52.5 92.0 5.74
YOLOv10l 640 53.2 120.3 7.28
YOLOv10x 640 54.4 160.4 10.70

Методология

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

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

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

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

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

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

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

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

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 с другими современными моделями:

Модель Параметры
(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
YOLOv8n 3.2 8.7 37.3 6.16 1.77
YOLOv10n 2.3 6.7 39.5 1.84 1.79
YOLOv6-3.0-S 18.5 45.3 44.3 3.42 2.35
Gold-YOLO-S 21.5 46.0 45.4 3.82 2.73
YOLOv8s 11.2 28.6 44.9 7.07 2.33
YOLOv10s 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
Gold-YOLO-M 41.3 87.5 49.8 6.38 5.45
YOLOv8m 25.9 78.9 50.6 9.50 5.09
YOLOv10m 15.4 59.1 51.3 4.74 4.63
YOLOv6-3.0-L 59.6 150.7 51.8 9.02 7.90
Gold-YOLO-L 75.1 151.7 51.8 10.65 9.78
YOLOv8l 43.7 165.2 52.9 12.39 8.06
RT-DETR-R50 42.0 136.0 53.1 9.20 9.07
YOLOv10l 24.4 120.3 53.4 7.28 7.21
YOLOv8x 68.2 257.8 53.9 16.86 12.83
RT-DETR-R101 76.0 259.0 54.3 13.71 13.58
YOLOv10x 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 Стандартный формат модели PyTorch.
ONNX Широко поддерживается для развертывания.
OpenVINO Оптимизировано для оборудования Intel.
TensorRT Оптимизировано для NVIDIA GPUs.
CoreML Ограничено устройствами Apple.
TF SavedModel Стандартный формат модели TensorFlow.
TF GraphDef Устаревший формат TensorFlow.
TF Lite Оптимизировано для мобильных и встраиваемых систем.
TF Edge TPU Специально для устройств Google Edge TPU.
TF.js JavaScript среда для использования в браузере.
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?

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

Где я могу найти параметры экспорта для моделей 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, при той же производительности. Подробные сравнительные тесты можно найти в разделе Comparisons.



📅 Создано 1 год назад ✏️ Обновлено 5 месяцев назад

Комментарии