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:
Kami menghitung Presisi dan Ingat :
- A) Untuk banyak perbedaan
IoU
> {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)
- A) Untuk banyak perbedaan
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.5
seperti yang dikatakan di sini: /programming//a/43168882/1558037
C) Atau untuk berbagai ambang batas algoritma pendeteksian kami menghitung:
Precision = Intersect / Detected_box
Recall = Intersect / Object
Seperti yang ditunjukkan di sini? https://en.wikipedia.org/wiki/Precision_and_recall
- Kemudian kita menghitung AP (rata-rata presisi) sebagai rata-rata 11 nilai
Precision
pada titik di manaRecall = {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)
- 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.6
untuk R4D_faster_rcnn: http://host.robots.ox.ac.uk:8080/leaderboard /displaylb.php?challengeid=11&compid=4
Pertanyaan:
- Apakah benar, dan jika tidak, maka bagaimana cara menghitung peta untuk Pascal VOC Challenge?
- 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