news 2026/4/22 4:42:02

mmdetection模型测试实战:用`tools/test.py`一键可视化预测结果并保存到指定文件夹

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
mmdetection模型测试实战:用`tools/test.py`一键可视化预测结果并保存到指定文件夹

mmdetection模型测试实战:可视化预测结果与性能深度解析

在计算机视觉项目的完整生命周期中,模型训练只是第一步。真正考验模型实用价值的,是它在真实场景中的表现。本文将带你深入掌握mmdetection框架下的模型测试全流程,从基础命令解析到高级可视化技巧,再到关键性能指标的深度解读。

1. 模型测试的核心价值与准备工作

模型测试环节常被开发者忽视,但它实际上是连接研发与落地的关键桥梁。一个在测试集上表现良好的模型,才能真正投入实际应用。在mmdetection框架中,测试环节不仅能输出mAP等量化指标,更重要的是能直观展示模型"看"世界的方式。

测试前需要确认三个核心文件:

  1. 配置文件(如retinanet_r50_fpn_1x_coco.py):记录模型结构和训练参数
  2. 训练权重(如epoch_12.pth):模型学习到的参数集合
  3. 测试数据集:通常与验证集相同,需在配置文件中正确指定

建议的目录结构示例:

project/ ├── configs/ │ └── retinanet_r50_fpn_1x_coco.py ├── work_dirs/ │ └── retinanet_r50_fpn_1x_coco/ │ └── epoch_12.pth └── results/ # 用于存放测试输出

提示:测试前建议使用python tools/print_config.py configs/xxx.py检查配置文件是否完整,避免因路径错误导致测试失败。

2. 基础测试命令全解析

最基础的测试命令包含三个核心参数:

python tools/test.py \ configs/retinanet_r50_fpn_1x_coco.py \ work_dirs/retinanet_r50_fpn_1x_coco/epoch_12.pth \ --eval bbox

这条命令会输出如下关键指标:

Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.389 Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.591 Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.421 ...

2.1 可视化输出实战

想要直观查看预测效果,--show-dir参数是利器:

python tools/test.py \ configs/retinanet_r50_fpn_1x_coco.py \ work_dirs/retinanet_r50_fpn_1x_coco/epoch_12.pth \ --show-dir results/visualization

生成的文件结构:

results/ └── visualization/ ├── img1.jpg ├── img2.jpg └── ...

可视化效果要素解读:

  • 边界框颜色:不同类别使用不同颜色
  • 左上角标签:格式为类别名 置信度
  • 背景透明度:低置信度预测会半透明显示

2.2 关键参数对比

参数作用适用场景输出位置
--eval计算mAP等指标量化评估终端/stdout
--show实时显示图像快速调试弹出窗口
--show-dir保存可视化结果报告/演示指定目录
--eval-options自定义评估参数精细分析终端/stdout

3. 高级测试技巧与性能优化

3.1 类别级精度分析

修改mmdet/datasets/coco.py中的evaluate函数:

def evaluate( self, results, metric='bbox', logger=None, jsonfile_prefix=None, classwise=True, # 改为True proposal_nums=(100, 300, 1000), iou_thrs=[0.5], # 指定IoU阈值 metric_items=None ):

修改后输出示例:

Classwise AP: | class | AP@0.5 | |----------|--------| | person | 0.723 | | car | 0.681 | | dog | 0.542 |

3.2 置信度阈值调整

通过model.test_cfg控制输出质量:

# 在配置文件中添加 model = dict( test_cfg=dict( score_thr=0.3, # 只显示置信度>0.3的预测 nms=dict(type='nms', iou_threshold=0.5), max_per_img=100 ) )

效果对比:

  • 高阈值(如0.7):减少误检,但可能漏检
  • 低阈值(如0.1):检出更多目标,但噪声增加

3.3 多尺度测试增强

在配置文件中启用多尺度测试:

test_pipeline = [ dict( type='MultiScaleFlipAug', img_scale=[(1333, 800), (1000, 600), (666, 400)], # 多尺度 flip=True, # 水平翻转增强 transforms=[ ... ] ) ]

4. 测试结果分析与问题定位

4.1 常见问题模式识别

通过可视化结果可以识别典型问题:

  1. 漏检问题

    • 目标尺寸过小
    • 遮挡严重
    • 类别不平衡导致少数类识别差
  2. 误检问题

    • 背景被误判为目标
    • 类别混淆(如哈士奇被识别为狼)
  3. 定位不准

    • 边界框偏移
    • 框体过大/过小

4.2 量化指标深度解读

关键指标解析表:

指标计算公式合理范围优化方向
AP@0.5IoU阈值0.5时的AP0.5-0.9提高定位精度
AP@0.75IoU阈值0.75时的AP0.3-0.7优化边界框回归
AR@100每图100个提案的召回率0.6-0.9改进RPN网络

4.3 测试结果可视化增强

使用第三方工具生成更专业的分析图表:

import matplotlib.pyplot as plt # 绘制PR曲线 plt.plot(recall, precision) plt.xlabel('Recall') plt.ylabel('Precision') plt.title('Precision-Recall Curve') plt.savefig('pr_curve.png')

5. 工程化测试方案

5.1 自动化测试脚本

创建可复用的测试脚本run_test.sh

#!/bin/bash CONFIG=$1 CHECKPOINT=$2 OUT_DIR=$3 python tools/test.py \ $CONFIG \ $CHECKPOINT \ --out ${OUT_DIR}/results.pkl \ --eval bbox \ --show-dir ${OUT_DIR}/visualization \ --eval-options "classwise=True" "iou_thrs=[0.5,0.75]"

5.2 测试报告生成

使用Pandas生成结构化报告:

import pandas as pd df = pd.DataFrame({ 'Class': ['person', 'car', 'dog'], 'AP@0.5': [0.72, 0.68, 0.54], 'AP@0.75': [0.51, 0.47, 0.32] }) df.to_markdown('performance_report.md')

5.3 持续集成方案

GitLab CI示例配置:

test_model: stage: test script: - python tools/test.py $CONFIG $CHECKPOINT --eval bbox artifacts: paths: - results/ expire_in: 1 week

在实际项目中,我发现将测试环节纳入持续集成流程可以提前发现模型退化问题。特别是在数据分布随时间变化的场景中,定期测试能确保模型始终保持最佳状态。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 23:37:13

如何快速构建Python金融数据采集系统:完整实战指南

如何快速构建Python金融数据采集系统:完整实战指南 【免费下载链接】pywencai 获取同花顺问财数据 项目地址: https://gitcode.com/gh_mirrors/py/pywencai 在量化投资和金融数据分析领域,获取高质量的金融数据是每个分析师和投资者的核心需求。传…

作者头像 李华
网站建设 2026/4/22 1:54:16

DAMO-YOLO优化升级:BF16加速开启,检测速度再提升

DAMO-YOLO优化升级:BF16加速开启,检测速度再提升 1. 引言:BF16带来的性能革命 在计算机视觉领域,实时目标检测系统的性能优化一直是工程师们关注的焦点。DAMO-YOLO作为阿里达摩院基于TinyNAS架构开发的高性能检测系统&#xff0…

作者头像 李华
网站建设 2026/4/22 1:34:34

番茄小说下载器终极指南:一键下载、EPUB转换与有声小说生成

番茄小说下载器终极指南:一键下载、EPUB转换与有声小说生成 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 你是否曾因网络不佳而无法继续阅读番茄小说的精彩章节&…

作者头像 李华
网站建设 2026/4/18 9:06:39

Advanced Tables 公式功能详解:在 Markdown 中实现 Excel 级计算

Advanced Tables 公式功能详解:在 Markdown 中实现 Excel 级计算 【免费下载链接】advanced-tables-obsidian Improved table navigation, formatting, and manipulation in Obsidian.md 项目地址: https://gitcode.com/gh_mirrors/ad/advanced-tables-obsidian …

作者头像 李华
网站建设 2026/4/22 3:08:12

Ostrakon-VL-8B部署案例:单卡24G显存运行全功能扫描终端

Ostrakon-VL-8B部署案例:单卡24G显存运行全功能扫描终端 1. 项目概述 在零售与餐饮行业,传统的人工巡检和商品识别方式效率低下且成本高昂。我们基于Ostrakon-VL-8B多模态大模型,开发了一款具有独特像素艺术风格的智能扫描终端,…

作者头像 李华