一种基于神经网络的太阳能电池板缺陷检测方法*
2023-02-23兰小艳史钧宇
兰小艳,史钧宇
(山西工程职业学院,山西 太原 030009)
0 引言
随着人口增长和经济发展,能源消耗持续增长,能源紧缺的时期将提前到来。二十一世纪新能源的开发与利用是关系到人类子孙后代命运的一件大事。绿色环保的光伏发电,是解决我国能源问题的一条重要途径。太阳能是绿色环保的清洁能源,在诸多方面有广泛的应用,尤其是利用太阳能发电为人们的生活带来诸多便利。
太阳能电池板是由单晶硅制作而成,由于制作工艺与使用过程中的损耗,使得电池板表面产生裂痕、断栅、破损等缺陷[1-2]。这些缺陷会使得透光率、导电性、发电效率等下降。为了提高使用寿命,提升发电效率,电池板表面缺陷检测显得尤为重要。
目前的检测方法包括人工检测、基于机器视觉和深度学习的检测方法等。人工检测方法效率低,容易出现人眼疲劳、注意力不集中的情况,进而造成漏检、误检。
基于机器视觉的检测算法首先需要将电池片的栅线去除,其次运用扫描线法对缺陷进行统计,最后通过设置阈值来获得缺陷。该方法能识别到裂缝,但对边缘、破损、断栅等缺陷的检测存在弊端,并且预处理部分比较复杂。基于深度学习的检测算法通常由于数据量较少,训练不充分而使得检测存在误差。
近年来,神经网络在诸多领域取得了比较好的应用,如图像识别[3-4]和自然语言处理[5-6]。
人工神经网络[7]的应用,对数据样本有一定的要求,如果数据样本不够充分、质量较差,训练就会出现过拟合现象,同时会出现梯度消失。
本文利用神经网络方法对电池板缺陷进行检测,该方法避免了人工检测效率低、避免了机器学习检测中预处理的复杂性,避免了深度学习检测中由于数据量不足导致训练不充分。神经网络方法由于具有较强的自学习能力,可以学习到适合不同问题的特征,有很强的适应性。实验结果表明,这种算法不仅具有很好的适应性,还能提高检测效率。
1 电池板图像预处理
在进行深度学习时,需要对电池板图像进行预处理,由于整张电池板面积过大,而且一张电池板上存在的受损情况不同,很难对整张电池板进行缺陷识别,需要将电池板切割为独立的电池片单元。获取到的电池板图片会存在多余背景、倾斜、畸变等问题无法进行准确切割,需要将电池板图像进行校正,并裁剪为独立的电池片。
如图1 所示,将获得的电池板图像先进行灰度化处理;将灰度化后的图像利用中值滤波进行降噪处理;利用顶帽变换进行亮度调整;利用二值化对图像进行处理,从而将电池板部分与背景部分进行分割;利用仿射变换算法对电池板区域进行矫正;利用Hough变换寻找最长直线,对电池板进行裁剪;得到切割后的电池板单元图像。
图1 电池板图像处理流程
2 缺陷检测方法研究
2.1 DenseNet网络模型
本文中针对太阳能电池板缺陷进行检测,利用DenseNet 网络模型对缺陷进行检测,由于DenseNet 模型是在ResNet 基础上的改进,它提出了一种全新的密集连接机制,连接来自不同层的特征图,可以有效实现特征重用,提升计算效率。但是与ResNet 模型相比,DenseNet 模型在处理特征图时,需要每一层的特征图保持一致,因此,需要在DenseNet 模型中加转换器结构。DenseNet 是采用的密集机制,层与层之间采用密集的连接方式,转换器结构只能保证相邻的模块大小一致,增加池化层可以调节特征图的大小。
2.2 融合L2正则化
太阳能电池板缺陷存在很多相似性,在电池板缺陷数据集中,数据集相对较小。会导致在训练的过程中出现过拟合现象。为了解决这个问题,在模型中融合L2 正则化,式⑴为没有添加L2正则化的迭代计算公式,式⑵为添加L2 正则化的计算公式。L2 正则化是在每次迭代计算中,先乘以一个小于1 的因子从而使得最终参数计算的结果变小。在式⑵中乘以因子,因为参数值小的模型简单,能够有效地适应不同特征分布电池板缺陷数据集,这样,可以在一定程度上避免过拟合,因此,式⑵添加L2 正则化可以有效地避免过拟合现象。
2.3 调整Batch Normalization层
在神经网络模型中,随着深度不断增加,太阳能缺陷检测图像像素值分布为以0 为均值,单位方差为正态分布时可以加速收敛速度。而每层特征值的分布将会逐渐向激活函数输出区的上下两端靠近,这样会导致梯度逐渐消失。调整Batch Normalization 层,将上一层的输出利用式⑶进行归一化,可以将该层特征值分布变回到标准正态分布,特征值会落在激活函数对于输入敏感的数值区间。当输入的值发生微小变化时,损失函数会有较大的起伏,在避免梯度消失的同时,加快收敛[8]。
2.4 激活函数SELU
常用的激活函数为式⑷,式⑷中,当x的取值小于0时,函数值为0。
在神经网络中,选用该激活函数会造成一部分神经元死亡,导致梯度消失。本文采用SELU 激活函数,计算公式为式⑸。
其中,δ=1.050700987,α=1.673263242,这两个参数的值是经过大量的计算验证得到。
当x 大于0 时,激活函数SELU 的正半轴的导数是一个大于1的值,当x小于0时,通过计算得到一个极小的值,与RELU 激活函数相比,可以防止神经元死亡。这样,可以实现单侧抑制,提高网络的稀疏表达性。该激活函数有效针对样本数据集较小,以及网络深度大造成的梯度消失问题,从而提高网络模型的鲁棒性。
3 实验结果
本文选用具有虚焊缺陷的电池板图像如图2 中(a)、(b)、(c)、(d)四幅图片,电池板的生产是由多个晶体硅板焊接而成,在生产过程中会存在焊接部分一体性不够好,而影响电池板的使用。检测电池板的焊接缺陷也是很有必要。利用本文所设计的模型对虚焊缺陷的电池板进行检测,得到的实验结果如图2所示,实验的识别准确率达到92.78%。
图2 以上四幅为带有虚焊缺陷的电池板图像
太阳能电池板长期处于风吹日晒的地方,由于这种地理环境的影响,会使得电池板出现隐裂,影响使用寿命,对隐裂进行检测并及时修复可以延长使用寿命。本文利用该模型对具有隐裂缺陷的电池板如图3 中(a)、(b)、(c)、(d)四幅图像进行检测,实验结果如图3所示,得到的识别准确率为93.28%。
图3 以上四幅为带有隐裂缺陷的电池板图像
4 结论
本文利用DenseNet 网络模型,融入L2 正则化对太阳能电池板进行检测时能够在一定程度上避免过拟合现象,调整Batch Normalization 可以在避免梯度消失的同时加快收敛速度,使用SELU 激活函数可以提高该模型的鲁棒性,从实验结果可以看出,该模型对于隐裂缺陷的检测具有很好的效果,对虚焊的检测效果稍不及对隐裂缺陷的检测,该模型在其他缺陷方面的检测有待进一步研究。