RT-DETR от Baidu: детектор объектов в реальном времени на основе Transformer#
Обзор#
Real-Time Detection Transformer (RT-DETR), разработанный Baidu, — это передовой сквозной детектор объектов, обеспечивающий работу в реальном времени при высокой точности. Он основан на идее DETR (архитектуры без NMS), но использует основанный на свёртках бэкбон и эффективный гибридный энкодер для достижения скорости обработки в реальном времени. RT-DETR эффективно обрабатывает многомасштабные признаки, разделяя взаимодействие внутри масштаба и слияние между масштабами. Модель легко адаптируется: скорость инференса можно гибко регулировать с помощью разных слоёв декодера без повторного обучения. RT-DETR отлично работает на ускоренных бэкендах, например CUDA с TensorRT, превосходя многие другие детекторы объектов реального времени.
Смотри: Как использовать RT-DETR от Baidu для обнаружения объектов | Инференс и бенчмаркинг с 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: RT-DETR основан на DETR и не требует постобработки с помощью подавления немаксимумов, что упрощает конвейер обнаружения и потенциально повышает его эффективность.
- Обнаружение без якорей: Как детектор без якорей, RT-DETR упрощает процесс обнаружения и может лучше обобщать данные разных наборов.
Предварительно обученные модели#
Python API Ultralytics предоставляет предварительно обученные модели RT-DETR на PaddlePaddle разных размеров:
- RT-DETR-L: 53,0% AP на COCO val2017, 114 FPS на GPU T4
- RT-DETR-X: 54,8% AP на COCO val2017, 74 FPS на GPU T4
Кроме того, Baidu выпустила RTDETRv2 в июле 2024 года. Эта модель улучшает исходную архитектуру и показывает более высокие метрики производительности.
Примеры использования#
В этом примере показаны простые примеры обучения и инференса RT-DETR. Полную документацию по этим и другим режимам см. на страницах Predict, Train, Val и Export. Модели также можно обучать на облачных GPU через Ultralytics Platform.
from ultralytics import RTDETR
# Загрузи предварительно обученную на COCO модель RT-DETR-l
model = RTDETR("rtdetr-l.pt")
# Показать информацию о модели (необязательно)
model.info()
# Обучить модель на демонстрационном наборе данных COCO8 в течение 100 эпох
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Выполни инференс изображения 'bus.jpg' с помощью модели RT-DETR-l
results = model("path/to/bus.jpg")Задай deterministic=False при обучении RT-DETR на CUDA с PyTorch 2.0 или более поздней версии. В механизме deformable attention используется F.grid_sample, у которого нет детерминированного обратного прохода CUDA, поэтому deterministic=True не обеспечивает воспроизводимость запуска и может снизить пропускную способность обучения. seed по-прежнему управляет инициализацией весов, порядком данных и выборкой аугментаций.
Предварительно обученные веса 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]
# Выбери одну или обе настройки после проверки компромисса между скоростью и точностью.
head.decoder.eval_idx = 3 # Используй 4 из 6 слоёв декодера.
head.num_queries = 100 # Используй меньше запросов объектов.
results = rtdetr("path/to/image.jpg")
# При экспорте используются те же настройки декодера и запросов, в том числе при экспорте в TensorRT.
rtdetr.export(format="engine", device=0, quantize=16)Поддерживаемые задачи и режимы#
В этой таблице представлены типы моделей, соответствующие предварительно обученные веса, поддерживаемые каждой моделью задачи и режимы (Train, Val, Predict, 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.
Часто задаваемые вопросы#
RT-DETR (Real-Time Detection Transformer) от Baidu — это усовершенствованный детектор объектов реального времени на основе архитектуры Vision Transformer. Благодаря эффективному гибридному энкодеру он обрабатывает многомасштабные признаки, разделяя взаимодействие внутри масштаба и слияние между масштабами. Используя выбор запросов с учётом IoU, модель фокусируется на наиболее важных объектах и повышает точность обнаружения. Скорость инференса можно адаптировать, меняя слои декодера без повторного обучения, поэтому RT-DETR подходит для различных сценариев обнаружения объектов в реальном времени. Подробнее о возможностях RT-DETR читай в статье RT-DETR на arXiv.
Чтобы использовать предварительно обученные модели RT-DETR на PaddlePaddle, воспользуйся Python API Ultralytics. Например, чтобы загрузить модель RT-DETR-l, обученную на COCO val2017, и добиться высокого FPS на GPU T4, можно воспользоваться следующим примером:
Примерfrom ultralytics import RTDETR # Загрузи предварительно обученную на COCO модель RT-DETR-l model = RTDETR("rtdetr-l.pt") # Показать информацию о модели (необязательно) model.info() # Обучить модель на демонстрационном наборе данных COCO8 в течение 100 эпох results = model.train(data="coco8.yaml", epochs=100, imgsz=640) # Выполни инференс изображения 'bus.jpg' с помощью модели RT-DETR-l results = model("path/to/bus.jpg")RT-DETR от Baidu выделяется эффективным гибридным энкодером и выбором запросов с учётом IoU: они значительно снижают вычислительные затраты, сохраняя высокую точность. Возможность регулировать скорость инференса, выбирая разные слои декодера без повторного обучения, обеспечивает значительную гибкость. Поэтому модель особенно подходит для приложений, которым нужна работа в реальном времени на ускоренных бэкендах, например CUDA с TensorRT, и превосходит многие другие детекторы объектов реального времени. Архитектура Transformer также лучше понимает глобальный контекст, чем традиционные детекторы на основе CNN.
RT-DETR от Baidu позволяет гибко регулировать скорость инференса, выбирая разные слои декодера без повторного обучения. Такая адаптивность важна для масштабирования производительности при решении различных задач обнаружения объектов в реальном времени. Нужна более высокая скорость обработки при менее строгих требованиях к точности или более медленное, но точное обнаружение? RT-DETR можно настроить под конкретные требования. Эта возможность особенно полезна при развёртывании моделей на устройствах с разными вычислительными возможностями.
Нет. Для RT-DETR
max_detограничивает число предсказаний, возвращаемых после инференса, но не увеличивает число запросов объектов, создаваемых декодером. В предварительно обученных контрольных точках RT-DETR от Ultralytics используется 300 запросов объектов, поэтому модель не может вернуть больше 300 обнаружений на изображение, даже если задать дляmax_detбольшее значение.Используй
max_det, чтобы сократить число возвращаемых обнаружений, например доmax_det=100, если нужны только менее многочисленные предсказания с высокой уверенностью. Если на изображении в твоём наборе данных может быть больше 300 объектов, обучи собственную модель RT-DETR с большим числом запросов декодера (nq) в YAML-файле модели. Изменить это значение в предварительно обученной контрольной точке после обучения — не то же самое: чтобы научить модель обрабатывать дополнительные запросы, её нужно переобучить.Да, модели RT-DETR совместимы с различными режимами Ultralytics, включая обучение, валидацию, предсказание и экспорт. Подробные инструкции по использованию этих режимов см. в соответствующей документации: Train, Val, Predict и Export. Это обеспечивает полный рабочий процесс разработки и развёртывания решений для обнаружения объектов. Фреймворк Ultralytics предоставляет единый API для разных архитектур моделей, поэтому с моделями RT-DETR легко работать.