RF-DETR

Um transformer de detecção que prevê um conjunto fixo de objetos em vez de uma grade densa, então não precisa de NMS na inferência. O LibreYOLO o suporta para quatro tarefas.

Tarefas
detection, instance segmentation, pose, oriented boxes
Tamanhos
n, s, m, l for detection, pose and oriented boxes; n through xx for segmentation
Instalação
pip install "libreyolo[rfdetr]"
Nível de suporte
Carro-chefe, desde a v1.0.0. Os recursos são projetados e validados por completo em GPU aqui primeiro.
Origem
RF-DETR por Roboflow, Apache-2.0. Artigo, código-fonte
Licenças
Código MIT, pesos Apache-2.0. Uso comercial
LibreRFDETRs, detecção em vídeo a 512 px.

Instalação

O RF-DETR precisa do seu próprio extra, que instala o transformers para o backbone.

bash
pip install "libreyolo[rfdetr]"

Predição

Os pesos são baixados do Hugging Face no primeiro uso e ficam em cache localmente.

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") # Qualquer fonte que a biblioteca aceita: arquivo, pasta, URL, índice de# webcam, stream RTSP ou uma lista .streamsfor result in model.predict("clip.mp4", stream=True, save=True):    print(len(result.boxes))

O objeto Results retornado é o mesmo que todas as famílias retornam, então trocar por outro detector é uma mudança de uma linha. conf e max_det filtram a seleção de queries; não existe etapa de NMS para ajustar. Veja predição para fontes, streaming e tratamento de resultados.

Variantes

Quatro tamanhos, e quatro tarefas que compartilham uma mesma arquitetura: segmentação, pose e caixas orientadas reaproveitam o decoder de detecção com uma cabeça diferente, então aceitam os mesmos argumentos. Os tamanhos têm contagens de parâmetros parecidas e diferem principalmente na resolução 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 pelo conjunto de testes de benchmark do LibreYOLO e publicado no Vision Analysis, onde a latência entre hardwares e runtimes é comparada e os registros completos das execuções ficam disponíveis.

Treinamento

O treinamento parte de um checkpoint publicado, para as quatro tarefas. O RF-DETR lista pretrained entre os argumentos que seu trainer nativo ignora, então passar pretrained=False não te dá aqui um 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

Dois argumentos importam mais aqui do que em um detector CNN. Mantenha lr0 em 1e-4 ou abaixo, já que detectores transformer divergem com learning rates que um modelo YOLO tolera. Deixe imgsz na resolução nativa do checkpoint, a menos que você tenha um motivo para mudar. A entrada precisa ser divisível exatamente pelo tamanho de patch do backbone vezes o número de janelas; o LibreYOLO verifica isso antes de a execução começar e indica os tamanhos válidos mais próximos.

Veja treinamento para datasets, data augmentation, multi-GPU e loggers.

Validação

val() retorna um dicionário de chaves metrics/ cobrindo precisão, recall, mAP 50 e mAP 50-95, medidas contra qualquer dataset no formato em que você treinou.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreRFDETRs.pt") # val() retorna um dict simples, não um 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 o COCO
# O yaml do COCO que vem junto carrega um script de download embutido,# então ele precisa de permissão explícita a menos que o dataset já# esteja local.libreyolo val model=LibreRFDETRn.pt data=coco.yaml imgsz=384 \  allow_download_scripts=True

Exportação

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

Um artefato exportado é recarregado pelo LibreYOLO() a partir do sufixo do arquivo, então um arquivo .onnx ou .engine se comporta como um checkpoint e devolve o mesmo Results. Rodar o grafo em um runtime pelado, sem o LibreYOLO instalado, também é suportado, mas aí o pré-processamento e o pós-processamento ficam por sua conta.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreRFDETRs.pt")model.export(format="onnx", imgsz=512)model.export(format="tensorrt", imgsz=512, half=True) # Argumentos aceitos por todos os formatos:##   format    "onnx" | "torchscript" | "executorch" | "tensorrt"#             | "openvino" | "paddle" | "mnn" | "rknn" | "ncnn"#             | "tflite" | "coreml" | "coreai".#             "engine" é um alias para tensorrt, e "litert" para tflite.#   imgsz     int, ou (altura, largura). Por padrão, a resolução nativa#             do checkpoint.#   batch     int, padrão 1.#   half      bool, exporta em FP16. Padrão False.#   int8      bool, exporta em INT8. Padrão False. Precisa de `data`.#   data      caminho para um YAML de dataset, usado para calibrar o int8.#   fraction  float, parcela desse conjunto de calibração a usar. Padrão 1.0.#   dynamic   bool, eixos dinâmicos. Padrão True.#   simplify  bool, roda a simplificação do grafo ONNX. Padrão True.#   opset     int, opset do ONNX. Escolhido por família quando não informado.#   device    str, dispositivo em que rastrear. Padrão: o do modelo.#   output_path  str, padrão é um nome derivado do checkpoint.#   verbose   bool, padrão False.#   allow_download_scripts  bool, padrão False. Permite Python embutido#             em um YAML de dataset que precise ser baixado.## Alguns formatos aceitam argumentos extras próprios, como uma# plataforma alvo de RKNN. Esses estão documentados na 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 o arquivo exportado
from libreyolo import LibreYOLO # A factory decide pelo sufixo do arquivo, então um artefato exportado# carrega como qualquer checkpoint e devolve o mesmo objeto Results.model = LibreYOLO("LibreRFDETRs.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)
Sem o LibreYOLO
import numpy as npimport onnxruntime as ort # Rodar o grafo diretamente significa fazer seu próprio pré-processamento# e pós-processamento. Inspecione a assinatura antes de ligar qualquer# coisa.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 os arquivos de pesos publicados desta família.

ArquivoEntrada (px)Licença dos 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 os arquivos acima existem hoje na organização LibreYOLO e são baixados no primeiro uso.

Licenciamento

Confira a licença no repositório do Hugging Face correspondente aos pesos que você baixar. Cada checkpoint na organização LibreYOLO tem uma licença, e ela nem sempre é a mesma em toda a família. Esse repositório é a fonte oficial. O resumo abaixo descreve o que se aplicava na última verificação desta página.

Esta é uma descrição das licenças envolvidas, não uma orientação jurídica. Se a resposta tiver importância comercial, leia as licenças e procure sua própria assessoria.

Trabalho original
RF-DETR, Roboflow
Licença original
Apache-2.0
Código-fonte original
github.com/roboflow/rf-detr
Código do LibreYOLO
MIT
Pesos
Apache-2.0, republicado em huggingface.co/LibreYOLO
Interpretação
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ção

@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 do bloco de citação dos autores em github.com/roboflow/rf-detr#citation.

Verificado com o LibreYOLO v1.5.0. As tabelas de suporte, os checkpoints e os números de benchmark desta página são gerados a partir da biblioteca lançada e dos pesos publicados, não escritos à mão.