Saya cukup bingung bagaimana saya bisa menghitung nilai AP atau mAP karena tampaknya ada beberapa metode yang berbeda. Saya secara khusus ingin mendapatkan nilai AP / mAP untuk deteksi objek.
Yang saya tahu pasti adalah:
Ingat = TP / (TP + FN), Presisi = TP / (TP + FP)
Misalnya, jika saya hanya memiliki 1 kelas untuk mengevaluasi, dan mengatakan 500 gambar uji. Setiap gambar uji mungkin memiliki jumlah prediksi yang berbeda (proposal kotak pembatas) tetapi setiap gambar hanya memiliki satu kotak pembatas tanah-kebenaran.
Gambar 1: [kelas, probabilitas, x1, y1, x2, y2], [kelas, probabilitas, x3, y3, x4, y4], [kelas, probabilitas, x5, y5, x5, y6], [kelas, probabilitas, x7, y7, x8, y8], ...
Gambar 2: [kelas, probabilitas, x1, y1, x2, y2], [kelas, probabilitas, x3, y3, x4, y4], ...
. . . (dan seterusnya)
* hanya sebuah contoh, saya mengada-ada
Saya tahu bahwa untuk mendapatkan TP, kita harus menemukan IOU dari setiap prediksi dan menghitung yang di atas ambang batas yang dipilih seperti 0,5 (jika kita memiliki beberapa prediksi dengan IOU di atas ambang batas, apakah kita hanya menghitung satu kali dan memperlakukan yang lain sebagai FP?).
Di sinilah tempat itu membingungkan saya:
Apakah TP + FP = # prediksi dibuat untuk setiap gambar?
Karena semua gambar uji tidak memiliki negatif, TP + FN = 500?
Apakah dihitung per gambar, atau per kelas?
Bisakah seseorang memberi tahu saya panduan langkah demi langkah untuk mendapatkan AP / MAP berdasarkan contoh saya? Saya menemukan bagian yang paling ambigu adalah apakah kita melakukannya per gambar, atau per kelas (yaitu 500 gambar sekaligus).
Sebagian besar panduan / makalah yang saya temukan sangat bertarget pencarian informasi. Sangat menghargai bantuan dalam hal ini.
* Catatan: Saya mengujinya pada beberapa dataset khusus. Saya tahu PASCAL VOC memiliki beberapa kode untuk melakukannya, tetapi saya ingin menulis kode sendiri, disesuaikan dengan data saya sendiri.
sumber
Jawaban:
Saya pikir jawaban yang diterima mengarahkan cara yang salah untuk menghitung peta. Karena bahkan untuk setiap kelas, AP adalah produk rata-rata. Dalam jawaban saya, saya masih akan memasukkan interpretasi IOU sehingga pemula tidak akan memiliki kesulitan untuk memahaminya.
Untuk tugas tertentu dari deteksi objek, peserta akan menyerahkan daftar kotak pembatas dengan keyakinan (probabilitas yang diprediksi) dari masing-masing kelas. Untuk dianggap sebagai deteksi yang valid, proporsi area tumpang tindih antara kotak terikat yang diperkirakan dan ground true bounding untuk keseluruhan area harus melebihi 0,5. Rumus yang sesuai adalah:SebuahHai bhal bt
Setelah kami menyaring daftar kotak terikat prediksi valid , maka kami akan mengevaluasi setiap kelas sebagai masalah dua kelas secara mandiri. Jadi untuk proses evaluasi khas kelas 'manusia'. Pertama-tama kita dapat mencantumkan kotak pembatas ini sebagai berikut:M. M.
Indeks Objek, Keyakinan, kebenaran dasar
Bounding Box 1, 0.8, 1
Bounding Box 1, 0.7, 1
Bounding Box 2, 0.1, 0
Bounding Box 3, 0.9, 1
Dan kemudian, Anda perlu peringkat mereka dengan kepercayaan dari tinggi ke rendah. Setelah itu, Anda hanya perlu menghitung kurva PR seperti biasa dan mencari 11 hasil presisi yang diinterpolasi pada 11 titik penarikan ini sama dengan [0, 0,1, ..., 1]. (Metode perhitungan rinci ada di sini ) Layak disebutkan untuk beberapa deteksi kotak pembatas tunggal, misalnya kotak pembatas 1 dalam contoh saya, paling banyak kami akan menghitungnya sebagai benar satu kali dan semua lainnya sebagai Salah. Kemudian Anda beralih melalui 20 kelas dan menghitung rata-rata dari mereka. Maka Anda mendapatkan peta Anda.
Dan juga, untuk sekarang kita sedikit memutar metode ini untuk menemukan peta kita. Alih-alih menggunakan 10 break point dari recall, kita akan menggunakan jumlah sebenarnya K dari kelas tertentu dan menghitung pre-interpolasi. yaitu [0,1 / K, 2 / K ...]
sumber
Ini adalah cara bagaimana PASCOL-VOC 2012 dan MS-COCO menghitung mAP, kode pseudo sebagai berikut:
Untuk mendapatkan AP, pertama untuk memperlancar kurva PR, lalu hitung area di bawah kurva. Untuk mendapatkan peta, ulangi langkah-langkah di atas untuk semua kelas dan rata-rata.
Referensi:
Versi Python dari PASCOL VOC 2012 Metrik Evaluasi: https://github.com/Cartucho/mAP
Toolkit PASCOL VOC 2012 Asli (dalam MATLAB): https://github.com/Cartucho/mAP
MSCOCO asli: http://cocodataset.org/#detection-eval
sumber
AP = TP/(TP+FP)
salah. SebaliknyaPrecision = TP/(TP+FP)
,.Kuliah "Evaluasi 12: rata-rata presisi rata-rata" Victor Lavrenko berisi slide yang menjelaskan dengan sangat jelas apa itu Average Average (AP) dan Average Precision (mAP) untuk kasus pengambilan dokumen:
Untuk menerapkan slide ke deteksi objek: dokumen yang relevan = kotak terikat diprediksi yang IOU nya sama atau di atas ambang tertentu (biasanya 0,5).
IoU = Intersection over Union, lihat gambar di bawah ini untuk definisi visual:
Contoh perhitungan IoU pada gambar aktual:
( sumber gambar )
FYI: Presisi Rata-Rata Rata-Rata vs Peringkat Timbal Balik Berarti
sumber
Meskipun @ User1915 telah menemukan jawabannya sendiri, saya ingin meninggalkan sesuatu untuk yang tertarik.
Inilah jawaban saya untuk pertanyaan di atas:
Iya. ( Karena jumlah TP terbatas, semakin banyak prediksi yang Anda buat, semakin rendah presisi yang Anda dapatkan. )
Iya. ( Karena hanya ada satu kotak kebenaran tanah per gambar )
Per kelas.
Lihat posting @ User1915 di atas.
sumber