ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

EL隐裂检测仪如何自动识别缺陷?深度学习与语义分割实战解析

EL隐裂检测仪如何自动识别缺陷?深度学习与语义分割实战解析

EL隐裂检测仪这词,在光伏圈不算陌生。只要是做组件、做电池片的产线,EL检测设备基本是标配。但“自动识别缺陷类型”这件事,很长时间里其实是靠人眼在电脑屏幕前硬扛——盯着一张张EL图找隐裂、找断栅,眼睛累不说,漏检全看当时精神状态。我做过一段时间的电池片检测系统开发,也折腾过不少EL图像识别的方案,今天就把从原理到落地这条链路掰开聊一聊。

这个项目标题里的“自动识别隐裂、断栅、碎片等缺陷类型”,核心其实不是“拍照”,而是“判图”。EL检测仪负责把电池片的隐裂、断栅、碎片这些内部缺陷变成可视图像,而自动识别则是在图像层面上做分类与定位。两者凑在一起,才是一台真正能替产线工人省眼力的设备。

本文不吹产品参数,只讲设备背后的关键技术点、方案选型雷区,以及我们调试过程中踩过的那些坑,适合准备上EL自动检测的工艺或设备工程师、做机器视觉的朋友,以及想了解检测逻辑的产线管理者。

1. 先搞清楚EL检测到底在测什么

1.1 电致发光成像原理,一句话版

EL检测的全称是电致发光检测。给电池片施加一个正向偏压,电池内的PN结会被激活,载流子复合时就会发出波长在1100nm左右的红外光。这束光肉眼看不见,但用专门的InGaAs相机拍下来,就能得到一张反映电池内部“健康状态”的灰度图。

简单类比一下:EL图就像电池片的X光片。发光亮的区域,说明载流子复合正常,电池片工作状态好;发光暗的区域,或者出现明显的黑色线条、暗斑,说明那个位置存在缺陷,载流子在那里发生了非辐射复合或者根本没法导通。

这也是EL检测区别于外观检测的核心优势——它看的是“内部”,不是“表面”。很多隐裂在可见光下根本看不出来,镀膜颜色、绒面结构都把裂纹藏住了,但EL图骗不了人,电流走不过去,它就是黑的。

1.2 隐裂、断栅、碎片在EL图上的长相

自动识别的第一步,是让算法知道各种缺陷长什么样。这里我先列一个表,把三种典型缺陷在EL图像上的特征、成因和处理优先级说清楚。

缺陷类型EL图像特征主要成因产线处理优先级
隐裂黑色线条状暗纹,通常沿着硅片对角线方向,也可能是不规则分支状硅片在切割、串焊、层压环节受到的机械应力高,存在继续扩大的风险
断栅细窄的黑色横线,垂直于主栅线,呈局部断开状丝网印刷时浆料断线,或烧结温度异常导致银栅线断裂高,直接影响电流收集
碎片大面积黑色区域,边缘分明,有时候能看出碎裂的分界线搬运、焊接、层压时的脆裂极高,直接报废

看着简单,实际图像上并没有这么清爽。隐裂的位置可能和栅线重合、碎片旁边可能跟着一串断栅、电池片边缘的暗角还会干扰判断。所以自动识别系统面对的往往是一堆“带噪声的真实世界图像”,远远不是教科书里干干净净的示意图。

1.3 为什么“自动识别缺陷类型”是刚需

EL检测设备本身不稀奇,十年前就有。但过去产线上普遍的做法是:EL设备拍完图,图像传到电脑,质检员对着屏幕逐张看,看到异常就手动标一下缺陷类型。

这条路径有两个硬伤。第一个是速度,高速流水线一分钟过几十片电池片,人眼跟得上拍照速度就不错了,根本来不及精细分类。第二个是标准不统一,同一个隐裂,A质检员标成“隐裂”,B质检员可能认为是“疑似隐裂”,遇到交付审查或者抽检复核时,判定结果经常扯皮。

自动识别解决的就是这两个问题:把“看图分类”这个动作从人转移到算法,用统一的判断逻辑替代主观经验。这也是标题里“识别缺陷类型”这几个字真正的价值所在,它不只是省人力,而是把质检数据变成了可统计、可追溯、可审计的标准数据。

2. 自动识别方案的设计思路:为什么深度学习是首选

2.1 传统图像处理的死穴

做视觉检测,很多工程师第一反应是用传统的图像处理算法,比如阈值分割、边缘检测、形态学处理。EL图上裂纹是暗的,背景是亮的,用阈值分割不就能切出来?

理论上好像没问题,但实际EL图的复杂度远超预期。电池片的整体亮度并不均匀——靠近主栅线的地方因为电流密集,亮度偏高;边缘区域电流密度低,天然偏暗。同样的隐裂,在亮区对比度高,切得出来;到了暗区,灰度值和背景几乎一样,阈值法直接失效。

还有一种情况更麻烦:电池片的绒面结构、PN结扩散不均匀,会在EL图上形成纹理状噪声。这些噪声的灰度值介于正常区和裂纹之间,传统的边缘检测算子会把噪声和裂纹一起勾出来,结果就是误检率爆炸。

我们在项目前期做过一组对比实验,用Canny边缘检测加Hough直线拟合去识别断栅,在测试集上的准确率只有60%出头。这还是在精心挑过的图上做的,放到产线真实图里,准确率更难看。传统算法适合工业上那种“背景干净、目标单一、特征稳定”的场景,EL图显然不属于这一类。

2.2 目标检测 or 语义分割,选哪个

既然规则算法走不通,就走深度学习。深度学习做缺陷检测有两条主流路线:目标检测(用矩形框把缺陷框出来)和语义分割(把缺陷的像素逐个标出来)。

我做项目时一开始倾向目标检测,因为标注成本低、模型成熟、推理速度快。后来发现EL缺陷有个特点——缺陷的形状本身就传递了大量信息。比如隐裂的长度、走向、是否贯穿整片电池,直接决定了该返修还是报废。矩形框只能告诉你“这里有缺陷”,但框里到底是什么形态,它给不了。

最终我们采用的是“语义分割为主、目标检测为辅”的混合策略。语义分割模型输出像素级的缺陷掩膜,能精确地算出每条隐裂的长度、方向、面积;目标检测则负责快速筛选“有没有缺陷”,无缺陷的图片直接放行,不喂给分割模型,节省算力。产线实测下来,单张图处理时间稳定在80ms以内,比纯分割方案快了将近一倍。

2.3 模型框架与硬件的选型参考

算法框架上,分割模型我们试过U-Net和DeepLabV3,最终用的是U-Net的变体,配合轻量级主干网络。原因很简单:EL图是单通道灰度图,信息量没有RGB图那么大,不需要特别深的主干网络,反而需要保留更多的浅层细节——裂纹这种小目标对细节敏感,池化太多直接就把特征池没了。

硬件选型上有个容易被低估的环节:EL相机是InGaAs探测器,价格很贵,分辨率却常常只有512×512或者640×512。很多人以为分辨率低对算法是好事——图小,推理快,但实际恰恰相反,小图上裂纹只有两三个像素宽,分割模型很容易漏检。

我们最后的方案是在相机端保证成像质量的前提下,训练时对缺陷区域做随机裁剪增强,强迫模型学习“用小纹理特征判断缺陷”的能力。这块没有捷径,就是靠数据策略硬磨。

3. 核心实现拆解:从数据标注到产线部署

3.1 数据集构建,这个环节最花时间

数据是深度学习的粮,EL检测项目更是如此。我们花在数据整理上的时间,占整个项目周期的40%左右。这里面的坑,我一个个说。

首先是缺陷样本的采集。产线上正常电池片占绝大多数,隐裂、碎片等缺陷是小概率事件。如果单纯被动等产线积累样本,一个月也凑不出多少有效的缺陷图。我们的做法是两台EL设备同时工作:一台正常拍图入库,另一台专门挑工艺波动时段、换片频繁时段拍,把异常批次集中采集。同时和产线工艺人员约定,人为制造一些模拟缺陷样本——比如用小锤轻敲电池片边缘制造隐裂、用烙铁烫断栅线模拟断栅——这样能在短时间内把缺陷样本的覆盖度提上来。

其次是标注规范的制定。“缺陷边界画到哪里”看起来是小事,实际影响模型精度。隐裂的灰度渐变区域很宽,几个标注员画出来的轮廓可能差异很大。我们的做法是做标注规范评审会,把典型缺陷图投影到幕布上,工艺、质检、算法三拨人一起定标准,明确“灰度值低于正常区域多少才算缺陷边界”,然后让标注员按统一标准执行。光这一步,就让模型在验证集上的mIoU提升了六个百分点。

3.2 训练阶段的平衡策略与参数参考

EL缺陷数据的另一个特征是类别不平衡极其严重。碎片样本可能只有几百张,隐裂样本有几千张,如果直接拿来训练,模型会偏向多数类,碎片几乎学不出来。

我们在训练时做了两件事。第一是离线数据增强:对稀少类样本做随机旋转、镜像、亮度扰动、缩放,把碎片的样本量扩到和其他类持平。第二是损失函数调整:在交叉熵损失里给各类别加上权重,稀有类的权重设高一些。

还有一个非常实用的trick——用伪标签做半监督。产线上每天产生大量无标注的EL图,我们先用初始模型给这些图打上“伪标签”,挑选置信度高的图加入训练集。这个策略在项目后期帮我们又提升了两到三个百分点的准确率,同时显著增强了模型对新工况的泛化能力,因为新增的伪标签图本身就来自真实产线的各种光照和成像条件。

训练参数的参考值方面,我们的配置是:输入尺寸512×512,batch size为16,初始学习率1e-4,采用余弦退火调度,U-Net编码器部分加载预训练权重,训练约200个epoch。设备是单张中高端的深度学习显卡,单轮训练时间大约20分钟,整个训练流程跑一天能出多个候选模型。

3.3 推理部署与产线联动

模型训练完只是第一步,真正考验功力的是部署环节。产线对检测系统的要求说到底就两条:快和稳。

快,靠的是推理优化。我们把训练好的模型转成TensorRT,FP16精度推理,单张512×512灰度图的推理时间从原来的50ms压到了15ms以内。再加上前文的“先检测后分割”两阶段策略,整个系统在流水线上完全跟得上拍照节奏。

稳,靠的是与PLC和MES的联动机制。检测结果不能只停留在屏幕上,必须实时传给产线执行机构。我们的系统输出的是JSON格式的检测结果,包含缺陷类型、坐标位置、面积、置信度,通过TCP/MQTT协议推送到上位机,再由上位机决定是触发喷码标记还是控制机械臂把缺陷片抓走。

这里要特别提醒一点:部署前的相机标定一定不能省。EL相机和可见光相机不同,存在严重的光学畸变,如果不做畸变矫正就把坐标传给机械臂,抓取位置会出现几个毫米的偏差——组件上几个毫米的偏差,足以让机械爪把相邻的好片也一并抓走。我们第一轮联调就吃了这个亏,后来加了标定板矫正流程,抓取精度才稳定在±1mm以内。

4. 现场实战:常见误判与排查记录

4.1 三个把我坑惨了的误判案例

案例一:相机坏点当成碎片。

EL相机用久了会出现坏点,这些坏点在图像上呈现为恒定暗点,形状和碎片很像。我们的模型有一次在连续三天里把同一位置的坏点全部识别成碎片,直接导致上百片良品被判废。排查了很久才意识到是相机自身问题。

解决办法分两步:首先在图像预处理阶段做坏点校正,用暗场图像生成坏点掩膜,直接把这些像素剔除;其次在算法逻辑里加“时间一致性”判断——正常碎片的位置是随机的,固定位置的暗斑更可能是成像系统问题。

案例二:电池片边缘暗带引发的隐裂误报。

电池片四周在EL图上天然会有一条暗带,因为边缘电流密度低,发光弱。这条暗带在某些角度、某些光强下会呈现细长暗条纹的形态,和隐裂极其相似。我们第一版模型在边缘区域的误检率特别高,后来是靠着给分割掩膜加“距边缘距离约束”才压下去的——凡是紧贴边界、形状随边界走的长条形缺陷,统统降权处理。

案例三:烧结工艺波动导致的“全片发暗”。

有一阵子产线烧结炉温偏高,整批电池片EL图像亮度整体偏低,很多本应正常识别的隐裂被淹没在暗背景里,漏检率突然飙升。当时我们一度以为是模型退化,重新评估才发现是输入分布偏移。最后是在预处理阶段加入自适应对比度拉伸,按整张图的灰度直方图动态调整亮度,才把漏检率拉回正常水平。

4.2 缺陷识别系统常见问题速查表

现象可能原因排查方向
隐裂漏检率突增图像整体亮度偏低/偏高检查电致发光激励电流和曝光时间是否正常
碎片误检率偏高相机坏点、灰尘附着拍摄暗场图,检查坏点掩膜是否更新
边缘区域虚警多边缘暗带干扰增加边缘约束规则,检查标注是否包含大量边缘样本
模型在新产线效果差成像系统分辨率/光路不同用新产线数据fine-tuning,不直接复用旧模型
缺陷坐标和机械臂抓取偏差大相机畸变未校正重新做标定板畸变矫正,检查相机与机械臂坐标系转换
模型推理速度突然变慢GPU温度过高、显存占用溢出检查散热,查看推理时显存占用,尝试FP16或INT8量化

4.3 三个来自实战的优化建议

第一,EL检测系统的验收标准一定要包含“假阳性率”。很多项目只盯着检出率——缺陷图片里你能找出多少,但忽略了误报率——正常图片里有多少被判成了缺陷。在产线上,误报的代价是实实在在的良品报废,比漏检更心疼。建议在项目启动时就定好协议:隐裂检出率不低于95%,假阳性率控制在1%以内。

第二,算法团队一定要和工艺团队共用一个缺陷信息库。工艺端能告诉算法的不仅是“这个缺陷是什么类型”,还包括“这个缺陷是哪个工序产生的”。把EL检测结果按工序维度做统计分析,很多时候能倒推出工艺参数的优化方向——比如某台串焊机的隐裂率突然偏高,往往不是检测的问题,而是那台设备的吸盘压力该调了。

第三,不要试图识别所有缺陷类型。EL图上能看到的异常形态非常多,除了隐裂、断栅、碎片,还有黑斑、PID、断主栅、虚焊等等。一次项目贪多求全,很容易什么都做不好。先围绕“影响最大、占产线不良比例最高”的3到5类缺陷做扎实,把系统跑顺了,再逐步扩展类型标签,是更稳妥的落地节奏。


说个我自己的体会。EL缺陷自动识别这个方向,算法模型的架构不是什么秘密,公开的论文和开源代码一大堆,真正的门槛在数据和工程化。产线上积累的每一次误判、每一次漏检、每一张新工况的EL图,都是模型迭代的养分。我见过很多项目死在了“模型准确率不高”这个表象上,深挖下去,其实是数据标注不规范、产线工况没归一、相机成像不稳定这些地面问题没解决。

如果你们公司正打算上EL自动判图系统,我建议你拿到需求后先别急着选算法、买显卡,多花点时间蹲在EL设备前,亲眼看看不同工艺条件下图像的变化。等你看明白了隐裂在灰度图上的“脾气”,再写代码也不迟。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进