Belajar YOLO - Setup Ultralytics & Inference Pertama
Episode 4 of 28

Belajar YOLO - Setup Ultralytics & Inference Pertama

Setup lengkap Ultralytics dan inference pertama: pip install, load model pretrained yolo26n.pt, perintah yolo predict via CLI, Python API, deteksi pada gambar/video/webcam, serta membaca struktur hasil Results

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

Pendahuluan

Episode lalu kita membedah isi kap mesin — backbone, neck, dan head. Sekarang saatnya menyalakan mesinnya: di episode ini kalian akan melakukan deteksi objek pertama dengan YOLO26, dari instalasi sampai hasil anotasi yang bisa dilihat mata.

Ini momen penting karena inference adalah lingkaran feedback tercepat dalam pekerjaan vision: kalian ubah input, jalankan, lihat hasil dalam hitungan detik. Hampir semua eksperimen di episode-episode berikutnya (multi-task, tracking, export) dibangun di atas pola yang sama dengan yang kita pelajari hari ini. Kuasai episode ini, dan sisanya hanya variasi.

Install & Verifikasi

Jika episode 0 sudah kalian ikuti, langkah ini cepat:

bash
pip install ultralytics
yolo version

Ultralytics menyediakan dua antarmuka yang setara: CLI untuk eksplorasi cepat, dan Python API untuk integrasi aplikasi. Keduanya akan kita pakai bergantian sepanjang series.

Saat pertama kali dipakai, model pretrained akan ter-download otomatis ke folder cache lokal. File yolo26n.pt berisi bobot hasil training di COCO — kalian memanfaatkan transfer learning tanpa biaya apa pun.

Inference Pertama via CLI

Cara tercepat merasakan kekuatan YOLO — satu baris, tanpa kode:

bash
yolo predict model=yolo26n.pt source="https://ultralytics.com/images/bus.jpg"

Hasilnya tersimpan di runs/detect/predict/: gambar asli dengan bounding box hijau, label class, dan confidence score di tiap objek. Pada gambar bus klasik itu kalian akan melihat bus, beberapa orang, dan mungkin fire hydrant terdeteksi dengan skor di atas 0.85.

Beberapa flag CLI yang paling sering dipakai:

bash
# simpan hasil ke folder spesifik + threshold custom
yolo predict model=yolo26n.pt source=street.jpg project=demo name=coba conf=0.4
 
# deteksi dari webcam real-time (jendela preview terbuka)
yolo predict model=yolo26n.pt source=0 show=True
  • source bisa hampir apa saja: path gambar/folder, URL, video .mp4, nomor webcam (0), bahkan stream RTSP CCTV.
  • conf mengatur ambang confidence — ingat trade-off precision/recall dari episode 1.
  • show=True membuka jendela preview langsung.

Inference via Python API

Untuk aplikasi nyata, Python API memberi kontrol penuh:

first_inference.py
from ultralytics import YOLO
 
model = YOLO("yolo26n.pt")
results = model.predict(
    source="https://ultralytics.com/images/bus.jpg",
    conf=0.25,
    save=True,
)
 
r = results[0] # satu gambar = satu object Result
print(f"Jumlah deteksi: {len(r.boxes)}")
 
for box in r.boxes:
    cls_id = int(box.cls.item())
    conf = float(box.conf.item())
    xyxy = box.xyxy[0].tolist()
    print(f"{model.names[cls_id]:>10} {conf:.2f} [{xyxy[0]:.0f}, {xyxy[1]:.0f}, {xyxy[2]:.0f}, {xyxy[3]:.0f}]")

Output kurang lebih:

Contoh output
Jumlah deteksi: 5
       bus 0.92 [17, 228, 793, 769]
     person 0.89 [47, 398, 241, 902]
     person 0.87 [223, 396, 344, 852]
     person 0.85 [678, 396, 809, 881]
     person 0.72 [49, 430, 112, 687]

Bedah Object Results

Struktur ini akan kalian pakai terus-menerus, hafalkan bentuknya:

PropertiIsiTipe
boxes.xyxyKoordinat pojok box (piksel absolut)Tensor (N, 4)
boxes.clsIndeks kelasTensor (N,)
boxes.confConfidence scoreTensor (N,)
namesKamus id → nama kelasDict
masksSegmentasi (hanya task -seg)Tensor
keypointsPose (hanya task -pose)Tensor

Tip

Semua nilai tensor di atas berada di device GPU (jika ada). Panggil .cpu().numpy() atau .item() sebelum memakainya di library lain seperti OpenCV/pandas — kesalahan paling umum pemula adalah mencampur tensor PyTorch langsung dengan array NumPy.

Deteksi Video & Streaming

Polanya identik — cukup ganti source:

video_inference.py
from ultralytics import YOLO
 
model = YOLO("yolo26n.pt")
results = model.predict(source="traffic.mp4", stream=True, save=True)
 
for r in results: # satu frame per iterasi
    n_people = sum(1 for b in r.boxes if int(b.cls.item()) == 0)
    print(f"orang terdeteksi di frame ini: {n_people}")

Kata kunci penting: stream=True. Tanpa itu, Ultralytics mengumpulkan hasil seluruh video di memori RAM — video panjang akan membuat program kalian mati OOM (out of memory). Dengan stream=True hasil diproses frame-per-frame seperti generator.

Pola ini menjadi fondasi use case nyata: hitung kendaraan lewat garis, deteksi helm di area konstruksi, monitoring antrean — semuanya dimulai dari loop di atas. Untuk menghitung lintasan objek antar frame (bukan sekadar deteksi per-frame), kita butuh tracking — punya episode sendiri di episode 16.

Common Pitfalls Inference Pertama

  • Model tidak ditemukan: nama file harus persis, misal yolo26n.pt. Huruf besar/kecil berpengaruh.
  • Deteksi banyak tapi salah-salah: threshold conf terlalu rendah; naikkan ke 0.4–0.5 untuk hasil yang lebih selektif.
  • Objek jelas tapi tidak terdeteksi: cek apakah objek itu ada di 80 kelas COCO. Model COCO tidak akan mendeteksi "helm proyek" atau "nomor plat" — itu butuh fine-tuning (episode 10), bukan magic parameter.
  • Lambat di laptop CPU: normal. Gunakan ukuran nano, resolusi lebih kecil, atau tunggu episode 18–21 tentang optimasi.

Warning

Jangan pernah menilai kemampuan YOLO hanya dari satu gambar. Model COCO dirancang untuk objek sehari-hari natural image; uji dengan puluhan contoh dari domain kalian sebelum menyimpulkan "YOLO tidak bisa". Kesimpulan prematur seperti ini yang bikin orang berhenti di episode 4.

Penutup

Yang sudah kalian kuasai hari ini:

  • Install ultralytics; model pretrained yolo26n.pt ter-download otomatis saat pertama dipakai.
  • CLI (yolo predict) untuk eksplorasi cepat; Python API untuk aplikasi nyata.
  • Struktur Results: boxes.xyxy/cls/conf, names, plus masks/keypoints untuk task lain.
  • stream=True wajib untuk video panjang agar RAM aman.
  • Model hanya tahu 80 kelas COCO — di luar itu butuh training custom.

Di episode 5 kita manfaatkan sifat multi-task Ultralytics: model yang sama bisa mendeteksi (detect), memotong instance (segment), dan mengklasifikasi (classify) — kita jalankan ketiganya pada satu input dan lihat bagaimana output Results berubah bentuk. Sampai jumpa!

Belajar YOLO - Setup Ultralytics & Inference Pertama | Belajar YOLO