yolov5和Fasterrcnn统一画P-R曲线

https://blog.csdn.net/qq_44929031/article/details/113355506

画图代码参考上面,但是导出pkl文件我来写一下,查了半天没有查到,原来很简单,不需要重新训练,只需要按照下面一步一步即可导出,然后画图即可!

Fasterrcnn

pkl文件在output文件夹下可以找到!

YOLO端

首先在YOLOV5端搜到metrics.py

添加 头文件:

import pickle

  1. 在函数plot_pr_curve中添加代码:

    #!!保存为pkl文件
    with open("你自己起个文件名.pkl",'wb') as f:
        pickle.dump({'rec':px,'prec':py,'ap':ap},f)
yolov5和Fasterrcnn统一画P-R曲线_第1张图片

这样就导出了pkl格式的文件放在同一目录下,自己找一找在哪,找不到就搜索!

  1. 修改val.py中的训练权重为自己模型的权重存放位置,如下图红框所示:

yolov5和Fasterrcnn统一画P-R曲线_第2张图片
  1. 运行python3  val.py无报错,得到pkl文件

  1. 按着链接代码修改位置画图即可

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()
yolov5和Fasterrcnn统一画P-R曲线_第3张图片
  1. 效果如图:

yolov5和Fasterrcnn统一画P-R曲线_第4张图片

你可能感兴趣的:(YOLO)