天天看点

yolov4 绘制pr曲线1.使用官方文件生成results文件2 计算map并生成pkl文件3 生成结果4 绘制PR曲线

@yolov4绘制PR曲线

1.使用官方文件生成results文件

./darknet detector valid cfg/my_data.data cfg/my_yolov4-1.cfg my_yolov4-1_best.weights 
           

.data

.cfg

为训练文件

生成结果为:

yolov4 绘制pr曲线1.使用官方文件生成results文件2 计算map并生成pkl文件3 生成结果4 绘制PR曲线

文件内容:

2008_005191 0.191751 2.473677 31.203362 17.352085 62.292465
2008_005191 0.002859 1.000000 39.158432 13.162245 58.505882
2008_005191 0.001998 255.024567 170.681717 386.210968 375.000000
2008_005191 0.001937 6.476545 34.096401 23.312424 59.345867
2008_005191 0.001746 1.000000 35.280834 5.867074 62.669323
2008_005191 0.001653 1.000000 27.332476 25.858921 66.537560
2011_003183 0.001371 169.078018 208.129974 246.324936 330.365021
2008_003290 0.001018 134.131500 162.789154 292.654816 500.000000
2008_005150 0.001702 86.854378 228.454712 207.167877 375.000000
           

其中txt中数据格式为: 文件名 置信度 x y w h。

2 计算map并生成pkl文件

运行

reval_voc_py3.py

文件

运行命令:

python3 reval_voc_py3.py --voc_dir /media/hkd/f22a2591-f8d6-4a4e-b02c-1ed94ed27262/dell/wuyahui/yolov4/darknet-master/build/darknet/x64/myData --image_set test --classes /media/hkd/f22a2591-f8d6-4a4e-b02c-1ed94ed27262/dell/wuyahui/yolov4/darknet-master/build/darknet/x64/myData/myData.names test
           

其中:

  1. –voc_dir为数据集路径
  2. 年份为数据集文件夹时间 VOC2012
  3. 验证集文件名test.txt \VOC2017\ImageSets\Main
  4. 类名文件 my_Data.names
  5. 输出文件夹名 test

3 生成结果

1.将results文件放入

reval_voc_py3.py

同级文件夹下

2.在同级文件夹下建立test文件

3.运行上述命令,生成结果如图所示

yolov4 绘制pr曲线1.使用官方文件生成results文件2 计算map并生成pkl文件3 生成结果4 绘制PR曲线

4 绘制PR曲线

import _pickle as cPickle
import matplotlib.pyplot as plt

fr1= open('/media/hkd/f22a2591-f8d6-4a4e-b02c-1ed94ed27262/dell/wuyahui/yolov4/darknet-master/build/darknet/x64/test/bottle_pr.pkl', 'rb')  # 这里open中第一个参数需要修改成自己生产的pkl文件
inf1 = cPickle.load(fr1)
fr1.close()

x1= inf1['rec']
y1= inf1['prec']



fr2= open('/media/hkd/f22a2591-f8d6-4a4e-b02c-1ed94ed27262/dell/wuyahui/yolov4/darknet-master/build/darknet/x64/test/chair_pr.pkl', 'rb')  # 这里open中第一个参数需要修改成自己生产的pkl文件
inf2 = cPickle.load(fr2)
fr2.close()

x2= inf2['rec']
y2= inf2['prec']

fr3= open('/media/hkd/f22a2591-f8d6-4a4e-b02c-1ed94ed27262/dell/wuyahui/yolov4/darknet-master/build/darknet/x64/test/person_pr.pkl', 'rb')  # 这里open中第一个参数需要修改成自己生产的pkl文件
inf3 = cPickle.load(fr3)
fr3.close()

x3= inf3['rec']
y3= inf3['prec']


plt.figure()
plt.xlabel('recall')
plt.ylabel('precision')
plt.title('PR cruve')


plt.plot(x1, y1, color="purple")
plt.plot(x2, y2, color="blue")
plt.plot(x3, y3, color="green")

plt.savefig("pr.png")
plt.show()
           

注意:绘制的为不同类别的pr曲线

继续阅读