Mendeteksi objek apa pun dari text prompt tanpa training data: YOLO-World dan Grounding DINO, alur set_classes + prompt, kapan zero-shot unggul untuk prototyping dan auto-labeling, serta kenapa fine-tune tetap juara domain spesifik

Sejak episode 8 kita hidup dalam aturan tak tertulis object detection: tidak ada deteksi tanpa training. Kelas baru = anotasi ratusan gambar = siklus training. Episode ini meruntuhkan aturan itu: dengan model open-vocabulary, kalian mendeteksi objek baru cukup dengan... mengetik namanya.
Ini bukan trik demo — YOLO-World dan Grounding DINO sudah dipakai serius di industry untuk prototyping cepat dan pipeline auto-labeling. Namun seperti semua teknologi ajaib, ada batas fisiknya. Episode ini memberikan keduanya: cara pakainya dan kapan justru jangan dipakai.
Model detection biasa punya head klasifikasi tetap (80 kelas COCO — ingat episode 3). Model open-vocabulary mengganti head itu dengan jembatan bahasa-vision (pretrained pada pasangan gambar-teks masif): teks prompt di-encode menjadi embedding, lalu dicocokkan terhadap embedding region visual.
Konsekuensi arsitektur ini: kelas bukan lagi parameter model, melainkan input runtime. Satu model bisa mendeteksi apa saja yang bisa dideskripsikan bahasa — dan ganti daftar kelas tanpa training sama sekali.
Dua nama utama yang perlu kalian kenal:
yolov8s-world*.pt).Ekosistem Ultralytics membuatnya nyaris tidak berbeda dari YOLO biasa:
from ultralytics import YOLO
model = YOLO("yolov8s-worldv2.pt") # bobot open-vocab
model.set_classes(["safety helmet", "forklift", "fire extinguisher"])
results = model.predict(source="gudang.jpg", conf=0.25, save=True)
for b in results[0].boxes:
print(results[0].names[int(b.cls.item())],
round(float(b.conf.item()), 2))Perhatikan dua hal dari contoh kedua: kelas diganti runtime tanpa retraining — hal mustahil bagi detector klasik. Dan penamaan prompt itu ilmu tersendiri: "safety helmet" bekerja lebih baik daripada sekadar "helmet" karena lebih deskriptif bagi pemahaman bahasa model.
Tip
Tulis prompt seperti mendeskripsikan ke anak kecil yang belum pernah lihat objeknya: spesifik, konkret, hindari istilah internal perusahaan. "KRT-3000 unit" tidak akan terdeteksi; "yellow forklift with black mast" akan.
Tiga zona di mana pendekatan ini menang telak:
Pertanyaan bisnis: "apakah ide deteksi X ini layak dikerjakan?" Jawabannya dalam 15 menit — jalankan zero-shot di puluhan sample, tunjukkan hasilnya ke stakeholder. Kalau konsepnya gagal, kalian baru saja menghemat dua minggu anotasi dan training.
Marketplace produk, inventarium gudang, moderasi konten multi-negara — domain di mana daftar target berubah mingguan. Melatih ulang tiap perubahan tidak realistis; mengubah string prompt realistis.
Inilah kombinasi paling produktif — menghubungkan episode 8:
1. YOLO-World/DINO generate draft box dari text prompt
2. Manusia KOREKSI draft di CVAT/Roboflow (jauh lebih cepat)
3. Dataset bersih → fine-tune yolo26n (episode 10)
4. Detector hasil fine-tune menggantikan zero-shot di produksiZero-shot menghilangkan pekerjaan menggambar-dari-nol; manusia tinggal verifikasi. Tim produksi melaporkan pemangkasan effort anotasi hingga belasan persen biaya — angka pastinya tergantung domain.
Kenapa tidak semua project pakai zero-shot?
Aturan keputusan singkat: zero-shot untuk eksplorasi & kelas dinamis; fine-tune untuk produksi kelas tetap. Keduanya bukan pesaing, melainkan dua tahap dalam satu pipeline.
Rangkuman episode ini:
set_classes([...]) + prompt deskriptif = deteksi objek baru tanpa training.Di episode 23 kita hadapi musuh paling keras kepala dalam object detection: objek kecil dan hard case — crowd, occlusion, low-light, aerial — beserta arsen lengkapnya: resolusi tinggi, SAHI slicing, copy-paste augmentation, dan P2 head. Sampai jumpa!