Halo para pengembang dan pencinta visi komputer! Pernah merasa kewalahan saat harus mengelola berbagai aspek pengembangan proyek visi komputer Anda? Mulai dari menyiapkan data, melatih model, hingga menganalisis hasilnya, seringkali prosesnya panjang dan berliku. Nah, di sinilah Roboflow Supervision Library hadir sebagai "toolkit" penting yang siap membantu Anda.
Supervision dirancang sebagai set perkakas esensial untuk visi komputer. Fungsi utamanya adalah menyediakan blok bangunan yang Anda perlukan, mulai dari pemuatan data hingga penghitungan zona secara real-time. Dengan begitu, Anda bisa lebih fokus pada pengembangan aplikasi di sekitar model Anda, bukan terjebak dalam detail teknis yang berulang. Mari kita selami lebih dalam apa saja yang ditawarkan library ini.
Memulai dengan Supervision
Memasang Supervision sangat mudah. Anda hanya perlu menginstal paketnya menggunakan pip di lingkungan Python>=3.10.
bashpip install supervision
Untuk detail lebih lanjut tentang instalasi melalui conda, mamba, atau dari source, Anda bisa melihat panduan lengkap mereka.
Model Agnostik: Fleksibilitas Tanpa Batas
Salah satu fitur unggulan dari Supervision adalah sifatnya yang model agnostik. Artinya, Anda bisa menyematkan model klasifikasi, deteksi, atau segmentasi apa pun. Supervision menyediakan connector untuk library populer seperti Ultralytics, Transformers, MMDetection, atau Inference. Beberapa integrasi, seperti rfdetr, bahkan sudah secara langsung mengembalikan objek sv.Detections.
Mari kita lihat contoh penggunaan rfdetr:
pythonimport supervision as sv from PIL import Image from rfdetr import RFDETRSmall # Pastikan Anda sudah menginstal pillow dan rfdetr: pip install pillow rfdetr image = Image.open("path/to/image.jpg") model = RFDETRSmall() detections = model.predict(image, threshold=0.5) print(len(detections)) # Output: 5
Jika Anda menggunakan Roboflow Inference, prosesnya juga cukup mulus. Anda hanya memerlukan Roboflow API KEY.
pythonimport supervision as sv from PIL import Image from inference import get_model # Ganti "ROBOFLOW_API_KEY" dengan kunci API Anda image = Image.open("path/to/image.jpg") model = get_model(model_id="rfdetr-small", api_key="ROBOFLOW_API_KEY") result = model.infer(image)[0] detections = sv.Detections.from_inference(result) print(len(detections)) # Output: 5
Anotator: Visualisasi Deteksi yang Jelas
Supervision menawarkan berbagai annotators yang sangat bisa disesuaikan, memungkinkan Anda membuat visualisasi yang sempurna untuk kasus penggunaan Anda. Misalnya, BoxAnnotator sangat berguna untuk menggambar bounding box hasil deteksi.
pythonimport cv2 import supervision as sv image = cv2.imread("path/to/image.jpg") # Asumsikan 'detections' didapatkan dari hasil model # Contoh: detections = sv.Detections(...) box_annotator = sv.BoxAnnotator() annotated_frame = box_annotator.annotate(scene=image.copy(), detections=detections) # Anda bisa menampilkan 'annotated_frame' menggunakan cv2.imshow atau menyimpannya
Manajemen Dataset: Memuat, Membagi, Menggabung, dan Menyimpan
Mengelola dataset adalah inti dari pengembangan visi komputer. Supervision menyediakan serangkaian utilitas yang memungkinkan Anda memuat, membagi, menggabungkan, dan menyimpan dataset dalam berbagai format yang didukung.
Berikut adalah gambaran kemampuan manajemen dataset di Supervision:
| Operasi | Fungsi | Format yang Didukung |
|---|---|---|
| Memuat | DetectionDataset.from_yolo, from_pascal_voc, from_coco | YOLO, Pascal VOC, COCO |
| Membagi | dataset.split(split_ratio=...) | Umum untuk semua format |
| Menggabung | DetectionDataset.merge([dataset1, dataset2]) | Umum untuk semua format |
| Menyimpan | dataset.as_yolo, as_pascal_voc, as_coco | YOLO, Pascal VOC, COCO |
| Mengonversi | Memuat dari satu format dan menyimpan ke format lain | YOLO, Pascal VOC, COCO |
Untuk memuat dataset, Anda bisa langsung mengunduhnya dari Roboflow:
pythonimport supervision as sv from roboflow import Roboflow project = Roboflow().workspace("WORKSPACE_ID").project("PROJECT_ID") dataset = project.version("PROJECT_VERSION").download("coco") ds = sv.DetectionDataset.from_coco( images_directory_path=f"{dataset.location}/train", annotations_path=f"{dataset.location}/train/_annotations.coco.json", ) # Anda bisa mengiterasi dataset atau mengakses elemennya path, image, annotation = ds[0] for path, image, annotation in ds: # Lakukan sesuatu dengan setiap gambar dan anotasi pass
Supervision juga memungkinkan Anda membagi dataset menjadi set pelatihan, pengujian, dan validasi:
pythontrain_dataset, test_dataset = dataset.split(split_ratio=0.7) test_dataset, valid_dataset = test_dataset.split(split_ratio=0.5) print(len(train_dataset), len(test_dataset), len(valid_dataset)) # Output: (700, 150, 150) (Contoh ukuran)
Jika Anda memiliki beberapa dataset yang ingin digabungkan, Supervision juga bisa melakukannya dengan mudah:
pythonds_1 = sv.DetectionDataset(...) # Anggap berisi 100 deteksi, kelas ['dog', 'person'] ds_2 = sv.DetectionDataset(...) # Anggap berisi 200 deteksi, kelas ['cat'] ds_merged = sv.DetectionDataset.merge([ds_1, ds_2]) print(len(ds_merged)) # Output: 300 print(ds_merged.classes) # Output: ['cat', 'dog', 'person']
Tutorial dan Studi Kasus
Tidak hanya menawarkan fitur inti, Supervision juga menyediakan berbagai tutorial, panduan, dan contoh end-to-end untuk membantu Anda memulai. Beberapa contoh studi kasus yang menarik meliputi:
- Analisis Waktu Tunggu (Dwell Time Analysis): Pelajari cara menggunakan visi komputer untuk menganalisis waktu tunggu dan mengoptimalkan proses. Ini mencakup deteksi objek, pelacakan, dan penghitungan waktu yang dihabiskan di zona tertentu.
- Estimasi Kecepatan & Pelacakan Kendaraan: Tutorial ini menunjukkan cara melacak dan mengestimasi kecepatan kendaraan menggunakan YOLO, ByteTrack, dan Roboflow Inference, mencakup deteksi objek, pelacakan multi-objek, transformasi perspektif, dan peningkatan visualisasi.
Proyek nyata seperti pelacakan pemain sepak bola, analisis lalu lintas, dan pemantauan kendaraan telah dibangun menggunakan Supervision, menunjukkan kemampuannya di dunia nyata.
Membangun Lebih Cepat dan Andal
Supervision adalah toolkit yang sangat berguna bagi siapa saja yang bekerja di bidang visi komputer. Dengan pendekatan model agnostik dan utilitas lengkap untuk data, model, dan visualisasi, ia mempercepat alur kerja pengembangan Anda secara signifikan. Baik Anda seorang peneliti, engineer, atau sekadar penggemar, Supervision menyediakan fondasi yang kuat untuk proyek visi komputer Anda.
Jika Anda tertarik untuk berkontribusi pada proyek ini, mereka juga memiliki panduan kontribusi yang bisa Anda ikuti.
