mmdetection v2.x模型训练与测试

2023-05-16

因为工作关系,接触到了mmdetection。它是商汤科技和香港中文大学开源的一款基于pytorch底层的目标检测工具箱,隶属于mmlab项目。

 mmdetection 2.7文件结构。其中configs文件夹下为网络模型文件,checkpoints文件夹下为模型权重文件(.pth)

1. 模型训练

在模型训练之前,要先配置好参数。配置参数是通过修改文件的方式完成的,主要包括三部分:配置数据,配置模型和配置训练策略。下面将以训练模型faster_rcnn_r50_fpn_1x_coco为例进行说明(其中faster_rcnn表示算法名称,r50表示backbone使用resnet50,fpn表示使用fpn的neck,1x标识训练12个epoch,coco表示数据用coco的格式)

具体的参数解释说明可以参考mmdetection的configs中的各项参数具体解释_藏云阁主的博客-CSDN博客_workers_per_gpu

1)配置数据

在configs里找到faster_rcnn_r50_fpn_1x_coco.py

 好吧,套娃模式。让我们先找到../_base_/datasets/coco_detection.py。这个文件主要是为了定义一个data字典,其中包括train,val,test

 data_root 数据的根目录(数据按照文件中/train2017的方式摆放)。

image_scale 图像统一缩放的尺寸。

 samples_per_gpu :batch_size

evaluation : 每隔1轮评估一次,以bbox为评估对象。

2)配置模型

打开../_base_/models/faster_rcnn_r50_fpn.py

 model[pretrained]: 

 model[roi_head][bbox_head][num_classes] :分类类别数量,这里有几个类别就是几个,不用+1表示背景。

3)配置训练策略

打开'../_base_/schedules/schedule_1x.py', '../_base_/default_runtime.py'

 optimizer : 优化器

 total_epochs :epochs

 load_from : 预训练权重文件(.pth)

 4) 修改类名称

打开文件/mmdetection/mmdet/datasets/coco.py

把这里的CLASSES修改成自己对应的类别名称。

在coco.py文件里找到evaluate函数,更改参数classwise=True可在训练时看到每一个类别的AP值。

def evaluate(self,
                 results,
                 metric='bbox',
                 logger=None,
                 jsonfile_prefix=None,
                 classwise=False,
                 proposal_nums=(100, 300, 1000),
                 iou_thrs=None,
                 metric_items=None):

然后打开文件/mmdetection/mmdet/core/evaluation/class_name.py

 

 把这里的return的类别换成自己的类别名称,注意和coco.py里保持一致。

然后就可以训练模型,模型训练使用命令

python tools/train.py configs/xxx.py --work-dir xxx --gpus 1

configs/xxx.py是需要训练的模型定义文件。参数--work-dir表示训练模型保存的目录。

2. 模型测试

模型训练完了,训练的过程中也得了验证集的map。mmdetection也提供了测试测试集的方法(带标注的),还记得在configs/xxx.py里定义的测试数据的类型吗

先要修改数据配置,让程序找到测试文件图片和标注

然后跟训练时一样修改类名称coco.py, class_name.py

运行命令

python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [--out ${RESULT_FILE.pkl}] 
  • config_file:模型配置文件的路径
  • checkpoint_file:模型参数文件的路径
  • gpu_num:使用的 GPU 数量
  • --out:设置输出 pkl 测试结果文件的路径
  • --eval:设置评价指标(vocmAP, recall | cocobbox, segm, proposal
  • --show:显示带预测框的测试集图像
  • --show-dir:设置存放带预测框的测试集图像的目录路径
  • --show-score-thr:设置显示预测框的阈值,默认值为 0.3

上面命令得到文件.pkl,然后对模型进行评估,就可以得到每个类别的AP了

python tools/eval_metric.py ${CONFIG_FILE} ${PKL_RESULTS} [--eval ${EVAL_METRICS}]
  • config_file:模型配置文件的路径
  • pkl_resultspkl 测试结果文件的路径
  • --eval:设置评价指标(vocmAP, recall | cocobbox, segm, proposal

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mmdetection v2.x模型训练与测试 的相关文章

随机推荐

  • Qt+FFmpeg录屏录音

    欢迎加QQ群309798848交流C C 43 43 linux Qt 音视频 OpenCV 源码 xff1a Qt 43 FFmpeg录屏录音 NanaRecorder 之前的录屏项目ScreenCapture存在音视频同步问题 xff0
  • Qt源码分析(一)

    欢迎加QQ群309798848交流C C 43 43 linux Qt 音视频 OpenCV 源码面前 xff0c 了无秘密 阅读源码能帮助我们理解实现原理 xff0c 然后更灵活的运用 接下来我用VS2015调试Qt5 9源码 首先提一下
  • python实现批量提取图片中文字的小工具

    要实现批量提取图片中的文字 xff0c 我们可以使用Python的pytesseract和Pillow库 pytesseract是一个OCR xff08 Optical Character Recognition xff0c 光学字符识别
  • 在虚拟机与wsl中编译内核,并启用kasan

    linux内核编译 虚拟机编译自己的内核WSL编译自己的内核测试kasan 想学习一下kasan的相关配置 xff0c 但kasan是内核中的相关配置 xff0c 开启得编译内核 xff0c 本文使用虚拟机与wsl两种方式来编译内核启动ka
  • mac时间机器删除旧备份

    查 span class token function sudo span tmutil listlocalsnapshots 删除 span class token function sudo span tmutil deleteloca
  • Linux的ssh服务

    Linux中真机与虚拟机的连接 1 先修改虚拟机的IP xff0c 在虚拟机中输入命令 xff1a nm connection editor 2 选中已存在的System eth0 xff0c 选择Delete 然后点击Add xff0c
  • 51单片机——控制步进电机加速、减速及反转

    加速 xff1a include lt reg52 h gt define uchar unsigned char define uint unsigned int define MotorData P1 uchar phasecw 4 6
  • 【安装教程】——Linux安装opencv

    安装教程 Linux安装opencv 一 安装相关软件包二 获取Source三 安装OpenCV 未完待续 一 安装相关软件包 安装相关软件包 打开终端 xff0c 安装以下软件包 sudo apt install build span c
  • 请教:linux下的/opt目录是做什么用的?

    请教 linux下的 opt目录是做什么用的 蛋疼YMG 浏览 4934 次 发布于2014 10 24 13 35 荒漠探险 答题闯关 好礼连连 最佳答案 opt 主机额外安装软件所摆放的目录 默认是空的 一般安装软件的时候 xff0c
  • kali里装java

    1 下载最新的JAVA JDK jdk 8u91 linux x64 2 解压缩文件并移动至 opt tar xzvf jdk 8u91 linux x64 tar gz mv jdk1 8 0 91 opt cd opt jdk1 8 0
  • ffmpeg--tcp

    TCP代码分析 xff1a include 34 avformat h 34 include 34 libavutil avassert h 34 include 34 libavutil parseutils h 34 include 3
  • GO调用ffmpeg动态库

    package main cgo CFLAGS I usr local ffmpeg include cgo LDFLAGS L usr local ffmpeg lib lavformat include 34 libavformat a
  • ftp上传文件时出现 550 Permission denied,不是用户权限问题

    查了半天 xff0c 发现是因为服务器已经有同名的文件了 xff0c 所以无法上传 xff0c 上传文件名改成不重复的就可以了
  • Ubuntu16.04解决登录闪退问题

    Ubuntu16 04解决登录闪退问题 夏哈哈 64 64 2020 07 21 08 42 46 637 收藏 1 分类专栏 xff1a 程序开发 Ubuntu装机 文章标签 xff1a 深度学习 版权 问题 xff1a Ubuntu16
  • syntax error at or near “.“

    SQL select t id t name t sex t age t address t phone from user where id 61 1 Cause org postgresql util PSQLException ERR
  • ubuntu编译安装opencv4.5.1(C++)

    1 在https github com opencv opencv上下载opencv源码 包括opencv4 5 1和opencv contrib4 5 1 也可以不用 xff0c 其中opencv是主体 xff0c opencv cont
  • Pytorch自定义CNN网络实现猫狗分类

    数据集下载地址 xff1a https www microsoft com en us download confirmation aspx id 61 54765 Dogs vs Cats 猫狗大战 来源Kaggle上的一个竞赛题 xff
  • yolov5训练自己的数据集

    yolo系列在目标检测领域的地位就不用说了 xff0c github上有pytorch实现的训练yolov5的代码 xff0c 本文将用自己的数据去训练一个yolov5的模型 参考代码地址 https github com ultralyt
  • pytorch用自己数据训练VGG16

    一 VGG16的介绍 VGG16是一个很经典的特征提取网络 xff0c 原来的模型是在1000个类别中的训练出来的 xff0c 所以一般都直接拿来把最后的分类数量改掉 xff0c 只训练最后的分类层去适应自己的任务 xff08 又叫迁移学习
  • mmdetection v2.x模型训练与测试

    因为工作关系 xff0c 接触到了mmdetection 它是商汤科技和香港中文大学开源的一款基于pytorch底层的目标检测工具箱 xff0c 隶属于mmlab项目 mmdetection 2 7文件结构 其中configs文件夹下为网络