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.
Proyek upstream
YOLOv9 oleh MultimediaTechLab, MIT. Makalah, sumber
Lisensi
Kode MIT, bobot MIT. Penggunaan komersial

Instalasi

YOLOv9 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("LibreYOLO9s.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes:    print(box.cls, box.conf, box.xyxy)
CLI
libreyolo predict model=LibreYOLO9s.pt save=True \  source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg
Tanpa NMS
from 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.

CheckpointInput (piksel)mAP 50-95Parameter (juta)
LibreYOLO9c64056.425.5
LibreYOLO9m64055.320.12
LibreYOLO9s64055.97.2
LibreYOLO9t64054.02.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

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO9s.pt")model.train(data="my-dataset.yaml", epochs=100, imgsz=640, batch=16)
CLI
libreyolo train model=LibreYOLO9s.pt data=my-dataset.yaml \  epochs=100 imgsz=640 batch=16
Objek kecil
from 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.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO9s.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])
CLI
libreyolo val model=LibreYOLO9s.pt data=my-dataset.yaml
Dibandingkan dengan COCO
# 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=True

Ekspor

TaskONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
DetectionDetection to ONNX: didukungDetection to TorchScript: didukungDetection to ExecuTorch: didukungDetection to TensorRT: didukungDetection to OpenVINO: didukungDetection to Paddle: didukungDetection to MNN: didukungDetection to RKNN: tidak didukungDetection to ncnn: didukungDetection to TFLite: tidak didukungDetection to CoreML: tidak didukungDetection 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.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO9s.pt")model.export(format="onnx", imgsz=640)
CLI
libreyolo export model=LibreYOLO9s.pt format=onnx imgsz=640
Dengan NMS dalam graph
libreyolo export model=LibreYOLO9s.pt format=onnx nms=True \  conf=0.25 iou=0.45 max_det=300
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("LibreYOLO9s.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)

Checkpoint

Setiap berkas bobot yang dipublikasikan untuk family ini.

BerkasInput (piksel)Lisensi bobot
Detection
LibreYOLO9t.pt640mit
LibreYOLO9s.pt640mit
LibreYOLO9m.pt640mit
LibreYOLO9c.pt640mit
LibreYOLO9E2Et.pt640mit
LibreYOLO9E2Es.pt640mit
LibreYOLO9E2Em.pt640mit
LibreYOLO9E2Ec.pt640mit
LibreYOLO9P2s-visdrone.ptcc-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
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.

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.