YOLO Vision 2026:

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 🚀

Baidu RT-DETR model architecture overview Обзор 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 слоями используйте индекс, начинающийся с нуля (05). 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), которые отмечены эмодзи ✅.

Тип моделиПредобученные весаПоддерживаемые задачиTrainingValidationInferenceЭкспорт
RT-DETR Largertdetr-l.ptОбнаружение объектов
RT-DETR Extra-Largertdetr-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.

Комментарии