Faster RCNN 绘制PR曲线 test_net参数更改

本文介绍了如何修改Faster RCNN的test_net.py参数以绘制精确率-召回率(PR)曲线。作者感谢并引用了其他博主的分享,并指出正确配置模型以进行测试的重要性。文章提供了代码来源链接,供读者进一步探讨。

参考博客:
https://blog.youkuaiyun.com/hongxingabc/article/details/80064574
https://blog.youkuaiyun.com/dlh_sycamore/article/details/86534712
非常感谢两位博主的分享。
这篇主要分享一下关于test_net.py代码的部分参数更改方式,希望可以帮到大家。
首先要确保训练的模型可以成功用于测试。
这里一共有两处需要更改test_net的地方,如果还有问题可以进一步讨论。
代码来自:https://github.com/dBeker/Faster-RCNN-TensorFlow-Python3.5/issues/60

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

# import _init_paths
from lib.utils.test import test_net
from lib.config import config as cfg
# from lib.config import cfg, cfg_from_file, cfg_from_list
from lib.datasets.factory import get_imdb
import argparse
import pprint
import time, os, sys

import tensorflow as tf
from lib.nets.vgg16 import vg
### 如何使用 MMDetection 绘制 PR 曲线 为了利用 `mmdetection_plot_pr_curve` 来绘制目标检测模型的精确率-召回率(PR曲线,需遵循特定流程并准备相应环境。此工具依赖于 COCO API 和 mmdetection 库,能够有效简化 PR 曲线的可视化过程[^2]。 #### 准备工作 确保已安装必要的 Python 包: ```bash pip install mmcv-full mmdet pycocotools matplotlib ``` 克隆项目仓库至本地环境中以便获取最新版本的支持文件: ```bash git clone https://gitcode.com/gh_mirrors/mm/mmdetection_plot_pr_curve.git cd mmdetection_plot_pr_curve ``` #### 加载配置与数据集 加载预训练模型及其对应的配置文件,并指定测试图像路径作为输入源。这里假设已经有一个经过适当调整后的配置文件和权重文件用于评估阶段。 ```python from mmdet.apis import init_detector, inference_detector, show_result_pyplot import mmcv config_file = 'configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py' checkpoint_file = 'checkpoints/faster_rcnn_r50_fpn_1x_coco.pth' model = init_detector(config_file, checkpoint_file, device='cuda:0') dataset = model.dataset_meta['classes'] ``` #### 执行推理并保存结果 通过给定的数据集执行批量推理操作,收集所有预测框信息后将其转换成适合计算精度指标的形式存储起来供后续处理。 ```python results = [] for img in test_images: result = inference_detector(model, img) results.append(result) mmcv.dump(results, "inference_results.pkl") # 将推断结果序列化到磁盘上 ``` #### 绘制 PR 曲线 最后一步是从上述得到的结果集中提取出所需的统计量来构建 PR 图表。这通常涉及到调用内置函数或自定义脚本来完成实际绘图任务。 ```python from pycocotools.coco import COCO from pycocotools.cocoeval import COCOeval import numpy as np import matplotlib.pyplot as plt annFile = './data/coco/annotations/instances_val2017.json' # 定义标注文件位置 resFile = 'inference_results.pkl' # 推理结果的位置 cocoGt=COCO(annFile) # 初始化COCO对象实例 cocoDt=cocoGt.loadRes(resFile) # 载入检测器产生的结果 # 创建评估对象并设置参数 cocoEval = COCOeval(cocoGt,cocoDt,'bbox') cocoEval.evaluate() cocoEval.accumulate() # 获取不同阈值下的P-R数值对 precisions = cocoEval.eval['precision'][0,:,0,0,-1] recalls = np.linspace(.0, 1.00, int(np.round((1.00 - .0) / .01)) + 1, endpoint=True) plt.figure(figsize=(8,6)) plt.plot(recalls, precisions.mean(axis=0), label="Average Precision", color="blue") plt.xlabel('Recall', fontsize=14) plt.ylabel('Precision', fontsize=14) plt.title('Precision Recall Curve', fontsize=16) plt.legend(loc="lower left") plt.grid(True) plt.show() ```
评论 78
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值