RT-DETR от Baidu: детектор объектов реального времени на основе Vision Transformer
Обзор
Real-Time Detection Transformer (RT-DETR), разработанный Baidu, — это передовой детектор объектов, работающий по принципу end-to-end, который обеспечивает производительность в реальном времени, сохраняя при этом высокую точность. Он основан на идее DETR (фреймворка без NMS), при этом внедряя backbone на основе сверток и эффективный гибридный энкодер для достижения скорости реального времени. RT-DETR эффективно обрабатывает многомасштабные признаки за счет разделения внутримасштабного взаимодействия и кросс-масштабного слияния. Модель обладает высокой адаптируемостью, поддерживая гибкую настройку скорости вывода с использованием разных слоев декодера без необходимости переобучения. RT-DETR отлично работает на ускоренных бэкендах, таких как CUDA с TensorRT, превосходя многие другие детекторы объектов реального времени.
Watch: How to Use Baidu's RT-DETR for Object Detection | Inference and Benchmarking with Ultralytics 🚀
Обзор RT-DETR от Baidu. На схеме архитектуры модели RT-DETR показаны последние три стадии бэкбона {S3, S4, S5} в качестве входных данных для энкодера. Эффективный гибридный энкодер преобразует многомасштабные признаки в последовательность признаков изображения посредством внутримасштабного взаимодействия признаков (AIFI) и модуля кросс-масштабного слияния признаков (CCFM). Отбор запросов с учетом IoU используется для выбора фиксированного количества признаков изображения, которые служат начальными запросами объектов для декодера. Наконец, декодер с вспомогательными головами предсказаний итеративно оптимизирует запросы объектов для генерации рамок и оценок достоверности (источник).
Основные характеристики
- Эффективный гибридный энкодер: RT-DETR от Baidu использует эффективный гибридный энкодер, который обрабатывает многомасштабные признаки путем разделения внутримасштабного взаимодействия и кросс-масштабного слияния. Этот уникальный дизайн на основе Vision Transformers снижает вычислительные затраты и позволяет выполнять детекцию объектов в реальном времени.
- Отбор запросов с учетом IoU: RT-DETR от Baidu улучшает инициализацию запросов объектов за счет использования отбора запросов на основе IoU. Это позволяет модели фокусироваться на наиболее релевантных объектах в сцене, повышая точность детекции.
- Адаптируемая скорость вывода: RT-DETR от Baidu поддерживает гибкую настройку скорости вывода за счет использования различных слоев декодера без необходимости переобучения. Эта адаптивность облегчает практическое применение в различных сценариях детекции объектов в реальном времени.
- Фреймворк без NMS: Основанный на DETR, RT-DETR исключает необходимость постпроцессинга с использованием немаксимального подавления, что упрощает конвейер детекции и потенциально повышает эффективность.
- Детекция без анкоров: Будучи детектором без анкоров, RT-DETR упрощает процесс обнаружения и может улучшить обобщающую способность на различных наборах данных.
Предварительно обученные модели
Python API от Ultralytics предоставляет предобученные модели PaddlePaddle RT-DETR различных масштабов:
- RT-DETR-L: 53.0% AP на COCO val2017, 114 FPS на T4 GPU
- RT-DETR-X: 54.8% AP на COCO val2017, 74 FPS на T4 GPU
Кроме того, в июле 2024 года Baidu выпустила RTDETRv2, которая еще больше улучшает оригинальную архитектуру за счет повышения метрик производительности.
Примеры использования
В этом примере представлены простые примеры обучения и вывода для RT-DETR. Полную документацию по этим и другим режимам см. на страницах документации Predict, Train, Val и Export. Модели также можно обучать на облачных GPU через Ultralytics Platform.
from ultralytics import RTDETR
# Load a COCO-pretrained RT-DETR-l model
model = RTDETR("rtdetr-l.pt")
# Display model information (optional)
model.info()
# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference with the RT-DETR-l model on the 'bus.jpg' image
results = model("path/to/bus.jpg")Предобученные веса RT-DETR поддерживают две настройки времени вывода для снижения задержки без переобучения:
eval_idx: Остановить декодирование раньше. Для стандартного 6-слойного декодера используйте индекс, начинающийся с нуля (0–5).eval_idx=5использует все слои;eval_idx=3использует 4 слоя. На GPU T4 с TensorRT v10.11 производительность RT-DETR-L улучшается с 8.0 мс / 52.7 mAP до 7.4 мс / 52.5 mAP при использовании 4 слоев.num_queries: Уменьшить количество запросов объектов (по умолчанию: 300). Снижение до 100 может позволить достичь 7.4 мс / 51.7 mAP на COCO в тех же условиях. На наборах данных с меньшим количеством объектов на изображение падение mAP обычно меньше, но сохраняй это значение выше максимального ожидаемого количества объектов на изображение.
Обе настройки могут снизить mAP — проверяй этот компромисс на своем наборе данных перед развертыванием.
from ultralytics import RTDETR
rtdetr = RTDETR("rtdetr-l.pt")
head = rtdetr.model.model[-1]
# Choose one or both settings after validating the speed/accuracy trade-off.
head.decoder.eval_idx = 3 # Use 4 of 6 decoder layers.
head.num_queries = 100 # Use fewer object queries.
results = rtdetr("path/to/image.jpg")
# Export uses the same decoder and query settings, including TensorRT exports.
rtdetr.export(format="engine", device=0, half=True)Поддерживаемые задачи и режимы
В этой таблице представлены типы моделей, конкретные предобученные веса, задачи, поддерживаемые каждой моделью, и различные режимы (Train, Val, Predict, Export), которые поддерживаются и отмечены эмодзи ✅.
| Тип модели | Предобученные веса | Поддерживаемые задачи | Логический вывод | Валидация | Обучение | Экспорт (Export) |
|---|---|---|---|---|---|---|
| RT-DETR Large | rtdetr-l.pt | Обнаружение объектов | ✅ | ✅ | ✅ | ✅ |
| RT-DETR Extra-Large | rtdetr-x.pt | Обнаружение объектов | ✅ | ✅ | ✅ | ✅ |
Файлы rtdetr-resnet50.yaml и rtdetr-resnet101.yaml поставляются только в качестве YAML-архитектур. Ultralytics выпускает предобученные веса только для rtdetr-l и rtdetr-x. Создавай экземпляры вариантов ResNet из YAML (например, RTDETR("rtdetr-resnet50.yaml")) и обучай или дообучай их по мере необходимости.
Идеальные сценарии использования
RT-DETR особенно хорошо подходит для приложений, требующих как высокой точности, так и производительности в реальном времени:
- Автономное вождение: Для надежного восприятия окружающей среды в системах беспилотного транспорта, где критически важны и скорость, и точность. Узнай больше об ИИ в беспилотных автомобилях.
- Продвинутая робототехника: Позволяет роботам выполнять сложные задачи, требующие точного распознавания объектов и взаимодействия в динамических средах. Исследуй роль ИИ в робототехнике.
- Медицинская визуализация: Для приложений в здравоохранении, где точность детекции объектов может быть решающей для диагностики. Открой для себя ИИ в здравоохранении.
- Системы наблюдения: Для задач безопасности, требующих мониторинга в реальном времени с высокой точностью детекции. Узнай о системах охранной сигнализации.
- Анализ спутниковых изображений: Для детального анализа изображений высокого разрешения, где важно понимание глобального контекста. Читай о компьютерном зрении в спутниковых снимках.
Цитирование и благодарности
Если ты используешь RT-DETR от Baidu в своей исследовательской или разработческой работе, пожалуйста, сошлись на оригинальную статью:
@misc{lv2023detrs,
title={DETRs Beat YOLOs on Real-time Object Detection},
author={Wenyu Lv and Shangliang Xu and Yian Zhao and Guanzhong Wang and Jinman Wei and Cheng Cui and Yuning Du and Qingqing Dang and Yi Liu},
year={2023},
eprint={2304.08069},
archivePrefix={arXiv},
primaryClass={cs.CV}
}Для RTDETRv2 ты можешь сослаться на статью 2024 года:
@misc{lv2024rtdetrv2,
title={RTDETRv2: All-in-One Detection Transformer Beats YOLO and DINO},
author={Wenyu Lv and Yian Zhao and Qinyao Chang and Kui Huang and Guanzhong Wang and Yi Liu},
year={2024},
eprint={2407.17140},
archivePrefix={arXiv},
primaryClass={cs.CV}
}Мы хотели бы выразить признательность Baidu и команде PaddlePaddle за создание и поддержку этого ценного ресурса для сообщества компьютерного зрения. Их вклад в развитие области с созданием детектора объектов реального времени на основе Vision Transformers, RT-DETR, высоко ценится.
Часто задаваемые вопросы (FAQ)
Что такое модель RT-DETR от Baidu и как она работает?
RT-DETR от Baidu (Real-Time Detection Transformer) — это передовой детектор объектов реального времени, построенный на архитектуре Vision Transformer. Он эффективно обрабатывает многомасштабные признаки за счет разделения внутримасштабного взаимодействия и кросс-масштабного слияния через эффективный гибридный энкодер. Используя отбор запросов на основе IoU, модель фокусируется на наиболее релевантных объектах, повышая точность детекции. Адаптируемая скорость вывода, достигаемая за счет регулировки слоев декодера без переобучения, делает RT-DETR подходящим для различных сценариев детекции объектов в реальном времени. Узнай больше о возможностях RT-DETR в статье RT-DETR на Arxiv.
Как мне использовать предобученные модели RT-DETR от Ultralytics?
Ты можешь использовать Python API от Ultralytics для работы с предобученными моделями PaddlePaddle RT-DETR. Например, чтобы загрузить модель RT-DETR-l, предобученную на COCO val2017, и достичь высокого FPS на GPU T4, ты можешь воспользоваться следующим примером:
from ultralytics import RTDETR
# Load a COCO-pretrained RT-DETR-l model
model = RTDETR("rtdetr-l.pt")
# Display model information (optional)
model.info()
# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference with the RT-DETR-l model on the 'bus.jpg' image
results = model("path/to/bus.jpg")Почему мне стоит выбрать RT-DETR от Baidu вместо других детекторов объектов реального времени?
RT-DETR от Baidu выделяется благодаря эффективному гибридному энкодеру и отбору запросов на основе IoU, которые радикально снижают вычислительные затраты при сохранении высокой точности. Уникальная возможность регулировать скорость вывода с помощью разных слоев декодера без переобучения добавляет значительную гибкость. Это делает модель особенно выгодной для приложений, требующих производительности в реальном времени на ускоренных бэкендах, таких как CUDA с TensorRT, превосходя многие другие детекторы объектов реального времени. Архитектура трансформера также обеспечивает лучшее понимание глобального контекста по сравнению с традиционными детекторами на основе CNN.
Как RT-DETR поддерживает адаптируемую скорость вывода для различных приложений реального времени?
RT-DETR от Baidu позволяет гибко настраивать скорость вывода с помощью разных слоев декодера без необходимости переобучения. Эта адаптивность критически важна для масштабирования производительности в различных задачах детекции объектов реального времени. Независимо от того, нужна ли тебе более быстрая обработка для задач с более низкой точностью или более медленная, но более точная детекция, RT-DETR можно настроить под твои специфические требования. Эта функция особенно ценна при развертывании моделей на устройствах с различными вычислительными мощностями.
Могу ли я использовать модели RT-DETR с другими режимами Ultralytics, такими как обучение, валидация и экспорт?
Да, модели RT-DETR совместимы с различными режимами Ultralytics, включая обучение, валидацию, предсказание и экспорт. Ты можешь обратиться к соответствующей документации за подробными инструкциями по использованию этих режимов: Train, Val, Predict и Export. Это обеспечивает полноценный рабочий процесс для разработки и развертывания твоих решений по детекции объектов. Фреймворк Ultralytics предоставляет согласованный API для разных архитектур моделей, что упрощает работу с RT-DETR.