yolov3 map、recall、p-r曲线可视化超详细

1 、运行darknet官方代码中的detector valid指令,生成对测试集的检测结果。
.\darknet detector valid -out “”

其中voc.data和cfg文件就是你当时训练用的配置文件,weights文件就是你训练出来的结果,其中需要修改的是voc.data文件,其中应该是有五行的,其中第三行是valid就是需要验证测试集的路径。
2、执行完之后应该会在程序的当前目录生成一个results文件夹,里面存有检测结果,文件名为comp4_det_test_<你检测的类名>.txt,画风如下所示。
在这里插入图片描述
txt中数据格式为: 文件名 置信度 x y w h。
3、下载检测用脚本文件 reval_voc_py.py和voc_eval_py.py
https://download.csdn.net/download/qq_33350808/10731748
这个老哥提供的,需要积分哦,如果没积分可以联系我,我给你们发。[email protected]。记得点赞,感谢。

4、 使用reval_voc_py.py计算出mAP值并且生成pkl文件,命令行如下(这是我自己的命令行你们根据自己的修改即可):
python reval_voc_py3.py --voc_dir /extdisk/yolov3new/darknet/scripts/VOCdevkit --year 2019 --image_set test --classes /extdisk/yolov3new/darknet/data/voc.names /extdisk/yolov3new/darknet/visualization/mapout
5、用matplotlib绘制PR曲线
在得到pkl文件目录里直接创建一个python文件,比如PR_draw.py,内容如下,记得把第三行里的参数修改一下。

import _pickle as cPickle
import matplotlib.pyplot as plt
fr = open(‘lebro_pr.pkl’,‘rb’)#这里open中第一个参数需要修改成自己生产的pkl文件
inf = cPickle.load(fr)
fr.close()

x=inf[‘rec’]
y=inf[‘prec’]
plt.figure()
plt.xlabel(‘recall’)
plt.ylabel(‘precision’)
plt.title(‘PR cruve’)
plt.plot(x,y)
plt.show()

print(‘AP:’,inf[‘ap’])

###然后运行python PR_draw.py,就会生成想要的东东哦!

yolov3 map、recall、p-r曲线可视化超详细_第1张图片填坑!
1、如果在进行步骤4出现“R = [obj for obj in recs[imagename] if obj[‘name’] == classname],KeyError: ‘4900’"这种错误是因为/…/VOCdevkit/annotations_cache里面的文件没有删除,delete即可。
2、要在Main文件下面新建一个test.txt文件将val文件的内容拷贝进去。
部分参考https://blog.csdn.net/qq_33350808/article/details/83178002,感谢。

你可能感兴趣的:(其他)