Bagaimana cara menghitung peta untuk tugas deteksi untuk Tantangan PASCAL VOC?

22

Bagaimana cara menghitung peta (rata-rata Presisi Rata-Rata) untuk tugas deteksi untuk papan peringkat Pascal VOC? http://host.robots.ox.ac.uk:8080/leaderboard/displaylb.php?challengeid=11&compid=4

Di sana dikatakan - di halaman 11 : http://homepages.inf.ed.ac.uk/ckiw/postscript/ijcv_voc09.pdf

Rata-Rata Presisi (AP). Untuk tantangan VOC2007, presisi rata-rata yang diinterpolasi (Salton dan Mcgill 1986) digunakan untuk mengevaluasi klasifikasi dan deteksi. Untuk tugas dan kelas yang diberikan, kurva presisi / recall dihitung dari output peringkat metode. Penarikan kembali didefinisikan sebagai proporsi dari semua contoh positif yang diberi peringkat di atas peringkat yang diberikan. Presisi adalah proporsi dari semua contoh di atas peringkat yang berasal dari kelas positif. AP merangkum bentuk kurva presisi / recall, dan didefinisikan sebagai presisi rata-rata pada set sebelas level ingat dengan spasi sama [0,0.1, ..., 1]: AP = 1/11 ∑ r∈{0,0.1,...,1} pinterp(r)

Presisi pada setiap tingkat penarikan r diinterpolasi dengan mengambil presisi maksimum yang diukur untuk suatu metode yang melebihi daya ingat yang sesuai pinterp(r) = max p(r˜):, di mana p (r˜) adalah presisi yang diukur pada saat penarikan.

Tentang mAP: http://0agr.ru/wiki/index.php/Precision_and_Recall#Average_Precision


Jadi apakah ini berarti:

  1. Kami menghitung Presisi dan Ingat :

    • A) Untuk banyak perbedaanIoU > {0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1} kita menghitung nilai Benar / Salah Positif / Negatif

    Di mana True positive = Number_of_detection with IoU > {0, 0.1,..., 1}, seperti yang dikatakan di sini: /datascience//a/16813/37736 dan kemudian kami menghitung:

    Precision = True positive / (True positive + False positive)

    Recall = True positive / (True positive + False negative)


  • B) Atau untuk berbagai ambang batas algoritma pendeteksian kami menghitung:

    Precision = True positive / (True positive + False positive)

    Recall = True positive / (True positive + False negative)

    Dimana True positive = Number_of_detection with IoU > 0.5seperti yang dikatakan di sini: /programming//a/43168882/1558037



  1. Kemudian kita membangun kurva Precision-Recall , seperti yang ditunjukkan di sini: masukkan deskripsi gambar di sini

  1. Kemudian kita menghitung AP (rata-rata presisi) sebagai rata-rata 11 nilaiPrecision pada titik di mana Recall = {0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1}, yaituAP = 1/11 ∑ recall∈{0,0.1,...,1} Precision(Recall)

(Secara umum untuk setiap titik, misalnya 0,3, kita mendapatkan MAX Presisi untuk Panggilan Kembali <= 0,3, alih-alih nilai Presisi pada titik ini Panggilan Kembali = 0,3)


  1. Dan ketika kita menghitung AP hanya untuk 1 objek kelas sesuatu pada semua gambar - maka kita mendapatkan AP (presisi rata-rata) untuk kelas ini, misalnya, hanya untuk air.

Jadi AP adalah integral (area di bawah kurva): /stats//a/157019/111998

Tetapi ketika kita menghitung AP untuk semua kelas objek pada semua gambar - maka kita mendapatkan peta (rata-rata presisi rata-rata) untuk semua dataset gambar, misalnya, 88.6untuk R4D_faster_rcnn: http://host.robots.ox.ac.uk:8080/leaderboard /displaylb.php?challengeid=11&compid=4


Pertanyaan:

  1. Apakah benar, dan jika tidak, maka bagaimana cara menghitung peta untuk Pascal VOC Challenge?
  2. Dan yang mana dari 3 rumus (A, B atau C) yang benar untuk menghitung Presisi dan Ingat, dalam paragraf 1?

Jawaban singkat:

  • mAP = AVG (AP untuk setiap kelas objek)
  • AP = AVG (Presisi untuk masing-masing 11 Recall {presisi = 0, 0,1, ..., 1})
  • PR-curve = Precision and Recall (untuk masing-masing Ambang yang ada di dalam kotak terikat Prediksi)
  • Presisi = TP / (TP + FP)
  • Ingat kembali = TP / (TP + FN)
  • TP = jumlah deteksi dengan IoU> 0,5
  • FP = jumlah deteksi dengan IoU <= 0,5 atau terdeteksi lebih dari sekali
  • FN = jumlah objek yang tidak terdeteksi atau terdeteksi dengan IoU <= 0,5
Alex
sumber

Jawaban:

15

Untuk menjawab pertanyaan Anda:

  1. Ya, pendekatan Anda benar
  2. Dari A, B, dan C jawaban yang benar adalah B.

Penjelasannya adalah sebagai berikut: Untuk menghitung Mean Average Precision (mAP) dalam konteks Object Detection Anda harus menghitung Average Precision (AP) untuk setiap kelas, dan kemudian menghitung mean di semua kelas. Kuncinya di sini adalah untuk menghitung AP untuk setiap kelas, secara umum untuk menghitung Precision (P) dan Recall (R), Anda harus mendefinisikan apa yang: True Positive (TP), False Positive (FP), True Negative (TN) dan False Negatif (FN). Dalam pengaturan Obyek Deteksi Pascal VOC Challenge adalah sebagai berikut:

  • TP: adalah Bounding Boxes (BB) bahwa persimpangan atas persatuan (IoU) dengan ground truth (GT) di atas 0,5
  • FP: BB bahwa IoU dengan GT di bawah 0,5 juga BB yang memiliki IoU dengan GT yang telah terdeteksi.
  • TN: tidak ada benar negatif, gambar diharapkan mengandung setidaknya satu objek
  • FN: gambar-gambar itu adalah metode gagal menghasilkan BB

Sekarang setiap BB yang diprediksi memiliki nilai kepercayaan untuk kelas yang diberikan. Jadi metode penilaian mengurutkan prediksi untuk mengurangi tingkat kepercayaan dan menghitung P = TP / (TP + FP) dan R = TP / (TP + FN) untuk setiap peringkat yang mungkin k = 1 hingga jumlah prediksi. Jadi sekarang Anda memiliki (P, R) untuk setiap peringkat, P dan R itu adalah kurva Recall-Recall "mentah". Untuk menghitung kurva PR terinterpolasi untuk setiap nilai R Anda pilih P maksimum yang memiliki R '> = R.

Ada dua cara berbeda untuk mengambil sampel titik kurva PR menurut voc devkit doc . Untuk Tantangan VOC sebelum 2010, kami memilih P maksimum yang diperoleh untuk R '> = R, yang R adalah 0, 0,1, ..., 1 (sebelas poin). AP kemudian presisi rata-rata di masing-masing ambang Panggil. Untuk VOC Challenge 2010 dan setelahnya, kami masih memilih P maksimum untuk setiap R '> = R, sementara R milik semua nilai recall unik (termasuk 0 dan 1). AP kemudian ukuran area di bawah kurva PR. Perhatikan bahwa dalam kasus Anda tidak memiliki nilai P dengan Ingat di atas beberapa ambang batas, nilai Presisi adalah 0.

Sebagai contoh, pertimbangkan output metode berikut yang diberikan kelas "Pesawat":

BB  | confidence | GT
----------------------
BB1 |  0.9       | 1
----------------------
BB2 |  0.9       | 1
----------------------
BB3 |  0.7       | 0
----------------------
BB4 |  0.7       | 0
----------------------
BB5 |  0.7       | 1
----------------------
BB6 |  0.7       | 0
----------------------
BB7 |  0.7       | 0
----------------------
BB8 |  0.7       | 1
----------------------
BB9 |  0.7       | 1
----------------------

Selain itu tidak terdeteksi kotak pembatas dalam dua gambar, jadi kami memiliki FN = 2. Tabel sebelumnya adalah peringkat yang diurutkan berdasarkan nilai kepercayaan dari prediksi metode GT = 1 berarti adalah TP dan GT = 0 FP. Jadi TP = 5 (BB1, BB2, BB5, BB8 dan BB9), FP = 5. Untuk kasus peringkat = 3 presisi turun karena BB1 sudah terdeteksi, jadi bahkan jika objek itu memang ada itu dianggap sebagai FP. .

rank=1  precision=1.00 and recall=0.14
----------
rank=2  precision=1.00 and recall=0.29
----------
rank=3  precision=0.66 and recall=0.29
----------
rank=4  precision=0.50 and recall=0.29
----------
rank=5  precision=0.40 and recall=0.29
----------
rank=6  precision=0.50 and recall=0.43
----------
rank=7  precision=0.43 and recall=0.43
----------
rank=8  precision=0.38 and recall=0.43
----------
rank=9  precision=0.44 and recall=0.57
----------
rank=10 precision=0.50 and recall=0.71
----------

Diberikan hasil sebelumnya: Jika kita menggunakan cara sebelum voc2010, nilai-nilai presisi yang diinterpolasi adalah 1, 1, 1, 0,5, 0,5, 0,5, 0,5, 0,5, 0, 0, 0. Kemudian AP = 5,5 / 11 = 0,5 untuk kelas "Pesawat Terbang". Lain jika kita menggunakan cara sejak voc2010, nilai Precision yang diinterpolasi adalah 1, 1, 1, 0,5, 0,5, 0,5, 0 untuk tujuh penarikan unik yaitu 0, 0,14, 0,29, 0,43, 0,57, 0,71, 1.Lalu AP = (0.14-0) * 1 + (0.29-0.14) * 1 + (0.43-0.29) * 0.5 + (0.57-0.43) * 0.5 + (0.71-0.57) * 0.5 + (1-0.71) * 0 = 0.5 untuk kelas "Pesawat Terbang".

Ulangi untuk setiap kelas dan kemudian Anda memiliki (peta).

Informasi lebih lanjut dapat ditemukan di tautan berikut 1 , 2 . Anda juga harus memeriksa makalah: Tantangan Kelas Objek Visual PASCAL: A Retrospektif untuk penjelasan yang lebih rinci.

feynman410
sumber
1
Sama-sama! Ya, Anda harus menghitung semua gambar. Dan GT adalah 1 jika IoU> 0,5. FN terakhir adalah 3 untuk 3 objek yang tidak terdeteksi
feynman410
1
FN adalah jumlah gambar yang tidak ada prediksi dibuat, FP adalah jumlah deteksi dengan IoU <= 0,5 atau terdeteksi lebih dari sekali. Lihat pseudocode ini stats.stackexchange.com/a/263758/140597
feynman410
1
Maaf, hak Anda adalah objek nomor yang tidak terdeteksi.
feynman410
1
@ feynman410 saya jadi bingung, bisakah Anda memberi tahu kami di mana Anda menempatkan objek di tabel yang tidak terdeteksi, tetapi seharusnya? di ujung meja? (Karena tidak ada skor untuk mereka)
Martin Brišiak
1
Jadi "Precision" dan "Recall" dihitung secara terpisah untuk setiap kelas - untuk menghitung AP per kelas. Baik? Jadi apakah mereka dihitung secara terpisah pada setiap gambar dan kemudian dirata-ratakan, atau mereka dihitung atas total deteksi pada semua gambar?
SomethingSomething