YOLOv10 и YOLOX#
Развитие компьютерного зрения обусловлено быстрым совершенствованием архитектур для детекции объектов в реальном времени. В этом подробном техническом сравнении рассматриваются две влиятельные модели, продвинувшие эффективность и проектирование детекторов: YOLOv10 и YOLOX. Изучив различия архитектур, показатели производительности и методики обучения, разработчики и исследователи смогут принимать обоснованные решения при развертывании надежных систем компьютерного зрения.
История моделей и их происхождение#
Понимание происхождения этих моделей глубокого обучения дает важный контекст для изучения их архитектурных целей и сценариев применения.
YOLOv10: отказ от NMS для полноценного сквозного обнаружения объектов#
YOLOv10 разработали, чтобы устранить давно существовавшие узкие места, увеличивавшие задержку. Эта модель внедрила в семейство YOLO нативный сквозной подход.
- Авторы: Ao Wang, Hui Chen, Lihao Liu и др.
- Организация: Университет Цинхуа
- Дата: 23 мая 2024 года
- arXiv: 2405.14458
- GitHub: THU-MIG/yolov10
- Документация: Документация Ultralytics YOLOv10
YOLOX: сокращение разрыва между исследованиями и индустрией#
YOLOX появился как безанкерная версия традиционной архитектуры YOLO: он предлагает более простой подход с конкурентоспособными показателями и специально ориентирован на упрощение внедрения в промышленных сообществах.
- Авторы: Чжэн Гэ, Сунтао Лю, Фэн Ван, Цзэмин Ли и Цзянь Сунь
- Организация: Megvii
- Дата: 18 июля 2021 года
- arXiv: 2107.08430
- GitHub: Megvii-BaseDetection/YOLOX
- Документация: Официальная документация YOLOX
Особенности архитектуры и инновации#
Обе системы отходят от традиционных детекторов с якорями, но решают разные задачи в конвейере обнаружения объектов.
Архитектура YOLOX#
В 2021 году YOLOX привнёс в архитектуру YOLO несколько важных изменений. Главным из них стал переход к архитектуре безанкерного детектора. Отказ от заранее заданных анкерных рамок позволил YOLOX сократить число параметров модели и объём эвристической настройки для разных наборов данных.
Кроме того, в YOLOX используется разделённая голова, в которой задачи классификации и регрессии выполняются отдельно. Это устранило конфликт между двумя целями и ускорило сходимость во время обучения. Также YOLOX использует SimOTA для динамического назначения меток, улучшая обработку переполненных сцен и перекрытий, характерных для набора данных COCO.
Безанкерные архитектуры, в том числе используемая в YOLOX, упрощают настройку модели. Разработчикам больше не нужно применять кластеризацию k-means к пользовательским наборам данных, чтобы подобрать оптимальные размеры анкерных рамок, что экономит время на подготовку.
Архитектура YOLOv10#
Хотя YOLOX улучшил голову детектора, при инференсе он по-прежнему использовал подавление немаксимумов (NMS), из-за которого задержка меняется. YOLOv10 специально устраняет это ограничение: для обучения без NMS в нём применяется стратегия согласованного двойного назначения. Во время обучения используются назначения меток «многие к одному» и «один к одному», а при инференсе голову «многие к одному» можно полностью отключить и получать предсказания без постобработки NMS (в пакете Ultralytics выбери эту голову с помощью nms=False).
В YOLOv10 также используется комплексный дизайн модели, ориентированный на эффективность и точность. Лёгкие головы классификации и раздельная пространственно-канальная передискретизация сокращают число параметров и количество FLOPs без потери точности.
Сравнение производительности#
Сравнение этих моделей на таком оборудовании, как GPU NVIDIA T4, показывает разные преимущества в зависимости от масштаба. В таблице ниже сопоставлены оба семейства моделей.
| Модель | размер (пиксели) | mAPval 50-95 | Скорость CPU ONNX (мс) | Скорость T4 TensorRT10 (мс) | параметры (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv10n | 640 | 38.5 | - | 1.84 | 2.3 | 6.7 |
| YOLOv10s | 640 | 46.3 | - | 2.49 | 7.2 | 21.6 |
| YOLOv10m | 640 | 51.1 | - | 4.74 | 15.4 | 59.1 |
| YOLOv10b | 640 | 52.5 | - | 5.74 | 19.1 | 92.0 |
| YOLOv10l | 640 | 53.2 | - | 7.28 | 24.4 | 120.3 |
| YOLOv10x | 640 | 54.4 | - | 10.70 | 29.5 | 160.4 |
| YOLOXnano | 416 | 25.8 | - | - | 0.91 | 1.08 |
| YOLOXtiny | 416 | 32.8 | - | - | 5.06 | 6.45 |
| YOLOXs | 640 | 40.5 | - | 2.56 | 9.0 | 26.8 |
| YOLOXm | 640 | 46.9 | - | 5.43 | 25.3 | 73.8 |
| YOLOXl | 640 | 49.7 | - | 9.04 | 54.2 | 155.6 |
| YOLOXx | 640 | 51.1 | - | 16.1 | 99.1 | 281.9 |
Как видно выше, YOLOv10 хорошо масштабируется. Вариант YOLOv10x обеспечивает наивысшую точность (54.4 mAP), а вариант YOLOv10n показывает самую высокую заявленную скорость инференса с помощью TensorRT. В свою очередь, модель YOLOX-Nano имеет наименьший размер (0.91M параметров при 416 пикселях), что подходит для сред с жёсткими ограничениями ресурсов.
Методы обучения и требования к ресурсам#
При внедрении моделей в производство экосистема обучения и требования к ресурсам так же важны, как и скорость инференса.
YOLOX основан на устаревшей кодовой базе, зависимости и конфигурацией среды которой может быть непросто управлять в современных программных стеках.
В отличие от него, YOLOv10 интегрирован в экосистему Ultralytics, что упрощает работу разработчиков. Кроме того, модели Ultralytics YOLO во время обучения используют меньше памяти CUDA, чем архитектуры на основе Transformer, такие как RT-DETR.
Пример кода: упрощенное обучение#
С помощью унифицированного API Ultralytics ты можешь обучить модель всего за несколько строк кода на Python — без ручной компиляции операторов C++ и редактирования сложных файлов конфигурации.
from ultralytics import YOLO
# Инициализация предварительно обученной модели YOLOv10
model = YOLO("yolov10s.pt")
# Обучи модель на датасете COCO8
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Проверка производительности модели
metrics = model.val()
# Экспорт оптимизированной модели в формат ONNX
model.export(format="onnx")Этот простой синтаксис сразу дает доступ к автоматическому обучению со смешанной точностью, автоматическому увеличению данных и интеграции с такими инструментами, как Weights & Biases.
Сценарии использования и рекомендации#
Выбор между YOLOv10 и YOLOX зависит от требований твоего проекта, ограничений среды развертывания и предпочтений в отношении экосистемы.
Когда выбирать YOLOv10#
YOLOv10 — хороший выбор для:
- Детектирование в реальном времени без NMS: Приложения, которым полезно сквозное детектирование без подавления немаксимумов, что упрощает развертывание.
- Сбалансированное соотношение скорости и точности: Проекты, в которых важно найти оптимальный баланс между скоростью инференса и точностью детектирования для моделей разных размеров.
- Приложения с постоянной задержкой: Сценарии развертывания, где важны предсказуемые времена инференса, например в робототехнике или автономных системах.
Когда стоит выбрать YOLOX#
YOLOX подойдёт для следующих задач:
- Исследования обнаружения без якорей: Академические исследования, в которых чистая архитектура YOLOX без якорей используется как базовая модель для экспериментов с новыми головами обнаружения или функциями потерь.
- Сверхкомпактные периферийные устройства: Развертывание на микроконтроллерах или устаревшем мобильном оборудовании, где критически важен крайне малый размер варианта YOLOX-Nano (0,91 млн параметров).
- Исследования назначения меток SimOTA: Исследовательские проекты по изучению стратегий назначения меток на основе оптимального транспорта и их влияния на сходимость обучения.
Когда выбирать Ultralytics (YOLO26)#
Для большинства новых проектов Ultralytics YOLO26 предлагает оптимальное сочетание производительности и удобства разработки:
- Развертывание на периферийных устройствах без NMS: Приложения, которым необходим стабильный инференс с низкой задержкой без усложнения постобработки подавлением немаксимумов.
- Среды только с CPU: устройства без выделенного ускорителя GPU, на которых YOLO26n работает на CPU до 43% быстрее YOLO11n.
- Обнаружение мелких объектов: сложные сценарии, например съемка с дронов или анализ данных датчиков IoT, где ProgLoss и STAL повышают точность распознавания крошечных объектов.
Будущее компьютерного зрения на базе ИИ: встречай YOLO26#
YOLOv10 и YOLOX стали важными вехами, но отрасль продолжает развиваться. Разработчикам, которые начинают новые проекты, мы рекомендуем Ultralytics YOLO26.
Выпущенная в январе 2026 года, Ultralytics YOLO26 развивает сквозную архитектуру без NMS, внедренную в модели YOLO с выходом YOLOv10, и предлагает ее в виде опциональной головы один-к-одному (nms=False).
В YOLO26 также реализовано несколько других улучшений:
- Инференс на CPU до 43% быстрее: После удаления Distribution Focal Loss (DFL) YOLO26n работает на CPU до 43% быстрее YOLO11n. Это особенно полезно для периферийных устройств без GPU.
- Оптимизатор MuSGD: Этот гибрид SGD и Muon, вдохновлённый методами обучения больших языковых моделей, обеспечивает более быструю сходимость и стабильное обучение.
- ProgLoss + STAL: Progressive Loss и назначение меток с учётом малых объектов улучшают распознавание небольших объектов — это важно для аэрофотоснимков и датчиков IoT.
- Универсальность: В отличие от YOLOX, который предназначен исключительно для обнаружения объектов, YOLO26 изначально поддерживает сегментацию экземпляров, семантическую сегментацию, оценку глубины, классификацию изображений, оценку позы и обнаружение OBB в рамках одной унифицированной библиотеки.
Чтобы максимально просто перейти к промышленной эксплуатации, разработчики могут использовать платформу Ultralytics для разметки наборов данных, обучения моделей YOLO26 в облаке, а также их экспорта и развёртывания с минимальной настройкой.
Применение в реальных условиях#
Подходящая модель зависит от сценария развёртывания и отрасли.
Высокоскоростная видеоаналитика#
Для обработки плотных видеопотоков, например при управлении транспортом в умных городах, YOLOv10 выгодно отличается архитектурой без NMS. Устранение узкого места NMS обеспечивает стабильную задержку, поэтому модель хорошо сочетается с алгоритмами трекинга, такими как BoT-SORT.
Развертывание на устаревших периферийных устройствах#
Для старых академических конфигураций или устаревших приложений Android, созданных на основе YOLOX, небольшие модели, например YOLOX-Tiny, могут быть полезны, если использование устаревших сред PyTorch считается приемлемым компромиссом.
Современные периферийные устройства и IoT#
Для развёртывания на оборудовании нового поколения, например в робототехнике, дронах и системах анализа полок в магазинах, рекомендуем YOLO26. Благодаря меньшей задержке на CPU и улучшенному обнаружению небольших объектов модель хорошо подходит для автономной навигации и детального управления запасами.
Чтобы расширить инструментарий глубокого обучения, сравни эти модели с альтернативами, например гибкой YOLO11 или работающей на базе Transformer RT-DETR.