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.
pip install libreyoloFine-tuning adapter dengan lora=True menjadi pengecualian dan memerlukan komponen tambahan lora.
pip install "libreyolo[lora]"Prediksi
Bobot diunduh dari Hugging Face saat pertama kali digunakan dan disimpan dalam cache lokal.
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)libreyolo predict model=LibreRTDETRr18.pt save=True \ source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpgfrom 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))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 mencakupnyalibreyolo predict model=LibreRTDETRv2n-obb.pt source=aerial.png save=TrueObjek 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.
| Checkpoint | Input (piksel) | mAP 50-95 | Parameter (juta) |
|---|---|---|---|
| LibreRTDETRl | 640 | 55.8 | 32.93 |
| LibreRTDETRr101 | 640 | 56.8 | 76.56 |
| LibreRTDETRr18 | 640 | 49.7 | 20.18 |
| LibreRTDETRr34 | 640 | 52.2 | 31.44 |
| LibreRTDETRr50 | 640 | 55.9 | 42.89 |
| LibreRTDETRr50m | 640 | 53.8 | 36.59 |
| LibreRTDETRx | 640 | 57.9 | 67.37 |
| LibreRTDETRv2r101 | 640 | 56.8 | 76.56 |
| LibreRTDETRv2r18 | 640 | 50.8 | 20.18 |
| LibreRTDETRv2r34 | 640 | 53.2 | 31.44 |
| LibreRTDETRv2r50 | 640 | 55.7 | 42.89 |
| LibreRTDETRv2r50m | 640 | 54.8 | 36.59 |
| LibreRTDETRv4l | 640 | 57.8 | 31.24 |
| LibreRTDETRv4m | 640 | 56.5 | 19.59 |
| LibreRTDETRv4s | 640 | 52.8 | 10.32 |
| LibreRTDETRv4x | 640 | 60.0 | 62.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.
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)libreyolo train model=LibreRTDETRr18.pt data=coco128.yaml \ epochs=50 batch=4 lr0=1e-4# 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)libreyolo train model=LibreRTDETRr18.pt data=coco128.yaml \ epochs=50 device=0,1Learning 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.
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"])libreyolo val model=LibreRTDETRr18.pt data=coco128.yaml# 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=Truefrom 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
| Task | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Detection | Detection to ONNX: didukung | Detection to TorchScript: didukung | Detection to ExecuTorch: didukung | Detection to TensorRT: didukung | Detection to OpenVINO: didukung | Detection to Paddle: tidak didukung | Detection to MNN: didukung | Detection to RKNN: tidak didukung | Detection to ncnn: tidak didukung | Detection to TFLite: tidak didukung | Detection to CoreML: tidak didukung | Detection to Core AI: didukung |
| Oriented boxes | Oriented boxes to ONNX: didukung | Oriented boxes to TorchScript: didukung | Oriented boxes to ExecuTorch: didukung | Oriented boxes to TensorRT: didukung | Oriented boxes to OpenVINO: didukung | Oriented boxes to Paddle: tidak didukung | Oriented boxes to MNN: tidak didukung | Oriented boxes to RKNN: tidak didukung | Oriented boxes to ncnn: tidak didukung | Oriented boxes to TFLite: tidak didukung | Oriented boxes to CoreML: tidak didukung | Oriented 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.
# Memerlukan komponen tambahan onnx: pip install "libreyolo[onnx]"from libreyolo import LibreYOLO model = LibreYOLO("LibreRTDETRr18.pt")path = model.export(format="onnx")print(path)libreyolo export model=LibreRTDETRr18.pt format=onnx# 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=1024from 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.
| Berkas | Input (piksel) | Lisensi bobot |
|---|---|---|
| Detection | ||
| LibreRTDETRr34.pt | 640 | apache-2.0 |
| LibreRTDETRr18.pt | 640 | apache-2.0 |
| LibreRTDETRr50.pt | 640 | apache-2.0 |
| LibreRTDETRr50m.pt | 640 | apache-2.0 |
| LibreRTDETRr101.pt | 640 | apache-2.0 |
| LibreRTDETRl.pt | 640 | apache-2.0 |
| LibreRTDETRx.pt | 640 | apache-2.0 |
| LibreRTDETRv2r18.pt | 640 | apache-2.0 |
| LibreRTDETRv2r34.pt | 640 | apache-2.0 |
| LibreRTDETRv2r50m.pt | 640 | apache-2.0 |
| LibreRTDETRv2r50.pt | 640 | apache-2.0 |
| LibreRTDETRv2r101.pt | 640 | apache-2.0 |
| LibreRTDETRv4s.pt | 640 | apache-2.0 |
| LibreRTDETRv4m.pt | 640 | apache-2.0 |
| LibreRTDETRv4l.pt | 640 | apache-2.0 |
| LibreRTDETRv4x.pt | 640 | apache-2.0 |
| Oriented boxes | ||
| LibreRTDETRv2n-obb.pt | 1024 | apache-2.0 |
| LibreRTDETRv2s-obb.pt | 1024 | apache-2.0 |
| LibreRTDETRv2m-obb.pt | 1024 | apache-2.0 |
| LibreRTDETRv2l-obb.pt | 1024 | apache-2.0 |
| LibreRTDETRv2x-obb.pt | 1024 | apache-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
- Sumber upstream
- github.com/lyuwenyu/RT-DETR
- 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.