一、问题

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。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐