MASK RCNN自定义训练及过程中遇到的问题

Mask RCNN的训练

准备工作

1、服务器的选择:本人电脑显卡有限,选择了在Autodl上进行租用服务器,可以利用pycharm进行远程调试(注意pycharm专业版才行)
autodl网址:https://www.autodl.com/register?code=a55ffcc0-6a2c-4800-a9c2-501f4d40be9d(具体使用参考帮助文档)
2、代码的选择,选择原作者的官方代码,功能齐全,代码具备可操作空间
https://github.com/matterport/Mask_RCNN
3、数据集的准备:本人通过labelme软件进行实例数据标注,然后labelme2coco
(注意:建议尽量转换成COCO2017的格式(https://github.com/wkentaro/labelme/tree/main/examples/instance_segmentation),如果使用labelme自带的labelme_to_json,在训练过程可能会出现问题,无法区分同一类别的不同对象)
coco2017文件夹数据放置格式如下:其中annotations里面放的实例标注json文件,名字要与官方对应,其它文件夹里面放的图像
在这里插入图片描述

训练coco.py

1、修改模型基本配置(按照自己需求修改)
在这里插入图片描述
2、修改命令行参数配置,可手动输入,可设置默认值,按自己需求修改
在这里插入图片描述
3、使用官方的coco权重文件进行初始训练,记得在第一次训练时,要排除一些权重
在这里插入图片描述
4、上传好权重文件和图片数据,开始训练

验证评估coco.py

1、将命令行参数配置进行修改
2、开始评估,注意评注就是评估val2017数据,如果想评估其它数据,修改名字并防止val文件夹下即可
结果如下:比较差,兄弟们可以比较一下吗自定义数据集的效果
Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.307
Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.569
Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.303
Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.262
Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.328
Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.344
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.265
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.436
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.436
Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.347
Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.409
Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.502

存在的问题

1、数据集加载问题
ValueError: Error when checking input: expected input_image_meta to have shape (13,) but got array with shape (14,)
出现该类情况,首先检查NUN_CLASS是否设置正确(1+类别),然后未解决就修改loadd_coco,原作者那个比较麻烦,容易出现bug,用下面这个自己修改一下即可
在这里插入图片描述
2\数据集的问题
数据集中如果出现line格式的掩码,也会出现错误(我调了两天,这个bug),解决办法,要么修改代码(比较麻烦),要么重新进入labelme修改标注文件(具体报错名字我搞忘了,但是挺经典的,好像是下面这个问题);就是掩码标注的线条,收尾不相连;代码追踪会显示问题在:load_mask
TypeError: Argument ‘bb’ has incorrect type (expected numpy.ndarray, got list)
在这里插入图片描述

3\评估时出现准确率为0的情况,但是可视化结果又还行
Get 0 AP and AR when testing, and the inference result is very bad
(1)输出结果没有转换成标准的COCOjson)
(2)加载权重时出现错误,只加载了主干网的权重(天啊,这个问题浪费了我半天)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
对于 Mask R-CNN 的接续训练,你需要遵循以下步骤: 1. 数据准备:收集足够数量的标注数据,包括图像和相应的标注信息,例如物体边界框和掩码。确保标注数据与初始训练数据集保持一致。 2. 模型配置:根据你的需求,配置 Mask R-CNN 模型的超参数,如学习率、批次大小、迭代次数等。你可以使用开源的 Mask R-CNN 实现,如 Detectron2 或 mmdetection,根据自己的需求进行修改。 3. 模型初始化:使用已经训练好的 Mask R-CNN 模型作为初始模型。你可以使用预训练权重,也可以使用之前训练过的模型。 4. 训练过程:在接续训练,你需要加载初始模型的权重,并使用新的数据集进行迭代训练。通常情况下,你可以选择冻结初始模型的部分层,只更新与新数据集相关的层,以加快训练速度。 5. 学习率调整:可以根据训练过程的性能表现,适调整学习率。常见的策略包括学习率衰减和学习率预热。 6. 评估与调优:在每个训练周期结束后,使用验证集对模型进行评估。根据评估结果,调整模型的超参数或训练策略,以提升模型性能。 7. 迭代训练:根据需要,可以进行多轮的迭代训练,直到模型达到满意的性能水平。 请注意,接续训练需要更多的计算资源和训练间,因此在进行接续训练之前,请确保你具备足够的计算资源和间。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值