YOLOX и YOLOv10#
Эволюция моделей компьютерного зрения реального времени отмечена значительными архитектурными прорывами. Двумя важными вехами на этом пути стали YOLOX и YOLOv10. Выпущенная в 2021 году, YOLOX успешно сократила разрыв между академическими исследованиями и промышленным применением, представив высокоэффективную безъякорную архитектуру. Три года спустя YOLOv10 произвела революцию в этой области, устранив необходимость в подавлении немаксимумов (NMS) на этапе постобработки и расширив границы эффективности и скорости.
В этом подробном техническом сравнении рассматриваются архитектуры, показатели производительности и оптимальные варианты применения обеих моделей, что поможет тебе выбрать подходящий инструмент для следующего проекта по обнаружению объектов.
Происхождение моделей и метаданные#
Понимание происхождения этих моделей помогает лучше понять их архитектурные решения и предполагаемые среды развертывания.
Детали YOLOX
- Авторы: Zheng Ge, Songtao Liu, Feng Wang, Zeming Li и Jian Sun
- Организация: Megvii
- Дата: 2021-07-18
- Arxiv: https://arxiv.org/abs/2107.08430
- GitHub: https://github.com/Megvii-BaseDetection/YOLOX
- Документация: https://github.com/Megvii-BaseDetection/YOLOX/tree/main/docs
Детали 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 значительно сократила количество проектных параметров и эвристических настроек, необходимых для пользовательских наборов данных. Кроме того, в ней появилась разделённая голова, которая распределяет задачи классификации и регрессии по отдельным ветвям. Такой подход устранил конфликт между определением того, что представляет собой объект, и определением того, где он находится, что привело к заметному повышению скорости сходимости и точности.
YOLOv10: революция без NMS#
Хотя YOLOX упростила голову детектора, она по-прежнему использовала NMS для фильтрации избыточных предсказаний ограничивающих рамок. YOLOv10 устранила это фундаментальное узкое место. Благодаря согласованному двойному назначению объектов во время обучения YOLOv10 обеспечивает нативное сквозное обнаружение. Во время обучения она использует голову «один-ко-многим», чтобы обеспечить богатые обучающие сигналы, а во время вывода — голову «один-к-одному», которая напрямую выдаёт итоговые предсказания. Эта комплексная архитектура, ориентированная на эффективность и точность, полностью устраняет NMS и значительно сокращает задержку вывода на встраиваемых чипах.
Подавление немаксимумов часто сложно ускорить на нейронных процессорах (NPUs). Благодаря его удалению 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, чем ресурсоёмкие альтернативы на базе 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", quantize=16)Благодаря встроенным процедурам экспорта преобразование моделей в форматы, такие как 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, чтобы получить широкую поддержку сообщества и проверенную надёжность.