RT-DETR от Baidu: детектор объектов реального времени на основе Vision Transformer#
Обзор#
Real-Time Detection Transformer (RT-DETR), разработанный Baidu, — это современный сквозной детектор объектов, обеспечивающий работу в реальном времени при сохранении высокой точности. Он основан на идее 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 показаны последние три этапа backbone — {S3, S4, S5}, которые служат входом для энкодера. Эффективный гибридный энкодер преобразует многомасштабные признаки в последовательность признаков изображения с помощью взаимодействия признаков внутри масштаба (AIFI) и модуля слияния признаков между масштабами (CCFM). Выборка запросов с учётом IoU используется для отбора фиксированного числа признаков изображения, которые служат начальными запросами объектов для декодера. Наконец, декодер со вспомогательными головами предсказания итеративно оптимизирует запросы объектов для формирования рамок и оценок уверенности (источник).
Ключевые особенности#
- Эффективный гибридный энкодер: RT-DETR от Baidu использует эффективный гибридный энкодер, который обрабатывает многомасштабные признаки, разделяя взаимодействие внутри масштаба и слияние между масштабами. Эта уникальная архитектура на основе Vision Transformer снижает вычислительные затраты и обеспечивает обнаружение объектов в реальном времени.
- Выбор запросов с учётом IoU: RT-DETR от Baidu улучшает инициализацию запросов объектов благодаря выбору с учётом IoU. Это позволяет модели сосредоточиться на наиболее важных объектах в сцене и повысить точность обнаружения.
- Адаптивная скорость инференса: RT-DETR от Baidu поддерживает гибкую настройку скорости инференса с помощью разных слоёв декодера без необходимости повторного обучения. Такая адаптивность упрощает практическое применение в различных сценариях обнаружения объектов в реальном времени.
- Фреймворк без NMS: RT-DETR, основанный на DETR, устраняет необходимость в постобработке с подавлением немаксимумов, упрощая конвейер обнаружения и потенциально повышая эффективность.
- Обнаружение без anchor: RT-DETR как детектор без anchor упрощает процесс обнаружения и может улучшить обобщающую способность на разных наборах данных.
Предварительно обученные модели#
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
Кроме того, в июле 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")Установи deterministic=False при обучении RT-DETR на CUDA с PyTorch 2.0 или более поздней версией. В деформируемом 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]
# 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, 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 особенно хорошо подходит для приложений, которым нужны одновременно высокая точность и работа в реальном времени:
- Автономное вождение: для надёжного восприятия окружающей среды в системах беспилотного вождения, где критически важны и скорость, и точность. Узнай больше об AI в беспилотных автомобилях.
- Продвинутая робототехника: позволяет роботам выполнять сложные задачи, требующие точного распознавания объектов и взаимодействия с ними в динамичной среде. Узнай о роли AI в робототехнике.
- Медицинская визуализация: для медицинских приложений, где точность обнаружения объектов может иметь решающее значение для диагностики. Узнай об AI в здравоохранении.
- Системы видеонаблюдения: для задач безопасности, требующих мониторинга в реальном времени с высокой точностью обнаружения. Узнай о системах охранной сигнализации.
- Анализ спутниковых изображений: для детального анализа изображений высокого разрешения, где важно понимание глобального контекста. Узнай о компьютерном зрении для спутниковых изображений.
Цитирование и благодарности#
Если ты используешь 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 Transformer — RT-DETR.
Часто задаваемые вопросы#
RT-DETR от Baidu (Real-Time Detection Transformer) — это современный детектор объектов реального времени, построенный на архитектуре Vision Transformer. Он эффективно обрабатывает многомасштабные признаки, разделяя взаимодействие внутри масштаба и слияние между масштабами с помощью эффективного гибридного энкодера. Благодаря выбору запросов с учётом IoU модель сосредотачивается на наиболее важных объектах, повышая точность обнаружения. Адаптивная скорость инференса, достигаемая настройкой слоёв декодера без повторного обучения, делает RT-DETR подходящим для различных сценариев обнаружения объектов в реальном времени. Подробнее о возможностях RT-DETR читай в статье RT-DETR на Arxiv.
Ты можешь использовать Python API Ultralytics для работы с предварительно обученными моделями RT-DETR на базе PaddlePaddle. Например, чтобы загрузить модель 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 выделяется эффективным гибридным энкодером и выбором запросов с учётом IoU, которые значительно снижают вычислительные затраты при сохранении высокой точности. Уникальная возможность настраивать скорость инференса с помощью разных слоёв декодера без повторного обучения обеспечивает значительную гибкость. Это особенно выгодно для приложений, требующих работы в реальном времени на ускоренных бэкендах, таких как CUDA с TensorRT, где RT-DETR превосходит многие другие детекторы объектов реального времени. Архитектура 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.