RT-DETR от Baidu: детектор объектов в реальном времени на базе Transformer#
Обзор#
Real-Time Detection Transformer (RT-DETR), разработанный Baidu, — это передовой детектор объектов «end-to-end», обеспечивающий производительность в реальном времени при сохранении высокой accuracy. Он основан на идее 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 используется для выбора фиксированного количества признаков изображения в качестве начальных запросов объектов для декодера. Наконец, декодер с вспомогательными головами предсказаний итеративно оптимизирует запросы объектов для генерации боксов и оценок уверенности (source).
Ключевые особенности#
- Эффективный гибридный энкодер: RT-DETR от Baidu использует эффективный гибридный энкодер, который обрабатывает многомасштабные признаки путем разделения внутримасштабного взаимодействия и кросс-масштабного слияния. Этот уникальный дизайн на базе Vision Transformers снижает вычислительные затраты и позволяет выполнять object detection в реальном времени.
- IoU-aware выбор запросов: RT-DETR от Baidu улучшает инициализацию запросов объектов за счет использования IoU-aware выбора запросов. Это позволяет модели фокусироваться на наиболее релевантных объектах в сцене, повышая точность обнаружения.
- Адаптируемая скорость вывода: RT-DETR от Baidu поддерживает гибкую настройку скорости вывода за счет использования различных слоев декодера без необходимости переобучения. Эта адаптивность облегчает практическое применение в различных сценариях обнаружения объектов в реальном времени.
- Фреймворк без NMS: Основанный на DETR, RT-DETR исключает необходимость пост-обработки с помощью non-maximum suppression, что упрощает конвейер детектирования и потенциально повышает эффективность.
- Детектирование без привязок (Anchor-Free): Будучи anchor-free detector, RT-DETR упрощает процесс детектирования и может улучшить генерализацию на разных датасетах.
Предварительно обученные модели#
Python API от Ultralytics предоставляет предобученные модели PaddlePaddle RT-DETR различных масштабов:
- RT-DETR-L: 53.0% mAP на COCO val2017, 114 FPS на GPU T4
- RT-DETR-X: 54.8% mAP на COCO val2017, 74 FPS на GPU T4
Кроме того, в июле 2024 года Baidu выпустила RTDETRv2, которая дополнительно улучшает оригинальную архитектуру благодаря повышенным метрикам производительности.
Примеры использования#
В этом примере приведены простые примеры обучения и инференса RT-DETR. Полную документацию по этим и другим modes см. на страницах документации 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 или новее. Его деформируемое внимание использует F.grid_sample, у которого нет детерминированного обратного прохода CUDA, поэтому deterministic=True не может сделать прогон воспроизводимым и может снизить пропускную способность обучения. seed по-прежнему управляет инициализацией весов, порядком данных и выборкой аугментаций.
Предобученные веса RT-DETR поддерживают две настройки времени вывода для снижения задержки без переобучения:
eval_idx: Ранняя остановка декодирования. Для декодера по умолчанию с 6 слоями используйте индекс, начинающийся с нуля (0–5).eval_idx=5использует все слои;eval_idx=3использует 4 слоя. На T4 GPU с 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), которые отмечены эмодзи ✅.
| Тип модели | Предобученные веса | Поддерживаемые задачи | Training | Validation | Inference | Экспорт |
|---|---|---|---|---|---|---|
| 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 особенно хорошо подходит для приложений, требующих как высокой точности, так и производительности в реальном времени:
- Автономное вождение: Для надежного восприятия окружающей среды в системах автопилота, где критически важны как скорость, так и точность. Learn more about AI in self-driving cars.
- Продвинутая робототехника: Позволяет роботам выполнять сложные задачи, требующие точного распознавания объектов и взаимодействия в динамических средах. Explore AI's role in robotics.
- Медицинская визуализация: Для приложений в здравоохранении, где точность обнаружения объектов может иметь решающее значение для диагностики. Discover AI in healthcare.
- Системы видеонаблюдения: Для охранных систем, требующих мониторинга в реальном времени с высокой точностью обнаружения. Learn about security alarm systems.
- Анализ спутниковых снимков: Для детального анализа изображений высокого разрешения, где важно понимание глобального контекста. Read about computer vision in satellite imagery.
Цитирование и благодарности#
Если ты используешь RT-DETR от Baidu в своих исследованиях или разработках, пожалуйста, сошлитесь на original paper:
@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 paper:
@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 за создание и поддержку этого ценного ресурса для сообщества computer vision. Мы очень ценим их вклад в эту область благодаря разработке детектора объектов в реальном времени на базе Vision Transformers — RT-DETR.
FAQ#
RT-DETR от Baidu (Real-Time Detection Transformer) — это передовой детектор объектов в реальном времени, созданный на базе архитектуры Vision Transformer. Он эффективно обрабатывает многомасштабные признаки, разделяя внутримасштабное взаимодействие и кросс-масштабное слияние с помощью эффективного гибридного энкодера. Используя выбор запросов с учетом IoU, модель фокусируется на наиболее релевантных объектах, повышая точность детектирования. Адаптируемая скорость инференса, достигаемая за счет настройки слоев декодера без повторного обучения, делает RT-DETR подходящим для различных сценариев детектирования объектов в реальном времени. Узнай больше о функциях RT-DETR в RT-DETR Arxiv paper.
Ты можешь использовать 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 выделяется благодаря эффективному гибридному энкодеру и выбору запросов с учетом IoU, которые радикально снижают вычислительные затраты при сохранении высокой точности. Его уникальная способность настраивать скорость инференса с помощью различных слоев декодера без повторного обучения добавляет значительную гибкость. Это делает его особенно выгодным для приложений, требующих производительности в реальном времени на ускоренных бэкэндах вроде CUDA с TensorRT, превосходя многие другие детекторы объектов в реальном времени. transformer architecture также обеспечивает лучшее понимание глобального контекста по сравнению с традиционными детекторами на базе CNN.
RT-DETR от Baidu позволяет гибко регулировать скорость инференса за счет использования различных слоев декодера без необходимости повторного обучения. Эта адаптируемость крайне важна для масштабирования производительности в различных задачах детектирования объектов в реальном времени. Независимо от того, нужна ли тебе более высокая скорость для меньших требований к precision или более медленное, но точное детектирование, RT-DETR можно настроить под твои конкретные требования. Эта функция особенно ценна при развертывании моделей на устройствах с различными вычислительными возможностями.
Нет. Для RT-DETR параметр
max_detограничивает количество возвращаемых предсказаний после инференса, но он не увеличивает количество запросов объектов, создаваемых декодером. Предобученные чекпоинты Ultralytics RT-DETR используют 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.