YOLOX против YOLOv10: Сравнение безанкерного и NMS-free обнаружения объектов в реальном времени
Эволюция моделей компьютерного зрения в реальном времени ознаменовалась значительными архитектурными прорывами. Двумя ключевыми вехами на этом пути являются YOLOX и YOLOv10. Выпущенный в 2021 году, YOLOX успешно преодолел разрыв между академическими исследованиями и промышленным применением, представив высокоэффективный безанкерный дизайн. Три года спустя YOLOv10 произвел революцию в этой области, устранив необходимость в Non-Maximum Suppression (NMS) во время постобработки, что расширило границы эффективности и скорости.
Это всеобъемлющее техническое сравнение исследует архитектуры, метрики производительности и идеальные сценарии использования для обеих моделей, предоставляя информацию, которая поможет вам выбрать правильный инструмент для вашего следующего проекта по обнаружению объектов.
Истоки модели и метаданные
Понимание истоков этих моделей дает контекст для их архитектурных решений и предполагаемых сред развертывания.
Сведения о YOLOX
Авторы: Zheng Ge, Songtao Liu, Feng Wang, Zeming Li, and Jian Sun
Организация: 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
Авторы: Ao Wang, Hui Chen, Lihao Liu, Kai Chen, Zijia Lin, Jungong Han и Guiguang Ding
Организация: Университет Цинхуа
Дата: 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), разделяющую задачи classify и регрессии на отдельные пути. Этот подход разрешил конфликт между определением что является объектом и определением где он находится, что привело к заметному увеличению скорости сходимости и точности.
YOLOv10: Революция без NMS
Хотя YOLOX упростил голову detect, он все еще полагался на NMS для отфильтровывания избыточных предсказаний ограничивающих рамок. YOLOv10 решил это фундаментальное узкое место. Используя согласованные двойные назначения во время обучения, YOLOv10 достигает нативного сквозного detect. Он использует голову «один-ко-многим» во время обучения для обеспечения богатых управляющих сигналов, в то время как использует голову «один-к-одному» во время инференса для прямого вывода окончательных предсказаний. Этот целостный дизайн, ориентированный на эффективность и точность, полностью устраняет NMS, значительно сокращая задержку инференса на встроенных чипах.
Влияние удаления NMS
Non-Maximum Suppression часто является сложной операцией для ускорения на нейронных процессорах (NPU). Удалив его, YOLOv10 позволяет всему графу модели беспрепятственно выполняться на специализированном оборудовании, значительно улучшая совместимость с фреймворками оптимизации, такими как OpenVINO и TensorRT.
Метрики производительности и сравнение
При оценке моделей для производства критически важен баланс между точностью и вычислительными затратами. В таблице ниже показаны компромиссы между различными масштабами YOLOX и YOLOv10.
| Модель | размер (пиксели) | mAPval 50-95 | Скорость CPU ONNX (мс) | Скорость T4 TensorRT10 (мс) | параметры (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| 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 достигает средней точности в 46.7% по сравнению с 46.9% у YOLOX-m, но делает это, используя менее трети параметров (7.2M против 25.3M) и значительно меньшее количество FLOPs. Кроме того, модель высшего уровня YOLOv10-X доводит mAP до 54.4%, что делает ее очень конкурентоспособной для задач, требующих высокой точности, при этом оставаясь быстрее, чем старая архитектура YOLOX-x.
Преимущество экосистемы Ultralytics
Хотя YOLOX остается надежной реализацией для исследований с открытым исходным кодом, принятие YOLOv10 обеспечивает немедленный доступ к хорошо поддерживаемой экосистеме, предоставляемой Ultralytics. Выбор модели, поддерживаемой Ultralytics, обеспечивает оптимизированный пользовательский опыт, характеризующийся простым API и обширной документацией.
Разработчики получают значительные преимущества от требований фреймворка к памяти; обучение моделей Ultralytics обычно потребляет значительно меньше памяти CUDA, чем тяжелые альтернативы на основе трансформеров, такие как 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 берет фундаментальные идеи своих предшественников и значительно их улучшает. Он предлагает оптимальный баланс производительности, нативно поддерживая detect, segment, оценку позы и ориентированные ограничивающие рамки.
Вот почему YOLO26 является рекомендуемым выбором для современных конвейеров компьютерного зрения:
- Сквозная архитектура без NMS: Основываясь на прорывных достижениях YOLOv10, YOLO26 изначально является сквозной (end-to-end) системой, гарантирующей более быстрое, детерминированное время инференса без узких мест постобработки.
- До 43% более быстрый инференс на CPU: Он специально оптимизирован для периферийных вычислений, обеспечивая исключительную производительность на мобильных процессорах и устройствах без дискретных GPU.
- Оптимизатор MuSGD: Вдохновленный обучением больших языковых моделей (в частности, Kimi K2 от Moonshot AI), YOLO26 использует гибрид SGD и Muon для невероятно стабильного обучения и быстрой сходимости.
- ProgLoss + STAL: Эти усовершенствованные функции потерь обеспечивают заметные улучшения в распознавании мелких объектов, что критически важно для таких требовательных областей, как аэрофотосъемка и навигация дронов.
- Удаление DFL: Удаление Distribution Focal Loss в YOLO26 упрощает граф модели для беспрепятственного экспорта на периферийные и маломощные устройства.
- Специализированные улучшения: Независимо от того, используете ли вы оценку остаточного логарифмического правдоподобия (RLE) для оценки позы или специализированную угловую функцию потерь для OBB, YOLO26 точно настроен для каждой основной задачи компьютерного зрения.
Для разработчиков, готовых обновить свои конвейеры с помощью самых эффективных инструментов обучения и развертывания, переход на платформу Ultralytics и использование YOLO26 гарантирует, что вы останетесь на переднем крае искусственного интеллекта. Пользователи, заинтересованные в более старых, но стабильных архитектурах, также могут рассмотреть YOLO11 или YOLOv8 для получения обширной поддержки сообщества и проверенной надежности.