YOLOX против YOLOv10: сравнение систем обнаружения объектов в реальном времени без анкоров и NMS
Эволюция моделей компьютерного зрения в реальном времени отмечена значительными архитектурными прорывами. Двумя важными вехами в этом пути стали YOLOX и YOLOv10. Выпущенный в 2021 году, YOLOX успешно преодолел разрыв между академическими исследованиями и промышленным применением, представив высокоэффективную архитектуру без анкоров. Три года спустя YOLOv10 произвел революцию в этой области, устранив необходимость в подавлении немаксимумов (NMS) при постобработке, что позволило раздвинуть границы эффективности и скорости.
Это всестороннее техническое сравнение исследует архитектуры, показатели производительности и идеальные сценарии использования обеих моделей, предоставляя информацию, которая поможет тебе выбрать правильный инструмент для твоего следующего проекта по обнаружению объектов.
Происхождение и метаданные моделей
Понимание происхождения этих моделей дает контекст для их архитектурных решений и планируемых сред развертывания.
Детали YOLOX
Авторы: Чжэн Гэ, Сун Тао Лю, Фэн Ван, Земин Ли и Цзянь Сунь
Организация: Megvii
Дата: 2021-07-18
Arxiv: https://arxiv.org/abs/2107.08430
GitHub: https://github.com/Megvii-BaseDetection/YOLOX
Документация: https://yolox.readthedocs.io/en/latest/
Детали YOLOv10
Авторы: Ао Ван, Хуэй Чэнь, Лихао Лю, Кай Чэнь, Цзицзя Линь, Цзюньгун Хань и Гуйгуан Дин
Организация: Университет Цинхуа
Дата: 2024-05-23
Arxiv: https://arxiv.org/abs/2405.14458
GitHub: https://github.com/THU-MIG/yolov10
Документация: https://docs.ultralytics.com/models/yolov10/
Архитектурные инновации
Ключевые различия между YOLOX и YOLOv10 заключаются в том, как они обрабатывают предсказания ограничивающих рамок и постобработку.
YOLOX: пионер архитектуры без анкоров
YOLOX произвел фурор, переведя семейство YOLO на архитектуру без использования анкоров. Предсказывая центр объекта, а не полагаясь на предопределенные анкорные рамки, YOLOX радикально сократил количество параметров проектирования и эвристической настройки, требуемых для пользовательских наборов данных. Более того, он представил разделенную голову (decoupled head), отделяющую задачи классификации и регрессии в разные пути. Этот подход разрешил конфликт между определением того, что за объект перед нами, и определением того, где он находится, что привело к заметному росту скорости сходимости и точности.
YOLOv10: революция без NMS
Хотя YOLOX упростил голову обнаружения, он все еще полагался на NMS для фильтрации избыточных предсказаний рамок. YOLOv10 устранил это фундаментальное узкое место. Используя последовательные двойные назначения во время обучения, YOLOv10 достигает нативного сквозного обнаружения. Он использует голову «один-ко-многим» во время обучения для обеспечения богатых сигналов контроля, и голову «один-к-одному» во время инференса для прямого вывода финальных предсказаний. Такой целостный дизайн, ориентированный на эффективность и точность, полностью исключает NMS, значительно снижая задержку инференса на встроенных чипах.
Non-Maximum Suppression часто является сложной операцией для ускорения на нейронных процессорах (NPU). Удалив ее, YOLOv10 позволяет выполнять весь граф модели без проблем на специализированном оборудовании, значительно улучшая совместимость с такими фреймворками оптимизации, как OpenVINO и TensorRT.
Показатели производительности и сравнение
При оценке моделей для производства критически важен баланс между точностью и вычислительными затратами. В таблице ниже показаны компромиссы между различными масштабами YOLOX и YOLOv10.
| Модель | размер (пиксели) | mAPval 50-95 | Скорость CPU ONNX (мс) | Скорость T4 TensorRT10 (мс) | параметры (М) | FLOPs (Б) |
|---|---|---|---|---|---|---|
| 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 |
| 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 |
Анализ данных
Показатели наглядно демонстрируют качественный скачок YOLOv10. Например, YOLOv10-S достигает средней точности (mAP) в 46,7% по сравнению с 46,9% у YOLOX-m, но делает это, используя менее трети параметров (7,2 млн против 25,3 млн) и значительно меньше FLOPs. Более того, топовая модель YOLOv10-X повышает mAP до 54,4%, что делает ее крайне конкурентоспособной для задач, требующих высокой точности, при этом оставаясь быстрее, чем старая архитектура YOLOX-x.
Преимущество экосистемы Ultralytics
Хотя YOLOX остается надежной исследовательской реализацией с открытым исходным кодом, переход на YOLOv10 дает тебе мгновенный доступ к хорошо поддерживаемой экосистеме, предоставляемой Ultralytics. Выбор поддерживаемой Ultralytics модели гарантирует оптимизированный пользовательский опыт, характеризующийся простым API и обширной документацией.
Разработчики получают огромную выгоду от требований фреймворка к памяти; обучение моделей Ultralytics обычно потребляет гораздо меньше памяти CUDA, чем тяжелые альтернативы на базе Transformer, такие как RT-DETR. Этот эффективный след обучения позволяет использовать большие размеры батчей на потребительском оборудовании, ускоряя путь от сбора данных до развертывания модели. Кроме того, фреймворк предлагает непревзойденную универсальность, позволяя тебе легко переключаться между обнаружением объектов, сегментацией экземпляров и оценкой поз с минимальными изменениями кода.
Пример обучения и инференса
Унифицированный API делает проверку идей невероятно быстрой. Следующий фрагмент показывает, как легко ты можешь обучить и развернуть модель YOLOv10, используя бэкенд PyTorch:
from ultralytics import YOLO
# Load a pre-trained YOLOv10 nano model
model = YOLO("yolov10n.pt")
# Train the model on the COCO8 dataset
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference on a sample image
predictions = model.predict("https://ultralytics.com/images/bus.jpg")
# Export the model for edge deployment
model.export(format="engine", half=True)Используя встроенные процедуры экспорта, преобразование моделей в форматы типа TensorRT или ONNX требует всего одной строки кода, полностью минуя сложные препятствия при компиляции.
Идеальные варианты использования и сценарии развертывания
Выбор между этими архитектурами во многом зависит от ограничений твоего оборудования и специфических требований домена.
Аналитика видео в реальном времени
Для приложений, требующих сверхнизкой задержки, таких как автономное вождение или мониторинг дорожного движения в реальном времени, YOLOv10 является лучшим выбором. Его сквозной дизайн без NMS обеспечивает детерминированное время выполнения, что критически важно для систем безопасности, где переменная задержка постобработки недопустима. Модели легко достигают высокой частоты кадров на устройствах серии NVIDIA Jetson.
Академические базы и краевые микроконтроллеры
YOLOX все еще сохраняет ценность в академических кругах, где исследователям нужна чистая база с разделенной головой для экспериментов со стратегиями назначения меток. Кроме того, исключительно маленькая YOLOX-Nano (менее 1 миллиона параметров) может быть помещена на жестко ограниченные краевые микроконтроллеры, где память измеряется в килобайтах, при условии, что оборудование поддерживает стандартные операции свертки.
Абсолютный стандарт: Ultralytics YOLO26
Хотя YOLOv10 ознаменовал огромный скачок благодаря удалению NMS, область компьютерного зрения быстро развивается. Разработчикам, стремящимся внедрить лучшие в своем классе показатели производительности сегодня, мы настоятельно рекомендуем изучить YOLO26.
Выпущенная как новейший стандарт в области ИИ зрения, YOLO26 берет фундаментальные идеи своих предшественников и расширяет их возможности. Она предлагает идеальный баланс производительности, нативно поддерживая обнаружение, сегментацию, позы и ориентированные ограничивающие рамки.
Вот почему YOLO26 — рекомендованный выбор для современных конвейеров компьютерного зрения:
- Сквозной дизайн без NMS: Опираясь на прорывы YOLOv10, YOLO26 является нативно сквозной, что гарантирует более быстрое, детерминированное время инференса без узких мест в постобработке.
- До 43% быстрее инференс на CPU: Она специально оптимизирована для граничных вычислений, обеспечивая исключительную производительность на мобильных процессорах и устройствах, не имеющих дискретных GPU.
- Оптимизатор MuSGD: Вдохновленный обучением больших языковых моделей (в частности, Kimi K2 от Moonshot AI), YOLO26 использует гибрид SGD и Muon для невероятно стабильного обучения и быстрой сходимости.
- ProgLoss + STAL: Эти продвинутые функции потерь обеспечивают заметные улучшения в распознавании мелких объектов, что критически важно для требовательных областей, таких как аэрофотосъемка и навигация дронов.
- Удаление DFL: Удалив Distribution Focal Loss, YOLO26 упрощает граф модели для беспрепятственного экспорта на граничные и маломощные устройства.
- Улучшения для конкретных задач: Используешь ли ты Residual Log-Likelihood Estimation (RLE) для оценки поз или специализированную функцию потерь угла для OBB, YOLO26 доработана для каждой важной задачи зрения.
Для разработчиков, готовых обновить свои конвейеры с помощью самых эффективных инструментов обучения и развертывания, переход на платформу Ultralytics и использование YOLO26 гарантирует, что ты останешься на переднем крае искусственного интеллекта. Пользователи, заинтересованные в более старых, но стабильных архитектурах, могут также рассмотреть YOLO11 или YOLOv8 для получения обширной поддержки сообщества и проверенной надежности.