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

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

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

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



Смотреть: Как обучить YOLOv10 на наборе данных SKU-110k с помощью Ultralytics | Retail Dataset.

Обзор

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

Архитектура

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

  1. Магистраль: Ответственная за извлечение признаков, опорная сеть в 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. Пространственно-канальная декомпозиция с понижением дискретизации: Разделение пространственного сокращения и канальной модуляции для минимизации потери информации и вычислительных затрат.
  3. Проектирование блоков на основе ранжирования: Адаптирует конструкцию блока на основе присущего этапам избыточности, обеспечивая оптимальное использование параметров.

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

  1. Конволюция с большим ядром: Расширяет рецептивное поле для повышения способности к извлечению признаков.
  2. Частичное самовнимание (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
Золото -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 Стандартный PyTorch формат модели.
ONNX Широко поддерживается для развертывания.
OpenVINO Оптимизировано для оборудования Intel .
TensorRT Оптимизировано для графических процессоров NVIDIA .
CoreML Только для устройств Apple.
TF SavedModel TensorFlowстандартный формат модели.
TF GraphDef Формат Legacy TensorFlow .
TF Lite Оптимизирован для мобильных и встроенных устройств.
TF Край TPU Специально для устройств Google's 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 ".

Как приступить к выполнению выводов с помощью 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) во время вывода благодаря использованию последовательных двойных назначений для обучения. Такой подход позволяет сократить время ожидания вывода и повысить эффективность предсказания. Архитектура также включает в себя головку "один к одному" для вывода, гарантируя, что каждый объект получит единственный наилучший прогноз. Подробное объяснение см. в разделе " Последовательные двойные назначения для обучения без НМС ".

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

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

Комментарии