YOLOX и YOLOv10#
Эволюция моделей компьютерного зрения реального времени отмечена значительными архитектурными прорывами. Два ключевых этапа этого пути — YOLOX и YOLOv10. Выпущенная в 2021 году YOLOX успешно сократила разрыв между академическими исследованиями и промышленным применением, предложив эффективную архитектуру без anchor-боксов. Три года спустя YOLOv10 изменила область, устранив необходимость в подавлении немаксимумов (NMS) на этапе постобработки и расширив границы эффективности и скорости.
Это подробное техническое сравнение рассматривает архитектуры, показатели производительности и оптимальные сценарии использования обеих моделей и помогает выбрать подходящий инструмент для следующего проекта по обнаружению объектов.
Происхождение моделей и метаданные#
Понимание происхождения этих моделей помогает разобраться в причинах выбора их архитектуры и предполагаемых сценариях развёртывания.
Сведения о YOLOX
- Авторы: Чжэн Гэ, Сунтао Лю, Фэн Ван, Цзэмин Ли и Цзянь Сунь
- Организация: 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
- Авторы: 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: новаторская архитектура без anchor-боксов#
YOLOX привлекла внимание, переведя семейство YOLO на архитектуру без anchor-боксов. Предсказывая центр объекта вместо использования заранее заданных anchor-боксов, YOLOX значительно сократила количество параметров проектирования и эвристических настроек, необходимых для пользовательских наборов данных. Кроме того, в модели появилась разделённая голова, в которой задачи классификации и регрессии выполняются по отдельным ветвям. Такой подход устранил конфликт между определением того, что представляет собой объект, и тем, где он находится, заметно ускорив сходимость и повысив точность.
YOLOv10: революция без NMS#
Хотя YOLOX упростила голову обнаружения, для отсеивания избыточных прогнозов ограничивающих рамок в ней по-прежнему использовалась NMS. YOLOv10 устранила это фундаментальное узкое место. Благодаря согласованным двойным назначениям во время обучения YOLOv10 обеспечивает нативное сквозное обнаружение. Во время обучения используется голова one-to-many, чтобы обеспечить насыщенные обучающие сигналы, а во время инференса — голова one-to-one, которая сразу выдаёт итоговые прогнозы. Такой комплексный подход, сочетающий эффективность и точность, полностью устраняет 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 | 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 |
Анализ данных#
Показатели наглядно демонстрируют скачок поколений, который совершила YOLOv10. Например, YOLOv10-S достигает средней точности 46,3% против 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
# Загрузи предварительно обученную компактную модель YOLOv10
model = YOLO("yolov10n.pt")
# Обучи модель на датасете COCO8
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Выполни инференс на тестовом изображении
predictions = model.predict("https://ultralytics.com/images/bus.jpg")
# Экспортируй модель для развёртывания на периферийном устройстве
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 поддерживает нативный сквозной инференс (
nms=False), обеспечивая более быстрый и детерминированный инференс без узких мест, связанных с постобработкой NMS. - До 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, получив широкую поддержку сообщества и проверенную надёжность.