6.03
预训练数据
- 裁剪前期标注素材
- 标注了40张图
训练
- 使用yolo26s-seg.pt进行fine-tune 微调,已有视觉能力迁移到岩芯场景
- 使用了32张训练集,8张作为评估验证集
- 先训练了300epochs
- 尺寸是1280,因为是长图,高度会自动padding,可能后期为了更好的分辨率精度,需要看看怎么裁剪
- 更合理的是跑完这版后,再用当前 best.pt 做一轮高分辨率微调:
训练过程
前 78 轮(粗略定位阶段):模型快速学会了“目标大致在哪里”、“轮廓粗略是怎样的”。所以在宽松的 50% IoU 阈值下,它在 78 轮就拿到了最高分。
78 到 194 轮(边缘精雕细琢阶段):在此之后的 100 多轮里,模型的整体检出能力(mAP50)没有太大的绝对提升,甚至可能因为轻微波动还掉了一点点,但是它在把 Mask 的边缘扣得更准、更精细。高严格度阈值(如 IoU 0.85、0.90、0.95)下的得分一直在持续上涨,最终把平均分 mAP50-95 推向了 194 轮的最高点。
最佳跑了 epoch 194 Mask mAP50-95 = 0.45836
mAP50 (0.548) 和 mAP50-95 (0.458) 之间的差距非常窄(仅有约 0.09)。 说明只要模型成功把这个物体认出来了,它吐出来的 Mask 边缘就和真实标签贴合得极其精准。

瓶颈
岩芯牌 Mask mAP50-95 0.640 碎块状 Mask mAP50-95 0.248 柱状 Mask mAP50-95 0.705 不完整柱状 Mask mAP50-95 0.205
总宽松指标 Mask mAP50 卡在了 0.548
也就是,碎块状、不完整柱状、碎块状 vs 不完整柱状 vs 柱状 的边界问题比较明显
一句话总结:目前类别边界不稳定、碎块状/不完整柱状样本和标注粒度不够支撑精细实例分割
后续优化
1.通过分析混淆矩阵,标签会出现19%左右的混乱,pr曲线的碎块状和不完整柱状,Recall召回剧烈震荡下滑,说明这两个特征基本处于懵逼状态(因为我标记的时候确实也懵逼),说明需要标注时候在仔细确定一下类别,统一一下或者标签大类合并一下;
2.很多碎块状有36%变成了背景,这个也有标记的原因,当时用了一个大 mask 粗覆盖一堆碎块 漏掉小碎块,可能就有小碎块边缘并入柱状或背景,导致小碎块也可能有了背景的含义。 需要增加空箱负面样本,以及调大cls损失权重,漏检惩罚更厉害
3.分析pr曲线和r曲线,平均精度在0.5,以及21%岩芯丢失,限制是在分割头上,就是Backbone特征提取网络和检测头下采样像素没了,特征完全丢失,需要用更大尺寸的底模;
4.素材局部增强,可以单独把局部弄出来看,不只是看大轮廓;yolo默认会使用 方图,方便对齐四维张量。现在可以开启矩阵训练,整箱图可以考虑切成多个重叠crop,每个crop单独预测,把预测 mask 坐标映射回原图,合并结果
5.隐患,pr曲线和labels图的样本分布不均衡厉害,pr图的柱状有0.774面积,其他碎块状(不完整柱状)分到了0.38,覆盖层几乎没有了;labels图的柱状标签有530个,需要增加对应标签样本, 达到不同效应,否则总分上不去,被拖累
使用更大尺寸底模,图片预处理,训练使用更大分辨率