notebook | inferensi | Autodistill | mengumpulkan
Autodistill menggunakan model pondasi yang besar dan lebih lambat untuk melatih model kecil yang diawasi lebih cepat. Menggunakan autodistill , Anda dapat beralih dari gambar yang tidak berlabel ke inferensi pada model khusus yang berjalan di tepi tanpa intervensi manusia di antaranya.
Tip
Anda dapat menggunakan AutoDistill pada perangkat keras Anda sendiri, atau menggunakan Autodistill versi yang dihosting Roboflow untuk memberi label gambar di cloud.
Saat ini, autodistill mendukung tugas -tugas penglihatan seperti deteksi objek dan segmentasi instan, tetapi di masa depan dapat diperluas ke model bahasa (dan lainnya).
| Tutorial | Dokumen | Model yang didukung | Menyumbang |
|---|
Berikut adalah contoh prediksi model target yang mendeteksi botol susu dan bottlecaps setelah dilatih pada dataset berlabel otomatis menggunakan AutoDistill (lihat Autodistill YouTube Video untuk walkthrough lengkap):
Untuk menggunakan autodistill , Anda memasukkan data yang tidak berlabel ke dalam model dasar yang menggunakan ontologi untuk memberi label dataset yang digunakan untuk melatih model target yang menghasilkan model suling disempurnakan untuk melakukan tugas tertentu.
Autodistill mendefinisikan beberapa primitif dasar:
autodistill harus cocok agar mereka kompatibel satu sama lain. Deteksi objek dan segmentasi instan saat ini didukung melalui tugas detection . Dukungan classification akan segera ditambahkan.CaptionOntology yang mendorong model dasar dengan teks teks dan memetakannya ke nama kelas. Ontologi lain dapat, misalnya, menggunakan vektor klip atau gambar contoh alih -alih teks teks.autodistill ; Ini adalah satu set bobot yang disesuaikan untuk tugas Anda yang dapat digunakan untuk mendapatkan prediksi. Pelabelan manusia adalah salah satu hambatan terbesar untuk adopsi visi komputer yang luas. Butuh ribuan jam untuk membuat dataset yang cocok untuk melatih model produksi. Proses distilasi untuk pelatihan model yang diawasi bukanlah hal baru, pada kenyataannya, pelabelan manusia tradisional hanyalah bentuk lain dari distilasi dari model dasar yang sangat cakap (otak manusia?).
Model yayasan tahu banyak tentang banyak, tetapi untuk produksi kami membutuhkan model yang tahu banyak tentang sedikit.
Ketika model fondasi menjadi lebih baik dan lebih baik, mereka akan semakin dapat menambah atau menggantikan manusia dalam proses pelabelan. Kami membutuhkan alat untuk kemudi, memanfaatkan, dan membandingkan model -model ini. Selain itu, model yayasan ini besar, mahal, dan sering terjaga keamanannya di belakang API pribadi. Untuk banyak kasus penggunaan produksi, kami membutuhkan model yang dapat berjalan dengan murah dan realtime di tepi.
Model dasar AutoDistill sudah dapat membuat set data untuk banyak kasus penggunaan umum (dan melalui dorongan kreatif dan beberapa tembakan kita dapat memperluas utilitas mereka ke lebih banyak lagi), tetapi mereka belum sempurna. Masih banyak pekerjaan yang harus dilakukan; Ini hanya permulaan dan kami akan menyukai bantuan Anda menguji dan memperluas kemampuan sistem!
Autodistill adalah modular. Anda harus menginstal paket autodistill (yang mendefinisikan antarmuka untuk konsep di atas) bersama dengan model dasar dan plugin model target (yang mengimplementasikan model spesifik).
Dengan mengemas ini secara terpisah sebagai plugin, ketergantungan dan ketidakcocokan lisensi diminimalkan dan model baru dapat diimplementasikan dan dikelola oleh siapa pun.
Contoh:
pip install autodistill autodistill-grounded-sam autodistill-yolov8Anda juga dapat mengkloning proyek dari GitHub untuk pengembangan lokal:
git clone https://github.com/roboflow/autodistill
cd autodistill
pip install -e .Model basis dan target tambahan disebutkan di bawah ini.
Lihat buku catatan demo untuk pengantar cepat ke autodistill . Buku catatan ini berjalan melalui membangun model deteksi wadah susu tanpa pelabelan.
Di bawah ini, kami memiliki bagian -bagian penting dari buku catatan untuk pengantar cepat untuk autodistill .
Anda juga dapat menjalankan Autodistill dalam satu perintah. Pertama, instal autodistill :
pip install autodistillLalu, jalankan:
autodistill images --base= " grounding_dino " --target= " yolov8 " --ontology ' {"prompt": "label"} ' --output= " ./dataset " Perintah ini akan memberi label semua gambar dalam direktori yang disebut images dengan dino grounding dan menggunakan gambar berlabel untuk melatih model YOLOV8. Grounding Dino akan memberi label semua gambar dengan "prompt" dan menyimpan label sebagai "label". Anda dapat menentukan sebanyak mungkin petunjuk dan label yang Anda inginkan. Dataset yang dihasilkan akan disimpan dalam folder yang disebut dataset .
Untuk contoh ini, kami akan menunjukkan cara menyaring groundedsam menjadi model YOLOV8 kecil menggunakan autodistill-ground-sam dan autodistill-yolov8.
pip install autodistill autodistill-grounded-sam autodistill-yolov8
from autodistill_grounded_sam import GroundedSAM
from autodistill . detection import CaptionOntology
from autodistill_yolov8 import YOLOv8
# define an ontology to map class names to our GroundingDINO prompt
# the ontology dictionary has the format {caption: class}
# where caption is the prompt sent to the base model, and class is the label that will
# be saved for that caption in the generated annotations
base_model = GroundedSAM ( ontology = CaptionOntology ({ "shipping container" : "container" }))
# label all images in a folder called `context_images`
base_model . label (
input_folder = "./images" ,
output_folder = "./dataset"
)
target_model = YOLOv8 ( "yolov8n.pt" )
target_model . train ( "./dataset/data.yaml" , epochs = 200 )
# run inference on the new model
pred = target_model . predict ( "./dataset/valid/your-image.jpg" , confidence = 0.5 )
print ( pred )
# optional: upload your model to Roboflow for deployment
from roboflow import Roboflow
rf = Roboflow ( api_key = "API_KEY" )
project = rf . workspace (). project ( "PROJECT_ID" )
project . version ( DATASET_VERSION ). deploy ( model_type = "yolov8" , model_path = f"./runs/detect/train/" ) Untuk memplot anotasi untuk satu gambar menggunakan autodistill , Anda dapat menggunakan kode di bawah ini. Kode ini bermanfaat untuk memvisualisasikan anotasi yang dihasilkan oleh model dasar Anda (yaitu groundedsam) dan hasil dari model target Anda (yaitu YOLOV8).
import supervision as sv
import cv2
img_path = "./images/your-image.jpeg"
image = cv2 . imread ( img_path )
detections = base_model . predict ( img_path )
# annotate image with detections
box_annotator = sv . BoxAnnotator ()
label_annotator = sv . LabelAnnotator ()
labels = [
f" { base_model . ontology . classes ()[ class_id ] } { confidence :0.2f } "
for _ , _ , confidence , class_id , _ , _ in detections
]
annotated_frame = box_annotator . annotate (
scene = image . copy (), detections = detections
)
annotated_frame = label_annotator . annotate (
scene = annotated_frame , detections = detections , labels = labels
)
sv . plot_image ( annotated_frame , ( 16 , 16 )) Tujuan kami adalah untuk autodistill untuk mendukung menggunakan semua model fondasi sebagai model dasar dan sebagian besar model yang diawasi SOTA sebagai model target. Kami fokus pada tugas deteksi dan segmentasi objek terlebih dahulu tetapi berencana untuk segera meluncurkan dukungan klasifikasi! Di masa depan, kami berharap autodistill juga akan digunakan untuk model di luar visi komputer.
| dasar / target | Yolov8 | Yolo-nas | Yolov5 | Detr | Yolov6 | Yolov7 | MT-yolov6 |
|---|---|---|---|---|---|---|---|
| Sam 2 | ✅ | ✅ | ✅ | ✅ | ? | ||
| Detic | ✅ | ✅ | ✅ | ✅ | ? | ||
| Groundedsam | ✅ | ✅ | ✅ | ✅ | ? | ||
| Landingdino | ✅ | ✅ | ✅ | ✅ | ? | ||
| OWL-VIT | ✅ | ✅ | ✅ | ✅ | ? | ||
| SAM-KLIP | ✅ | ✅ | ✅ | ✅ | ? | ||
| Llava-1.5 | ✅ | ✅ | ✅ | ✅ | ? | ||
| Kosmos-2 | ✅ | ✅ | ✅ | ✅ | ? | ||
| OWLV2 | ✅ | ✅ | ✅ | ✅ | ? | ||
| Model Roboflow Universe (Model Pra-Latihan 50K+) | ✅ | ✅ | ✅ | ✅ | ? | ||
| Codet | ✅ | ✅ | ✅ | ✅ | ? | ||
| Azure Custom Vision | ✅ | ✅ | ✅ | ✅ | ? | ||
| AWS Rekognition | ✅ | ✅ | ✅ | ✅ | ? | ||
| Visi Google | ✅ | ✅ | ✅ | ✅ | ? |
| dasar / target | Yolov8 | Yolo-nas | Yolov5 | Yolov7 | Segformer |
|---|---|---|---|---|---|
| Groundedsam | ✅ | ? | ? | ||
| SAM-KLIP | ✅ | ? | ? | ||
| Seggpt | ✅ | ? | ? | ||
| Fastsam | ? | ? | ? |
| dasar / target | Vit | Yolov8 | Yolov5 |
|---|---|---|---|
| KLIP | ✅ | ✅ | ? |
| Metaclip | ✅ | ✅ | ? |
| DINOV2 | ✅ | ✅ | ? |
| Blip | ✅ | ✅ | ? |
| Albef | ✅ | ✅ | ? |
| Fastvit | ✅ | ✅ | ? |
| Altclip | ✅ | ✅ | ? |
| Evaclip | ✅ | ✅ | ? |
| Gemini | ✅ | ✅ | ? |
| Fuyu | ? | ? | ? |
| Buka Flamingo | ? | ? | ? |
| GPT-4 | |||
| Palm-2 |
Anda secara opsional dapat menggunakan beberapa model target yang dilatih menggunakan Autodistill di Roboflow. Menyebarkan di Roboflow memungkinkan Anda untuk menggunakan berbagai SDK ringkas untuk menggunakan model Anda di tepi, dari Roboflow.js untuk penyebaran web ke perangkat Nvidia Jetson.
Model target autodistill berikut didukung oleh Roboflow untuk penempatan:
| Nama model | Didukung? |
|---|---|
| Deteksi objek YOLOV8 | ✅ |
| Segmentasi instance YOLOV8 | ✅ |
| Deteksi Objek Yolov5 | ✅ |
| Segmentasi instance yolov5 | ✅ |
| Klasifikasi YOLOV8 |
Autodistill: Latih YOLOV8 dengan nol anotasi
Selain menambahkan model baru, ada beberapa area yang kami rencanakan untuk dijelajahi dengan autodistill termasuk:
Kami menyukai masukan Anda! Silakan lihat panduan berkontribusi kami untuk memulai. Terima kasih untuk semua kontributor kami!
Paket autodistill dilisensikan di bawah Apache 2.0. Setiap pangkalan atau plugin model target dapat menggunakan lisensi sendiri sesuai dengan lisensi model yang mendasarinya. Silakan merujuk ke lisensi di setiap repo plugin untuk informasi lebih lanjut.
PytorchStreamReader failed reading zip archive: failed finding central directory ? Kesalahan ini disebabkan ketika Pytorch tidak dapat memuat bobot model untuk suatu model. Masuk ke direktori ~/.cache/autodistill dan hapus folder yang terkait dengan model yang Anda coba muat. Kemudian, jalankan kode Anda lagi. Bobot model akan diunduh dari awal. Biarkan proses instalasi tidak terputus.
| Proyek | Keterangan |
|---|---|
| pengawasan | Utilitas tujuan umum untuk digunakan dalam proyek visi komputer, dari prediksi pemfilteran dan tampilan hingga pelacakan objek ke evaluasi model. |
| Autodistill (proyek ini) | Secara otomatis memberi label gambar untuk digunakan dalam pelatihan model visi komputer. |
| Kesimpulan | Server inferensi yang mudah digunakan dan siap-produksi untuk penyebaran pendukung visi komputer dari banyak arsitektur model populer dan model yang disesuaikan. |
| Notebook | Tutorial untuk tugas visi komputer, dari melatih model canggih hingga melacak objek hingga menghitung objek di zona. |
| Mengumpulkan | Pengumpulan data yang otomatis dan cerdas ditenagai oleh klip. |