RF-DETR

Un transformer de detección que predice un conjunto fijo de objetos en lugar de una rejilla densa, por lo que no necesita NMS en inferencia. LibreYOLO lo soporta para cuatro tareas.

Tareas
detection, instance segmentation, pose, oriented boxes
Tamaños
n, s, m, l for detection, pose and oriented boxes; n through xx for segmentation
Instalación
pip install "libreyolo[rfdetr]"
Nivel de compatibilidad
Emblemático, desde v1.0.0. Las funciones se diseñan y validan por completo en GPU primero aquí.
Proyecto original
RF-DETR de Roboflow, Apache-2.0. Artículo, fuente
Licencias
Código MIT, pesos Apache-2.0. Uso comercial
LibreRFDETRs, detección en video a 512 px.

Instalación

RF-DETR necesita su propio extra, que instala transformers para el backbone.

bash
pip install "libreyolo[rfdetr]"

Predicción

Los pesos se descargan de Hugging Face en el primer uso y se guardan en la caché local.

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
Vídeo
from libreyolo import LibreYOLO model = LibreYOLO("LibreRFDETRs.pt") # Cualquier fuente que acepta la biblioteca: archivo, carpeta, URL,# índice de webcam, stream RTSP o una lista .streamsfor result in model.predict("clip.mp4", stream=True, save=True):    print(len(result.boxes))

El objeto Results devuelto es el mismo que devuelven todas las familias, así que cambiar a otro detector es un cambio de una línea. conf y max_det filtran la selección de queries; no hay un paso de NMS que ajustar. Consulta predicción para fuentes, streaming y manejo de resultados.

Variantes

Cuatro tamaños, y cuatro tareas que comparten una misma arquitectura: la segmentación, la pose y las cajas orientadas reutilizan el decoder de detección con una cabeza distinta, así que aceptan los mismos argumentos. Los tamaños tienen un número de parámetros similar y se diferencian sobre todo en la resolución de entrada.

CheckpointEntrada (px)mAP 50-95Parámetros (M)
LibreRFDETRn38451.430.47
LibreRFDETRs51255.132.11
LibreRFDETRm57657.433.69
LibreRFDETRl70458.633.93

COCO val2017, 500 images. Medido con el sistema de benchmarks de LibreYOLO y publicado en Vision Analysis, donde se comparan la latencia entre distintos hardwares y runtimes y se conservan los registros completos de las ejecuciones.

Entrenamiento

El entrenamiento parte de un checkpoint publicado, para las cuatro tareas. RF-DETR incluye pretrained entre los argumentos que su trainer nativo ignora, así que pasar pretrained=False no te da aquí un modelo inicializado aleatoriamente.

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)
Multi-GPU
libreyolo train model=LibreRFDETRs.pt data=my-dataset.yaml \  epochs=50 device=0,1 batch=-1

Dos argumentos importan aquí más que en un detector CNN. Mantén lr0 en 1e-4 o por debajo, porque los detectores transformer divergen con learning rates que un modelo YOLO tolera. Deja imgsz en la resolución nativa del checkpoint salvo que tengas un motivo para cambiarla. La entrada debe ser divisible exactamente por el tamaño de patch del backbone multiplicado por el número de ventanas; LibreYOLO lo comprueba antes de empezar la ejecución e indica los tamaños válidos más cercanos.

Consulta entrenamiento para datasets, aumento de datos (data augmentation), multi-GPU y loggers.

Validación

val() devuelve un diccionario de claves metrics/ que cubren precisión, recall, mAP 50 y mAP 50-95, medidas contra cualquier dataset en el formato con el que entrenaste.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreRFDETRs.pt") # val() devuelve un dict plano, no un objetometrics = 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
Contra COCO
# El yaml de COCO incluido lleva un script de descarga embebido, así# que necesita permiso explícito salvo que el dataset ya esté en local.libreyolo val model=LibreRFDETRn.pt data=coco.yaml imgsz=384 \  allow_download_scripts=True

Exportación

TareaONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
DetectionDetection to ONNX: compatibleDetection to TorchScript: compatibleDetection to ExecuTorch: compatibleDetection to TensorRT: compatible. Runtime parity coverage lives in tests/e2e/test_tensorrt.py.Detection to OpenVINO: compatible. Runtime parity coverage lives in tests/e2e/test_openvino.py.Detection to Paddle: no compatibleDetection to MNN: compatibleDetection to RKNN: no compatibleDetection to ncnn: no compatibleDetection to TFLite: no compatibleDetection to CoreML: compatible. Conversion is available, but runtime parity requires a macOS runner.Detection to Core AI: compatible
Instance segmentationInstance segmentation to ONNX: compatibleInstance segmentation to TorchScript: compatibleInstance segmentation to ExecuTorch: compatibleInstance segmentation to TensorRT: compatible. A published Apache-2.0 trained segmentation checkpoint exports and reloads, but public top-k class membership changes.Instance segmentation to OpenVINO: compatible. After Hungarian query alignment, the converted-runtime element match rate is 69.0%, below the validation bar.Instance segmentation to Paddle: no compatibleInstance segmentation to MNN: no compatibleInstance segmentation to RKNN: no compatibleInstance segmentation to ncnn: no compatibleInstance segmentation to TFLite: no compatibleInstance segmentation to CoreML: no compatibleInstance segmentation to Core AI: no compatible
PosePose to ONNX: compatiblePose to TorchScript: compatiblePose to ExecuTorch: compatiblePose to TensorRT: compatible. 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: compatible. After Hungarian query alignment, the converted-runtime element match rate is 72.75%, below the validation bar.Pose to Paddle: no compatiblePose to MNN: no compatiblePose to RKNN: no compatiblePose to ncnn: no compatiblePose to TFLite: no compatiblePose to CoreML: no compatiblePose to Core AI: no compatible
Oriented boxesOriented boxes to ONNX: compatibleOriented boxes to TorchScript: compatibleOriented boxes to ExecuTorch: compatibleOriented boxes to TensorRT: compatible. A deterministic synthetic OBB fixture exports and reloads, but public top-k class membership changes.Oriented boxes to OpenVINO: compatible. After Hungarian query alignment, the converted-runtime element match rate is 91.25%, below the validation bar.Oriented boxes to Paddle: no compatibleOriented boxes to MNN: no compatibleOriented boxes to RKNN: no compatibleOriented boxes to ncnn: no compatibleOriented boxes to TFLite: no compatibleOriented boxes to CoreML: no compatibleOriented boxes to Core AI: no compatible

Un artefacto exportado se vuelve a cargar con LibreYOLO() según su extensión de archivo, así que un archivo .onnx o .engine se comporta como un checkpoint y devuelve el mismo Results. Ejecutar el grafo en un runtime pelado, sin LibreYOLO instalado, también está soportado, pero entonces el preprocesado y el postprocesado corren de tu cuenta.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreRFDETRs.pt")model.export(format="onnx", imgsz=512)model.export(format="tensorrt", imgsz=512, half=True) # Argumentos aceptados para todos los formatos:##   format    "onnx" | "torchscript" | "executorch" | "tensorrt"#             | "openvino" | "paddle" | "mnn" | "rknn" | "ncnn"#             | "tflite" | "coreml" | "coreai".#             "engine" es un alias de tensorrt, "litert" de tflite.#   imgsz     int, o (alto, ancho). Por defecto, la resolución nativa#             del checkpoint.#   batch     int, por defecto 1.#   half      bool, exporta en FP16. Por defecto False.#   int8      bool, exporta en INT8. Por defecto False. Necesita `data`.#   data      ruta a un YAML de dataset, usado para calibrar int8.#   fraction  float, fracción del conjunto de calibración a usar.#             Por defecto 1.0.#   dynamic   bool, ejes dinámicos. Por defecto True.#   simplify  bool, ejecuta la simplificación del grafo ONNX.#             Por defecto True.#   opset     int, opset de ONNX. Se elige por familia si no se indica.#   device    str, dispositivo en el que trazar. Por defecto, el del#             modelo.#   output_path  str, por defecto un nombre derivado del checkpoint.#   verbose   bool, por defecto False.#   allow_download_scripts  bool, por defecto False. Permite Python#             embebido en un YAML de dataset que haya que descargar.## Algunos formatos aceptan argumentos extra propios, como una# plataforma objetivo de RKNN. Están documentados en la página de# cada formato.
CLI
libreyolo export model=LibreRFDETRs.pt format=onnx imgsz=512libreyolo export model=LibreRFDETRs.pt format=tensorrt imgsz=512 half=True
Usar el archivo exportado
from libreyolo import LibreYOLO # La factoría enruta según la extensión del archivo, así que un# artefacto exportado se carga como cualquier checkpoint y devuelve# el mismo objeto Results.model = LibreYOLO("LibreRFDETRs.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)
Sin LibreYOLO
import numpy as npimport onnxruntime as ort # Ejecutar el grafo directamente implica hacer tu propio preprocesado# y postprocesado. Inspecciona la firma antes de conectar nada.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)

Checkpoints

Todos los archivos de pesos publicados de esta familia.

ArchivoEntrada (px)Licencia de los pesos
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

Todos los archivos anteriores existen hoy en la organización de LibreYOLO y se descargan la primera vez que se usan.

Licencia

Comprueba la licencia en el repositorio de Hugging Face de los pesos concretos que descargues. Cada checkpoint de la organización de LibreYOLO incluye una, y no siempre es la misma en toda una familia. Ese repositorio es la fuente autorizada; el resumen siguiente describe qué se aplicaba cuando se verificó esta página por última vez.

Esta es una descripción de las licencias implicadas, no asesoramiento legal. Si la respuesta es importante a nivel comercial, lee las licencias y busca tu propio asesoramiento.

Trabajo original
RF-DETR, Roboflow
Licencia del proyecto original
Apache-2.0
Fuente del proyecto original
github.com/roboflow/rf-detr
Código de LibreYOLO
MIT
Pesos
Apache-2.0, republicados en huggingface.co/LibreYOLO
Interpretación
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.

Cita

@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}
}

Copiado del bloque de cita de los autores en github.com/roboflow/rf-detr#citation.

Verificado con LibreYOLO v1.5.0. Las tablas de compatibilidad, los checkpoints y las cifras de rendimiento de esta página se generan a partir de la biblioteca publicada y los pesos publicados; no se escriben a mano.