RTMDet

RTMDet adalah detektor satu tahap yang memprediksi dari satu prior berbasis titik per lokasi grid, tanpa anchor, melalui head yang konvolusinya dipakai bersama pada berbagai level feature. LibreYOLO mendukungnya untuk deteksi dan segmentasi instance RTMDet-Ins.

Task
detection, instance segmentation
Ukuran
t, s, m, l, x at 640 px
Instalasi
pip install libreyolo
Tier dukungan
Didukung, sejak v. Model pendukung yang dapat dilatih: CI dijaga tetap lulus, fitur ditambahkan saat ada kesempatan.
Proyek upstream
RTMDet oleh OpenMMLab, Apache-2.0. Makalah, sumber
Lisensi
Kode Apache-2.0, bobot Apache-2.0. Penggunaan komersial

Instalasi

RTMDet tidak memerlukan komponen tambahan selain paket dasar.

bash
pip install libreyolo

Prediksi

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

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreRTMDets.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes:    print(box.cls, box.conf, box.xyxy)
CLI
libreyolo predict model=LibreRTMDets.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True
Segmentasi instance
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Sufiks -seg dalam nama berkas memilih head mask RTMDet-Ins,# sehingga argumen task tidak diperlukan di sini.model = LibreYOLO("LibreRTMDets-seg.pt")result = model(SAMPLE_IMAGE, save=True) print(result.masks.data.shape)

Objek Results yang dikembalikan sama dengan yang dikembalikan setiap family, jadi mengganti detektor hanya memerlukan perubahan satu baris. Nama berkas -seg menentukan task RTMDet-Ins dengan sendirinya, kemudian result.masks menyimpan mask instance di samping kotak. conf menetapkan ambang batas confidence dan iou menetapkan ambang NMS. Lihat prediksi untuk sumber, streaming, dan penanganan hasil.

Varian

Lima ukuran, dari t hingga x, memakai satu arsitektur pada resolusi input yang sama. Family ini tidak memiliki tabel benchmark di sini: bandingkan ukuran melalui ukuran berkas checkpoint pada tabel di bawah.

Pelatihan

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreRTMDets.pt")model.train(    data="my-dataset.yaml",    epochs=300, imgsz=640, batch=16, lr0=0.004,)
CLI
libreyolo train model=LibreRTMDets.pt data=my-dataset.yaml imgsz=640 epochs=300 batch=16 lr0=0.004

Deteksi dilatih melalui train(). Komponen QualityFocalLoss, GIoU, dan DynamicSoftLabelAssigner di-porting dari mmdetection upstream. Forward pass dan ekspor ONNX setara hingga tingkat bit dengannya, sedangkan pascapemrosesan cocok dengan output mmdet dalam selisih 0.001 mAP pada subset val2017.

Hal yang belum diperiksa, sesuai docstring train() sendiri: konvergensi fine-tuning dataset kecil, kesetaraan makalah dari nol, perilaku multi-GPU, throughput Mosaic dan MixUp dengan cache, peralihan pipeline dua tahap upstream yang ketat, serta override weight decay per parameter yang membuat decay nol pada parameter norm dan bias.

RTMDet-Ins tidak memiliki jalur pelatihan. Memanggil train() pada checkpoint -seg, atau dengan task="segment", akan memunculkan NotImplementedError; segmentasi instance hanya mendukung inferensi dan validasi.

train() juga menerima argumen pretrained, tetapi nilainya tidak pernah dibaca di dalam metode: pelatihan selalu berlanjut dari bobot yang dipakai saat model dibuat, sehingga pretrained=False tidak menginisialisasi ulang jaringan.

Jika pengaturan lain dibiarkan, pelatih berjalan selama 300 epoch dengan AdamW pada lr0=0.004 dan weight_decay=0.05, warmup 1 epoch pada jadwal kosinus, serta Mosaic dan MixUp yang dinonaktifkan selama 20 epoch terakhir.

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("LibreRTMDets.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])
CLI
libreyolo val model=LibreRTMDets.pt data=my-dataset.yaml
Segmentasi instance
from libreyolo import LibreYOLO model = LibreYOLO("LibreRTMDets-seg.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95(M)"])   # maskprint(metrics["metrics/mAP50-95(B)"])   # kotak

Untuk checkpoint -seg, key biasa metrics/mAP50-95 menyimpan skor mask. Proses yang sama juga melaporkan kotak pada (B) dan mask pada (M), sehingga keduanya tersedia dari satu tahap.

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: tidak didukungDetection to RKNN: tidak didukungDetection to ncnn: tidak didukungDetection to TFLite: tidak didukungDetection to CoreML: tidak didukungDetection to Core AI: didukung
Instance segmentationInstance segmentation to ONNX: tidak didukungInstance segmentation to TorchScript: tidak didukungInstance segmentation to ExecuTorch: tidak didukungInstance segmentation to TensorRT: tidak didukungInstance segmentation to OpenVINO: tidak didukungInstance segmentation to Paddle: tidak didukungInstance segmentation to MNN: tidak didukungInstance segmentation to RKNN: tidak didukungInstance segmentation to ncnn: tidak didukungInstance segmentation to TFLite: tidak didukungInstance segmentation to CoreML: tidak didukungInstance segmentation to Core AI: tidak didukung

Deteksi dapat diekspor ke sebagian besar format; segmentasi instance saat ini tidak dapat diekspor ke format mana pun. Matriks di atas mencerminkan perbedaan itu. Artefak deteksi hasil ekspor dimuat kembali melalui LibreYOLO() berdasarkan sufiks berkasnya, sehingga berkas .onnx atau .engine berperilaku seperti checkpoint dan mengembalikan Results yang sama. Menjalankan graph pada runtime mandiri tanpa memasang LibreYOLO juga didukung, tetapi prapemrosesan dan pascapemrosesannya harus ditulis sendiri.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreRTMDets.pt")model.export(format="onnx", imgsz=640)model.export(format="tensorrt", imgsz=640, half=True)
CLI
libreyolo export model=LibreRTMDets.pt format=onnx imgsz=640libreyolo export model=LibreRTMDets.pt format=tensorrt imgsz=640 half=True
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("LibreRTMDets.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)

Checkpoint

Setiap berkas bobot yang dipublikasikan untuk family ini.

BerkasInput (piksel)Lisensi bobot
Detection
LibreRTMDett.pt640apache-2.0
LibreRTMDets.pt640apache-2.0
LibreRTMDetm.pt640apache-2.0
LibreRTMDetl.pt640apache-2.0
LibreRTMDetx.pt640apache-2.0
Instance segmentation
LibreRTMDett-seg.pt640apache-2.0
LibreRTMDets-seg.pt640apache-2.0
LibreRTMDetm-seg.pt640apache-2.0
LibreRTMDetl-seg.pt640apache-2.0
LibreRTMDetx-seg.pt640apache-2.0

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

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
RTMDet, OpenMMLab
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. The published RTMDet and RTMDet-Ins checkpoints are converted from mmdetection's own COCO weights, trained by OpenMMLab under the same license.

Sitasi

@misc{lyu2022rtmdet,
      title={RTMDet: An Empirical Study of Designing Real-Time Object Detectors},
      author={Chengqi Lyu and Wenwei Zhang and Haian Huang and Yue Zhou and Yudong Wang and Yanyi Liu and Shilong Zhang and Kai Chen},
      year={2022},
      eprint={2212.07784},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

Disalin dari blok sitasi penulis di github.com/open-mmlab/mmdetection/tree/main/configs/rtmdet#citation.

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.