https://blog.csdn.net/qq_44929031/article/details/113355506
画图代码参考上面,但是导出pkl文件我来写一下,查了半天没有查到,原来很简单,不需要重新训练,只需要按照下面一步一步即可导出,然后画图即可!
Fasterrcnn
pkl文件在output文件夹下可以找到!
YOLO端
首先在YOLOV5端搜到metrics.py
添加 头文件:
import pickle
在函数plot_pr_curve中添加代码:
#!!保存为pkl文件
with open("你自己起个文件名.pkl",'wb') as f:
pickle.dump({'rec':px,'prec':py,'ap':ap},f)
![](https://i-blog.csdnimg.cn/blog_migrate/de9e05b132d915d363e273e4002d2a1e.png)
这样就导出了pkl格式的文件放在同一目录下,自己找一找在哪,找不到就搜索!
修改val.py中的训练权重为自己模型的权重存放位置,如下图红框所示:
![](https://i-blog.csdnimg.cn/blog_migrate/7497fd331a96565845ef1fc259dd97ea.png)
运行python3 val.py无报错,得到pkl文件
按着链接代码修改位置画图即可
import _pickle as cPickle
import matplotlib.pyplot as plt
fr1= open('C:/Users/officer/Desktop/pkl/yolov4_fire_pr.pkl', 'rb') # 这里open中第一个参数需要修改成自己生产的pkl文件
inf1 = cPickle.load(fr1)
fr1.close()
x1= inf1['rec']
y1= inf1['prec']
fr2= open('C:/Users/officer/Desktop/pkl/v3sppfire_pr.pkl', 'rb') # 这里open中第一个参数需要修改成自己生产的pkl文件
inf2 = cPickle.load(fr2)
fr2.close()
x2= inf2['rec']
y2= inf2['prec']
fr3= open('C:/Users/officer/Desktop/pkl/v3fire_pr.pkl', 'rb') # 这里open中第一个参数需要修改成自己生产的pkl文件
inf3 = cPickle.load(fr3)
fr3.close()
x3= inf3['rec']
y3= inf3['prec']
fr4= open('C:/Users/officer/Desktop/pkl/v2fire_pr.pkl', 'rb') # 这里open中第一个参数需要修改成自己生产的pkl文件
inf4 = cPickle.load(fr4)
fr4.close()
x4= inf4['rec']
y4= inf4['prec']
fr5= open('C:/Users/officer/Desktop/pkl/oursfire_pr.pkl', 'rb') # 这里open中第一个参数需要修改成自己生产的pkl文件
inf5 = cPickle.load(fr5)
fr5.close()
x5= inf5['rec']
y5= inf5['prec']
plt.figure()
plt.xlabel('recall')
plt.ylabel('precision')
plt.title('PR cruve')
plt.plot(x5, y5, color="red")
plt.plot(x1, y1, color="purple")
plt.plot(x2, y2, color="blue")
plt.plot(x3, y3, color="green")
plt.plot(x4, y4, color="orange")
plt.show()
![](https://i-blog.csdnimg.cn/blog_migrate/f80db4b621fb9efa447d36f447eea426.png)
效果如图:
![](https://i-blog.csdnimg.cn/blog_migrate/a0117f95493ed41ef52bae5bbd002a4c.png)