Satu ekosistem, banyak task: object detection (-detect), instance segmentation (-seg), dan classification (-cls) dengan bobot pretrained — membandingkan perbedaan output Results, kapan pakai task mana, dan trik menjalankan ketiganya pada satu input

Setelah inference pertama berhasil di episode 4, kini saatnya memperluas kemampuan: YOLO bukan cuma mesin bounding box. Ekosistem Ultralytics mendukung banyak task dari satu codebase — detection, segmentation, classification, pose, bahkan OBB — dengan pola API yang identik.
Mengapa ini layak episode sendiri? Karena di dunia kerja, 80% diskusi awal project vision adalah memilih task yang benar. Tim yang salah memilih task akan membuang bulan-bulan kerja: misalnya membangun segmentation mahal padahal detection cukup, atau sebaliknya memaksakan detection padahal pixel mask mutlak dibutuhkan (medis, robotika gripper). Episode ini memberi kalian peta untuk mengambil keputusan itu.
Naming convention Ultralytics sangat konsisten — sufiks menentukan task:
| Task | Bobot Pretrained | Output Utama di Results |
|---|---|---|
| Detection | yolo26n.pt | boxes (xyxy, cls, conf) |
| Instance Segmentation | yolo26n-seg.pt | boxes + masks (mask biner per instance) |
| Classification | yolo26n-cls.pt | probs (probabilitas per kelas, tanpa box) |
Perhatikan pola penting: segmentation = detection + mask, sedangkan classification = satu label untuk seluruh gambar (tanpa lokasi sama sekali).
Analogi sederhana: classification seperti menyebut "ada kucing di foto"; detection menambah "kucingnya di kiri bawah"; segmentation menggambar siluet tubuh kucingnya persis-persis.
Siapkan satu folder samples/ berisi beberapa foto, lalu jalankan ketiga task:
yolo predict model=yolo26n.pt source=samples/
yolo predict model=yolo26n-seg.pt source=samples/
yolo predict model=yolo26n-cls.pt source=samples/Perhatikan perbedaan bentuk output:
detect → daftar box seperti episode 4.seg → selain box, masks.data berupa tensor (N, H, W) — satu channel mask biner per objek.cls → tidak ada boxes sama sekali; yang ada probs berukuran sebanyak kelas ImageNet (1000).Mask adalah array boolean per piksel — inilah pintu masuk use case nyata seperti background removal atau menghitung luas objek:
import cv2
import numpy as np
from ultralytics import YOLO
img = cv2.imread("samples/street.jpg")
result = YOLO("yolo26n-seg.pt")(img)[0]
mask = result.masks.data[0].cpu().numpy() # mask objek pertama
mask_resized = cv2.resize(mask, (img.shape[1], img.shape[0]))
overlay = img.copy()
overlay[mask_resized > 0.5] = [0, 255, 0] # warnai area objek
cv2.imwrite("masked.jpg", cv2.addWeighted(img, 0.6, overlay, 0.4, 0))Decision guide yang bisa kalian pakai di rapat desain:
| Kebutuhan Bisnis | Task yang Tepat | Alasan |
|---|---|---|
| Hitung jumlah objek / trigger alarm posisi | Detection | Murah, cepat, cukup |
| Potong objek dari background (e-commerce, green screen) | Segmentation | Butuh batas presisi piksel |
| Urutkan foto ke folder per kategori | Classification | Paling murah, tanpa lokasi |
| Robot menggenggam objek | Segmentation (+pose) | Mask menentukan titik grip |
| Analisis citra medis (tumor) | Segmentation | Luas & bentuk = informasi klinis |
| Moderasi konten massal | Classification/Detection | Throughput utama |
Aturan praktisnya: mulai dari task termurah yang masih menjawab pertanyaan bisnis. Naik kelas hanya jika benar-benar terbukti perlu — biaya annotation, training, dan inference meningkat drastis dari classify → detect → seg.
Note
Ketiga bobot pretrained di atas dilatih pada dataset berbeda: detect/seg di COCO (80 kelas), cls di ImageNet (1000 kelas). Jadi hasilnya tidak bisa disilangkan begitu saja — "bus" ada di keduanya, tapi ID kelasnya berbeda. Selalu mapping lewat results.names.
Ingat episode 3: backbone dan neck bertugas menghasilkan fitur universal. Yang membedakan task hanyalah head:
Detect head → box + class.Segment head → tambahan branch prototypical masks (YOLACT-style) untuk membangkitkan mask.Classify head → global average pooling + linear classifier.Inilah kenapa belajar satu API Ultralytics otomatis memberi kalian akses ke semua task — dan kenapa fine-tuning nanti (episode 10) punya prosedur identik untuk semua task: cukup ganti bobot dan dataset-nya.
Common pitfalls di tahap ini:
yolo26n.pt (detect) lalu bingung karena results.masks is None — mask hanya ada di bobot -seg.probs.top1conf yang rendah pada classification — biasanya artinya gambar di luar distribusi ImageNet (contoh: citra satelit).masks.data berada di resolusi input model, bukan resolusi original image.Rangkuman episode ini:
-pt detect, -seg segment, -cls classify — API-nya identik.boxes untuk detect, boxes+masks untuk seg, probs untuk cls.Di episode 6 kita naik kelas lagi ke dua task spesialis: pose estimation untuk deteksi keypoint manusia, dan OBB (Oriented Bounding Box) untuk objek yang berputar seperti kapal terlihat dari drone — dua kemampuan yang membuka industri baru: sport analytics, retail analytics, aerial survey, hingga dokumen. Sampai jumpa!