Meet YOLO26: next-gen vision AI.

Link to this sectionYOLOv10: Детектирование объектов в реальном времени из конца в конец#

YOLOv10, выпущенная в мае 2024 года и созданная на базе Ultralytics Python package исследователями из Tsinghua University, представляет новый подход к обнаружению объектов в реальном времени, устраняя недостатки постпроцессинга и архитектуры моделей, характерные для предыдущих версий YOLO. Исключив немаксимальное подавление (NMS) и оптимизировав различные компоненты модели, YOLOv10 на момент выхода достигла отличной производительности со значительно сниженными вычислительными затратами. Ее концепция сквозного проектирования без NMS стала пионерским подходом, который был в дальнейшем развит в YOLO26.

YOLOv10 consistent dual assignment for NMS-free training



Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset

Link to this sectionОбзор#

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

Link to this sectionАрхитектура#

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

  1. Backbone: Отвечает за feature extraction; в YOLOv10 используется улучшенная версия CSPNet (Cross Stage Partial Network) для оптимизации потока градиентов и сокращения вычислительной избыточности.
  2. Neck: Предназначена для агрегирования признаков с разных масштабов и передачи их в head. Включает слои PAN (Path Aggregation Network) для эффективного слияния многомасштабных признаков.
  3. One-to-Many Head: Генерирует несколько предсказаний для каждого объекта во время обучения, обеспечивая богатые сигналы контроля и повышая точность обучения.
  4. One-to-One Head: Генерирует единственное лучшее предсказание для объекта во время вывода, чтобы исключить необходимость NMS, тем самым снижая задержку и повышая эффективность.

Link to this sectionКлючевые особенности#

  1. NMS-Free Training: Использует согласованные двойные назначения для устранения необходимости NMS, что снижает inference latency.
  2. Holistic Model Design: Комплексная оптимизация различных компонентов с точки зрения эффективности и точности, включая облегченные классификационные головы, пространственно-канальную декоплированную понижающую выборку и блочный дизайн с ранжированием.
  3. Enhanced Model Capabilities: Включает convolutions с большими ядрами и модули частичного self-attention для повышения производительности без существенных вычислительных затрат.

Link to this sectionВарианты модели#

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

  • YOLOv10n: Nano-версия для сред с крайне ограниченными ресурсами.
  • YOLOv10s: Small-версия, балансирующая скорость и точность.
  • YOLOv10m: Medium-версия для универсального использования.
  • YOLOv10b: Balanced-версия с увеличенной шириной для более высокой точности.
  • YOLOv10l: Large-версия для большей точности ценой увеличения вычислительных ресурсов.
  • YOLOv10x: Extra-large-версия для максимальной точности и производительности.

Link to this sectionПроизводительность#

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

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

Задержка измерена с помощью TensorRT FP16 на GPU T4.

МодельРазмер входаAPvalFLOPs (G)Задержка (мс)
[YOLOv10n][1]64038.56.71.84
[YOLOv10s][2]64046.321.62.49
[YOLOv10m][3]64051.159.14.74
[YOLOv10b][4]64052.592.05.74
[YOLOv10l][5]64053.2120.37.28
[YOLOv10x][6]64054.4160.410.70

Link to this sectionМетодология#

Link to this sectionСогласованные двойные назначения для обучения без NMS#

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

Link to this sectionЦелостный дизайн модели, ориентированный на эффективность и Accuracy#

Link to this sectionУлучшения эффективности#

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

Link to this sectionУлучшения точности#

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

Link to this sectionЭксперименты и результаты#

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

Link to this sectionСравнения#

YOLOv10 comparison with SOTA object detectors

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

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

МодельParams
(M)
FLOPs
(G)
mAPval
50-95
Latency
(ms)
Latency-forward
(ms)
YOLOv6-3.0-N4.711.437.02.691.76
Gold-YOLO-N5.612.139.62.921.82
YOLOv8n3.28.737.36.161.77
YOLOv10n2.36.739.51.841.79
YOLOv6-3.0-S18.545.344.33.422.35
Gold-YOLO-S21.546.045.43.822.73
YOLOv8s11.228.644.97.072.33
YOLOv10s7.221.646.82.492.39
RT-DETR-R1820.060.046.54.584.49
YOLOv6-3.0-M34.985.849.15.634.56
Gold-YOLO-M41.387.549.86.385.45
YOLOv8m25.978.950.69.505.09
YOLOv10m15.459.151.34.744.63
YOLOv6-3.0-L59.6150.751.89.027.90
Gold-YOLO-L75.1151.751.810.659.78
YOLOv8l43.7165.252.912.398.06
RT-DETR-R5042.0136.053.19.209.07
YOLOv10l24.4120.353.47.287.21
YOLOv8x68.2257.853.916.8612.83
RT-DETR-R10176.0259.054.313.7113.58
YOLOv10x29.5160.454.410.7010.60

Значения параметров и FLOPs приведены для объединенной модели после model.fuse(), которая объединяет слои Conv и BatchNorm и удаляет вспомогательную «one-to-many» голову детектирования. Предобученные чекпоинты сохраняют полную архитектуру обучения и могут показывать более высокие показатели.

Link to this sectionПримеры использования#

Для прогнозирования на новых изображениях с помощью YOLOv10. Модели также можно обучать на облачных GPU через Ultralytics Platform:

Пример
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)

Link to this sectionПоддерживаемые задачи и режимы#

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

МодельИмена файловЗадачиInferenceValidationTrainingЭкспорт
YOLOv10yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.ptОбнаружение объектов (Object Detection)

Link to this sectionЭкспорт YOLOv10#

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

Формат экспортаПоддержка экспортаВывод экспортированной моделиПримечания
TorchScriptСтандартный формат модели PyTorch.
ONNXШироко поддерживается для развертывания.
OpenVINOОптимизировано для оборудования Intel.
TensorRTОптимизировано для графических процессоров NVIDIA.
CoreMLОграничено устройствами Apple.
TF SavedModelСтандартный формат модели TensorFlow.
TF GraphDefУстаревший формат TensorFlow.
TF LiteОптимизировано для мобильных и встроенных систем.
TF Edge TPUСпецифично для устройств Google Edge TPU.
TF.jsСреда JavaScript для использования в браузере.
PaddlePaddleПопулярно в Китае; меньшая глобальная поддержка.
NCNNСлой torch.topk не существует или не зарегистрирован

Link to this sectionЗаключение#

YOLOv10 установил новый стандарт в детекции объектов в реальном времени на момент своего выпуска, устранив недостатки предыдущих версий YOLO и внедрив инновационные стратегии проектирования. Его подход без NMS стал новаторским для сквозной детекции объектов в семействе YOLO. Для получения актуальной модели Ultralytics с улучшенной производительностью и выводом без NMS, ознакомься с YOLO26.

Link to this sectionЦитирование и благодарности#

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

Цитата
@inproceedings{wang2024yolov10,
  title={YOLOv10: Real-Time End-to-End Object Detection},
  author={Wang, Ao and Chen, Hui and Liu, Lihao and Chen, Kai and Lin, Zijia and Han, Jungong and Ding, Guiguang},
  booktitle={Advances in Neural Information Processing Systems},
  doi = {10.52202/079017-3429},
  url = {https://proceedings.neurips.cc/paper_files/paper/2024/file/c34ddd05eb089991f06f3c5dc36836e0-Paper-Conference.pdf},
  volume={37},
  pages={107984--108011},
  year={2024}
}

Для подробной реализации, архитектурных инноваций и экспериментальных результатов, пожалуйста, обратись к научной статье по YOLOv10 и репозиторию GitHub от команды Tsinghua University.

Link to this sectionFAQ#

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

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

Link to this sectionКак начать работу с запуском вывода с помощью YOLOv10?#

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

Пример
from ultralytics import YOLO

# Load the pretrained YOLOv10n model
model = YOLO("yolov10n.pt")
results = model("image.jpg")
results[0].show()

Дополнительные примеры использования см. в нашем разделе Примеры использования.

Link to this sectionКакие варианты моделей предлагает YOLOv10 и каковы их варианты применения?#

YOLOv10 предлагает несколько вариантов моделей для различных сценариев использования:

  • YOLOv10n: подходит для сред с крайне ограниченными ресурсами
  • YOLOv10s: баланс скорости и точности
  • YOLOv10m: общее назначение
  • YOLOv10b: более высокая точность при увеличенной ширине
  • YOLOv10l: высокая точность ценой вычислительных ресурсов
  • YOLOv10x: максимальная точность и производительность

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

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

YOLOv10 устраняет необходимость в подавлении немаксимумов (NMS) во время вывода за счет использования последовательных двойных назначений при обучении. Этот подход сокращает задержку вывода и повышает эффективность прогнозирования. Архитектура также включает голову «один-к-одному» для вывода, гарантируя, что каждый объект получает один лучший прогноз. Подробное объяснение см. в разделе Последовательные двойные назначения для обучения без NMS.

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

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

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

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

Комментарии