识别裂痕问题改进
一、问题
1.柱状图:
柱子高度:Spatter(飞溅)样本最多,Porosity(气孔)次之,Welding line 中等,Crack(裂纹)柱子最矮、数量极少。各类标注数量差距巨大,典型样本不均衡,模型会偏向学样本多的飞溅、气孔,不学裂纹。
样本严重不均衡:裂纹标注数量极少,飞溅、气孔样本数量巨大,模型天然偏向样本多的类别。
2. 1)混淆矩阵图:
横向真实标签是 Crack、Porosity、Spatter,纵向预测为 background(背景)单元格数字很大:大量真实缺陷被判成背景(漏检);横向真实标签是 background,纵向预测为 Porosity、Spatter 单元格数值很高:大片空白背景、母材纹理被误判成气孔、飞溅(虚警)。
2)归一化混淆矩阵:
裂纹召回率只有 0.92,气孔 0.75,飞溅 0.73,都偏低;背景有 25%、27% 概率分别被预测成气孔、飞溅,虚警严重。
缺陷与背景双向混淆严重:大量真实缺陷被漏检判定为背景,母材锈迹、焊缝纹理、反光区域频繁被误判成气孔 / 飞溅,虚警率高。
3. 1)Recall - 置信度曲线:
置信度越高,裂纹、气孔、飞溅召回率断崖式下跌,说明很多真实缺陷置信度偏低。
2)推理检测截图(带置信分数):
大量 Crack 裂纹标注框置信度只有 0.3、0.35、0.4,低于默认 0.5 阈值,直接被过滤不输出框; 肉眼清晰可见裂纹,但模型不画框,就是低置信漏检。
3)F1 置信曲线:
F1 最高点在置信度 0.435,不是默认 0.5,证明你用默认阈值人为漏掉大量有效缺陷。
细小缺陷检测能力弱:细裂纹、点状小气口尺寸极小,默认锚框适配差,大量裂纹置信度仅 0.3~0.4,极易被阈值过滤漏检。
4. 检测效果图:
一堆飞溅紧挨着、检测框轻微重叠; 默认 NMS IOU=0.45,重叠超 45% 就删掉一个框,相邻多个飞溅被合并成单个框,很多小飞溅直接消失,漏检。
密集飞溅检测异常:飞溅成片扎堆重叠,原 NMS(非极大值抑制:去重复方框的过滤器)阈值抑制过度,多个相邻飞溅被合并,局部缺陷漏检;
5.所有标注可视化图:
同一个气孔 / 飞溅上堆叠好多个重复标注框,一个缺陷多个框;
长条完整焊缝 Welding line 沿着焊缝密密麻麻连续标注一堆小框,整条焊缝反复标注,极度冗余;
母材锈迹、划痕无缺陷区域也被画上缺陷框,错误标注。
标注脏数据干扰模型:单个缺陷重复多层标注、长焊缝密集冗余标注,同时存在标错、漏标问题,训练引入噪声。 额外关键:F1 最优置信阈值为 0.435,原默认 0.5 阈值人为造成不必要漏检。
二、改善
1:推理端即时调参
1.置信阈值:全局统一设为最优值0.435;裂纹单独下调至0.35~0.4,召回低置信细小裂纹;气孔、飞溅不降低阈值,防止虚警反弹。
2.NMS 参数优化:密集飞溅场景 IOU 阈值由默认 0.45 调高至0.6~0.7,扎堆缺陷不会互相抑制丢失检测框。
调低识别门槛:整体放宽一点识别标准,特别细小的裂纹再放宽标准,别把肉眼能看见的小裂纹直接过滤掉;
密集飞溅不删框:一堆飞溅挤在一起时,不再随便删掉相邻的检测框,每个飞溅都能正常标出来。
2:修改损失函数:改模型扣分规则,重新训一轮就能提升准确率
1.替换默认 CE 交叉熵损失,采用Focal Loss+Dice Loss 组合损失 + 标签平滑:
Focal Loss:压低海量简单背景权重,重点学习缺陷 / 背景模糊边界,同时解决漏检、误报;
Dice Loss:针对像素占比极低的微小裂纹、小气孔,强制完整框住小缺陷;
标签平滑:模糊边界不强制硬分类,进一步降低背景误检概率。
2.开启类别权重配置,手动调高裂纹 Crack 损失权重,抵消样本数量悬殊问题。
换掉原来的打分方式,三重规则一起用:不让模型偷懒只学空白钢板、逼着它盯住针尖大小的小缺陷、模糊边界不强行判定类别;同时给稀缺裂纹加大扣分力度,模型不敢忽略裂纹。
3:数据集清洗 + 扩充(根源解决混淆、标注噪声):整理图片标注 + 补充数据,从根源解决认错问题
1.脏标注清理
同一个缺陷只保留 1 个标注框,删除重复叠加的多余标注;
整条长焊缝仅标注 1 个整体大框,删掉密集冗余重复标注;
人工核验修正标错、漏标的标注框。
2.裂纹小样本扩充
使用 Copy-Paste:抠取真实裂纹,随机缩放、旋转、亮度扰动后批量粘贴到空白焊缝、生锈、反光背景图,自动生成配套标注,快速补齐裂纹样本。
3.难例挖掘二次训练
单独导出两类易错图片组成难例子集追加微调:*(1)真实缺陷被模型判定为背景(漏检样本);(2)锈斑、母材纹理等背景被误判为缺陷(虚警样本)。
清理标注:一个缺陷只画一个框,整条长焊缝只用一个大框圈住,删掉重复多余的标注;修正标错、漏标的框。
多造裂纹样本:现有裂纹图片太少,把现有裂纹抠出来复制粘贴到别的焊缝图里,批量增加裂纹数据。
错题二次学习:把之前漏检、误报的图片单独拿出来,让模型再学一遍错题,改掉认错的毛病。
4:网络结构针对性优化,小缺陷检出率大幅提升:微调模型内部结构,小缺陷更容易找到
1.用自身全部标注框重新聚类专属 Anchor 锚框,替换 YOLO 默认通用大锚框,适配细长裂纹、点状小气口。
2.骨干网络接入CA 注意力模块:适配长条焊缝特征,强制模型聚焦有效焊缝区域,自动屏蔽两侧母材锈迹、反光等无效干扰,大幅降低误报。
重新定制候选框:根据你自己缺陷的真实大小量身定做匹配框,不再用通用大框套细小裂纹、气孔。
给模型加 “聚焦功能”:强制模型眼睛只盯着焊缝这条区域看,自动忽略旁边生锈、反光的钢板,不会把钢板花纹误判成缺陷。
5:训练策略精细化调优,提升泛化能力:调整训练模式,模型实拍新工件也能用
1.两阶段解冻训练:先冻结骨干网络,仅训练检测分类头快速收敛;收敛后全网解冻、缩小学习率精细微调。
2.开启多尺度随机缩放训练,适配图片里大小、远近不一的各类缺陷。
3.叠加三重防过拟合策略:Dropout + 权重衰减 + 早停;验证集指标连续多轮无提升就停止训练,避免模型死记反光、锈迹等特有纹理,新实拍工件检测稳定不翻车。
分两步训练:先粗略学基础特征,再精细微调全部参数,训练过程稳不跑偏。
图片随机缩放训练:大图小图都学一遍,远近、大小不一样的缺陷都能识别。
防止死记硬背:加三道限制,模型不会死死记住训练照片里独有的锈迹、反光,拿到现场新拍的图片也能正常检测。
三、先后顺序
1.推理端设置全局置信度 0.435、裂纹单独 0.35~0.4,NMS IOU 调至 0.6~0.7,即时验证效果;
2.替换 Focal+Dice 组合损失、添加标签平滑,开启裂纹类别权重;
3.清洗冗余错误标注;Copy-Paste 扩充裂纹样本 + 难例子集单独微调;
4.重聚类专属 Anchor 锚框,网络嵌入 CA 注意力模块;
5.两阶段训练 + 多尺度增强 + 正则防过拟合,完整重训模型。
混淆矩阵

裂纹,气孔,飞溅,焊缝极易被当成背景漏检,背景全被误判成各类焊接缺陷
优化方案
1. 数据集
1.裂纹样本量小,用翻转、Copy-Paste(复制粘贴扩充数据集)、合成数据扩充; 2。提取缺陷↔背景错分难例单独重训; 3.设置类别权重平衡样本数量差异; 4.核验修正标注错误,数据集按工件场景划分,杜绝数据泄露。
裂纹太小,模型打分普遍偏低,把识别门槛调低一点,少漏掉缺陷; 气孔、飞溅门槛稍微拉高,别把普通背景误判成缺陷。
2. 模型 & 损失
1.替换CE(CE = Cross Entropy Loss,交叉熵损失,就是你模型训练默认自带的「扣分规则」)为Focal Loss(专治:样本数量悬殊、分不清边界)+Dice Loss(专治:极小缺陷像素太少,模型看不见)Focal 负责分清「哪里是缺陷、哪里是背景」,减少误报漏报; Dice 负责把细小缺陷完整抠出来、框到位;两者互补。聚焦难分边界、改善小缺陷识别;加标签平滑(《1》不加平滑:标签硬性标1(缺陷)、0(背景),模型被迫百分百笃定分类,模糊焊缝纹理极易误报、还容易学死板。 《2》加标签平滑:标签微调为0.9、0.1,预留容错空间。《3》好处:减少背景误判缺陷,模型泛化性更强); 2.接入CBAM / CA注意力(CBAM:同时看「每个通道哪些特征有用」+「图片上哪个位置重要」;CA 注意力:更擅长长条条状目标(你的焊缝就是长条),定位细长焊缝效果更好),锁定焊缝区域、抑制无效背景; 3.聚类适配小缺陷Anchor(锚框:模型预设的一堆固定大小矩形框,用来框住缺陷),多尺度特征融合提升细微缺陷检出能力。
gamma = 2(固定常用值) 调大到 2.5/3:模型更较真模糊缺陷,漏检更少,但更容易背景误报 调小到 1.5:抑制虚警,但漏检会轻微增多
alpha 就是给缺陷类别单独加权的权重系数。eg:alpha=0.25(默认值):真实是缺陷:犯错惩罚系数 ≈ 0.25;真实是背景:犯错惩罚系数 ≈ 0.75
alpha = 0.25 缺陷样本太少就调到 0.3/0.35,强行拉高缺陷损失权重,模型不会无视小裂纹
3. 训练策略
1.分两阶段解冻微调,先用冻结骨干训练分类头,再全网络小学习率精调; 2.启用多尺度随机缩放训练;加入权重衰减、Dropout + 早停防过拟合。
4. 后处理(无需重训,快速调参)
分类别独立设置置信阈值:裂纹降低阈值减少漏检;微调 NMS IOU 阈值,降低虚警。
5. 指标监控
不再只看整体准确率,逐类监控召回率(防漏检)、精确率(防误检)、F1、mAP。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)