CLIP

CLIP adalah model dua menara yang menilai sebuah gambar terhadap prompt teks, bukan terhadap kumpulan label tetap. LibreYOLO mendukungnya untuk klasifikasi zero-shot serta embedding gambar dan teks, tanpa langkah pelatihan.

Task
classify, embed
Ukuran
Instalasi
pip install libreyolo
Tier dukungan
Tier sejajar, sejak v. Permukaan produk terpisah dengan factory dan kontraknya sendiri.
Proyek upstream
CLIP / OpenCLIP oleh OpenAI; LAION / ML Foundations, MIT. Makalah, sumber
Lisensi
Kode MIT, bobot MIT. Penggunaan komersial

Instalasi

CLIP membutuhkan extra tersendiri, yang ikut memasang paket yang dipakai tokenizer BPE bawaannya untuk menghasilkan token id yang persis sama.

bash
pip install "libreyolo[clip]"

Prediksi

Bobot diunduh dari Hugging Face saat pertama kali dipakai dan disimpan di cache lokal.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreCLIPb32-cls.pt")model.set_classes(["a forklift", "an empty aisle", "a spill"])result = model(SAMPLE_IMAGE, save=True) print(model.names[result.probs.top1], float(result.probs.top1conf))
CLI
# Tanpa panggilan set_classes(), predict CLI memakai 1.000 nama# kelas ImageNet yang dimuat model secara default.libreyolo predict model=LibreCLIPb32-cls.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True
Embedding gambar dan teks
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreCLIPb32-cls.pt", task="embed")image_embed = model(SAMPLE_IMAGE).embeddings.datatext_embed = model.embed_text("a photo of a forklift") # Keduanya ternormalisasi L2, jadi dot product biasa adalah cosine similarity.similarity = (image_embed @ text_embed.T).item()

set_classes() adalah satu-satunya primitif yang menjadikan ini classifier open-vocabulary: fungsi ini menyisipkan setiap label ke seluruh template prompt, melakukan encoding lalu merata-ratakan hasilnya, dan menyimpan matriks [K, D] yang terbentuk di cache sebagai head classifier, sehingga matriks itu tidak dihitung ulang untuk tiap gambar. Panggil lagi kapan saja untuk mengganti kelas. Tanpa panggilan itu, LibreCLIP dimuat dengan 1.000 nama kelas ImageNet-1k yang sudah tersetel.

Dengan task="embed", prediksi mengembalikan satu vektor gambar ternormalisasi L2 per input, bukan probabilitas kelas, dan embed_text() mengembalikan baris teks ternormalisasi di ruang vektor yang sama, sehingga dot product biasa di antara keduanya adalah cosine similarity. iou tidak berpengaruh pada kedua task itu; tidak ada langkah NMS. Lihat prediksi untuk sumber, streaming dan penanganan hasil.

Validasi

val() membaca nama folder kelas di bawah split train/ sebuah ImageFolder, memanggil set_classes() dengan nama tersebut, lalu mengukur akurasi zero-shot top-1 dan top-5. Akurasi bergantung pada seberapa baik nama kelas terbaca sebagai prompt, bukan pada pembaruan bobot apa pun, karena tidak ada yang perlu dilatih. Validasi hanya mencakup task="classify"; task="embed" tidak punya validator dataset.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreCLIPb32-cls.pt") # data adalah root ImageFolder dengan split train/; nama foldernya# menjadi prompt kelas zero-shot untuk proses ini.metrics = model.val(data="imagenette160") print(metrics["metrics/accuracy_top1"])print(metrics["metrics/accuracy_top5"])
CLI
libreyolo val model=LibreCLIPb32-cls.pt data=imagenette160

Ekspor

TaskONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
classifyclassify to ONNX: didukungclassify to TorchScript: didukungclassify to ExecuTorch: didukungclassify to TensorRT: didukungclassify to OpenVINO: didukungclassify to Paddle: tidak didukungclassify to MNN: tidak didukungclassify to RKNN: tidak didukungclassify to ncnn: tidak didukungclassify to TFLite: tidak didukungclassify to CoreML: tidak didukungclassify to Core AI: didukung
embedembed to ONNX: didukungembed to TorchScript: didukungembed to ExecuTorch: didukungembed to TensorRT: didukungembed to OpenVINO: didukungembed to Paddle: tidak didukungembed to MNN: tidak didukungembed to RKNN: tidak didukungembed to ncnn: tidak didukungembed to TFLite: tidak didukungembed to CoreML: tidak didukungembed to Core AI: tidak didukung

Ekspor menanamkan kondisi model saat ini ke dalam graph yang tetap. Untuk task="classify", label apa pun yang terakhir ditetapkan set_classes(), beserta resolusi pada saat ekspor, ditanamkan ke lapisan linear terakhir, sehingga graph ONNX atau TensorRT hasil ekspor adalah classifier gambar [B, K] biasa tanpa menara teks dan tanpa tokenizer; lakukan ekspor ulang setelah mengubah kelas atau ukurannya. Ekspor dengan task="embed" hanya menelusuri menara gambar. Keduanya membutuhkan ONNX opset 14 atau lebih tinggi, yang memang disetel exporter secara default.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreCLIPb32-cls.pt")model.set_classes(["a forklift", "an empty aisle", "a spill"])model.export(format="onnx") # Label set_classes() saat ini dan resolusi input ditanamkan ke# dalam graph. Lakukan ekspor ulang setelah mengubah salah satunya.
CLI
# Tidak ada panggilan set_classes() di sini, jadi ini menanamkan# 1.000 kelas ImageNet bawaan yang dimuat model.libreyolo export model=LibreCLIPb32-cls.pt format=onnx
Ekspor embedding
from libreyolo import LibreYOLO # task="embed" hanya menelusuri menara gambar; tidak perlu kelas.model = LibreYOLO("LibreCLIPb32-cls.pt", task="embed")model.export(format="onnx")

Checkpoint

Semua berkas bobot yang dipublikasikan untuk family ini. Keduanya dikonversi dari checkpoint OpenCLIP yang dilatih pada LAION-2B (ViT-B-32 dan ViT-B-16), bukan dari pelatihan COCO mana pun.

BerkasInput (piksel)Lisensi bobot
classify
LibreCLIPb32-cls.ptmit
LibreCLIPb16-cls.ptmit

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

Data pelatihan LAION-2B punya riwayat terdokumentasi berisi konten CSAM (Stanford Internet Observatory, Desember 2023). Sejak itu LAION merilis Re-LAION, rilis ulang yang sudah dibersihkan; jika Anda melakukan hosting ulang bobot ini lebih lanjut, pilih checkpoint turunan Re-LAION bila tersedia.

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
CLIP / OpenCLIP, OpenAI; LAION / ML Foundations
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. It asks you to keep the license text and copyright notice with any copy you redistribute, and it places no obligation on your own application code. LibreCLIP's tokenizer is vendored from the OpenAI CLIP / OpenCLIP byte-pair-encoding tokenizer (also MIT); its image and text towers are a clean-room re-implementation of the standard CLIP architecture, built without open_clip as a runtime dependency. The shipped checkpoints (b32, b16) are converted from OpenCLIP's LAION-2B-trained weights, which OpenCLIP publishes as MIT-redistributable. Training is not offered for this family: LibreCLIP is zero-shot, and set_classes() replaces the fine-tuning step a trained classifier would otherwise need.

Sitasi

@software{ilharco_gabriel_2021_5143773,
  author       = {Ilharco, Gabriel and
                  Wortsman, Mitchell and
                  Wightman, Ross and
                  Gordon, Cade and
                  Carlini, Nicholas and
                  Taori, Rohan and
                  Dave, Achal and
                  Shankar, Vaishaal and
                  Namkoong, Hongseok and
                  Miller, John and
                  Hajishirzi, Hannaneh and
                  Farhadi, Ali and
                  Schmidt, Ludwig},
  title        = {OpenCLIP},
  month        = jul,
  year         = 2021,
  note         = {If you use this software, please cite it as below.},
  publisher    = {Zenodo},
  version      = {0.1},
  doi          = {10.5281/zenodo.5143773},
  url          = {https://doi.org/10.5281/zenodo.5143773}
}

Disalin dari blok sitasi penulis di github.com/mlfoundations/open_clip#citing.

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.