YOLOv7 против YOLOv10: эволюция архитектуры и анализ производительности
Эволюция семейства YOLO (You Only Look Once) представляет собой увлекательную хронологию достижений в области компьютерного зрения, балансирующую вечный компромисс между скоростью логического вывода и точностью detect. Это сравнение углубляется в две важные вехи: YOLOv7, надежную модель, установившую новые эталоны в 2022 году, и YOLOv10, выпуск 2024 года, который представляет собой сдвиг парадигмы с обучением без NMS.
В то время как обе модели являются отличным выбором для object detection, они отвечают разным архитектурным философиям. YOLOv7 расширяет границы обучаемых «халяв» и оптимизации градиентного пути, в то время как YOLOv10 фокусируется на устранении узких мест постобработки для достижения эффективности end-to-end в реальном времени.
YOLOv7: Оптимизация градиентного пути
Выпущенный в июле 2022 года, YOLOv7 внес значительные архитектурные изменения, направленные на оптимизацию процесса обучения без увеличения стоимости вывода. Он быстро стал фаворитом для задач компьютерного зрения общего назначения благодаря своей высокой точности на наборе данныхCOCO .
Авторы: Чен-Яо Ван, Алексей Бочковский и Хун-Юань Марк Ляо
Организация: Институт информатики, Academia Sinica, Тайвань
Дата: 2022-07-06
ArXiv:YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors
GitHub:WongKinYiu/yolov7
Ключевые архитектурные особенности
YOLOv7 представила Extended Efficient Layer Aggregation Network (E-ELAN). Эта архитектура позволяет модели изучать более разнообразные функции, контролируя кратчайшие и длиннейшие пути градиента, обеспечивая эффективную сходимость сети во время обучения.
Кроме того, YOLOv7 активно использует «Bag-of-Freebies» — методы, которые повышают точность во время обучения без увеличения стоимости инференса. К ним относится репараметризация модели, когда сложная структура обучения упрощается в оптимизированную структуру инференса, снижая задержку при сохранении изученной производительности.
YOLOv10: Конец NMS
YOLOv10, выпущенный в мае 2024 года исследователями из Университета Цинхуа, решает давнюю проблему в обнаружении объектов: Non-Maximum Suppression (NMS). Традиционные модели YOLO предсказывают несколько ограничивающих рамок для одного объекта и полагаются на NMS для фильтрации дубликатов. Этот этап постобработки увеличивает задержку, которая варьируется в зависимости от количества объектов в сцене.
Authors: Ao Wang, Hui Chen, Lihao Liu, et al.
Organization: Tsinghua University
Date: 2024-05-23
ArXiv:YOLOv10: Real-Time End-to-End Object Detection
GitHub:THU-MIG/yolov10
Ключевые архитектурные особенности
YOLOv10 представляет стратегию Consistent Dual Assignment. Во время обучения модель использует как head «один ко многим» (для богатого наблюдения), так и head «один к одному» (для сквозного прогнозирования). Во время inference используется только head «один к одному», что полностью устраняет необходимость в NMS. Это приводит к предсказуемой inference с низкой задержкой, что делает его очень подходящим для приложений edge AI, где время обработки должно быть постоянным.
Техническое сравнение: архитектура и производительность
Основное различие между этими моделями заключается в их подходе к эффективности вывода. YOLOv7 использует высокооптимизированный backbone (E-ELAN) для эффективного извлечения признаков, но все же требует традиционной постобработки. YOLOv10 изменяет фундаментальную голову detect, чтобы удалить этапы постобработки, достигая более низкой задержки при аналогичных уровнях точности.
Метрики производительности
Как показано в таблице ниже, YOLOv10 демонстрирует превосходную эффективность. Например, YOLOv10b достигает более высокого значения mAP (52.7%), чем YOLOv7l (51.4%), при этом используя значительно меньше параметров (24.4M против 36.9M) и операций с плавающей запятой (FLOPs).
Понимание задержки
Метрики «Скорость» подчеркивают влияние NMS-free дизайна YOLOv10. Удалив шаг NMS, YOLOv10 снижает вычислительные издержки во время инференса, что особенно выгодно на аппаратных ускорителях, таких как TensorRT, где постобработка в противном случае может стать узким местом.
| Модель | размер (пиксели) | mAPval 50-95 | Скорость CPU ONNX (мс) | Скорость T4 TensorRT10 (мс) | параметры (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv7l | 640 | 51.4 | - | 6.84 | 36.9 | 104.7 |
| YOLOv7x | 640 | 53.1 | - | 11.57 | 71.3 | 189.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 |
Сильные и слабые стороны
Преимущества YOLOv7:
- Доказанная устойчивость: Тщательно протестирована в различных академических и промышленных условиях с 2022 года.
- Поддержка высокого разрешения: Отличная производительность при более высоком разрешении входных данных (например, 1280 пикселей) с помощью специальных вариантов W6/E6.
- Ресурсы сообщества: Большое количество учебных пособий и сторонних реализаций существует благодаря своему возрасту.
YOLOv7: слабые стороны
- Сложность: Структура репараметризации и вспомогательной головы может усложнить конвейер обучения по сравнению с современными моделями Ultralytics.
- Зависимость от NMS: Скорость inference частично зависит от плотности сцены из-за NMS.
Преимущества YOLOv10:
- Минимальная задержка: Архитектура без NMS обеспечивает чрезвычайно быстрое логическое заключение, что идеально подходит для вывода в реальном времени.
- Эффективность: Достигает современной точности с меньшим количеством параметров и меньшим использованием памяти.
- Простота развертывания: Удаление этапа NMS упрощает процесс экспорта в такие форматы, как ONNX и TensorRT.
YOLOv10: слабые стороны
- Специфичность задачи: в основном ориентирован на обнаружение объектов, тогда как другие модели в экосистеме Ultralytics (например, YOLO11) изначально поддерживают сегментацию, оценку позы и OBB в унифицированном фреймворке.
Идеальные варианты использования
Выбор между YOLOv7 и YOLOv10 часто зависит от конкретных ограничений среды развертывания.
- Используйте YOLOv7, если: Вы работаете над устаревшим проектом, который уже интегрирует архитектуру v7, или если вам требуются определенные варианты высокого разрешения (например, YOLOv7-w6) для detection небольших объектов на больших изображениях, где скорость вывода вторична по отношению к точности.
- Используйте YOLOv10, если: Вы выполняете развертывание на периферийных устройствах с ограниченными ресурсами (Raspberry Pi, Jetson Nano, мобильные телефоны) или требуете абсолютно минимальной задержки для таких приложений, как автономное вождение или высокоскоростная робототехника. Меньший объем памяти также делает его дешевле для запуска в облачных средах.
Преимущество Ultralytics
Независимо от того, выбираете ли вы YOLOv7 или YOLOv10, их использование через Ultralytics python API предоставляет значительные преимущества по сравнению с использованием исходного кода репозитория. Ultralytics интегрировала эти модели в единую экосистему, которая приоритезирует простоту использования, эффективность обучения и универсальность.
Оптимизированный пользовательский опыт
Исторически обучение сложных моделей глубокого обучения требовало управления сложными файлами конфигурации и зависимостями. Фреймворк Ultralytics стандартизирует этот процесс. Разработчики могут переключаться между архитектурами (например, с YOLOv10n на YOLOv10s или даже на YOLO11), изменяя один строковый аргумент, без переписывания загрузчиков данных или скриптов проверки.
Пример кода
В следующем примере показано, как загружать эти модели и выполнять предсказания с помощью пакета Ultralytics. Обратите внимание, что API остается согласованным независимо от базовой архитектуры модели.
from ultralytics import YOLO
# Load a pre-trained YOLOv10 model (NMS-free)
model_v10 = YOLO("yolov10n.pt")
# Load a pre-trained YOLOv7 model
model_v7 = YOLO("yolov7.pt")
# Run inference on an image
# The API handles underlying differences automatically
results_v10 = model_v10("https://ultralytics.com/images/bus.jpg")
results_v7 = model_v7("https://ultralytics.com/images/bus.jpg")
# Print results
for result in results_v10:
result.show() # Display predictions
Экосистема и перспективность
В то время как YOLOv7 и YOLOv10 являются мощными, экосистема Ultralytics постоянно развивается. Последняя модель YOLO11 основывается на уроках, извлеченных как из v7 (агрегация признаков), так и из v10 (эффективность).
- Хорошо поддерживается: Частые обновления обеспечивают совместимость с последними версиями PyTorch, CUDA и форматами экспорта (CoreML, ONNX, TensorRT).
- Эффективность памяти: Модели Ultralytics разработаны для минимизации использования GPU VRAM во время обучения, что позволяет использовать большие размеры пакетов на потребительском оборудовании по сравнению со многими альтернативами на основе Transformer (такими как RT-DETR).
- Эффективность обучения: Благодаря предварительно настроенным гиперпараметрам и "умному" сканированию набора данных, сходимость обучения часто происходит быстрее, что экономит вычислительные затраты.
Разработчикам, начинающим новые проекты сегодня, настоятельно рекомендуется изучить YOLO11, поскольку он предлагает улучшенный баланс скорости, наблюдаемый в YOLOv10, и надежное извлечение признаков от предшественников, а также встроенную поддержку задач, выходящих за рамки простого обнаружения, таких как segment экземпляров и оценка позы.
Изучите другие модели
Если вам интересны дальнейшие сравнения или различные архитектуры, рассмотрите следующие ресурсы:
- YOLO11 vs YOLOv8 - Сравните последние современные модели.
- RT-DETR vs YOLOv10 — Детектирование на основе Transformer'ов и эффективность на основе CNN.
- YOLOv9 vs YOLOv10 - Изучение программируемой информации о градиенте (PGI) против конструкций без NMS.