MMDetection训练COCO数据集新手快速上手

本文详细介绍了如何在MMDetection3.0.0版本中上传COCO数据集,修改配置文件(包括模型、数据集、训练计划),以及进行模型训练,包括查看训练结果和保存模型的过程。
摘要由CSDN通过智能技术生成
MMDetection版本  3.0.0

1、上传COCO数据集

数据集放在mmdetection-3.0.0/data/coco下

mmdetection-3.0.0/data/coco下的文件组织如下图,annotations存放json文件,test2017、train2017、train2017下分别存放图片,png或jpg格式都可以

mmdetection-3.0.0/data/coco/annotations下的文件组织如下图

注:以上的文件命名都可以根据自己的喜好重新命名,不过会需要修改配置文件,接下来会详细介绍

2、修改配置文件

(1)打开mmdetection/configs,选择自己想要的模型总配置文件,比如我这里选择的./config/retinanet/retinanet_r50_fpn_1x_coco.py

右上方红框里的四个文件说明了这个模型具体要使用的配置文件在哪里,这四个文件也就是我们需要修改的,一定要根据自己的四个文件来哈

可以看到右边小红框内有一个lr字段,这个我们稍后再说,可能更易于大家理解

 (2)修改第一个模型配置文件,例如./configs/models/retinanet_r50_fpn.py

快捷键Ctrl+F搜索num_classes,将num_classes的值改为自己检测的类别数量

 (3)修改第二个数据集配置文件,例如./configs/models/retinanet_r50_fpn.py 

如果在第一步上传数据集时是按标准命名格式来的,那就可以跳过这一小步,如果按自己的喜好修改了命名,那就需要修改数据集配置文件了,有如下几个地方要修改:

可以看到要修改的地方还是比较杂的,每个人的配置文件也可能因为MMDetection版本不同而不同,不一定和我上面的截图一样。因此如果只要训练一个数据集的话,更推荐直接按官方标准格式来命名。如果要训练多个数据集的话,害怕命名混乱,建议可以只改coco这个目录名称,比如根据数据集名称改为coco_KITTI等,里面annotations、test2017、train2017、val2017的命名还是按官方的来,这样就只需要修改"data_root"。

(4)修改第三个训练计划配置文件,例如./configs/schedules/schedule_1x.py 

schedule_1x.py中的1x表示训练12个epoch就停止,同样的,schedule_2x.py表示24个epoch,而schedule_20e.py表示20个epoch

如果对训练的epoch数有自己的需求,可以根据接下来的两小步①②来修改epoch

第三小步③是对batch_size和学习率lr的修改

①修改epoch:将max_epoch和end修改为自己想要的epoch总数,推荐改为原来的epoch数的倍数,比如原来是12个,改成36、48之类的(如果想改成24可以直接用schedule_2x.py)

②修改milestones:milestones是学习率下降的地方,[8,11]表示学习率在第8、11个epoch下降,随着总epoch数的改变,milestone也需要改变。学习了网上一些博主的做法,采用等比改变,也就是如果epoch总数为12\times2=24,那么milestones也乘2,即[16,22],以此类推

③修改batch_size和学习率lr:batch_size即一次训练所抓取的数据样本数量,batch_size越大,训练速度越慢,内存需求大,但模型可能训练得更好。如果出现训练时内存不足,可以降低batch_size,同时lr也要修改,lr和batch_size的关系如下:

·base_batch_size=num_gpus\timessmaples_per_gpu

·lr=0.02\times(base_batch_size/16)

还记得我们在2.1的模型总配置文件中有个lr字段吗,并不是全部模型总配置文件都有这个字段,但如果有,这个lr也要相应修改。

个人一般batch_size都设置为1,再高经常就会内存不足。

3、训练模型

修改完配置文件后,需要进入mmdetection目录,先更新,命令如下:

cd mmdetection-3.0.0
python setup.pu install

开始训练,根据自己选择的配置模型总文件修改命令:

python ./tools/train.py ./configs/retinanet/retinanet_r50_fpn_1x_coco.py

4、训练结果

(1)屏幕显示

对于每一个epoch,最终都会用val数据集进行验证,输出Average Precision和Average Recall

(2)结果保存

训练结果保存在work_dirs目录下,如下图所示,对每一种模型总配置文件都建了一个文件夹(也只会建一个!因此如果用同一种文件先后训练了不同的数据集,记得先把原来的训练结果打包起来,以免混了)

其中的具体文件如下图所示,

①日志

其中的.log文件具体记录了训练过程,也就是训练时屏幕显示的内容,不过似乎没有完全记录屏幕显示的内容,好像只记录了average precision,没有记录average recall,(也有可能是我没找到,还请了解的朋友指点!)所以如果对于结果要求比较全的,还是自己复制屏幕或者截图。

②训练保存的模型

在训练中断时或者训练完一定数的epoch想在继续训练时,需要使用,具体可详见我的另外两篇博客

http://【mmdetection修改epoch?或者训练完,怎么增加epoch继续训练? - CSDN App】http://t.csdnimg.cn/rFLuy

http://【mmdetection训练中断,怎么接上次训练结果继续训练,或从之前某个epoch的模型直接开始训练? - CSDN App】http://t.csdnimg.cn/L6hJA

③ 最新的模型

④第一次训练后生成的全面的配置文件

我们在2.1中选择的模型总配置文件中,写明了需要用到的四个具体的配置文件,而在初次训练开始后,程序就会将这四个文件整合在一块,形成全面的配置文件,之后训练中断再继续训练或者训练结束增加epoch再训练时就是直接用这个文件

好啦,以上就是mmdetection训练模型的基本操作,如有错误的地方,还劳烦各位朋友包涵指正,期待一起进步!

  • 9
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
你可以使用 mmdetection训练自己的数据集。以下是一个大致的流程: 1. 数据准备:将你的数据集准备成特定的格式,包括图片和对应的标注文件。可以参考 mmdetection 的文档了解数据格式的要求。 2. 配置模型:根据你的任务需求,在 mmdetection 的配置文件中选择合适的模型和对应的参数设置。你可以在 mmdetection 的官方仓库中找到预训练模型和相应配置文件的示例。 3. 数据集划分:将准备好的数据集划分为训练集、验证集和测试集。通常情况下,训练集用于模型参数的更新,验证集用于调整超参数和模型选择,测试集用于最终评估模型性能。 4. 训练模型:使用 mmdetection 提供的命令行工具,在训练集上训练模型。通过指定相应的配置文件、数据集路径和其他训练参数,可以开始训练过程。训练过程会生成一系列的模型权重文件,每个权重文件代表不同的训练轮次。 5. 模型评估:在验证集上使用训练得到的模型进行评估,计算各种指标如精确度、召回率等。这有助于了解模型在不同指标上的表现和调整训练过程。 6. 模型部署:根据你的需求,可以将训练好的模型部署到相应的环境中,如服务器、移动设备等。 需要注意的是,mmdetection 是一个基于 PyTorch 的物体检测框架,对于新手来说可能需要一些学习和实践的时间。建议先阅读 mmdetection 的文档和示例代码,了解其基本使用方法和常见问题的解决方案。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值