RT-DETR

Detection transformer yang dibuat untuk inferensi real-time: model ini mendekode sekumpulan query tetap, bukan grid padat, sehingga tidak menjalankan NMS. LibreYOLO menyediakan tiga versinya, yang dibedakan berdasarkan checkpoint yang dimuat, dan versi 2 juga melayani kotak berorientasi.

Task
detection, oriented boxes
Ukuran
rtdetr: r18, r34, r50, r50m, r101, l, x at 640 px; rtdetrv2: r18, r34, r50, r50m, r101 for detection at 640 px, n, s, m, l, x for oriented boxes at 1024 px; rtdetrv4: s, m, l, x at 640 px
Instalasi
pip install "libreyolo[rtdetr]"
Tier dukungan
Inti, sejak v1.1.0. Detektor inti yang dapat dilatih: fitur menyusul tier unggulan dalam gelombang rilis yang sama.
Proyek upstream
RT-DETR, RT-DETRv2 and RT-DETRv4 oleh Baidu (versions 1 and 2), Peking University and Tsinghua University (version 4), Apache-2.0. Makalah, sumber
Lisensi
Kode Apache-2.0, bobot Apache-2.0. Penggunaan komersial

Instalasi

RT-DETR tidak memerlukan komponen tambahan opsional. Semua impornya tersedia dalam instalasi dasar, dan komponen tambahan rtdetr adalah nama stabil yang tidak menambahkan apa pun.

bash
pip install libreyolo

Fine-tuning adapter dengan lora=True menjadi pengecualian dan memerlukan komponen tambahan lora.

bash
pip install "libreyolo[lora]"

Prediksi

Bobot diunduh dari Hugging Face saat pertama kali digunakan dan disimpan dalam cache lokal.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreRTDETRr18.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes:    print(box.cls, box.conf, box.xyxy)
CLI
libreyolo predict model=LibreRTDETRr18.pt save=True \  source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg
Video
from libreyolo import LibreYOLO # Versi menjadi bagian dari nama berkas, dan factory merutekan berdasarkan# checkpoint, sehingga ketiganya dimuat dengan cara yang sama.model = LibreYOLO("LibreRTDETRv4s.pt") # Sumber apa pun yang diterima library: berkas, folder, URL, indeks webcam,# stream RTSP, atau daftar .streamsfor result in model.predict("clip.mp4", stream=True, save=True):    print(len(result.boxes))
Kotak berorientasi
from libreyolo import LibreYOLO # Khusus versi 2. Sufiks -obb memilih task, dan checkpoint dikenali sebagai# berorientasi dari tensor miliknya, sehingga argumen task tidak diperlukan.# Bobot ini memakai DOTA v1.0, 15 kelas udara pada 1024 px.model = LibreYOLO("LibreRTDETRv2n-obb.pt")result = model("aerial.png", save=True) obb = result.obbprint(obb.xywhr)     # (N, 5): cx, cy, w, h, radianprint(obb.xyxyxyxy)  # baris yang sama sebagai empat titik sudutprint(result.boxes.xyxy)  # kotak axis-aligned yang mencakupnya
Kotak berorientasi, CLI
libreyolo predict model=LibreRTDETRv2n-obb.pt source=aerial.png save=True

Objek Results yang dikembalikan sama dengan yang dikembalikan setiap family, jadi mengganti detektor hanya memerlukan perubahan satu baris. conf dan max_det memfilter dekode top-k pada query dan kelas; tidak ada tahap NMS yang perlu disetel, dan iou diterima tetapi tidak digunakan. Checkpoint berorientasi mengisi result.obb secara native dan juga mengisi result.boxes dengan persegi panjang axis-aligned yang mencakupnya. Lihat prediksi untuk sumber, streaming, dan penanganan hasil.

Varian

Tiga versi dengan dua task di antaranya, dan kode ukurannya tidak membentuk satu seri. Versi 1 menamai ukuran berdasarkan backbone, yaitu ResNet atau HGNetv2. Versi 2 hanya menggunakan kembali nama ResNet: versi 1 sudah menyediakan dua ukuran HGNetv2, dan hasil versi 2 pada ukuran tersebut cukup mirip sehingga LibreYOLO tidak memublikasikan bobot duplikat untuknya. Versi 4 memakai seri huruf biasa, yang bertabrakan dengan nama HGNetv2 versi 1, sehingga kode ukuran saja tidak mengidentifikasi model. Versinya ditulis dalam nama berkas checkpoint.

CheckpointInput (piksel)mAP 50-95Parameter (juta)
LibreRTDETRl64055.832.93
LibreRTDETRr10164056.876.56
LibreRTDETRr1864049.720.18
LibreRTDETRr3464052.231.44
LibreRTDETRr5064055.942.89
LibreRTDETRr50m64053.836.59
LibreRTDETRx64057.967.37
LibreRTDETRv2r10164056.876.56
LibreRTDETRv2r1864050.820.18
LibreRTDETRv2r3464053.231.44
LibreRTDETRv2r5064055.742.89
LibreRTDETRv2r50m64054.836.59
LibreRTDETRv4l64057.831.24
LibreRTDETRv4m64056.519.59
LibreRTDETRv4s64052.810.32
LibreRTDETRv4x64060.062.62

COCO val2017, 500 images. Diukur oleh perangkat benchmark LibreYOLO dan dipublikasikan di Vision Analysis, tempat latensi pada berbagai hardware dan runtime dibandingkan serta rekaman lengkap setiap pengujian tersedia.

Versi 2 mempertahankan arsitektur dan tata letak state dict versi 1 serta mengubah cara deformable attention mengambil sampel. Karena itu keduanya dibedakan berdasarkan metadata dalam checkpoint, bukan berdasarkan bentuk. Versi 4 berasal dari garis keturunan berbeda: versi ini menggunakan kembali arsitektur dan pelatih D-FINE, sedangkan bobotnya berasal dari distilasi model teacher vision foundation DINOv3 menjadi student HGNetv2. Di LibreYOLO, LibreRTDETRv4 adalah subclass LibreDFINE dengan head mask dinonaktifkan secara tetap, sehingga hanya mendukung deteksi.

Kotak berorientasi pada versi 2

Versi 2 adalah satu-satunya versi yang memiliki task kedua. Task yang didukung adalah detect dan obb, dan keduanya tidak memakai graph atau seri ukuran yang sama. Deteksi memakai ukuran ResNet pada 640 px; deteksi berorientasi memakai seri HGNetv2 n, s, m, l, dan x pada 1024 px, sedangkan ukuran input ditentukan per task, bukan per family. Checkpoint dikenali sebagai berorientasi dari tensor miliknya sendiri melalui head kotak lima koordinat dan parameter sampling versi 2, sehingga bobot -obb dimuat ke graph berorientasi tanpa argumen task. Ketidakcocokan di antara keduanya menghasilkan error tegas, bukan reinterpretasi tanpa pemberitahuan.

Berkas yang dipublikasikan adalah LibreRTDETRv2n-obb.pt hingga LibreRTDETRv2x-obb.pt. Semuanya merupakan checkpoint single-scale DOTA v1.0 resmi yang dikonversi ke format LibreYOLO, dengan 15 kelas udara dari pesawat dan kapal hingga pelabuhan dan helikopter, sedangkan nama kelasnya disimpan dalam checkpoint. Tidak seperti sisi deteksi, task berorientasi hanya mendukung inferensi: prediksi, validasi, dan ekspor berfungsi, sedangkan train() pada model berorientasi memunculkan error. Pelacakan dan augmentasi saat pengujian juga tidak mendukung kotak berorientasi. Deteksi berorientasi membahas task, format label, dan metriknya.

Pelatihan

Pelatihan dimulai dari checkpoint yang dipublikasikan. pretrained diterima lalu dibuang pada ketiga versi, sehingga pretrained=False tidak menghasilkan model yang diinisialisasi secara acak. Seluruh bagian ini membahas deteksi: task berorientasi versi 2 hanya mendukung inferensi dan tidak ada jalur transfer dari bobot deteksi karena keduanya memakai backbone yang berbeda.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreRTDETRr18.pt") # coco128.yaml mengunduh sampel 128 gambar saat pertama kali digunakan. Arahkan `data`# ke YAML dataset sendiri untuk proses yang sebenarnya.model.train(data="coco128.yaml", epochs=50, batch=4, lr0=1e-4)
CLI
libreyolo train model=LibreRTDETRr18.pt data=coco128.yaml \  epochs=50 batch=4 lr0=1e-4
LoRA
# Memerlukan komponen tambahan lora: pip install "libreyolo[lora]"from libreyolo import LibreYOLO model = LibreYOLO("LibreRTDETRr18.pt")model.train(data="coco128.yaml", epochs=50, lora=True)
Multi-GPU
libreyolo train model=LibreRTDETRr18.pt data=coco128.yaml \  epochs=50 device=0,1

Learning rate adalah argumen yang harus diatur dengan tepat, dan setiap versi memiliki nilai default sendiri, bukan nilai umum library. Signature train() Python membacanya dari konfigurasi pelatihan versi tersebut, dan CLI menetapkan nilai yang sama saat lr0 tidak diberikan. Versi 1 dan 2 juga menerima lr_backbone dengan default seperdua puluh dari lr0, mengikuti resep asli; versi 4 berjalan melalui pelatih D-FINE, yang menskalakan kelompok parameter backbone dengan backbone_lr_mult.

Biarkan imgsz pada ukuran native checkpoint kecuali ada alasan untuk mengubahnya. Validasi dan prediksi pada ukuran lain berfungsi, dengan satu efek sisa: ukuran persegi panjang yang jumlah tokennya cocok dengan ukuran native tetap menggunakan embedding yang dibuat untuk rasio aspek yang salah.

Lihat pelatihan untuk dataset, augmentasi, multi-GPU, dan logger.

Validasi

val() mengembalikan dictionary dengan key metrics/ yang mencakup presisi, recall, mAP 50, dan mAP 50-95, yang diukur terhadap dataset apa pun dalam format yang digunakan untuk pelatihan.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreRTDETRr18.pt") # val() mengembalikan dict biasa, bukan objekmetrics = model.val(data="coco128.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])print(metrics["metrics/precision"], metrics["metrics/recall"])
CLI
libreyolo val model=LibreRTDETRr18.pt data=coco128.yaml
Dibandingkan dengan COCO
# coco-val-only.yaml mengambil 5000 gambar val2017 dan melewati set# pelatihan. Berkas ini menyertakan skrip unduhan tertanam, sehingga memerlukan# izin eksplisit kecuali dataset sudah tersedia secara lokal.libreyolo val model=LibreRTDETRr18.pt data=coco-val-only.yaml \  allow_download_scripts=True
Kotak berorientasi
from libreyolo import LibreYOLO # Validasi berorientasi mencocokkan dengan IoU berotasi, sehingga prediksi di# tempat yang benar tetapi dengan sudut yang salah dianggap luput.model = LibreYOLO("LibreRTDETRv2n-obb.pt")metrics = model.val(data="my-obb-dataset.yaml") print(metrics["metrics/mAP50-95(OBB)"])print(metrics["metrics/mAP50(OBB)"])

Baris pada tabel benchmark di atas berasal dari harness benchmark LibreYOLO; catatan di bawah tabel tersebut menyebutkan dataset yang menghasilkannya dan menautkan catatan proses.

Validasi berorientasi berjalan melalui pemanggilan yang sama dan melaporkan key yang sama, ditambah empat pengulangan dengan sufiks (OBB). Pencocokan memakai IoU berotasi, bukan IoU persegi panjang yang mencakupnya, sehingga error sudut dianggap luput. augment=True ditolak pada task ini.

Ekspor

TaskONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
DetectionDetection to ONNX: didukungDetection to TorchScript: didukungDetection to ExecuTorch: didukungDetection to TensorRT: didukungDetection to OpenVINO: didukungDetection to Paddle: tidak didukungDetection to MNN: didukungDetection to RKNN: tidak didukungDetection to ncnn: tidak didukungDetection to TFLite: tidak didukungDetection to CoreML: tidak didukungDetection to Core AI: didukung
Oriented boxesOriented boxes to ONNX: didukungOriented boxes to TorchScript: didukungOriented boxes to ExecuTorch: didukungOriented boxes to TensorRT: didukungOriented boxes to OpenVINO: didukungOriented boxes to Paddle: tidak didukungOriented boxes to MNN: tidak didukungOriented boxes to RKNN: tidak didukungOriented boxes to ncnn: tidak didukungOriented boxes to TFLite: tidak didukungOriented boxes to CoreML: tidak didukungOriented boxes to Core AI: tidak didukung

Matriks ini mencakup seluruh garis keturunan dalam satu halaman: jika ketiga versi berbeda tentang suatu format, sel menampilkan dukungan terlemah dari ketiganya, sehingga tidak ada kemampuan berlebih yang dijanjikan untuk versi mana pun yang dimuat. Baris berorientasi hanya milik versi 2. ONNX dan TorchScript telah divalidasi pada task tersebut dengan FP32, batch 1, dan canvas tetap 1024 kali 1024; OpenVINO, TensorRT, dan ExecuTorch dapat dikonversi serta dimuat ulang, tetapi belum mencapai kesetaraan output mentah pada seluruh kumpulan query. Kotak teratas cocok hingga sebagian kecil piksel, sedangkan bagian akhirnya menyimpang.

Artefak hasil ekspor dimuat kembali melalui LibreYOLO() berdasarkan sufiks berkasnya, sehingga berkas .onnx atau .engine berperilaku seperti checkpoint dan mengembalikan Results yang sama.

Python
# Memerlukan komponen tambahan onnx: pip install "libreyolo[onnx]"from libreyolo import LibreYOLO model = LibreYOLO("LibreRTDETRr18.pt")path = model.export(format="onnx")print(path)
CLI
libreyolo export model=LibreRTDETRr18.pt format=onnx
Kotak berorientasi
# ONNX dan TorchScript adalah target tervalidasi untuk task berorientasi,# pada FP32, batch 1, dengan canvas tetap 1024 kali 1024.libreyolo export model=LibreRTDETRv2n-obb.pt format=onnx imgsz=1024libreyolo export model=LibreRTDETRv2n-obb.pt format=torchscript imgsz=1024
Gunakan berkas hasil ekspor
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Factory merutekan berdasarkan sufiks berkas, sehingga artefak hasil ekspor# dimuat seperti checkpoint lain dan mengembalikan objek Results yang sama.model = LibreYOLO("LibreRTDETRr18.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)

Checkpoint

Setiap berkas bobot yang dipublikasikan untuk family ini.

BerkasInput (piksel)Lisensi bobot
Detection
LibreRTDETRr34.pt640apache-2.0
LibreRTDETRr18.pt640apache-2.0
LibreRTDETRr50.pt640apache-2.0
LibreRTDETRr50m.pt640apache-2.0
LibreRTDETRr101.pt640apache-2.0
LibreRTDETRl.pt640apache-2.0
LibreRTDETRx.pt640apache-2.0
LibreRTDETRv2r18.pt640apache-2.0
LibreRTDETRv2r34.pt640apache-2.0
LibreRTDETRv2r50m.pt640apache-2.0
LibreRTDETRv2r50.pt640apache-2.0
LibreRTDETRv2r101.pt640apache-2.0
LibreRTDETRv4s.pt640apache-2.0
LibreRTDETRv4m.pt640apache-2.0
LibreRTDETRv4l.pt640apache-2.0
LibreRTDETRv4x.pt640apache-2.0
Oriented boxes
LibreRTDETRv2n-obb.pt1024apache-2.0
LibreRTDETRv2s-obb.pt1024apache-2.0
LibreRTDETRv2m-obb.pt1024apache-2.0
LibreRTDETRv2l-obb.pt1024apache-2.0
LibreRTDETRv2x-obb.pt1024apache-2.0

Setiap berkas di atas saat ini tersedia di organisasi LibreYOLO dan diunduh saat pertama kali digunakan.

Nama berkas memuat versi, lalu ukuran, kemudian task. Bobot deteksi adalah LibreRTDETR<size>.pt, LibreRTDETRv2<size>.pt, dan LibreRTDETRv4<size>.pt, semuanya pada 640 px. Bobot berorientasi hanya tersedia untuk versi 2 dan menambahkan sufiks task, mulai LibreRTDETRv2n-obb.pt hingga LibreRTDETRv2x-obb.pt, semuanya pada 1024 px dan dilatih pada DOTA v1.0, bukan COCO.

Lisensi

Periksa lisensi di repositori Hugging Face untuk bobot tertentu yang diunduh. Setiap checkpoint di organisasi LibreYOLO memiliki lisensi, dan lisensinya tidak selalu sama dalam satu family. Repositori tersebut adalah sumber resmi. Ringkasan di bawah menjelaskan ketentuan yang berlaku saat halaman ini terakhir diverifikasi.

Ini adalah deskripsi lisensi yang terlibat, bukan nasihat hukum. Jika jawabannya penting secara komersial, baca sendiri lisensinya dan mintalah nasihat dari penasihat hukum Anda.

Karya asli
RT-DETR, RT-DETRv2 and RT-DETRv4, Baidu (versions 1 and 2), Peking University and Tsinghua University (version 4)
Lisensi upstream
Apache-2.0
Kode LibreYOLO
MIT
Bobot
Apache-2.0, dipublikasikan ulang di huggingface.co/LibreYOLO
Interpretasi
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. All three versions carry it, across two repositories and three papers: RT-DETR and RT-DETRv2 at github.com/lyuwenyu/RT-DETR, and RT-DETRv4 at github.com/RT-DETRs/RT-DETRv4, which is cited separately (arXiv 2510.25257). RT-DETRv4 distills from a DINOv3 teacher while training only; the released student weights hold no DINOv3 parameters, and the tensors that fed the teacher are dropped when a checkpoint is converted, so Meta's DINOv3 license does not reach them.

Sitasi

@misc{lv2023detrs,
      title={DETRs Beat YOLOs on Real-time Object Detection},
      author={Yian Zhao and Wenyu Lv and Shangliang Xu and Jinman Wei and Guanzhong Wang and Qingqing Dang and Yi Liu and Jie Chen},
      year={2023},
      eprint={2304.08069},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

@misc{lv2024rtdetrv2improvedbaselinebagoffreebies,
      title={RT-DETRv2: Improved Baseline with Bag-of-Freebies for Real-Time Detection Transformer}, 
      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},
      url={https://arxiv.org/abs/2407.17140}, 
}

Disalin dari blok sitasi penulis di github.com/lyuwenyu/RT-DETR#citation.

Block di atas adalah yang dipublikasikan penulis untuk deteksi versi 1 dan 2. Bobot berorientasi versi 2 memiliki upstream ketiga, yaitu repositori RiO-DETR berlisensi Apache-2.0 di github.com/RicePasteM/RiO-DETR, yang menjadi sumber checkpoint DOTA; kutip proyek tersebut jika menggunakannya. Versi 4 adalah makalah terpisah dari kelompok berbeda dan memiliki block sitasi sendiri di github.com/RT-DETRs/RT-DETRv4; kutip makalah itu jika menggunakan checkpoint versi 4.

Diverifikasi dengan LibreYOLO v1.5.0. Tabel dukungan, checkpoint, dan angka benchmark di halaman ini dihasilkan dari library yang telah dirilis dan bobot yang dipublikasikan, bukan ditulis manual.