YOLOv9
Detektor konvolusional satu tahap: satu tahap menilai grid kotak yang padat dan NMS membuang duplikat. LibreYOLO menyediakan tiga variannya, salah satunya tidak memiliki tahap NMS.
- Task
- detection
- Ukuran
- yolo9: t, s, m, c at 640 px; yolo9_p2: t, s at 640 px
- Instalasi
pip install libreyolo- Tier dukungan
- Unggulan, sejak v1.0.0. Fitur dirancang dan divalidasi sepenuhnya pada GPU di sini terlebih dahulu.
- Lisensi
- Kode MIT, bobot MIT. Penggunaan komersial
Instalasi
YOLOv9 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("LibreYOLO9s.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes: print(box.cls, box.conf, box.xyxy)libreyolo predict model=LibreYOLO9s.pt save=True \ source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpgfrom libreyolo import LibreYOLO, SAMPLE_IMAGE # Pemanggilan sama, checkpoint berbeda. Head end-to-end mengembalikan prediksi# dengan skor teratasnya sendiri, sehingga NMS tidak berjalan dan iou diabaikan.model = LibreYOLO("LibreYOLO9E2Es.pt")result = model(SAMPLE_IMAGE, conf=0.25, max_det=300) print(len(result.boxes))Objek Results yang dikembalikan sama dengan yang dikembalikan setiap family, jadi mengganti
detektor hanya memerlukan perubahan satu baris. Pada model dasar dan stride-4, conf
menetapkan ambang batas confidence dan iou menetapkan ambang NMS. Model end-to-end tidak
menjalankan NMS dan mengabaikan iou, sehingga conf dan max_det menentukan bentuk
outputnya. Lihat prediksi untuk sumber, streaming, dan penanganan hasil.
Varian
Tiga varian memakai satu backbone. Ketiganya hanya mendeteksi dan menerima argumen yang sama.
Model dasar memprediksi pada tiga skala feature dan menghapus kotak duplikat dengan NMS.
Model end-to-end mempertahankan head tersebut dan menambahkan cabang pencocokan one-to-one di sampingnya. Inferensi hanya membaca cabang one-to-one dan mengambil prediksi dengan skor teratas, sehingga NMS tidak berjalan. Pilih model ini jika runtime deployment tidak memiliki operator NMS.
Model stride-4 mengekspos satu level lebih atas pada backbone, memperpanjang neck ke level tersebut, dan memprediksi pada empat skala, bukan tiga. Skala tambahan ditujukan untuk objek yang hanya mencakup sedikit piksel; satu checkpoint yang dipublikasikan untuknya dilatih pada gambar udara. Checkpoint deteksi dasar dapat ditransfer ke model ini: backbone dan neck dimuat tanpa perubahan, ketiga tower head pretrained bergeser satu slot, dan tower stride-4 dimulai dari inisialisasi acak.
| Checkpoint | Input (piksel) | mAP 50-95 | Parameter (juta) |
|---|---|---|---|
| LibreYOLO9c | 640 | 56.4 | 25.5 |
| LibreYOLO9m | 640 | 55.3 | 20.12 |
| LibreYOLO9s | 640 | 55.9 | 7.2 |
| LibreYOLO9t | 640 | 54.0 | 2.02 |
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("LibreYOLO9s.pt")model.train(data="my-dataset.yaml", epochs=100, imgsz=640, batch=16)libreyolo train model=LibreYOLO9s.pt data=my-dataset.yaml \ epochs=100 imgsz=640 batch=16from libreyolo import LibreYOLO9P2 # Varian stride-4 tidak memiliki checkpoint COCO sendiri, jadi sebutkan# checkpoint deteksi dasar: backbone dan neck dimuat tanpa perubahan,# sedangkan tower head stride-4 dimulai dari inisialisasi acak.model = LibreYOLO9P2(None, size="s")model.train(data="my-dataset.yaml", epochs=100, pretrained="LibreYOLO9s.pt")pretrained menentukan titik awal proses. Berikan True untuk memuat checkpoint terbitan
bagi model dan ukuran yang sama, atau nama maupun path untuk yang lain. Tensor dengan bentuk
yang tidak cocok dilewati, bukan ditolak, dan proses mencatat jumlah tensor yang dimuat,
sehingga checkpoint yang dilatih pada jumlah kelas berbeda tetap dapat menjadi titik awal.
Model stride-4 tidak memiliki checkpoint COCO terbitan sendiri, sehingga True diselesaikan
menjadi berkas yang tidak ada dan pengunduhan gagal. Sebutkan checkpoint deteksi dasar sebagai
gantinya.
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("LibreYOLO9s.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])libreyolo val model=LibreYOLO9s.pt data=my-dataset.yaml# YAML COCO bawaan menyertakan skrip unduhan tertanam, sehingga# memerlukan izin eksplisit kecuali dataset sudah tersedia secara lokal.libreyolo val model=LibreYOLO9c.pt data=coco.yaml imgsz=640 \ allow_download_scripts=TrueEkspor
| 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: didukung | Detection to MNN: didukung | Detection to RKNN: tidak didukung | Detection to ncnn: didukung | Detection to TFLite: tidak didukung | Detection to CoreML: tidak didukung | Detection to Core AI: didukung |
Tanda centang berlaku untuk ketiga varian: jika kemampuannya berbeda, matriks mencantumkan dukungan terlemah dari ketiganya.
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.
Untuk model deteksi dasar, setengah pascapemrosesan tersebut dapat dipindahkan ke graph.
nms=True pada ekspor ONNX menempatkan suppression di dalam model, dan output pertama
menjadi tensor tetap (1, max_det, 6) dengan baris x1, y1, x2, y2, score, class, yang
diberi padding nol setelah jumlah deteksi. Graph tersebut memakai batch 1 dan tidak memiliki
sumbu dinamis. Model end-to-end dan stride-4 tidak menerima flag itu.
Setiap format memasang komponen tambahan berbeda dan menerima beberapa argumen sendiri. Keduanya dijelaskan pada halaman format tersebut.
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO9s.pt")model.export(format="onnx", imgsz=640)libreyolo export model=LibreYOLO9s.pt format=onnx imgsz=640libreyolo export model=LibreYOLO9s.pt format=onnx nms=True \ conf=0.25 iou=0.45 max_det=300from 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("LibreYOLO9s.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)Checkpoint
Setiap berkas bobot yang dipublikasikan untuk family ini.
| Berkas | Input (piksel) | Lisensi bobot |
|---|---|---|
| Detection | ||
| LibreYOLO9t.pt | 640 | mit |
| LibreYOLO9s.pt | 640 | mit |
| LibreYOLO9m.pt | 640 | mit |
| LibreYOLO9c.pt | 640 | mit |
| LibreYOLO9E2Et.pt | 640 | mit |
| LibreYOLO9E2Es.pt | 640 | mit |
| LibreYOLO9E2Em.pt | 640 | mit |
| LibreYOLO9E2Ec.pt | 640 | mit |
| LibreYOLO9P2s-visdrone.pt | cc-by-nc-sa-3.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
- YOLOv9, MultimediaTechLab
- Lisensi upstream
- MIT
- Sumber upstream
- github.com/MultimediaTechLab/YOLO
- Kode LibreYOLO
- MIT
- Bobot
- MIT, dipublikasikan ulang di huggingface.co/LibreYOLO
- Interpretasi
- MIT is a permissive license, so these weights can be used in commercial and closed-source products. The one standing obligation is to keep the license text and the copyright notice, Kin-Yiu Wong and Hao-Tang Tsui, with any copy you redistribute. It places no condition on your own application code, and a model you train yourself on your own data is yours. Two things are worth knowing beyond that. The port follows the authors' MIT re-release of YOLOv9, not the GPL-3.0 repository that carries the same model, so the permissive terms come from the source LibreYOLO actually derives from. And one checkpoint in this family is not MIT: the stride-4 model trained on VisDrone2019-DET inherits that dataset's CC BY-NC-SA 3.0 terms, which rule out commercial use and require share-alike on anything derived from it.
Satu checkpoint di sini tidak berlisensi MIT. Model stride-4 yang dilatih pada VisDrone2019-DET mewarisi ketentuan CC BY-NC-SA 3.0 dataset tersebut: hanya untuk penggunaan nonkomersial, share-alike pada semua turunannya, dan berada di luar lisensi permisif yang dipakai family lainnya. Model ini memprediksi kelas udara VisDrone, bukan kelas COCO. Library mencetak semua informasi ini sebelum mengunduh berkas.
Sitasi
@inproceedings{wang2024yolov9,
title={{YOLOv9}: Learning What You Want to Learn Using Programmable Gradient Information},
author={Wang, Chien-Yao and Yeh, I-Hau and Liao, Hong-Yuan Mark},
year={2024},
booktitle={Proceedings of the European Conference on Computer Vision (ECCV)},
}Disalin dari blok sitasi penulis di github.com/MultimediaTechLab/YOLO#citations.