BASCORRO
LearningComputer Vision

Evaluation & Benchmarking

Mengukur akurasi dan performa runtime vision system secara konsisten

Computer Vision Fundamentals
0 dari 11 halaman selesai
In Progress
Scroll sampai 80% untuk menandai halaman selesai.

Evaluation & Benchmarking

Pipeline vision perlu dievaluasi dengan metrik yang jelas. Tanpa benchmark, perubahan parameter/model sulit dinilai apakah benar meningkatkan performa.


Detection Metrics

MetricArtiKapan Dipakai
PrecisionPrediksi benar dari semua prediksiMengurangi false positive
RecallObjek terdeteksi dari semua objek nyataMengurangi miss detection
F1-scoreHarmonic mean precision-recallTradeoff seimbang
mAPRata-rata precision pada IoU tertentuPerbandingan model deteksi

Target baseline untuk deployment awal:

  • Precision >= 0.90
  • Recall >= 0.85
  • F1 >= 0.87

Runtime Metrics

Selain akurasi, cek performa real-time:

MetricTarget AwalNotes
Latency p50<= 30 ms/frameMedian response
Latency p95<= 60 ms/frameTail latency penting saat pertandingan
Throughput>= 25 FPSMinimal nyaman untuk control loop
CPU usage<= 80%Sisakan headroom modul lain

Model akurat tapi lambat bisa lebih berbahaya dari model sedikit kurang akurat tapi stabil real-time.


Offline Evaluation Loop (Pseudocode)

Purpose: Menghitung metrik deteksi secara offline untuk dataset tetap. Inputs: dataset berlabel dan model inference. Outputs: ringkasan precision, recall, f1, mAP. Steps:

  1. Loop semua sample dan jalankan inference.
  2. Update metrik dengan prediksi dan ground truth.
  3. Hitung summary di akhir. Pitfalls: label tidak konsisten membuat metrik bias. Validation: baseline metrik konsisten antar run yang sama.
metrics = init_metrics()

for sample in dataset:
    image, gt_boxes = sample.image, sample.labels
    pred_boxes = model.infer(image)

    metrics.update_detection(pred_boxes, gt_boxes)

summary = metrics.compute()
print(summary)  # precision, recall, f1, map

ROS 2 Runtime Benchmark Pattern

Purpose: Mengecek performa runtime di ROS 2 tanpa tooling berat. Inputs: node vision aktif dan topic yang dipublish. Outputs: rate topic, timestamp check, dan indikasi latency. Steps:

  1. Cek topic hz untuk rate.
  2. topic echo untuk validasi header.
  3. Aktifkan log timing jika tersedia. Pitfalls: rate turun karena debug image terlalu berat. Validation: rate stabil sesuai target dan timestamp konsisten.
# Check effective publish rate
ros2 topic hz /vision/ball

# Spot-check timestamp and frame_id consistency
ros2 topic echo /vision/ball --once

# Profile latency indirectly via stamped debug logs
ros2 run soccer_vision vision_detector --ros-args -p enable_timing_logs:=true

Log fields yang perlu disimpan per frame:

  • frame_id
  • stamp_input
  • stamp_output
  • latency_ms
  • inference_ms
  • postprocess_ms

Field Test Protocol

Protokol minimum:

  1. Static test: robot diam, bola bergerak.
  2. Walking test: robot jalan + head scan.
  3. Occlusion test: bola ditutup parsial.
  4. Lighting test: terang/redup/shadow.

Setiap skenario jalankan minimal 3 kali dan ambil rata-rata.


Regression Report Template

Gunakan tabel ini setiap perubahan model/parameter:

Run IDModel/ConfigPrecisionRecallFPSp95 LatencyResult
2026-02-23-AYOLOv8n + cfg_010.910.862854 msPASS
2026-02-23-BYOLOv8n + cfg_020.930.842562 msREVIEW

Kriteria PASS default:

  1. Precision/Recall tidak turun >2% dari baseline.
  2. FPS tetap di atas target minimal.
  3. p95 latency tidak melewati batas.

Acceptance Checklist

  • Ada baseline metrik tersimpan.
  • Setiap eksperimen punya report tabel.
  • Keputusan deploy berdasarkan data, bukan observasi visual saja.

Next Steps

On this page