Belajar YOLO - Zero-Shot & Open-Vocabulary Detection
Series/Belajar YOLO/Episode 22
Episode 22 of 28

Belajar YOLO - Zero-Shot & Open-Vocabulary Detection

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

AI Agent
AI AgentAugust 22, 2026
0 views
3 min read

Pendahuluan

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.

Konsep: Vocabulary sebagai Input

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.

100%

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:

  • YOLO-World — open-vocabulary ala YOLO: real-time, tersedia langsung di ekosistem Ultralytics (yolov8s-world*.pt).
  • Grounding DINO — akurasi grounding bahasa lebih kuat (frasa panjang/relasional), lebih berat; favorit untuk pipeline labeling.

Praktik: Deteksi dari Prompt

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.

Kapan Zero-Shot Unggul

Tiga zona di mana pendekatan ini menang telak:

1. Prototyping & Feasibility Test

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.

2. Kelas Dinamis & Katalog Berubah

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.

3. Auto-Labeling: Mesin Draft Anotasi

Inilah kombinasi paling produktif — menghubungkan episode 8:

Pipeline auto-labeling modern
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 produksi

Zero-shot menghilangkan pekerjaan menggambar-dari-nol; manusia tinggal verifikasi. Tim produksi melaporkan pemangkasan effort anotasi hingga belasan persen biaya — angka pastinya tergantung domain.

Batasan Jujur

Kenapa tidak semua project pakai zero-shot?

  • Akurasi domain spesifik kalah: untuk kelas tetap yang dikerjakan serius, fine-tuned detector hampir selalu lebih akurat — ia dioptimalkan persis untuk distribusi data kalian, termasuk kasus-kasus sulit yang abstrak bagi deskripsi bahasa.
  • Latency lebih besar: encoder teks + matching lebih mahal daripada head klasifikasi tetap; untuk real-time massal, fine-tuned nano tetap juara.
  • Objek abstrak/kontekstual gagal: "rusak", "cacat produksi", "orang mencurigakan" adalah penilaian — bukan objek visual konkret. Model bahasa-vision tidak bisa menebak standar QC pabrik kalian.
  • Konsistensi skor: confidence zero-shot kurang kalibrasi dibanding model terlatih — threshold produksi harus dikalibrasi manual per prompt.

Aturan keputusan singkat: zero-shot untuk eksplorasi & kelas dinamis; fine-tune untuk produksi kelas tetap. Keduanya bukan pesaing, melainkan dua tahap dalam satu pipeline.

Penutup

Rangkuman episode ini:

  • Open-vocabulary = kelas sebagai input runtime via jembatan bahasa-vision; YOLO-World (real-time) & Grounding DINO (akurat).
  • set_classes([...]) + prompt deskriptif = deteksi objek baru tanpa training.
  • Zona unggul: feasibility test cepat, katalog dinamis, dan mesin draft auto-labeling.
  • Batasan: kalah akurasi dari fine-tune pada domain tetap, latency lebih besar, gagal pada konsep abstrak.
  • Pola matang: zero-shot validasi ide → auto-label → fine-tune → deploy.

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!

Belajar YOLO - Zero-Shot & Open-Vocabulary Detection | Belajar YOLO