Lensa ML

Object Detection

Langkah 1 dari 6: Klasifikasi vs Deteksi

Dari label ke bounding box

Jumlah Objek1
Kucing (98.2%)Image Classification: satu label per gambar
Objek
1
Mode
Klasifikasi
Output
1 label

Klasifikasi memberi satu label untuk seluruh gambar. Klasifikasi menjawab "ini apa?", tetapi tidak menjawab "di mana letaknya?"

Geser Jumlah Objek dari 1 sampai 5. Untuk setiap objek, detektor menghasilkan label kelas, skor confidence, dan satu kotak, biasanya empat angka seperti (x_min, y_min, x_max, y_max) atau titik tengah dengan lebar dan tinggi. Jumlah objek berubah dari gambar ke gambar, jadi detektor memprediksi kandidat kotak dalam jumlah besar yang tetap, lalu menyaringnya. Itulah isi langkah-langkah berikutnya. Segmentation melangkah lebih jauh dengan memberi label pada setiap pixel. Benchmark standarnya adalah COCO, dengan 80 kelas objek.

Langkah 2 dari 6: Anchor Box

Bentuk acuan yang sudah ditentukan pada grid

Anchor per Sel1
Total 12 anchor pada grid 4x3
Anchor / sel
1
Sel grid
12
Total anchor
12

Dengan 1 anchor persegi per sel, hanya objek yang kira-kira persegi yang mendapat kecocokan dekat. Objek yang tinggi atau lebar bisa terlewat.

Geser Anchor per Sel dari 1 sampai 4. Setiap anchor adalah kotak acuan dengan posisi, ukuran, dan rasio aspek yang tetap. Untuk setiap anchor, network memprediksi apakah ada objek di dalamnya dan bagaimana menyesuaikannya. Faster R-CNN memakai 9 anchor per lokasi (3 skala × 3 rasio aspek), jadi feature map 60×40 menghasilkan lebih dari 20.000 anchor. Saat training, sebuah anchor dihitung positif kalau IoU-nya dengan kotak ground truth melewati threshold, yaitu 0,7 di Faster R-CNN. Detektor anchor-free seperti FCOS dan CenterNet memprediksi kotak dari titik.

Langkah 3 dari 6: Bounding Box Regression

Menyempurnakan posisi anchor agar cocok dengan objek

Regression Offset0.00
Ground TruthAnchorPrediksi
Offset
0.00
IoU
0.000
dx
0px

Kotak prediksi masih dekat dengan anchor. Butuh offset yang lebih besar untuk mencapai ground truth.

Geser Regression Offset dari 0 sampai 1. Detektor tidak memprediksi koordinat pixel mentah. Faster R-CNN memprediksi t_x = (x − x_a)/w_a, t_y = (y − y_a)/h_a, t_w = log(w/w_a), dan t_h = log(h/h_a), yaitu offset yang diskalakan dengan ukuran anchor, sehingga weight yang sama bisa dipakai untuk kotak kecil maupun besar. Training memakai smooth L1 loss pada offset ini atau loss berbasis IoU seperti GIoU. Pada offset 0, IoU tepat 0 karena kedua kotak hanya bersentuhan, dan IoU biasa tidak memberi gradient pada kondisi itu.

Langkah 4 dari 6: Confidence dan Skor Kelas

Menyaring deteksi berdasarkan confidence

Confidence Threshold0.30
Kucing 0.95Anjing 0.87Burung 0.62Mobil 0.41Pohon 0.28Sepeda 0.15Orang 0.73Threshold 0.30: 5 tetap, 2 dibuang. Kotak putus-putus adalah false positive.
Tetap
5
Dibuang
2
Precision
0.80
Recall
0.80

Pada threshold 0,30, deteksi yang lemah tersaring. Ini menyeimbangkan precision (0,80) dan recall (0,80).

Geser Confidence Threshold dari 0 sampai 1 pada tujuh deteksi, dengan skor 0,15 sampai 0,95. Di YOLO, skor sebuah kotak adalah objectness dikali probabilitas kelas, jadi sebuah kotak bisa yakin ada sesuatu di sana tetapi ragu apa itu. Mengubah threshold dari rendah ke tinggi menghasilkan kurva precision-recall, dan luas di bawahnya adalah average precision (AP). Metrik utama COCO merata-ratakan AP pada 80 kelas dan pada threshold IoU dari 0,5 sampai 0,95. Dua dari tujuh kotak, Burung dan Pohon, adalah false positive, jadi pada threshold bawaan 0,30, precision adalah 4 dari 5 kotak yang dipertahankan, 0,80, dan recall adalah 4 dari 5 objek nyata, juga 0,80.

Langkah 5 dari 6: Non-Maximum Suppression

Membuang deteksi duplikat

IoU Threshold0.50
0.950.820.680.910.74IoU(kotak1, kotak2) = 0.680, threshold = 0.50
IoU threshold
0.50
Kotak input
5
Tersisa
2

NMS mempertahankan kotak dengan confidence tertinggi dan membuang tetangganya yang punya IoU di atas 0,50. Duplikat dari objek yang sama hilang, dan objek yang terpisah tetap ada.

Geser IoU Threshold dari 0,1 sampai 0,9. NMS mengurutkan kotak berdasarkan confidence, mempertahankan yang teratas, menghapus setiap kotak lain yang IoU-nya dengan kotak itu sama dengan atau di atas threshold, lalu mengulanginya. Kotak 1 (0,95) dan kotak 2 (0,82) punya IoU 0,680, jadi kotak 2 terhapus pada 0,5 dan dipertahankan setelah threshold melewati 0,68. Dua objek nyata yang sangat tumpang tindih, seperti orang di tengah kerumunan, bisa keliru terhapus. Soft-NMS menurunkan skornya alih-alih menghapus, dan DETR sama sekali tidak butuh NMS.

Langkah 6 dari 6: Single-Stage vs Two-Stage

Trade-off YOLO vs Faster R-CNN

Campuran Arsitektur (YOLO ↔ Faster R-CNN)0.00
YOLO (Single-Stage)Satu forward passFaster R-CNN (Two-Stage)RPNClassifierKucingAnjingMobilUsulkan → KlasifikasikanCepat / Kurang Akuratangka ilustratifLambat / Lebih Akurat
Arsitektur
1 tahap
Kecepatan (FPS)
50
mAP
33.0%

Detektor single-stage seperti YOLO memprediksi bounding box dan kelas dalam satu pass pada grid. Hasilnya cepat (~50 FPS), tetapi akurasi pada objek kecil bisa berkurang.

Geser slider Campuran Arsitektur dari YOLO ke Faster R-CNN. Angka FPS dan mAP hanya ilustrasi, bukan hasil benchmark. Faster R-CNN (Ren dkk., 2015) memakai satu backbone bersama untuk region proposal network dan tahap kedua yang mengklasifikasikan dan menyempurnakan setiap proposal. YOLO (Redmon dkk., 2016) memperlakukan deteksi sebagai satu regression pada grid dan berjalan pada 45 frame per detik. Selisihnya kini menyempit: focal loss di RetinaNet membuat detektor single-stage menyamai akurasi two-stage dengan mengurangi pengaruh banyak anchor latar belakang yang mudah.

Apa itu object detection?

Object detection adalah tugas computer vision untuk menemukan setiap objek yang dicari dalam gambar, lalu mengembalikan bounding box, label kelas, dan skor confidence untuk masing-masing objek. Tugas ini menggabungkan klasifikasi, yang menjawab apa isi gambar, dengan lokalisasi, yang menjawab di mana letaknya.

Deteksi dipakai di persepsi mobil swakemudi, pengenalan pejalan kaki dan rambu lalu lintas, pemantauan rak toko, pencitraan medis untuk menemukan nodul atau lesi, dan pencarian foto. Sebagian besar detektor punya bagian yang sama: backbone CNN atau transformer, sekumpulan kandidat kotak seperti anchor, head yang memberi skor dan menyempurnakan setiap kandidat, dan non-maximum suppression untuk membuang duplikat.

Ide utama

  • Detektor menghasilkan kotak, label kelas, dan skor confidence untuk setiap objek.
  • Anchor adalah kotak acuan dengan posisi, ukuran, dan rasio aspek yang tetap.
  • Network memprediksi offset dari setiap anchor, diskalakan dengan ukurannya, bukan koordinat mentah.
  • IoU, yaitu luas irisan dibagi luas gabungan, mengukur seberapa cocok dua kotak.
  • Non-maximum suppression mempertahankan kotak dengan skor tertinggi dan membuang duplikat yang tumpang tindih.
  • Detektor single-stage lebih cepat, sedangkan detektor two-stage menyempurnakan region proposal di langkah kedua.

Pertanyaan umum

Apa bedanya object detection dan image segmentation?

Deteksi menggambar persegi panjang di sekeliling setiap objek. Segmentation memberi label pada setiap pixel, sehingga menangkap bentuk yang persis. Instance segmentation menggabungkan keduanya: Mask R-CNN menambahkan cabang mask ke detektor Faster R-CNN dan menghasilkan mask pixel di dalam setiap kotak.

Bagaimana cara melatih detektor pada dataset sendiri?

Mulai dari detektor yang sudah di-pretrain pada COCO, lalu fine-tune dengan gambar berlabel milikmu, dengan mempertahankan backbone dan mengganti head kelasnya. Setiap gambar butuh kotak dan kelas untuk setiap objek, biasanya disimpan dalam format COCO JSON atau teks YOLO. Dengan transfer learning, beberapa ratus gambar berlabel per kelas sudah memberi hasil yang bisa dipakai untuk banyak tugas.

Kenapa objek kecil sulit dideteksi?

Backbone CNN memperkecil gambar 16 atau 32 kali, sehingga objek 20×20 pixel hanya menempati satu atau dua sel di feature map terakhir. Feature Pyramid Network (Lin dkk., 2017) mengatasi sebagian besar masalah ini dengan mendeteksi dari beberapa resolusi sekaligus. Resolusi input yang lebih tinggi dan memecah gambar besar menjadi potongan juga membantu.

Apa itu DETR?

DETR (Carion dkk., 2020) adalah detektor transformer yang langsung memprediksi sekumpulan kotak berukuran tetap. Saat training, Hungarian matching memasangkan setiap objek ground truth dengan satu prediksi, sehingga model belajar menghindari duplikat. DETR tidak butuh anchor dan tidak butuh NMS.

Penjelasan terkait

Referensi

  1. Ren, He, Girshick & Sun (2015), "Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks"
  2. Redmon et al. (2016), "You Only Look Once: Unified, Real-Time Object Detection", CVPR
  3. Lin et al. (2017), "Focal Loss for Dense Object Detection" (RetinaNet)
  4. Carion et al. (2020), "End-to-End Object Detection with Transformers" (DETR)
  5. Rezatofighi et al. (2019), "Generalized Intersection over Union", CVPR

Terakhir diperbarui