使用mmdetection训练模型--记faster-rcnn不同backbone性能比较

使用mmdetection训练模型
一、 安装
采用的是直接安装,并未使用在conda中建虚拟环境。主要安装的有mmcv和mmdet,其中mmcv的安装与下载的mmdetction版本有关,参考https://mmdetection.readthedocs.io/zh_CN/v2.18.1/get_started.html#id官网安装依赖教程中的mmdetection版本和mmcv版本的对应关系安装。
例如下载的mmdetection的版本是2.18.1,安装mmcv指定版本(pip install mmcv-full ==1.3.17),注意一定要指定版本,自动安装的容易容易版本不符合。具体的相对应版本要求如下:

MMDetection 版本MMCV 版本
mastermmcv-full>=1.3.17, <1.4.0
2.18.1mmcv-full>=1.3.17, <1.4.0
2.18.0mmcv-full>=1.3.14, <1.4.0
2.17.0mmcv-full>=1.3.14, <1.4.0
2.16.0mmcv-full>=1.3.8, <1.4.0
2.15.1mmcv-full>=1.3.8, <1.4.0
2.15.0mmcv-full>=1.3.8, <1.4.0
2.14.0mmcv-full>=1.3.8, <1.4.0
2.13.0mmcv-full>=1.3.3, <1.4.0
2.12.0mmcv-full>=1.3.3, <1.4.0
2.11.0mmcv-full>=1.2.4, <1.4.0
2.10.0mmcv-full>=1.2.4, <1.4.0
2.9.0mmcv-full>=1.2.4, <1.4.0
2.8.0mmcv-full>=1.2.4, <1.4.0
2.7.0mmcv-full>=1.1.5, <1.4.0
2.6.0mmcv-full>=1.1.5, <1.4.0
2.5.0mmcv-full>=1.1.5, <1.4.0
2.4.0mmcv-full>=1.1.1, <1.4.0
2.3.0mmcv-full==1.0.5
2.3.0rc0mmcv-full>=1.0.2
2.2.1mmcv==0.6.2
2.2.0mmcv==0.6.2
2.1.0mmcv>=0.5.9, <=0.6.1
2.0.0mmcv>=0.5.1, <=0.5.8

对mmdet的安装:
cd mmdetection
pip install -r requirements/build.txt
pip install -v -e . # or “python setup.py develop”
安装完运行python tool/train.py –h 出现help界面,则说明配置成功,若出现mmcv._ext找不到该模块,则是mmcv版本不匹配导致,一定要卸载旧的mmcv,重新指定新的版本。
二、 训练
1. 数据集的制作
Mmdetection支持的数据集格式有coco数据集,VOC数据集等常见的数据集格式,以VOC2007数据集格式为例,说明数据集的制作过程。
VOC2007数据集存放在如下机构中:
所有的数据标签存放在:./voc_data/VOCdevkit/VOC2007/Annotations
所有的图片数据存放在:./voc_data/VOCdevkit/VOC2007/JPEGImage
./voc_data
└── VOCdevkit
└── VOC2007
├── Annotations # 标注的VOC格式的xml标签文件
├── JPEGImages # 数据集图片
├── ImageSet
│ └── Main
│ ├── test.txt # 划分的测试集
│ ├── train.txt # 划分的训练集
│ ├── trainval.txt
│ └── val.txt # 划分的验证集
├── cal_txt_data_num.py # 用于统计text.txt、train.txt等数据集的个数
└── make_txt.py # 数据集划分脚本

  1. 数据集的划分,使用:make_txt.py脚本
    脚本内容:

在这里插入图片描述

执行完该脚本后,会在./voc_data/VOCdevkit/VOC2007/ImageSets/Main目录下,生成四个txt文件:train.txt,trainval.txt,test.txt,val.txt
每个txt文件中存储的都是图片的名字(不含图片名字的后缀.jpg),例如:trian.txt中的内容如下:
在这里插入图片描述

当然你也可以把数据放到其他目录,然后使用软连接的形式连接到./mmdetection/data目录下():
ln -s /HDD/VOCdevkit ./data # 就是把实体目录VOCdevkit做一个链接放到 ./data目录下

2、统计划分数据集数据的个数,使用:cal_txt_data_num.py脚本
在这里插入图片描述

计算txt中有多少个数据,即有多上行
至此,数据集的准备工作已经全部完成。
在configs/base/datasets/voc0712.py中设置自己定义的数据集所在的目录信息及根据实际使用的GPU数量设置合理的samples_per_gpu和workers_per_gpu数量。

修改mmdetection/mmdet/core/evaluation/class_names.py下的class_names.py中的voc_classes,将 其改为要训练的数据集的类别名称。
在这里插入图片描述

修改mmdetection/mmdet/datasets/voc.py下的voc.py中的CLASSES,将 其改为要训练的数据集的类别名称。
在这里插入图片描述

2. 训练模型的配置
以configs\regnet\faster_rcnn_regnetx-3.2GF_fpn_mstrain_3x_coco.py为例,说明训练的过程。训练所需的配置有

  1. 对模型部分的配置:backbone,neck,head,optimizer,loss等;
  2. 对数据集pipline的预处理配置;
  3. 对数据集所在路径配置;
  4. 对训练策略信息的配置;
    faster_rcnn_regnetx-3.2GF_fpn_mstrain_3x_coco.py中原始设置的backbone为regnet,neck为fpn,继承了_base_中…/common/mstrain_3x_coco.py的数据集配置和…/base/models/faster_rcnn_r50_fpn.py中算法的head和loss配置(mmdetection的继承机制是对模型配置中缺少的组件在_base_所设置的路径中继承)。
    在这里插入图片描述

而我们训练所准备的数据集是voc数据集,因此重写继承组件,继承voc数据集所在目录’…/base/datasets/voc0712.py’,继承’…/base/models/faster_rcnn_r50_fpn.py’中关于head和loss的设置,在faster_rcnn_r50_fpn.py根据实际的数据集class个数修改num_classes同时继承’…/base/schedules/schedule_1x.py’用于配置训练策略信息,在’…/base/schedules/schedule_1x.py’中根据需求和所设置的batchsize设置max_epochs和lr。继承’…/base/default_runtime.py’用于生成log设置。
在这里插入图片描述
在这里插入图片描述

模型训练发起脚本
python tools/train.py ./configs/regnet/faster_rcnn_regnetx-3.2GF_fpn_mstrain_3x_coco.py
可添加的参数:
–work-dir:指定训练保存模型和日志的路径
–resume-from:从预训练模型chenkpoint中恢复训练
–no-validate:训练期间不评估checkpoint
–gpus:指定训练使用GPU的数量(仅适用非分布式训练)
–gpu-ids: 指定使用哪一块GPU(仅适用非分布式训练)
–seed:随机种子
–deterministic:是否为CUDNN后端设置确定性选项
–options: arguments in dict
–launcher: {none,pytorch,slurm,mpi} job launcher
–local_rank: LOCAL_RANK
–autoscale-lr: automatically scale lr with the number of gpus
如果不加,会在当前目录下生成workdir,在workdir中存放模型训练过程生成的日志和生成的权重。
在这里插入图片描述

3. 模型检测
可添加的参数
在这里插入图片描述

Python tools/test.py ./configs/regnet/faster_rcnn_regnetx-3.2GF_fpn_mstrain_3x_coco.py ./work_dirs/faster_rcnn_regnetx-3.2GF_fpn_mstrain_3x_coco/latest.pth --out ./test_regnet/result.pkl --show-dir ./test_regnet
会在test_regnet目录下生成检测结果result.pkl 和检测后生成bbox的图像。

三、 相同配置参数,不同backbone的模型检测效果对比
对faster_rcnn,使用相同的训练环境和训练参数,不同backbone的模型检测效果对比,其中regnetx3.2gf和regnetx_1.6gf的区别是:
regnet_1600M_config = {‘WA’: 34.01, ‘W0’: 80, ‘WM’: 2.25, ‘DEPTH’: 18, ‘GROUP_W’: 24, ‘BOT_MUL’: 1}
regnet_3200M_config = {‘WA’: 26.31, ‘W0’: 88, ‘WM’: 2.25, ‘DEPTH’: 25, ‘GROUP_W’: 48, ‘BOT_MUL’: 1}
图3.1 resnet50在这里插入图片描述图3.1 resnet50

在这里插入图片描述图3.2 regnetx_3.2gf

在这里插入图片描述图3.3 regnet_1.6gf

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MMDetection是一个开源目标检测框架,它支持许多不同目标检测模型,包括Faster R-CNN。要训练Faster R-CNN模型,您需要准备数据集、模型配置文件以及训练脚本。可以参考MMDetection的官方文档(https://mmdetection.readthedocs.io/en/latest/tutorials/train.html),了解详细的训练步骤。 ### 回答2: mmdetection是一个用于目标检测的开源框架。其中,Faster R-CNN是其中一种比较常用的检测网络,主要通过Region Proposal Network(RPN)生成候选区域,然后利用RoI Pooling对这些区域进行特征提取和分类。在训练Faster R-CNN时,我们需要做以下几步: 1. 数据预处理:将数据转换为合适的格式,例如将图片和标注转换为COCO(Common Objects in Context)格式。 2. 模型搭建:使用mmdetection中提供的配置文件进行模型搭建,并进行相应的超参数设置。在进行设置时,需要考虑到训练时可能需要使用的GPU数量,以及学习率,权重衰减等参数。 3. 数据扩增:为了提高模型的鲁棒性,在训练前需要进行数据扩增,常用的方法包括随机裁剪、随机翻转、随机旋转等。 4. 数据加载:定义DataLoader来实现数据的批量加载,并设置数据的并行数,以便加快训练速度。 5. 损失函数:Faster R-CNN中常用的损失函数包括分类损失和回归损失。在训练时需要同时计算这两种损失函数,并设置相应的权重。 6. 模型训练:对模型进行训练。在训练过程中,可以使用Adam等优化器对模型进行优化,并进行学习率调整、权重更新等操作。训练时需要注意过拟合的问题,并及时进行模型的调整。 7. 模型测试:在训练完成后,使用测试集数据对模型进行测试,以验证模型的准确性和鲁棒性。 总之,mmdetection训练Faster R-CNN需要进行许多步骤,其中需要注意的是数据的预处理、模型搭建和调整超参数、数据扩增、损失函数的设定、并行计算和过拟合的问题。通过对这些步骤进行科学、合理的设置,可以获得较好的结果。 ### 回答3: mmdetection是一个开源的目标检测框架,其中包含了许多常用的检测算法如Faster R-CNN,RetinaNet等模型,同时也提供了细粒度的API接口方便用户进行自定义的检测模型开发。 在使用mmdetection训练Faster R-CNN模型时,首先需要准备数据集。一般而言,数据集应包含包含训练图片、标注文件和验证图片。其中标注文件指的是通过标注工具标每张图片中要检测的区域,并且标注的格式应符合COCO格式。 接着需要进行模型配置,mmdetection支持许多的配置项,如数据增强方式、anchor设计和ROI pooling等。用户可以根据自己的需求进行设置。对于Faster R-CNN模型而言,它一般需要设置backbone、RPN以及ROI pooling等模块的参数。 在模型配置完成后,就可以使用mmdetection提供的训练函数进行模型训练了。通常使用的是SGD或Adam等优化器,训练时可进行多次迭代,不断优化模型的参数。 另外,模型训练过程中还需要进行模型验证。通常在每一次训练迭代结束后,对于验证集上的表现进行评估,了解模型的效果。在评估过程中,可以计算模型的精度、召回率等指标,据此判断模型性能是否达到要求,并进行参数的微调。 需要注意的是,Faster R-CNN模型训练所需要的时间和硬件资源比较大,因此在进行模型训练时,可选择使用GPU进行加速。此外,也需要耐心地对模型进行调整和优化,以提高模型的检测效果。 总的来说,mmdetection训练Faster R-CNN模型需要进行数据集准备、模型配置、模型训练模型验证等步骤。需要注意的是,模型训练时间较长,需要耐心对模型进行调整和优化,保证最终的检测效果达到要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值