【mmdetection】使用coco数据集训练后结果可视化

本文介绍了使用mmdetection V2.11版本的cascade-rcnn和faster-rcnn模型,基于COCO数据集进行训练后的结果可视化过程,包括Loss曲线、P-R曲线、mAP参数、fps、acc曲线的可视化,并解释了相关参数的意义。

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

一.开始

本文使用的是mmdetection=V2.11的cascade-rcnn、faster-rcnn模型,使用的数据集是coco数据集,记录训练结果可视化的过程。并且记录训练过程中参数含义

二.可视化代码

  • 以下操作都是在mmdetection根目录下进入到open-mmlab环境中进行的

1. Loss曲线

  • –work_dirs设置自己模型得到的log.json文件,
    –out后面是保存的位置以及文件名字,可以保存为jpg/png等格式,
    –key后面可以跟更多参数,但这些参数要在json文件里面有的
python tools/analysis_tools/analyze_logs.py plot_curve ./work_dirs/cascade_rcnn_r50_fpn_1x_coco/20210510_140522.log.json --keys loss --out ./plot_result/1.png
  • 输出结果:在这里插入图片描述

2. P-R曲线

  • 进行P-R曲线可视化前,需要先使用test.py生成pkl文件
    –out后面可以加路径,不然直接生成再项目根路径下
python tools/test.py configs/cascade_rcnn/cascade_rcnn_r50_fpn_1x_coco.py work_dirs/cascade_rcnn_r50_fpn_1x_coco/latest.pth --out results.pkl
  • 在根目录下创建一个PR.py文件,输入以下代码
# =========================================================
# @purpose: plot PR curve by COCO API and mmdet API
# @date:   2020/12
# @version: v1.0
# @author: Xu Huasheng
# @github: https://github.com/xuhuasheng/mmdetection_plot_pr_curve
# =========================================================

import os
import mmcv
import numpy as np
import matplotlib.pyplot as plt

from pycocotools.coco import COCO
from pycocotools.cocoeval import COCOeval

from mmcv import Config
from mmdet.datasets import build_dataset

MODEL = "cascade_rcnn"
MODEL_NAME = "cascade_rcnn_r50_fpn_1x_coco"

CONFIG_FILE = f"configs/{MODEL}/{MODEL_NAME}.py"
RESULT_FILE = f"results.pkl"

def plot_pr_curve(config_file, result_file, metric="bbox"):
    """plot precison-recall curve based on testing results of pkl file.

        Args
### 如何使用 MMDetection 框架训练自定义 COCO 数据集 #### 准备工作 为了在 MMDetection训练自定义的 COCO 数据集,需完成以下几个方面的准备工作: 1. **转换数据到 COCO 格式** 自定义数据集需要遵循 COCO 的标注格式[^4]。如果原始数据不是 COCO 格式,则可以通过脚本将其转换为目标格式。例如,对于 YOLO 格式的标注文件,可使用工具或编写 Python 脚本来实现转换。 2. **设置数据目录结构** 推荐通过软链接方式将数据挂载至 `mmdetection/data/coco` 文件夹下[^3]。具体操作如下: ```bash cd mmdetection mkdir data ln -s /path/to/your/dataset data/coco ``` #### 配置文件调整 MMDetection 提供了灵活的配置机制来适配不同的模型和数据集需求。以下是具体的配置修改步骤: 1. **选择基础配置文件** 在 `configs` 目录中找到适合的基础配置文件并继承它。例如,可以选择 Faster R-CNN 或 RetinaNet 等预定义模型作为起点[^1]。 2. **更改类别数量 (`num_classes`)** 更新检测头部分 (head) 中的 `num_classes` 参数以匹配自定义数据集中实际的类别数目: ```python model = dict( roi_head=dict( bbox_head=dict(num_classes=80), # 替换为你的类别数 ) ) ``` 3. **更新数据路径及相关参数** 修改 `_base_` 下的数据加载器配置项,指定本地存储的图像与标注 JSON 文件位置: ```python data_root = 'data/coco/' train_dataloader = dict( dataset=dict( ann_file='annotations/train.json', # 自定义训练集标注文件名 data_prefix=dict(img='train_images/') # 图片所在子目录名称 ) ) val_dataloader = dict( dataset=dict( ann_file='annotations/val.json', data_prefix=dict(img='val_images/') ) ) ``` 4. **下载预训练权重** 如果希望从预训练模型继续微调,应提供对应的权重 URL 地址,并确保网络能够访问该资源: ```python load_from = 'https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth' ``` #### 开始多 GPU 训练过程 当一切就绪之后,执行以下命令启动分布式训练模式: ```bash ./tools/dist_train.sh configs/my_custom_config.py 2 --work-dir work_dirs/custom_experiment/ ``` 其中 `my_custom_config.py` 是经过上述定制化处理后的最终版本;数字 `2` 表示使用的 GPU 数量。 #### 单张图片推理测试 训练完成后,可以利用保存下来的 checkpoint 对新样本做预测分析: ```python from mmdet.apis import init_detector, inference_detector import mmcv config_file = 'configs/my_custom_config.py' # 测试所用配置文件 checkpoint_file = 'work_dirs/custom_experiment/latest.pth' model = init_detector(config_file, checkpoint_file, device='cuda:0') img = '/path/to/test_image.jpg' result = inference_detector(model, img) # 可视化结果 mmcv.imshow_det_bboxes( img, result, class_names=['cat', 'dog'], # 类别列表 score_thr=0.3 # 显示阈值 ) ``` ---
评论 34
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鸠控

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值