mmdetect2d训练自己的数据集(二)—— 模型训练

前言

近期在学习mmdetect,总体来说mmlab这个框架感觉上手难度还挺大的,自己也是结合b站各位up主(up主名称:我是土堆、OneShotLove、比飞鸟贵重的多_HKL)以及知乎mmlab官方边看边学,真的是保姆级教程,强烈推荐。但是大家为了防止以后忘记,记录一下,如果有不对的地方,欢迎大家批评指正。
关于数据前期处理请参照上一篇博客:mmdetect2d训练自己的数据集(一)—— labelme数据处理

一、数据准备

在mmdetection下添加data文件夹,并把准备好的coco数据集放入:
mmdetect2d训练自己的数据集(二)—— 模型训练_第1张图片

二、 修改config文件

1. 根据自身电脑配置修改输入的图片大小
主要是更改configs/base/models下面对应的这几个文件里的resize尺寸:
mmdetect2d训练自己的数据集(二)—— 模型训练_第2张图片在这里插入图片描述
这里因为我的算力还算够,所以就不做修改了。
另外,不知道为什么,我在训练时候图片路径必须是绝对路径才不会报错,这里也是在这四个文件的开头部分就可以改。在这里插入图片描述

2. 根据检测的种类个数修改num_classes
修改configs/base/models文件里对应模型中的的num_classes的值,总共有两处,如果你要检测3类就写3。这里要注意一点,mmdetect中不需要把背景归为一类,也就是你自己有几类写几类就可以:
mmdetect2d训练自己的数据集(二)—— 模型训练_第3张图片
3. 根据数据集的标签修改对应的标签值

修改mmdet/core/evaluation/class_names里面的标签文件
mmdetect2d训练自己的数据集(二)—— 模型训练_第4张图片
4. 开始运行
修改mmdet/datasets/coco.py里面对应的标签
mmdetect2d训练自己的数据集(二)—— 模型训练_第5张图片
mmdetect2d训练自己的数据集(二)—— 模型训练_第6张图片
这里要注意它是元组,如果只有一个标签的话要记得加逗号
5. 运行程序
可以在terminal里面直接输入

python tools/train.py configs/mask_rcnn/mask_rcnn_r50_fpn_2x_coco.py --gpus 2 --work-dir mywork_dir

这里我没有指定checkpoints,不是因为忘了,而是我要训练自己的,用预训练模型效果也不是很好,所以没有加。不过我在terminal用指令会出现错误,所以我是在菜单栏run–>adit configurations直接修改parameters,这样也有个好处就是我不需要每次都输入指令。
mmdetect2d训练自己的数据集(二)—— 模型训练_第7张图片
另外,–gpus 后面直接跟你要用的gpu个数就可以了。
6. 修改对应超参
如果没有要修改超参的话你可以直接运行了,但是如果要修改超参,则在程序运行后直接ctrl+c停掉,然后在你的输出路径下会有一个.py的配置文件,名字是你所用的模型,比如我的就是mask_rcnn_r50_fpn_2x_coco.py,在这里你可以修改你的模型相关参数,我一般也就修改下面这部分
mmdetect2d训练自己的数据集(二)—— 模型训练_第8张图片
runner可以修改迭代次数,对了,一般来说这边模型名称1×代表着12,2×就是24,指的就是最大迭代次数,这里也可以直接修改到自己想要的。
optimizer是优化器,这里用的SGD,然后学习率设置了0.02,官方说法是8个gpu用0.02,自己有几个gpu就按比例缩小或者扩大就行,比如我是两个gpu,所以我lr=0.005。
checkpoints_config里是设置你几次保存一次模型,默认是1,根据个人需要修改吧,我用的是2。
log_config里面的interval一样的,也是几次保存一次你的训练日志
下面几个我还没用到,不过大致是断点训练和工作流设置,还没弄明白,以后补充。

至此,这个模型就可以用来训练自己的数据集啦!

你可能感兴趣的:(数据集处理,mmlab学习系列,python,ubuntu)