RF-DETR
Un detection transformer che predice un insieme fisso di oggetti invece di una griglia densa, quindi non richiede NMS durante l'inferenza. LibreYOLO lo supporta per quattro task.
- Task
- detection, instance segmentation, pose, oriented boxes
- Dimensioni
- n, s, m, l for detection, pose and oriented boxes; n through xx for segmentation
- Installa
pip install "libreyolo[rfdetr]"- Livello di supporto
- Di punta, dalla v1.0.0. Le funzionalità vengono progettate e convalidate completamente su GPU prima per questo livello.
- Licenze
- Codice MIT, pesi Apache-2.0. Uso commerciale
Installazione
RF-DETR richiede un extra dedicato, che porta con sé transformers per il
backbone.
pip install "libreyolo[rfdetr]"Predizione
I pesi vengono scaricati da Hugging Face al primo utilizzo e restano nella cache locale.
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)libreyolo predict model=LibreRFDETRs.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=Truefrom libreyolo import LibreYOLO model = LibreYOLO("LibreRFDETRs.pt") # Qualsiasi sorgente accettata dalla libreria: file, cartella, URL,# indice della webcam, stream RTSP o una lista .streamsfor result in model.predict("clip.mp4", stream=True, save=True): print(len(result.boxes))L'oggetto Results restituito è quello che restituisce ogni famiglia, quindi
passare a un rilevatore diverso è una modifica di una riga. conf e max_det
filtrano la selezione delle query; non c'è nessun passaggio di NMS da regolare.
Vedi predizione per sorgenti, streaming e gestione dei
risultati.
Varianti
Quattro dimensioni, e quattro task che condividono una sola architettura: segmentazione, posa e box orientati riutilizzano il decoder di rilevamento con una testa diversa, quindi accettano gli stessi argomenti. Le dimensioni hanno un numero di parametri simile e differiscono soprattutto per la risoluzione di input.
| Checkpoint | Ingresso (px) | mAP 50-95 | Parametri (M) |
|---|---|---|---|
| LibreRFDETRn | 384 | 51.4 | 30.47 |
| LibreRFDETRs | 512 | 55.1 | 32.11 |
| LibreRFDETRm | 576 | 57.4 | 33.69 |
| LibreRFDETRl | 704 | 58.6 | 33.93 |
COCO val2017, 500 images. Misurato con il sistema di benchmark di LibreYOLO e pubblicato su Vision Analysis, dove vengono confrontate le latenze tra hardware e runtime e sono disponibili i record completi delle esecuzioni.
Addestramento
L'addestramento parte da un checkpoint pubblicato, per tutti e quattro i task.
RF-DETR elenca pretrained tra gli argomenti che il suo trainer nativo ignora,
quindi passare pretrained=False qui non ti dà un modello inizializzato a caso.
from libreyolo import LibreYOLO model = LibreYOLO("LibreRFDETRs.pt")model.train(data="my-dataset.yaml", epochs=50, imgsz=512, batch=8, lr0=1e-4)libreyolo train model=LibreRFDETRs.pt data=my-dataset.yaml \ epochs=50 imgsz=512 batch=8 lr0=1e-4from libreyolo import LibreYOLO model = LibreYOLO("LibreRFDETRs.pt")model.train(data="my-dataset.yaml", epochs=50, lora=True)libreyolo train model=LibreRFDETRs.pt data=my-dataset.yaml \ epochs=50 device=0,1 batch=-1Due argomenti contano più qui che su un rilevatore CNN. Tieni lr0 a 1e-4 o
sotto, perché i detection transformer divergono a learning rate che un modello
YOLO tollera. Lascia imgsz alla risoluzione nativa del checkpoint, a meno che
tu non abbia un motivo per cambiarla. L'input deve essere divisibile
esattamente per la dimensione delle patch del backbone moltiplicata per il
numero di finestre; LibreYOLO lo verifica prima che l'esecuzione parta e indica
le dimensioni valide più vicine.
Vedi addestramento per dataset, data augmentation, multi-GPU e logger.
Validazione
val() restituisce un dizionario di chiavi metrics/ che coprono precisione,
recall, mAP 50 e mAP 50-95, misurati su qualsiasi dataset nel formato su cui hai
addestrato.
from libreyolo import LibreYOLO model = LibreYOLO("LibreRFDETRs.pt") # val() restituisce un semplice dict, non un oggettometrics = model.val(data="my-dataset.yaml", imgsz=512) print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])print(metrics["metrics/precision"], metrics["metrics/recall"])libreyolo val model=LibreRFDETRs.pt data=my-dataset.yaml imgsz=512# Lo yaml di COCO incluso porta uno script di download integrato,# quindi serve un permesso esplicito a meno che il dataset non sia# già in locale.libreyolo val model=LibreRFDETRn.pt data=coco.yaml imgsz=384 \ allow_download_scripts=TrueEsportazione
| Task | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Detection | Detection to ONNX: supportato | Detection to TorchScript: supportato | Detection to ExecuTorch: supportato | Detection to TensorRT: supportato. Runtime parity coverage lives in tests/e2e/test_tensorrt.py. | Detection to OpenVINO: supportato. Runtime parity coverage lives in tests/e2e/test_openvino.py. | Detection to Paddle: non supportato | Detection to MNN: supportato | Detection to RKNN: non supportato | Detection to ncnn: non supportato | Detection to TFLite: non supportato | Detection to CoreML: supportato. Conversion is available, but runtime parity requires a macOS runner. | Detection to Core AI: supportato |
| Instance segmentation | Instance segmentation to ONNX: supportato | Instance segmentation to TorchScript: supportato | Instance segmentation to ExecuTorch: supportato | Instance segmentation to TensorRT: supportato. A published Apache-2.0 trained segmentation checkpoint exports and reloads, but public top-k class membership changes. | Instance segmentation to OpenVINO: supportato. After Hungarian query alignment, the converted-runtime element match rate is 69.0%, below the validation bar. | Instance segmentation to Paddle: non supportato | Instance segmentation to MNN: non supportato | Instance segmentation to RKNN: non supportato | Instance segmentation to ncnn: non supportato | Instance segmentation to TFLite: non supportato | Instance segmentation to CoreML: non supportato | Instance segmentation to Core AI: non supportato |
| Pose | Pose to ONNX: supportato | Pose to TorchScript: supportato | Pose to ExecuTorch: supportato | Pose to TensorRT: supportato. 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: supportato. After Hungarian query alignment, the converted-runtime element match rate is 72.75%, below the validation bar. | Pose to Paddle: non supportato | Pose to MNN: non supportato | Pose to RKNN: non supportato | Pose to ncnn: non supportato | Pose to TFLite: non supportato | Pose to CoreML: non supportato | Pose to Core AI: non supportato |
| Oriented boxes | Oriented boxes to ONNX: supportato | Oriented boxes to TorchScript: supportato | Oriented boxes to ExecuTorch: supportato | Oriented boxes to TensorRT: supportato. A deterministic synthetic OBB fixture exports and reloads, but public top-k class membership changes. | Oriented boxes to OpenVINO: supportato. After Hungarian query alignment, the converted-runtime element match rate is 91.25%, below the validation bar. | Oriented boxes to Paddle: non supportato | Oriented boxes to MNN: non supportato | Oriented boxes to RKNN: non supportato | Oriented boxes to ncnn: non supportato | Oriented boxes to TFLite: non supportato | Oriented boxes to CoreML: non supportato | Oriented boxes to Core AI: non supportato |
Un artefatto esportato si ricarica con LibreYOLO() in base al suffisso del
file, quindi un file .onnx o .engine si comporta come un checkpoint e
restituisce lo stesso Results. È supportato anche eseguire il grafo in un
runtime nudo, senza LibreYOLO installato, ma allora preprocessing e
postprocessing tocca scriverli a te.
from libreyolo import LibreYOLO model = LibreYOLO("LibreRFDETRs.pt")model.export(format="onnx", imgsz=512)model.export(format="tensorrt", imgsz=512, half=True) # Argomenti accettati per ogni formato:## format "onnx" | "torchscript" | "executorch" | "tensorrt"# | "openvino" | "paddle" | "mnn" | "rknn" | "ncnn"# | "tflite" | "coreml" | "coreai".# "engine" è un alias per tensorrt, "litert" per tflite.# imgsz int, oppure (altezza, larghezza). Di default la# risoluzione nativa del checkpoint.# batch int, default 1.# half bool, esporta in FP16. Default False.# int8 bool, esporta in INT8. Default False. Richiede `data`.# data percorso di uno YAML di dataset, usato per calibrare int8.# fraction float, quota di quel set di calibrazione da usare.# Default 1.0.# dynamic bool, assi dinamici. Default True.# simplify bool, esegue la semplificazione del grafo ONNX.# Default True.# opset int, opset ONNX. Scelto per famiglia se non indicato.# device str, dispositivo su cui tracciare. Di default quello# del modello.# output_path str, di default un nome derivato dal checkpoint.# verbose bool, default False.# allow_download_scripts bool, default False. Consente il Python# integrato in uno YAML di dataset che va scaricato.## Qualche formato accetta argomenti extra propri, come una piattaforma# target RKNN. Sono documentati nella pagina di ciascun formato.libreyolo export model=LibreRFDETRs.pt format=onnx imgsz=512libreyolo export model=LibreRFDETRs.pt format=tensorrt imgsz=512 half=Truefrom libreyolo import LibreYOLO # La factory smista in base al suffisso del file, quindi un artefatto# esportato si carica come qualsiasi checkpoint e restituisce lo stesso# oggetto Results.model = LibreYOLO("LibreRFDETRs.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)import numpy as npimport onnxruntime as ort # Eseguire il grafo direttamente significa scrivere da sé il# preprocessing e il postprocessing. Ispeziona la firma prima di# collegare qualsiasi cosa.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)Checkpoint
Tutti i file di pesi pubblicati per questa famiglia.
| File | Ingresso (px) | Licenza dei pesi |
|---|---|---|
| Detection | ||
| LibreRFDETRl.pt | 704 | apache-2.0 |
| LibreRFDETRm.pt | 576 | apache-2.0 |
| LibreRFDETRn.pt | 384 | apache-2.0 |
| LibreRFDETRs.pt | 512 | apache-2.0 |
| Instance segmentation | ||
| LibreRFDETRn-seg.pt | 312 | apache-2.0 |
| LibreRFDETRs-seg.pt | 384 | apache-2.0 |
| LibreRFDETRm-seg.pt | 432 | apache-2.0 |
| LibreRFDETRl-seg.pt | 504 | apache-2.0 |
| LibreRFDETRx-seg.pt | 624 | apache-2.0 |
| LibreRFDETRxx-seg.pt | 768 | apache-2.0 |
| Pose | ||
| LibreRFDETRn-pose.pt | apache-2.0 | |
| LibreRFDETRs-pose.pt | apache-2.0 | |
| LibreRFDETRm-pose.pt | apache-2.0 | |
| LibreRFDETRl-pose.pt | apache-2.0 | |
| LibreRFDETRx-pose.pt | 576 | apache-2.0 |
| Oriented boxes | ||
| LibreRFDETRn-obb.pt | 384 | cc-by-4.0 |
| LibreRFDETRs-obb.pt | 512 | cc-by-4.0 |
| LibreRFDETRm-obb.pt | 576 | cc-by-4.0 |
| LibreRFDETRl-obb.pt | 704 | cc-by-4.0 |
Oggi tutti i file elencati sopra sono presenti nell<link>organizzazione LibreYOLO</link> e vengono scaricati al primo utilizzo.
Licenze
Controlla la licenza nel repository Hugging Face degli specifici pesi che scarichi. Ogni checkpoint nell<link>organizzazione LibreYOLO</link> ne include una e non è sempre la stessa per tutta la famiglia. Quel repository è la fonte autorevole; il riepilogo seguente descrive le condizioni applicabili al momento dellultima verifica di questa pagina.
Questa è una descrizione delle licenze coinvolte, non una consulenza legale. Se la risposta è importante a fini commerciali, leggi personalmente le licenze e chiedi una consulenza indipendente.
- Lavoro originale
- RF-DETR, Roboflow
- Licenza upstream
- Apache-2.0
- Sorgente upstream
- github.com/roboflow/rf-detr
- Codice LibreYOLO
- MIT
- Pesi
- Apache-2.0, ripubblicati su huggingface.co/LibreYOLO
- Interpretazione
- 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.
Citazione
@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}
}Copiato dal blocco di citazione degli autori disponibile su github.com/roboflow/rf-detr#citation.