mAP計算

SSD計算mAP值

https://github.com/weiliu89/caffe

3種計算方法:

參考文獻: https://sanchom.wordpress.com/tag/average-precision/

mAP = 相鄰召回率的間隔*準確率;   #其實就是離散函數積分求面積

 

11point只用到準確率,11-point interpolated average precision,默認召回率的間隔是{0,0.1, 0.2, …, 0.9, 1.0},VOC2007 style for computing AP.

MaxIntegral使用準確率、召回率;VOC2012or ILSVRC style for computing AP. 召回率的間隔是從後往前計算。

Integral與MaxIntegral差不多,只是從前往後計算;爲默認參數

 

源碼位置: caffe/src/caffe/util/ ComputeAP()

 

需要修改solver.prototxt中的參數:

                   eval_type:"detection"             #統計整體的mAP值

                   ap_version:"11point"               #計算mAP值的方式不同,

                   show_per_class_result:true #統計每個類的mAP值

 

Faster-RCNN計算mAP值

https://github.com/rbgirshick/py-faster-rcnn

調用位置:lib/datasets/pascal_voc.py

如果使用參數'matlab_eval',則使用matlab版計算mAP值。

Python版本:

源碼位置: lib/datasets/voc_eval.py

         voc_eval(detpath,

            annopath,

            imagesetfile,

            classname,

            cachedir,

            ovthresh=0.5,

             use_07_metric=False) #是否使用voc07 11點計算mAP (true爲使用11點計算mAP,false爲對應的SSD中的MaxIntegral方式計算mAP值)

最終調用函數: ap =voc_ap(rec, prec, use_07_metric)

matlab版本:

lib\datasets\VOCdevkit-matlab-wrapper\voc_eval.m

函數: [recall, prec,ap] = VOCevaldet(VOCopts, comp_id,cls, true); 

源碼位置:VOCdevkit/VOCcode/VOCevaldet.m  只使用11點計算mAP

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章