YOLOv10 против YOLOX: Эволюция методов обнаружения объектов без якорей и NMS
Область компьютерного зрения развивается благодаря стремительным успехам в архитектурах обнаружения объектов в реальном времени. В этом подробном техническом сравнении рассматриваются две влиятельные модели, расширившие границы эффективности и подходов к проектированию: YOLOv10 и YOLOX. Изучая их архитектурные различия, метрики производительности и методологии обучения, ты, как разработчик или исследователь, сможешь принять обоснованные решения для создания надежных систем компьютерного зрения.
История создания и происхождение моделей
Понимание истоков этих моделей глубокого обучения дает ценный контекст относительно их архитектурных целей и целевых сценариев использования.
YOLOv10: Устранение NMS для полноценного сквозного обнаружения
Разработанная для решения давних проблем с задержками, YOLOv10 представила подход к семейству YOLO, работающий по принципу сквозного обнаружения.
- Авторы: Ao Wang, Hui Chen, Lihao Liu и др.
- Организация: Tsinghua University
- Дата: 23 мая 2024 г.
- ArXiv: 2405.14458
- GitHub: THU-MIG/yolov10
- Документация: Документация Ultralytics YOLOv10
YOLOX: Преодоление разрыва между исследованиями и индустрией
YOLOX появился как версия традиционного дизайна YOLO, не использующая якоря (anchor-free), предлагая более простую методологию с конкурентоспособной производительностью, специально ориентированную на упрощение внедрения в промышленной среде.
- Авторы: Чжэн Гэ, Сун Тао Лю, Фэн Ван, Земин Ли и Цзянь Сунь
- Организация: Megvii
- Дата: 18 июля 2021 г.
- ArXiv: 2107.08430
- GitHub: Megvii-BaseDetection/YOLOX
- Документация: Официальная документация YOLOX
Архитектурные особенности и инновации
Оба фреймворка отходят от традиционных детекторов на основе якорей, но они решают разные задачи в конвейере обнаружения объектов.
Архитектура YOLOX
YOLOX привнесла несколько важных обновлений в экосистему в 2021 году. Ее главным вкладом стал переход к дизайну детектора без якорей (anchor-free). Устранив предопределенные якорные рамки, YOLOX существенно сократила количество параметров проектирования и необходимость в эвристической настройке для разных наборов данных.
Кроме того, YOLOX использует разделенную голову (decoupled head), разделяя задачи классификации и регрессии. Это разрешило конфликт между двумя целями, значительно ускорив сходимость во время обучения. Она также использует SimOTA для продвинутого назначения меток, улучшая работу со сценами с высокой плотностью объектов и перекрытиями, типичными для набора данных COCO.
Дизайн без использования якорей, подобный тому, что был впервые применен в YOLOX, значительно снижает сложность настройки модели. Тебе больше не нужно выполнять кластеризацию k-means на своих наборах данных, чтобы определить оптимальные размеры якорных рамок, что экономит драгоценное время на подготовку.
Архитектура YOLOv10
Хотя YOLOX улучшила голову обнаружения, она все еще полагалась на алгоритм немаксимального подавления (NMS) при выводе, что вызывает вариативность задержек. YOLOv10 целенаправленно устранила этот недостаток, представив стратегию согласованного двойного назначения для обучения без NMS. Во время обучения она использует как назначение «один-ко-многим», так и «один-к-одному», но при выводе полностью отбрасывает голову «один-ко-многим», выдавая чистые прогнозы без постобработки NMS.
YOLOv10 также отличается целостным дизайном модели, ориентированным на эффективность и точность. Она включает в себя облегченные головы классификации и пространственно-канальную разделенную понижающую дискретизацию, что существенно снижает количество параметров и FLOPs без ущерба для точности.
Сравнение производительности
Оценка этих моделей на таком оборудовании, как GPU NVIDIA T4, выявляет явные преимущества в зависимости от масштаба. Ниже представлена подробная сравнительная таблица.
| Модель | размер (пиксели) | mAPval 50-95 | Скорость CPU ONNX (мс) | Скорость T4 TensorRT10 (мс) | параметры (М) | FLOPs (Б) |
|---|---|---|---|---|---|---|
| YOLOv10n | 640 | 39.5 | - | 1.56 | 2.3 | 6.7 |
| YOLOv10s | 640 | 46.7 | - | 2.66 | 7.2 | 21.6 |
| YOLOv10m | 640 | 51.3 | - | 5.48 | 15.4 | 59.1 |
| YOLOv10b | 640 | 52.7 | - | 6.54 | 24.4 | 92.0 |
| YOLOv10l | 640 | 53.3 | - | 8.33 | 29.5 | 120.3 |
| YOLOv10x | 640 | 54.4 | - | 12.2 | 56.9 | 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 отличается наименьшим общим объемом для сильно ограниченных сред.
Методологии обучения и требования к ресурсам
При внедрении моделей в производство экосистема обучения и требования к ресурсам не менее важны, чем чистая скорость вывода.
YOLOX часто опирается на более старые конфигурации окружения, которыми бывает трудно управлять. Кроме того, ее устаревшая кодовая база требует больше шаблонного кода для организации распределенного обучения на нескольких GPU или оптимизации со смешанной точностью.
В отличие от нее, YOLOv10 легко интегрируется с современными рабочими процессами PyTorch, но именно экосистема Ultralytics по-настоящему меняет опыт разработчика. Модели Ultralytics характеризуются значительно меньшим использованием памяти CUDA во время обучения по сравнению с архитектурами на основе трансформеров, такими как RT-DETR.
Пример кода: Упрощенное обучение
Используя унифицированный API Ultralytics, ты можешь легко обучать современные модели всего за несколько строк на Python. Это избавляет от необходимости вручную компилировать операторы C++ или разбираться в запутанных файлах конфигурации.
from ultralytics import YOLO
# Initialize a pre-trained YOLOv10 model
model = YOLO("yolov10s.pt")
# Train the model on the COCO8 dataset
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Validate the model's performance
metrics = model.val()
# Export the optimized model to ONNX format
model.export(format="onnx")Этот простой синтаксис обеспечивает немедленный доступ к автоматической смешанной точности, автоматической аугментации данных и интеграции с такими инструментами, как Weights & Biases «из коробки».
Варианты использования и рекомендации
Выбор между YOLOv10 и YOLOX зависит от требований твоего конкретного проекта, ограничений развертывания и предпочтений в экосистеме.
Когда выбирать YOLOv10
YOLOv10 — хороший выбор для:
- Обнаружение в реальном времени без NMS: Приложения, которые выигрывают от комплексного обнаружения без Non-Maximum Suppression, что снижает сложность развертывания.
- Сбалансированные компромиссы скорости и точности: Проекты, требующие хорошего баланса между скоростью вывода и точностью обнаружения для моделей различных масштабов.
- Consistent-Latency Applications: Deployment scenarios where predictable inference times are critical, such as robotics or autonomous systems.
Когда выбирать YOLOX
YOLOX рекомендуется для:
- Исследований обнаружения без анкоров: Академических исследований, использующих чистую архитектуру YOLOX без анкоров в качестве базы для экспериментов с новыми головами обнаружения или функциями потерь.
- Сверхлегких граничных устройств: Развертывания на микроконтроллерах или устаревшем мобильном оборудовании, где критически важен чрезвычайно малый размер варианта YOLOX-Nano (0.91 млн параметров).
- Исследований назначения меток SimOTA: Исследовательских проектов, изучающих стратегии назначения меток на основе оптимального транспорта и их влияние на сходимость обучения.
Когда выбирать Ultralytics (YOLO26)
Для большинства новых проектов Ultralytics YOLO26 предлагает лучшее сочетание производительности и опыта разработчика:
- Периферийное развертывание без NMS: Приложениям требуется стабильный вывод с низкой задержкой без сложности постобработки Non-Maximum Suppression.
- Среды только с CPU: Устройства без выделенного GPU-ускорения, где преимущество YOLO26 в виде до 43% более быстрого вывода на CPU является решающим.
- Обнаружение мелких объектов: Сложные сценарии, такие как аэросъемка с дронов или анализ данных IoT-датчиков, где ProgLoss и STAL значительно повышают точность распознавания крошечных объектов.
Будущее Vision AI: Представляем YOLO26
Хотя YOLOv10 и YOLOX представляют собой важные вехи, ландшафт компьютерного зрения неумолимо движется вперед. Разработчикам, которые начинают новые проекты сегодня, мы настоятельно рекомендуем Ultralytics YOLO26.
Выпущенная в январе 2026 года, Ultralytics YOLO26 опирается на фундаментальный прорыв — сквозной дизайн без NMS, впервые примененный в YOLOv10, совершенствуя его для еще большей стабильности и скорости.
YOLO26 выделяется благодаря нескольким масштабным шагам вперед:
- До 43% быстрее вывод на CPU: Благодаря стратегическому удалению функции Distribution Focal Loss (DFL), YOLO26 достигает значительно более высокой производительности на граничных устройствах без GPU.
- Оптимизатор MuSGD: Этот новый гибрид SGD и Muon, вдохновленный стабильностью обучения LLM, обеспечивает более быструю сходимость и высокую стабильность обучения.
- ProgLoss + STAL: Эти продвинутые функции потерь дают заметные улучшения в распознавании мелких объектов, что является критическим фактором для аэрофотосъемки и датчиков IoT.
- Непревзойденная универсальность: В отличие от YOLOX, которая является строго детектором объектов, YOLO26 нативно поддерживает сегментацию экземпляров, оценку позы, классификацию изображений и обнаружение OBB в рамках одной унифицированной библиотеки.
Для максимально простого пути к продакшну ты можешь использовать платформу Ultralytics, чтобы размечать наборы данных, обучать модели YOLO26 в облаке и развертывать их на любом устройстве без какой-либо предварительной настройки.
Применение в реальных условиях
Выбор правильной модели определяет успех реальных внедрений в различных отраслях.
Высокоскоростная видеоаналитика
Для обработки плотных видеопотоков, например, в системах управления трафиком «умного города», YOLOv10 дает значительное преимущество благодаря своей постобработке без NMS. Устранение узкого места NMS позволяет добиться стабильно низкой задержки, что делает эту модель идеальной для использования в паре с алгоритмами отслеживания, такими как BoT-SORT.
Развертывание на устаревшем граничном оборудовании
Для более старых академических установок или унаследованных приложений Android, сильно оптимизированных под чисто сверточные парадигмы, меньшие модели вроде YOLOX-Tiny все еще могут находить специализированные сценарии использования, где поддержание старых сред PyTorch является приемлемым компромиссом.
Современные граничные устройства и IoT
Для развертываний на оборудовании следующего поколения, таком как робототехника, дроны и системы анализа полок в розничной торговле, YOLO26 является идеальным решением. Резко сниженная задержка на CPU и превосходное обнаружение мелких объектов делают ее уникально подходящей для автономной навигации и детализированного управления запасами.
Для дополнительных сравнений, чтобы расширить свой набор инструментов глубокого обучения, ты можешь изучить, как эти модели соотносятся с альтернативами, такими как гибкая YOLO11 или работающая на базе трансформеров RT-DETR.