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

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.

Методология

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

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

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

Скоро будет

Команда Ultralytics активно работает над тем, чтобы официально интегрировать модели YOLOv10 в ultralytics Пакет. Как только интеграция будет завершена, примеры использования, показанные ниже, станут полностью функциональными. Следи за новостями в наших социальных сетях и Репозиторий GitHub за последними обновлениями по интеграции YOLOv10. Мы ценим твое терпение и волнение! 🚀

Для предсказания новых образов с помощью YOLOv10:

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 устанавливает новый стандарт в области обнаружения объектов в реальном времени, устраняя недостатки предыдущих версий 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-10
Authors: glenn-jocher (3), RizwanMunawar (2)

Комментарии