Linux环境下同时绘制Caffe的多个pr曲线

本文介绍如何在Linux环境中使用Python绘制来自Caffe框架的多个精度-召回率(PR)曲线,以便于对比不同模型的性能。通过读取.pkl文件中的数据,将多个PR曲线在同一图表中展示,便于直观地比较不同模型的AP值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux环境下同时绘制Caffe的多个pr曲线
  pr曲线是衡量目标检测网络模型的重要指标,有时候在做算法对比实验的时候,需要将多个pr曲线绘制在同一张图上进行对比分析。python提供了很好的绘图函数。在caffe深度学习框架下,pr存放在./output/faster_rcnn_end2end/voc_2007_test/zf_faster_rcnn_iter_50000的ship_pr.pkl文件(本人是用faster_rcnn的end2end模型下迭代50000次训练出的结果)。通过修改本人程序的.pkl文件路径就可以将多个pr曲线绘制在一张图上

#!/usr/bin/env python  
#-*-coding:utf-8-*-
import cPickle as pickle
import numpy as np
import matplotlib.pyplot as plt
import pylab
import mpl_toolkits.axisartist as AA
from pylab import figure, show, legend
from mpl_toolkits.axes_grid1 import host_subplot

 
np.set_printoptions(threshold=np.NaN)
fr = open('/home/wei/program/pr_10.pkl')                  # open 的参数是 pkl 文件的路径
inf = pickle.load(fr)          						   # 读取 pkl 文件的内容, 即反序列化
precision = inf["prec"]       						    # precision数据
recall = inf["rec"]                            # recall数据
ap = inf["ap"]                                 # ap数据
fr.close()                                     # 关闭文件

fr2 = open('/home/wei/program/pr_17.pkl')                  # open 的参数是 pkl 文件的路径
inf2 = pickle.load(fr2)                         # 读取 pkl 文件的内容, 即反序列化
precision2 = inf2["prec"]                       # precision数据
recall2 = inf2["rec"]                           # recall数据
ap2 = inf2["ap"]                                # ap数据
fr2.close()                                     # 关闭文件

host = host_subplot(111, axes_class=AA.Axes)        #确定图标形状
plt.subplots_adjust(right=0.75)               #确定图标边距

part2 = host.twinx()                      #定义第二条曲线

host.set_xlim([0,1.1])                     #设置x轴的坐标范围
host.set_ylim([0,1.1])                     #设置y轴的坐标范围

host.set_xlabel("Recall")                    #设置x轴的标签
host.set_ylabel("Precision")                 #设置y轴的标签

p1, = host.plot(recall, precision, label='ship (pr1 = {:.4f})'.format(ap)) #确定第1条曲线的数据参数
p2, = part2.plot(recall2, precision2, label='ship (pr2 = {:.4f})'.format(ap2)) #确定第2条曲线的数据参数

part2.set_ylim([0,1.1])                     #确定第二条曲线的坐标范围

host.legend(loc=1)
pylab.title("Precision-Recall")                  # 确定标题

plt.draw()                          #画图
plt.show()
``

![pr曲线](https://img-blog.csdnimg.cn/20191210160223382.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMjg3OTMx,size_16,color_FFFFFF,t_70)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值