Rata-Rata Presisi dalam Deteksi Objek

8

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:

  1. Apakah TP + FP = # prediksi dibuat untuk setiap gambar?

  2. Karena semua gambar uji tidak memiliki negatif, TP + FN = 500?

  3. Apakah dihitung per gambar, atau per kelas?

  4. 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.

Pengguna1915
sumber
Repositori github saya memiliki penjelasan tentang IOU, Precision, Recall, Average Precision, dan mAP. Ini juga memiliki kode yang mengevaluasi setiap detektor objek.
Rafael Padilla

Jawaban:

7

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: SebuahHaibhalbt

SebuahHai=SEBUAHreSebuah(bhalbt)SEBUAHreSebuah(bhalbt)

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 ...]

Li haonan
sumber
sungguh penjelasan sederhana yang hebat
Amitai
7

Ini adalah cara bagaimana PASCOL-VOC 2012 dan MS-COCO menghitung mAP, kode pseudo sebagai berikut:

For each single class of object,

iterate through entire list of predictions for all images

TP = [0] * number of predictions
NP = [0] * number of predictions

for i, prediction in enumerate(predictions): # sorted by prediction confidence, descended

    try to find the ground truth with same class and largest IoU:

        if IoU > threshold(0.5 in PASCOL VOC 2012)

            if ground truth has not been assigned yet:

                assign this ground truth to the prediction
                TP[i] = 1      

        else: # corresponding ground truth has been assigned or IoU < threshold
            FP[i] = 1

    not find:
        FP[i] = 1

then calculate FN = number of unassigned ground truth

Precision = TP/(TP+FP)
Recall = TP/(TP+FN)

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

Pengguna1915
sumber
bagaimana jika kotak prediksi tumpang tindih dengan dua objek groundtruth, untuk objek mana Anda menguji tumpang tindih?
Penasaran
1
AP = TP/(TP+FP)salah. Sebaliknya Precision = TP/(TP+FP),.
Franck Dernoncourt
Ini sepenuhnya salah. Ketepatan rata-rata dihitung dengan cara ini sebagai gantinya: medium.com/@jonathan_hui/…
Curious
3

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:

masukkan deskripsi gambar di sini

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:

masukkan deskripsi gambar di sini

Contoh perhitungan IoU pada gambar aktual:

masukkan deskripsi gambar di sini

( sumber gambar )

FYI: Presisi Rata-Rata Rata-Rata vs Peringkat Timbal Balik Berarti

Franck Dernoncourt
sumber
0

Meskipun @ User1915 telah menemukan jawabannya sendiri, saya ingin meninggalkan sesuatu untuk yang tertarik.

Inilah jawaban saya untuk pertanyaan di atas:

T1: Apakah TP + FP = # prediksi dibuat untuk setiap gambar?

Iya. ( Karena jumlah TP terbatas, semakin banyak prediksi yang Anda buat, semakin rendah presisi yang Anda dapatkan. )

T2: Karena semua gambar uji tidak memiliki negatif, TP + FN = 500?

Iya. ( Karena hanya ada satu kotak kebenaran tanah per gambar )

T3: Apakah dihitung per gambar, atau per kelas?

Per kelas.

T4: 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).

Lihat posting @ User1915 di atas.

Response777
sumber