基于Mask R-CNN的混凝土裂缝检测数据集扩展及配套文件使用问询
混凝土裂缝Mask R-CNN项目扩展训练解决方案
1 解决标注JSON无法导入VGG Annotator、无需从零标注的方案
- 优先做格式转换:现有JSON是该项目适配的Mask R-CNN输入格式,和VGG Annotator(VIA)默认支持的导出格式字段不同,你可以先读取JSON的结构,将每张图片的文件名、尺寸、裂缝区域的多边形坐标,映射到VIA要求的
_via_img_metadata、_via_attributes顶层字段结构中,写个几十行的Python转换脚本即可,转换完成后就能直接导入VIA,原有标注全部保留不需要重新标注。 - 新图半自动化标注:直接用项目提供的
.h5预训练权重做预标注:写简单的推理脚本加载.h5权重,对新增图片跑推理得到裂缝的掩码坐标,将坐标按VIA格式拼接为JSON后导入标注工具,仅需要人工修正少量漏检、误检区域,标注效率可以提升80%以上。
2 .h5权重的使用与增量训练步骤
2.1 预训练权重推理使用
你如果直接用该权重做检测,只需要在项目的推理Demo代码中,找到model.load_weights()调用位置,将参数路径替换为你本地的.h5文件路径,传入待检测图片即可输出带裂缝掩码、边界框的检测结果。
2.2 扩展数据集后增量训练步骤
- 数据集整理:将原有标注图片和新增标注图片按8:2的比例划分为训练集、验证集,放入原项目指定的数据集目录,统一标注JSON的格式和原有数据集保持一致。
- 修改训练配置:在项目的训练配置文件中,确认类别数设置为2(背景+裂缝),根据你的设备显存调整批大小,将初始学习率设置为原训练配置的1/10(增量训练不需要过高的学习率)。
- 加载预训练权重:修改训练脚本中的权重加载代码,示例如下:
# 加载预训练权重,排除检测头参数实现增量训练 model.load_weights("你的.h5文件路径", by_name=True, exclude=[ "mrcnn_class_logits", "mrcnn_bbox_fc", "mrcnn_bbox", "mrcnn_mask" ])
- 启动训练:先训练10~20个epoch的检测头,再根据精度情况决定是否解冻骨干网络做全量微调即可,训练得到的新权重精度会比原有权重明显提升。
参考截图
- 项目文件结构截图:

- 标注与JSON文件截图:

内容的提问来源于stack exchange,提问作者Jhe
相关产品推荐
相关产品推荐

