PicoDet
PicoDet adalah detektor satu tahap yang dibuat untuk CPU seluler dan edge: backbone ESNet, neck CSP-PAN, dan head Generalized Focal Loss bersama. LibreYOLO mendukungnya untuk deteksi.
- Task
- detection
- Ukuran
- s, m, l at 320 to 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.
- Lisensi
- Kode Apache-2.0, bobot Apache-2.0. Penggunaan komersial
Instalasi
PicoDet tidak memerlukan komponen tambahan selain paket dasar.
pip install libreyoloPrediksi
Bobot diunduh dari Hugging Face saat pertama kali digunakan dan disimpan dalam cache lokal.
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibrePICODETs.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes: print(box.cls, box.conf, box.xyxy)libreyolo predict model=LibrePICODETs.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=TrueObjek Results yang dikembalikan sama dengan yang dikembalikan setiap family, jadi
mengganti detektor hanya memerlukan perubahan satu baris. conf menetapkan ambang batas
skor keyakinan dan iou menetapkan ambang NMS. Lihat prediksi untuk sumber,
streaming, dan penanganan hasil.
Varian
Tiga ukuran, masing-masing dengan resolusi input tetapnya sendiri: s paling kecil dan
l paling besar. Resolusi meningkat bersama ukuran, sehingga checkpoint yang lebih besar
juga lebih mahal untuk dijalankan per gambar, selain memiliki lebih banyak parameter.
| Checkpoint | Input (piksel) | mAP 50-95 | Parameter (juta) |
|---|---|---|---|
| LibrePICODETs | 320 | 29.5 | 0.99 |
| LibrePICODETm | 416 | 37.6 | 2.15 |
| LibrePICODETl | 640 | 44.2 | 3.31 |
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.
Pelatihan
from libreyolo import LibreYOLO model = LibreYOLO("LibrePICODETs.pt")model.train( data="my-dataset.yaml", epochs=300, batch=16, lr0=0.01,)# imgsz perlu ditetapkan: nilai default CLI adalah 640, sedangkan# resolusi native checkpoint s adalah 320.libreyolo train model=LibrePICODETs.pt data=my-dataset.yaml imgsz=320 epochs=300 batch=16 lr0=0.01Komponen loss dan assigner mengikuti resep upstream: VFL, DFL, GIoU, dan SimOTA, dengan pembobotan kualitas klasifikasi serta target VFL IoU dinamis. Inferensi setara hingga tingkat bit dengan upstream pada checkpoint yang sama.
Hal yang belum diperiksa, sesuai docstring train() sendiri: konvergensi
dataset penuh, perilaku multi-GPU, dan augmentasi apa pun selain pembalikan horizontal.
Checkpoint s pada resolusi native 320 juga belum secara konsisten melewati batas bawah
akurasi LibreYOLO pada fixture 30 gambar dan dua kelas yang dipakai library untuk menguji
fine-tuning kecil. Ukuran tersebut lebih cocok pada skala COCO penuh.
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.
Biarkan imgsz tidak ditetapkan di Python agar nilainya memakai resolusi native
checkpoint yang dimuat, yaitu 320 untuk s, 416 untuk m, dan 640 untuk l. CLI selalu
mengirim imgsz dengan nilai default 640, jadi tetapkan nilainya di sana agar sesuai checkpoint.
Jika pengaturan lain dibiarkan, pelatih berjalan selama 300 epoch dengan SGD pada lr0=0.01,
momentum 0.9, weight decay 4e-5, serta warmup 1 epoch pada jadwal kosinus.
Pembalikan horizontal adalah satu-satunya augmentasi yang diterapkan.
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("LibrePICODETs.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])libreyolo val model=LibrePICODETs.pt data=my-dataset.yamlEkspor
| 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: tidak didukung | Detection to RKNN: didukung | Detection to ncnn: didukung | Detection to TFLite: tidak didukung | Detection to CoreML: tidak didukung | Detection to Core AI: didukung |
Artefak 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.
from libreyolo import LibreYOLO model = LibreYOLO("LibrePICODETs.pt")model.export(format="onnx", imgsz=320)model.export(format="tensorrt", imgsz=320, half=True)libreyolo export model=LibrePICODETs.pt format=onnx imgsz=320libreyolo export model=LibrePICODETs.pt format=tensorrt imgsz=320 half=Truefrom 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("LibrePICODETs.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)Checkpoint
Setiap berkas bobot yang dipublikasikan untuk family ini.
| Berkas | Input (piksel) | Lisensi bobot |
|---|---|---|
| Detection | ||
| LibrePICODETs.pt | 320 | apache-2.0 |
| LibrePICODETm.pt | 416 | apache-2.0 |
| LibrePICODETl.pt | 640 | apache-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
- PP-PicoDet, PaddlePaddle (Baidu)
- Lisensi upstream
- Apache-2.0
- Sumber upstream
- github.com/PaddlePaddle/PaddleDetection
- 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. LibreYOLO's port follows Bo396543018/Picodet_Pytorch, a PyTorch re-implementation of PaddleDetection's original PP-PicoDet, and both carry the same Apache-2.0 terms as the paper's authors.
Port LibreYOLO mengikuti Bo396543018/Picodet_Pytorch, implementasi ulang PyTorch dari PP-PicoDet asli milik PaddleDetection, dengan mmcv dihapus dan setiap aktivasi dicocokkan secara tepat agar checkpoint PaddlePaddle yang dikonversi melalui pipeline Bo dapat dimuat tanpa penyimpangan numerik. Kedua sumber memakai ketentuan Apache-2.0 yang sama dengan para penulis makalah.
Sitasi
@misc{yu2021pppicodet,
title={PP-PicoDet: A Better Real-Time Object Detector on Mobile Devices},
author={Guanghua Yu and Qinyao Chang and Wenyu Lv and Chang Xu and Cheng Cui and Wei Ji and Qingqing Dang and Kaipeng Deng and Guanzhong Wang and Yuning Du and Baohua Lai and Qiwen Liu and Xiaoguang Hu and Dianhai Yu and Yanjun Ma},
year={2021},
eprint={2111.00902},
archivePrefix={arXiv},
primaryClass={cs.CV}
}Disalin dari blok sitasi penulis di github.com/PaddlePaddle/PaddleDetection/blob/release/2.8/configs/picodet/README_en.md#cite-pp-picodet.