RF-DETR

Трансформер виявлення, який передбачає фіксований набір об'єктів замість щільної сітки, тому не потребує NMS під час інференсу. LibreYOLO підтримує його для чотирьох завдань.

Задачі
detection, instance segmentation, pose, oriented boxes
Розміри
n, s, m, l for detection, pose and oriented boxes; n through xx for segmentation
Встановлення
pip install "libreyolo[rfdetr]"
Рівень підтримки
Флагманський, починаючи з v1.0.0. Тут функції проєктують і першими повністю валідують на GPU.
Першоджерело
RF-DETR, автори: Roboflow, ліцензія Apache-2.0. Стаття, джерело
Ліцензії
Код: MIT, ваги: Apache-2.0. Комерційне використання
LibreRFDETRs, виявлення на відео з 512 px.

Встановлення

RF-DETR потребує власного додаткового пакета, який встановлює transformers для бекбона.

bash
pip install "libreyolo[rfdetr]"

Передбачення

Під час першого використання ваги завантажуються з Hugging Face та кешуються локально.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreRFDETRs.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes:    print(box.cls, box.conf, box.xyxy)
CLI
libreyolo predict model=LibreRFDETRs.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True
Відео
from libreyolo import LibreYOLO model = LibreYOLO("LibreRFDETRs.pt") # Будь-яке джерело, яке приймає бібліотека: файл, каталог, URL-адреса,# індекс вебкамери, потік RTSP або список .streamsfor result in model.predict("clip.mp4", stream=True, save=True):    print(len(result.boxes))

Повертається той самий об'єкт Results, що й для кожного сімейства, тому для заміни детектора достатньо змінити один рядок. Параметри conf і max_det фільтрують вибір запитів; етапу NMS для налаштування немає. Джерела, потокове оброблення та роботу з результатами описано на сторінці передбачення.

Варіанти

Доступні чотири розміри й чотири завдання зі спільною архітектурою: сегментація, оцінювання пози та орієнтовані рамки повторно використовують декодер виявлення з іншою головою, тому приймають ті самі аргументи. Розміри мають подібну кількість параметрів і відрізняються переважно роздільною здатністю вхідних даних.

Контрольна точкаВхід (пікс.)mAP 50-95Параметри (млн)
LibreRFDETRn38451.430.47
LibreRFDETRs51255.132.11
LibreRFDETRm57657.433.69
LibreRFDETRl70458.633.93

COCO val2017, 500 images. Виміряно засобами бенчмарку LibreYOLO й опубліковано на сторінці Vision Analysis, де порівнюють затримку на різному обладнанні та в різних середовищах виконання, а також зберігають повні записи запусків.

Навчання

Для всіх чотирьох завдань навчання починається з опублікованої контрольної точки. RF-DETR перелічує pretrained серед аргументів, які ігнорує його нативний тренер, тому передавання pretrained=False не створює тут випадково ініціалізованої моделі.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreRFDETRs.pt")model.train(data="my-dataset.yaml", epochs=50, imgsz=512, batch=8, lr0=1e-4)
CLI
libreyolo train model=LibreRFDETRs.pt data=my-dataset.yaml \  epochs=50 imgsz=512 batch=8 lr0=1e-4
LoRA
from libreyolo import LibreYOLO model = LibreYOLO("LibreRFDETRs.pt")model.train(data="my-dataset.yaml", epochs=50, lora=True)
Кілька GPU
libreyolo train model=LibreRFDETRs.pt data=my-dataset.yaml \  epochs=50 device=0,1 batch=-1

Два аргументи мають тут більше значення, ніж для детектора CNN. Зберігайте lr0 на рівні 1e-4 або нижче, оскільки трансформери виявлення розходяться за швидкостей навчання, які витримує модель YOLO. Залишайте imgsz із нативною роздільною здатністю контрольної точки, якщо немає причини її змінювати. Розмір вхідних даних має ділитися без остачі на добуток розміру патча бекбона й кількості вікон; LibreYOLO перевіряє це до початку запуску й називає найближчі дійсні розміри.

Датасети, аугментацію, кілька GPU та системи журналювання описано на сторінці навчання.

Валідація

Метод val() повертає словник ключів metrics/ із точністю, повнотою, mAP 50 і mAP 50-95, виміряними для будь-якого датасету у форматі, на якому виконувалося навчання.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreRFDETRs.pt") # val() повертає звичайний словник, а не об'єктmetrics = model.val(data="my-dataset.yaml", imgsz=512) print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])print(metrics["metrics/precision"], metrics["metrics/recall"])
CLI
libreyolo val model=LibreRFDETRs.pt data=my-dataset.yaml imgsz=512
На COCO
# Вбудований YAML-файл COCO містить скрипт завантаження, тому потребує# явного дозволу, якщо датасету ще немає локально.libreyolo val model=LibreRFDETRn.pt data=coco.yaml imgsz=384 \  allow_download_scripts=True

Експорт

ЗадачаONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
DetectionDetection to ONNX: підтримуєтьсяDetection to TorchScript: підтримуєтьсяDetection to ExecuTorch: підтримуєтьсяDetection to TensorRT: підтримується. Runtime parity coverage lives in tests/e2e/test_tensorrt.py.Detection to OpenVINO: підтримується. Runtime parity coverage lives in tests/e2e/test_openvino.py.Detection to Paddle: не підтримуєтьсяDetection to MNN: підтримуєтьсяDetection to RKNN: не підтримуєтьсяDetection to ncnn: не підтримуєтьсяDetection to TFLite: не підтримуєтьсяDetection to CoreML: підтримується. Conversion is available, but runtime parity requires a macOS runner.Detection to Core AI: підтримується
Instance segmentationInstance segmentation to ONNX: підтримуєтьсяInstance segmentation to TorchScript: підтримуєтьсяInstance segmentation to ExecuTorch: підтримуєтьсяInstance segmentation to TensorRT: підтримується. A published Apache-2.0 trained segmentation checkpoint exports and reloads, but public top-k class membership changes.Instance segmentation to OpenVINO: підтримується. After Hungarian query alignment, the converted-runtime element match rate is 69.0%, below the validation bar.Instance segmentation to Paddle: не підтримуєтьсяInstance segmentation to MNN: не підтримуєтьсяInstance segmentation to RKNN: не підтримуєтьсяInstance segmentation to ncnn: не підтримуєтьсяInstance segmentation to TFLite: не підтримуєтьсяInstance segmentation to CoreML: не підтримуєтьсяInstance segmentation to Core AI: не підтримується
PosePose to ONNX: підтримуєтьсяPose to TorchScript: підтримуєтьсяPose to ExecuTorch: підтримуєтьсяPose to TensorRT: підтримується. A published Apache-2.0 trained pose checkpoint exports and reloads, but matched public boxes fall to 0.704 IoU with 41.4-pixel coordinate drift.Pose to OpenVINO: підтримується. After Hungarian query alignment, the converted-runtime element match rate is 72.75%, below the validation bar.Pose to Paddle: не підтримуєтьсяPose to MNN: не підтримуєтьсяPose to RKNN: не підтримуєтьсяPose to ncnn: не підтримуєтьсяPose to TFLite: не підтримуєтьсяPose to CoreML: не підтримуєтьсяPose to Core AI: не підтримується
Oriented boxesOriented boxes to ONNX: підтримуєтьсяOriented boxes to TorchScript: підтримуєтьсяOriented boxes to ExecuTorch: підтримуєтьсяOriented boxes to TensorRT: підтримується. A deterministic synthetic OBB fixture exports and reloads, but public top-k class membership changes.Oriented boxes to OpenVINO: підтримується. After Hungarian query alignment, the converted-runtime element match rate is 91.25%, below the validation bar.Oriented boxes to Paddle: не підтримуєтьсяOriented boxes to MNN: не підтримуєтьсяOriented boxes to RKNN: не підтримуєтьсяOriented boxes to ncnn: не підтримуєтьсяOriented boxes to TFLite: не підтримуєтьсяOriented boxes to CoreML: не підтримуєтьсяOriented boxes to Core AI: не підтримується

Експортований артефакт повторно завантажується через LibreYOLO() за суфіксом файлу, тому файл .onnx або .engine поводиться як контрольна точка й повертає той самий Results. Запуск графа безпосередньо в середовищі виконання без установленої LibreYOLO також підтримується, але тоді попередню та подальшу обробку потрібно написати самостійно.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreRFDETRs.pt")model.export(format="onnx", imgsz=512)model.export(format="tensorrt", imgsz=512, half=True) # Аргументи, які приймає кожен формат:##   format    "onnx" | "torchscript" | "executorch" | "tensorrt"#             | "openvino" | "paddle" | "mnn" | "rknn" | "ncnn"#             | "tflite" | "coreml" | "coreai".#             "engine" є псевдонімом tensorrt, "litert" є псевдонімом tflite.#   imgsz     ціле число або (висота, ширина). Типовим є нативний#             розмір контрольної точки.#   batch     ціле число, типово 1.#   half      логічне значення, експорт у FP16. Типово False.#   int8      логічне значення, експорт у INT8. Типово False. Потрібен `data`.#   data      шлях до YAML-файлу датасету для калібрування int8.#   fraction  число з рухомою комою, частка калібрувальної вибірки. Типово 1.0.#   dynamic   логічне значення, динамічні осі. Типово True.#   simplify  логічне значення, спрощення графа ONNX. Типово True.#   opset     ціле число, opset ONNX. Якщо не задано, вибирається за сімейством.#   device    рядок, пристрій трасування. Типовим є пристрій моделі.#   output_path  рядок, типовою є назва, утворена з контрольної точки.#   verbose   логічне значення, типово False.#   allow_download_scripts  логічне значення, типово False. Дозволяє вбудований#             Python у YAML-файлі датасету, який потрібно завантажити.## Кілька форматів приймають власні додаткові аргументи, наприклад цільову# платформу RKNN. Їх описано на сторінці кожного формату.
CLI
libreyolo export model=LibreRFDETRs.pt format=onnx imgsz=512libreyolo export model=LibreRFDETRs.pt format=tensorrt imgsz=512 half=True
Використати експортований файл
from libreyolo import LibreYOLO # Фабрика виконує маршрутизацію за суфіксом файлу, тому експортований артефакт# завантажується як будь-яка контрольна точка й повертає той самий об'єкт Results.model = LibreYOLO("LibreRFDETRs.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)
Без LibreYOLO
import numpy as npimport onnxruntime as ort # Безпосередній запуск графа означає самостійну попередню та подальшу# обробку. Перевірте сигнатуру до підключення компонентів.session = ort.InferenceSession("LibreRFDETRs.onnx")name = session.get_inputs()[0].nameoutputs = session.run(None, {name: np.zeros((1, 3, 512, 512), dtype=np.float32)}) for meta, array in zip(session.get_outputs(), outputs):    print(meta.name, array.shape)

Контрольні точки

Усі опубліковані файли ваг для цього сімейства.

ФайлВхід (пікс.)Ліцензія ваг
Detection
LibreRFDETRl.pt704apache-2.0
LibreRFDETRm.pt576apache-2.0
LibreRFDETRn.pt384apache-2.0
LibreRFDETRs.pt512apache-2.0
Instance segmentation
LibreRFDETRn-seg.pt312apache-2.0
LibreRFDETRs-seg.pt384apache-2.0
LibreRFDETRm-seg.pt432apache-2.0
LibreRFDETRl-seg.pt504apache-2.0
LibreRFDETRx-seg.pt624apache-2.0
LibreRFDETRxx-seg.pt768apache-2.0
Pose
LibreRFDETRn-pose.ptapache-2.0
LibreRFDETRs-pose.ptapache-2.0
LibreRFDETRm-pose.ptapache-2.0
LibreRFDETRl-pose.ptapache-2.0
LibreRFDETRx-pose.pt576apache-2.0
Oriented boxes
LibreRFDETRn-obb.pt384cc-by-4.0
LibreRFDETRs-obb.pt512cc-by-4.0
LibreRFDETRm-obb.pt576cc-by-4.0
LibreRFDETRl-obb.pt704cc-by-4.0

Кожен наведений вище файл уже доступний у організації LibreYOLO і завантажується під час першого використання.

Ліцензування

Перевіряйте ліцензію в репозиторії Hugging Face конкретних ваг, які завантажуєте. Кожна контрольна точка в організації LibreYOLO має ліцензію, і вона не завжди однакова для всього сімейства. Цей репозиторій є авторитетним джерелом, а наведене нижче резюме описує умови на момент останньої перевірки сторінки.

Це опис відповідних ліцензій, а не юридична консультація. Якщо відповідь має комерційне значення, самостійно прочитайте ліцензії та зверніться по юридичну консультацію.

Оригінальна робота
RF-DETR, Roboflow
Ліцензія першоджерела
Apache-2.0
Джерело першоджерела
github.com/roboflow/rf-detr
Код LibreYOLO
MIT
Ваги
Apache-2.0, повторно опубліковано на huggingface.co/LibreYOLO
Тлумачення
Apache-2.0 is a permissive license, so these weights can be used in commercial and closed-source products. It asks you to keep its license text and attribution notices with any copy of the weights you redistribute, and it grants a patent license. It places no obligation on your own application code, and weights you train yourself on your own data are yours.

Цитування

@inproceedings{robinson2026rfdetr,
  title     = {RF-DETR: Real-Time Detection Transformer},
  author    = {Robinson, Isaac and Robicheaux, Peter and Popov, Matvei and Ramanan, Deva and Peri, Neehar},
  booktitle = {International Conference on Learning Representations (ICLR)},
  year      = {2026},
  url       = {https://arxiv.org/abs/2511.09554}
}

Скопійовано з блоку цитування авторів на сторінці github.com/roboflow/rf-detr#citation.

Перевірено з LibreYOLO v1.5.0. Таблиці підтримки, контрольні точки й результати бенчмарків на цій сторінці згенеровано з випущеної бібліотеки та опублікованих ваг, а не написано вручну.