YOLOv9 vs. YOLOv10: Техническое сравнение для object detection
Выбор правильной модели обнаружения объектов — это критически важное решение для разработчиков и исследователей, балансирующее между потребностью в высокой точности и ограничениями инференса в реальном времени и вычислительными ресурсами. В этом руководстве представлено углубленное техническое сравнение между YOLOv9 и YOLOv10, двумя современными архитектурами, которые расширили границы производительности компьютерного зрения в 2024 году.
В то время как YOLOv9 фокусируется на архитектурных инновациях для решения проблем информационных узких мест в глубоком обучении, YOLOv10 представляет собой сдвиг парадигмы с дизайном без NMS для минимизации задержки. Обе модели полностью интегрированы в пакет Ultralytics на python, что позволяет пользователям легко обучать, проверять и развертывать их в рамках единой экосистемы.
Метрики производительности и тесты
Компромиссы в производительности между этими двумя моделями различны. YOLOv9, как правило, расширяет границы средней точности (mAP), особенно в своих более крупных вариантах, что делает его подходящим для сценариев, где точность имеет первостепенное значение. И наоборот, YOLOv10 разработан для эффективности, значительно снижая задержку при выводе и количество параметров, что идеально подходит для развертывания на периферийных устройствах.
В таблице ниже показаны эти различия с использованием набора данных COCO. Примечательно, что YOLOv10n достигает невероятной скорости на графических процессорах T4, в то время как YOLOv9e доминирует по точности обнаружения.
| Модель | размер (пиксели) | mAPval 50-95 | Скорость CPU ONNX (мс) | Скорость T4 TensorRT10 (мс) | параметры (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv9t | 640 | 38.3 | - | 2.3 | 2.0 | 7.7 |
| YOLOv9s | 640 | 46.8 | - | 3.54 | 7.1 | 26.4 |
| YOLOv9m | 640 | 51.4 | - | 6.43 | 20.0 | 76.3 |
| YOLOv9c | 640 | 53.0 | - | 7.16 | 25.3 | 102.1 |
| YOLOv9e | 640 | 55.6 | - | 16.77 | 57.3 | 189.0 |
| 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 |
YOLOv9: Решение проблемы узкого места информации
Выйдет в феврале 2024 года, YOLOv9 направлена на решение фундаментальной теоретической проблемы глубоких нейронных сетей: потери информации при распространении данных через глубокие слои. Эта модель разработана таким образом, чтобы сеть сохраняла основные характеристики, необходимые для точного обнаружения объектов.
Технические детали:
- Авторы: Чен-Яо Ванг, Хонг-Юань Марк Ляо
- Организация:Институт информатики, Academia Sinica
- Дата: 21.02.2024
- Arxiv:arXiv:2402.13616
- GitHub:WongKinYiu/yolov9
Архитектура: PGI и GELAN
YOLOv9 представляет две новаторские концепции:
- Программируемая градиентная информация (PGI): Вспомогательная система контроля, которая предотвращает потерю информации во время обучения. Она обеспечивает генерацию надежных градиентов для обновления весов сети, решая проблемы глубокого контроля, обнаруженные в предыдущих архитектурах.
- Обобщенная эффективная сеть агрегации слоев (GELAN): Новая архитектура, которая максимально повышает эффективность параметров. GELAN позволяет модели достигать более высокой точности с меньшим количеством параметров по сравнению с обычными конструкциями, оптимизируя способ агрегирования признаков по слоям.
Сильные и слабые стороны
YOLOv9 превосходен в приложениях, критичных к точности. Его способность сохранять подробную информацию о признаках делает его превосходным для detect небольших объектов или навигации по сложным сценам. Однако эта сложность связана с компромиссом в сложности. Архитектурные дополнения, такие как PGI, предназначены в первую очередь для обучения, что означает, что их можно удалить во время inference, но ресурсы для обучения могут быть выше. Кроме того, хотя его эффективность высока, его задержка обычно выше, чем у специализированных эффективных конструкций YOLOv10.
YOLOv10: Эра обнаружения без NMS
YOLOv10, разработанная исследователями из Университета Цинхуа и выпущенная в мае 2024 года, уделяет приоритетное внимание скорости в реальном времени и возможности сквозного развертывания. Ее определяющей особенностью является устранение Non-Maximum Suppression (NMS) — этапа постобработки, который традиционно является узким местом для задержки при выводе.
Технические детали:
- Авторы: Ao Wang, Hui Chen, Lihao Liu, и др.
- Организация:Университет Цинхуа
- Дата: 2024-05-23
- Arxiv:arXiv:2405.14458
- GitHub:THU-MIG/yolov10
Архитектура: Согласованные двойные назначения
Основным нововведением YOLOv10 является Consistent Dual Assignments во время обучения. Модель использует стратегию назначения «один ко многим» для насыщенного контроля во время обучения, но переключается на назначение «один к одному» для инференса. Эта архитектура позволяет модели напрямую предсказывать оптимальную ограничивающую рамку для каждого объекта, делая постобработку NMS устаревшей. В сочетании с Rank-Guided Block Design, YOLOv10 снижает избыточность и вычислительные издержки (FLOPs).
Сильные и слабые стороны
Основным преимуществом YOLOv10 является низкая задержка. Благодаря удалению NMS задержка при выводе становится детерминированной и значительно снижается, что критически важно для обработки видео в реальном времени. Она также отличается превосходной эффективностью параметров, что видно из таблицы сравнения, где модели YOLOv10 достигают конкурентоспособной точности с меньшим количеством FLOPs. Потенциальным недостатком является ее относительно недавнее появление по сравнению с устоявшимися экосистемами, хотя интеграция в Ultralytics смягчает это. Она также в высшей степени специализирована для detect, тогда как другие модели в экосистеме предлагают более широкую поддержку многозадачности.
Сквозной экспорт
Поскольку YOLOv10 по своей конструкции не требует NMS, экспорт в такие форматы, как ONNX или TensorRT, часто проще и позволяет получить «чистые» сквозные модели без необходимости использования сложных плагинов постобработки.
Сравнительный анализ для разработчиков
При интеграции этих моделей в производство вступают в игру несколько практических факторов, выходящих за рамки необработанных показателей.
Простота использования и экосистема
Обе модели получают огромную выгоду от того, что являются частью экосистемы Ultralytics. Это означает, что разработчики могут переключаться между YOLOv9 и YOLOv10, просто изменив строку модели, используя те же конвейеры обучения, инструменты проверки и форматы развертывания.
- Эффективность обучения: Модели Ultralytics обычно требуют меньше памяти, чем детекторы на основе трансформеров, что позволяет проводить обучение на стандартных потребительских GPU.
- Универсальность: Хотя YOLOv9 и YOLOv10 ориентированы на обнаружение, API Ultralytics поддерживает другие задачи, такие как сегментация экземпляров и оценка позы, с помощью таких моделей, как YOLO11 и YOLOv8, предлагая комплексный набор инструментов для различных проектов в области компьютерного зрения.
Идеальные варианты использования
Выберите YOLOv9, когда:
- Ваше приложение требует максимально возможной точности (например, медицинская визуализация, detect дефектов в производстве).
- Вы работаете с труднообнаруживаемыми объектами, где сохранение информации имеет решающее значение.
- Задержка является второстепенной проблемой по сравнению с точностью.
Выберите YOLOv10, когда:
- Скорость имеет решающее значение. Такие приложения, как автономное вождение, навигация роботов или видеоаналитика с высокой частотой кадров, выигрывают от конструкции без NMS.
- Развертывание на периферийных устройствах (таких как NVIDIA Jetson или Raspberry Pi), где ресурсы CPU/GPU ограничены.
- Вам нужно детерминированное время инференса без изменчивости, вносимой обработкой NMS.
Пример кода: Запуск обеих моделей
Благодаря унифицированному API Ultralytics, сравнение этих моделей на ваших собственных данных не составит труда. Следующий код на python демонстрирует, как загрузить и запустить инференс с обеими архитектурами.
from ultralytics import YOLO
# Load a pre-trained YOLOv9 model
model_v9 = YOLO("yolov9c.pt")
# Load a pre-trained YOLOv10 model
model_v10 = YOLO("yolov10n.pt")
# Run inference on an image
results_v9 = model_v9("path/to/image.jpg")
results_v10 = model_v10("path/to/image.jpg")
# Print results
print(f"YOLOv9 Detection: {len(results_v9[0].boxes)}")
print(f"YOLOv10 Detection: {len(results_v10[0].boxes)}")
Заключение
И YOLOv9, и YOLOv10 представляют собой важные вехи в компьютерном зрении. YOLOv9 расширяет теоретические границы сохранения признаков и точности, что делает его мощным инструментом для исследований и задач, требующих высокой точности. YOLOv10 переопределяет эффективность, устраняя узкое место NMS, предлагая оптимизированное решение для приложений реального времени.
Для пользователей, которым нужен наилучший баланс точности, скорости и функциональности для различных задач (включая segment и классификацию), мы также рекомендуем изучить YOLO11. Как последняя итерация от Ultralytics, YOLO11 объединяет лучшие атрибуты своих предшественников в надежный, готовый к использованию в корпоративной среде пакет, подходящий практически для любого приложения AI в области компьютерного зрения.
Изучите другие модели
Экосистема Ultralytics обширна. Если требования вашего проекта отличаются, рассмотрите следующие альтернативы:
- YOLO11: Новейшая современная модель, обеспечивающая превосходную производительность и универсальность в задачах Detection, Segmentation, Pose, OBB и Classification.
- YOLOv8: Очень популярная и стабильная модель, известная своей широкой совместимостью и поддержкой нескольких задач.
- RT-DETR: Детектор на основе трансформера, который обеспечивает высокую точность без необходимости в NMS, служа альтернативой архитектурам YOLO для конкретных случаев использования.
Используя платформу Ultralytics, вы получаете доступ ко всему этому набору моделей, что гарантирует, что у вас всегда будет подходящий инструмент для работы.