基于深度神经网络的太阳能电池组件缺陷检测算法研究

2020-06-04 05:49刘怀广刘安逸周诗洋刘恒玉杨金堂
应用光学 2020年2期
关键词:角点关键点组件

刘怀广,刘安逸,周诗洋,刘恒玉,杨金堂

(1.武汉科技大学 机械传动与制造工程湖北省重点实验室,湖北 武汉 430081;2.武汉科技大学 机器人与智能系统研究院,湖北 武汉 430081)

引言

太阳能作为一种可再生的清洁能源,一直受到广泛的关注,但受限于转换效率的问题,没有得到大规模推广。而太阳能电池组件作为把光能转化成电能的主要媒介,其质量直接影响到光电转换的效率、使用寿命以及安全[1]。太阳能电池组件在生产过程中受材料和工艺影响,不可避免会产生各种缺陷(如隐裂、黑斑、断栅、黑心等),从而造成组件产品良品率的下降,因此在生产过程中对组件缺陷进行识别对于提高太阳能组件成品质量显得尤为重要。

基于机器视觉的电池片缺陷检测常见的检测方法有可见光成像、热红外成像、电致发光成像(electroluminescence,EL)和光致发光成像(photoluminescence,PL)[2-3]。可见光成像只能检测电池片的外观缺陷,例如缺角、碎片、色差,脏污等,对内部缺陷无能为力;热红外和EL 成像需要对电池片通电检测,这可能对电池片造成二次损伤,而且因为接触式检测,效率较低;光致发光(PL)[4]是一种通过高能外部光源(主要是激光)进行照射,使硅离子跃迁产生荧光成像的技术(其原理如图1所示)。PL 技术可对电池片表面和内部缺陷同时进行成像,与现有的EL 技术相比,PL 不需要接触电池片,且能对过程片(非成品电池片)进行检测,从而更利于产品的质量把控,因此光致发光技术逐渐成为太阳能电池片检测的主要技术。

图1 PL 成像原理Fig.1 Principle of photoluminescence imaging

在电池片缺陷视觉检测方面,国内外也进行了相关的研究。Deitsch S 等[5]分别使用支持向量机(SVM)和卷积神经网络(CNN)对高分辨率单晶和多晶太阳能电池片EL 图进行缺陷识别,判断组件电池片缺陷概率,CNN 模型平均准确率达到88.42%,SVM 模型平均准确率82.44%;张磊等[6]使用光致发光成像检测太阳能电池中的断栅缺陷,然后详细研究了外部偏置控制和光照强度对PL 图像的影响,最后与EL 成像相比,得出结论,使用PL 成像识别电池片断栅具有突出的优点;Anwar S 等[7]提出了一种检测多晶太阳能电池中微裂纹缺陷的算法,使用各向异性扩散滤波器和图像分割技术,结果表明,该方法检测太阳能电池中的微裂纹平均准确度为88%;Xu 等[8]使用机器视觉方法包括图像分割、高斯滤波、Hough 变换对光伏模块的微裂纹进行检测,所检测微裂纹适用于尺寸较大的裂纹,对细小隐裂效果不佳;王宪保等提出一种基于深度学习的太阳能电池片表面缺陷检测方法,该方法首先根据样本特征建立深度置信网络(DBN),并训练获取网络的初始权值,然后通过BP(backpropagation)算法微调网络参数[9],能较快对缺陷进行识别,但是在实际应用中,工业相机拍摄出的百万像素级图像对模型的训练形成很大的挑战;伍李春等提出了一种基于机器视觉以及人工神经网络的太阳能电池片表面质量检测方法,基于模板匹配检测外形缺陷,基于HIS(hue-saturation-intensity )空间下的颜色直方图检测颜色缺陷,利用两类人工神经网络进行断栅检测[10],针对断栅这一缺陷其建立的正则化RBF(radial basis funtion)分类器的正确识别率能够达到98.57%。

电池片隐裂缺陷漏检会对整个组件的产能造成严重影响,因此对缺陷检测算法的准确率有很高的要求。以上方法在隐裂缺陷识别的准确率上还有待提高,并且以上方法主要针对单硅片检测,但一组电池片组件一般是由10×6 或12×6 的单硅片排列而成。整个组件图像像素达到7 000 万以上,单纯的单片组合检测会严重影响检测效率;同时,硅片各部分材料性质差异会引起PL 成像后其图像灰度分布不均、缺陷边缘不清晰等问题,这对检测算法提出了更高的效率和准确性要求。针对以上问题,本文提出一种基于聚类的待检测区域定位方法来解决工业应用中的高像素图片问题,然后利用图像处理对缺陷进行预筛选,最后利用3 个卷积神经网络模型对细小隐裂、黑斑以及无缺陷的区域进行区分,实验结果验证了上述方法能准确地检测出太阳能电池组件的隐裂缺陷。

1 组件图像的拼接

由于组件尺寸较大(一般为2 000 mm×1 000 mm),为了保证成像精度,需要由多个相机共同成像。本文主要采用8 个相机(其布局如图2所示)进行单独成像,然后把8 张图片拼接成一张大图,方便保存和跟踪。

图2 相机布局及图像视野(10×6 组件)Fig.2 Camera layout and image view (10×6 component)

相机i图像在大图的位置(xi,yj)可表示为

式中:Wk代表k相机的图像宽度;Hi代表i相机的图像高度。为了保证拼接的完整性,每台相机成像视野需要有一定的重合量,然后通过求每个相机图像中的匹配点进行拼接,消除重合区域。另外,为了提高电池组件缺陷检测效率,需要获得的最小单元是单块电池片,然后根据先验知识来进行关键点检测。

1.1 关键点坐标定位

由于组件图像由多个相机成像组合而成,因此各相机成像后需要按照规则进行拼接,保证整幅图过渡自然,相机间没有重复或间隙。从图2可以看出,每个相机视野范围包含有3×3 硅片区域,拼接时需要保证每个硅片在横向和纵向对齐,因此最直接的匹配关键点在于硅片边界相交的区域(见图3)。如何准确地获得关键点的位置是拼接的关键。

图3 相机2 的拼接匹配关键点Fig.3 Stitching matches key points of Camera 2

由于激发光源和硅片性质的不均匀性,相机所成图像会在灰度上有些差异,直接把二值化后的图像投影会因为硅片的高亮度而消除硅片边缘信息(如图4(a)所示),而边缘投影可以很好地屏蔽掉渐变灰度,克服灰度干扰问题(如图4(b)所示)。

图4 单相机投影定位Fig.4 Single camera projection positioning

图4(b)是经过Sobel 边缘二值化后的图。可以看出,最高的投影位置能够正确反应关键点所在的横坐标和纵坐标,但是鉴于Sobel 边缘较粗且呈现双边特征,故在定位关键点时存在误差。实际上,Sobel 边缘附近的干扰,存在着一定的邻域近似性,而真实边界往往具有突发性,因此一般可以通过相邻差分消除边缘干扰,但过于紧邻的差分也会抵消边缘本身的值,特别是对比度较弱的边缘。为了获得更精确的关键点的坐标值,本文提出了一种基于投影曲线邻域极值差分的关键点定位法,其公式如下:

式中:C(j)为相机边缘图像投影曲线;Δ为邻域跨度。

图5是相机2 边缘图二值化Y方向投影曲线经过邻域极值差分前后的对比,其中邻域跨度为8 像素。可以看出,因为原始的Sobel 算子的跨邻域差分性质,其边缘投影最大值会有一定的偏移,而经过邻域极值处理后投影曲线的最大值虽然有一定的降低,但峰值附近的噪声也相应地消除了,且最大值更能反映关键点坐标位置。因此,根据先验知识,在一定数量的峰值(本文单边最大为4 个峰值)附近通过遍历最大值便可以定位到关键点坐标P(x,y)。

1.2 基于关键点的图像拼接及单片分割

关键点坐标获取了以后,就可以根据各相机的位置关系和关键点重合的特性来计算相机图像在总图像的平移量。每个相机有4 个边,每个边最多有4 个关键点,为了方便处理,本文对各边进行了编号(见图6),不同位置的相机所要进行关键点求取的边如表1所示。

图5 相机Y方向投影曲线的邻域极值差分处理(Δ=8)Fig.5 Neighborhood extreme value difference processing of camera Y-direction projection curve

图6 相机边的序号Fig.6 Edge index of camera

表1 各相机要求的关键点边Table1 Key points required by each camera

相机图像在移动时,为了保证移动一致性,取相机1 为基准,其图像不动,其他相机的移动方向如图7所示。第二排相机首先与第一排相机依据关键点y坐标进行列对齐,然后跟随第一排相机再进行x方向移动。

图7 各相机的移动方向Fig.7 Movement direction of each camera

各方向的相对移动量根据关键点坐标进行求平均,相机i相对与相机j的移动量公式如下:

式中PkE1和PEk2分别表示相机i和相机j对应的E1 边和E2 边的关键点,如相机6 对应的4#边与相机2 对应的2#边。拼接结果如图8所示。

图8 组件图像的拼接结果Fig.8 Assembly result of component image

另外,利用各相机的关键点坐标信息,还可以进一步对单片进行分割,进而利用单片局部区域的先验布局信息,加快缺陷的检测效率。

2 基于聚类的缺陷待检测区域定位与预筛选

本文检测的电池片规格有158 mm×158 mm 和162 mm×162 mm 两种,每片有6×6 的激光孔(见图9)。因为应力集中等原因,激光孔周围容易产生一种内部微裂纹,称为隐裂。隐裂在电池组件的使用过程中容易造成整片电池片的破碎,严重影响了电池片的寿命和效率,因此隐裂的检测是电池片检测的重要内容。PL 成像时激光孔与周围珊线因为没有被激发离子,从图像上看,会形成黑色圆点加十字线,呈现出角点特征(如图9),而附近的隐裂在PL 图中表现为发光较暗的方向线,常表现为45°斜线(第一类隐裂,如图10(a)所示)或者是形成X 交叉形(第二类隐裂,如图10(b)所示),大小为0.5 mm~5 mm。对于黑斑和一些不在角点上的较短隐裂(如图10 中(c)、(d)所示)不易造成电池片破碎,在实际生产中根据生产批次决定需不需要剔除,把黑斑和不在角点上的隐裂与第一类、第二类隐裂区分开是实现自动缺陷识别的重点和难点。

目前,人工检测一整块组件的时间在5 s 左右,为了提高生产效率,视觉检测时间限制在2 s,检测精度要求0.5 mm,本文检测精度为0.3 mm。为了提高图像处理的实时性,本文在各激光孔的周围64×64 像素的区域内进行检测。但是由于一张组件图含有2 000 多个激光孔,如果每个孔周围都进行检测仍然会消耗大量的时间,降低实时性,因此对局部图像先进行预筛选,然后对候选缺陷区进行缺陷识别。

图9 单电池片正面及PL 图像Fig.9 Single cell plate front and PL image

图10 角点缺陷图Fig.10 Diagrams of corner defects

2.1 待检测区域定位

待测区域的定位关键在于获得激光孔的位置。根据激光孔呈现角点的特征,本文待检测区域定位设置了4 个步骤:图像降噪,边缘提取,角点检测和角点筛选。首先对单电池片图像进行高斯滤波,然后选用Sobel 算子进行边缘提取,再对图像进行角点检测,最后根据距离和位置条件进行筛选。

2.1.1 距离条件

根据电池片结构,孔间距是均匀分布的,孔间距在电池片宽度的1/6 左右,过小会造成多选,过大会漏选。因此,检测时就可以作为限定条件提高鲁棒性。

把角点坐标P(x,y)在单维度方向上(x和y方向)从小到大进行排序,然后按照(4)式的规则分成有限个列表:

式中:xn、yn分别是第n个点的横坐标和纵坐标;Tx为设置的坐标距离阈值(本文根据电池片的尺寸设置为15)。当第n个和第n-1 个点的横坐标差值大于Tx时就把第n个点的横坐标存在一个新的列表中,从第2 个点横坐标开始直到处理完每一个点的横坐标,最终得到有限个列表。再依据列表的长度进行筛选,对于长度小于3 的列表中储存的角点坐标从总的角点里面剔除,获得最终的角点信息(如图11 所示)。

图11 待检测角点定位Fig.11 Location of corner points to be detected

2.1.2 位置条件

获得的36 个角点除了距离上有限定特征,实际上在位置上也会呈现出均匀分布特征。因此为了减小位置误差并获得准确的角点坐标,对近似同一行(列)上的角点坐标进行3σ判定。其过程如下:

首先按(5)式对每一行计算关键点坐标的一维距离:

式中σx代表某行关键点的横坐标标准差。最后根据保留的关键点求行坐标:

也就是舍弃坐标偏离过大的角点,最后把保留的角点进行求平均,获得单行关键点的横坐标。用同样的方法得到6 条纵线,这6 条横线和6 条纵线的交点就是我们要找的36 个角点,如图11(b)所示。

2.2 基于面积的缺陷候选区判定

为了对角点上的缺陷进行识别,需要对角点周围可能存在缺陷的区域进行判定。首先对36 个角点周围64×64 的局部区域进行轮廓查询,计算获得的轮廓面积并按照从小到大排序。如果检测到的轮廓大于6 个,按照(8)式对轮廓进行判定,筛选出可能存在缺陷的区域。

式中:n表示检测出的轮廓数;sx表示第x个轮廓的面积。对于一些特殊情况(如PL 产生过曝光图像)可能导致检测到的轮廓小于6 个,就对36 个角点周围区域定义为候选区域。

筛选出疑似缺陷轮廓之后,还要进一步确定疑似缺陷是否在角点上。首先,我们计算出轮廓的中心点坐标,结合之前定位的36 个角点坐标,找出轮廓中心点四周32×32 个像素内包含的角点。如果这个轮廓附近没有角点,则可以排除掉这个候选区域,最后形成缺陷识别的局部图,为神经网络的识别打下基础。图12 为整个候选区的筛选流程图。

图12 角点截图流程Fig.12 Corner screenshot process

3 缺陷识别的深度网络模型

近年来,深度学习在计算机视觉图像识别领域取得了突出的成绩,尤其是卷积神经网络,其特殊的网络结构对二维图像的复杂背景、不均匀光照、角度变化等有很强的鲁棒性,近些年被广泛应用于计算机视觉中的分类、检测、分割等任务[11-12]。为了降低人工特征对电池片缺陷检测的影响,本文采用了端到端的深度网络识别方法。但是由于样本的限制,我们在轻量化的卷积神经网络模型LeNet-5[13]的基础上进行了改进,形成了3 种不同结构不同深度的卷积神经网络模型,以适应组件缺陷识别的需要。模型结构及具体参数如表2、图13 所示。模型1 的神经网络由2 个卷积层、2 个最大池化、3 个全连接层组成,即在原来LeNet-5 网络结构基础上进行微调,将卷积层和两层全连接层激活函数改为Relu 函数,提高模型的收敛速度,池化层改为最大池化,输出层则使用现在处理多分类问题常用 的 Softmax作为激活函数,同时加入了Dropout[14]防止过拟合。具体来说,2 个卷积层的过滤器数目分别是6、16,3 个全连接层单元数分别是120、84、4,所有卷积层均采用5×5 的内核大小,对于最大池化层,池化层的核都是2×2,步长为2。模型2 在模型1 的基础上增加模型的复杂程度,改为3 个卷积层、3 个最大池化、3 个全连接层,同时采用更小的卷积核,卷积核大小改为3×3,以增加模型的特征提取能力,同时也意味着更多噪声的干扰,全连接层不作改变。模型3 在前2 个模型上进行精简,减少网络的深度,防止过拟合,同时调整全连接层的维度,防止欠拟合,全连接层改为2 层,第1 个全连接层是1 024 个单元,第2 个全连接层是4 个单元,模型1、2、3 的参数量分别是400 267、656 627、2 838 362,参数总量依次增加。

表2 网络模型结构及部分参数Table2 Network model structure and some parameters

图13 训练所用卷积神经网络模型Fig.13 Convolutional neural network models for training

4 实验与分析

4.1 样本的收集及整理

本文数据集取自江苏省某太阳能电池厂,从不同生产批次抽取了3 000 张电池片组件PL 图片。这些电池片组件总共包括180 000 个电池片,经过挑选最终得到8 000 个有缺陷或者有代表性的目标电池片,在前文角点定位的基础上对这些电池片的角点局部图像进行截图,形成20 000 张64×64像素大小的原始缺陷图像数据集。同时为了提高模型训练的质量[15],通过对原始样本缺陷加入噪声、颜色变换、透视变换等方法对原始图像数据集进行了增广,最后形成了40 000 多张样本图像数据,其中包含无缺陷、第一类缺陷、第二类缺陷、黑斑和不在角点上的缺陷,如图14 所示。

图14 部分训练样本Fig.14 Part of training samples

将获得的标准样本图像数据集按一定比例分成3 个部分:训练集、验证集与测试集(如表3所示)。

表3 样本图像数据集Table3 Sample images data set

4.2 模型训练及结果分析

本文硬件平台为Intel Core i7-8750H CPU、内存6GB 的GTX1060 GPU,训练算法由Python 编写完成。本文构建的电池组件缺陷检测模型采用有监督训练方式,对应图像标签表示输入图像的类别标签,分为“无缺陷”、“第一类缺陷”、“第二类缺陷”、“黑斑和缺陷不在角点上”4 类,3 种深度网络的训练误差曲线如图15 所示。

从图15 中可以看出,随着神经网络训练迭代次数的增加,损失不断下降,模型逐渐收敛,3 种网络模型在验证集上的准确率不断上升。模型1在验证集上的准确率是99.7%,模型2 在验证集上的准确率达到99.8%,模型3 达到99.8%。可以看出,3 种模型在验证集上的准确率都非常高。将上述3 种卷积神经网络迭代所得到的最优模型文件用于测试样本,对预先准备好的4 000 张测试集样本图片进行分类测试,表4给出了3 种模型的测试样本识别情况。同时对程序实时性进行测试,在使用不同模型的情况下,模拟实际生产情况分别对100 张电池片组件PL 图进行缺陷检测,模型1 总共用时156.99 s,模型1 单张电池片组件PL 图缺陷检测平均用时1.57 s,模型2 总共用时156.86 s,单张电池片组件PL 图缺陷检测平均用时1.57 s,模型3 总共用时157.76 s,模型3 单张电池片组件PL 图缺陷检测平均用时1.58 s。

图15 模型训练准确率及损失曲线Fig.15 Model training accuracy and loss curve

表4 不同模型识别准确率对比结果Table4 Comparison results of different models recognition accuracy

对比图13 和表4可以看出,模型2 在模型1的基础上加深网络结构,虽然能提取到更多的图形特征,但是模型过拟合导致最终的识别效果不佳;模型3 网络层数最少,网络最精简,在使用卷积层提取图片特征信息充足的情况下全连接层通道数对最终的识别率影响比较明显,模型的参数量集中在全连接层。采用不同的网络结构,对识别准确率有一定的影响,增加网络深度后模型2的识别准确率相比模型1 下降了5.87%,说明针对此类缺陷体征提取不需要过于复杂的网络,也不需要提取过于细腻的特征。减少网络层数的模型3 在每种类别上的识别准确率都有所提升,整体的识别准确率相比模型1 提升了1.3%,达到99.25%。模型3 在此类缺陷特征的提取和分类上取得了不错的效果,为实际生产奠定了基础。

5 结论

太阳能电池组件光致发光成像技术以及缺陷面积占比不到万分之一的特点决定了此类缺陷检测具有较高的技术难度。本文结合实际生产需要,针对此类隐裂在常光下的不可见性,采用光致发光成像技术;在此基础上,利用图像处理手段对高像素PL 组件图片实现缺陷快速定位,为下一步缺陷检测的实时性打下基础;在分析缺陷特征复杂程度的基础上提出了3 种卷积神经网络模型对缺陷进行分类,尽量避免过拟合对模型识别率的影响,从而提高模型的泛化能力。最终实验表明了该太阳能电池组件缺陷检测方法的有效性和准确性,为实现太阳能电池组件缺陷检测自动化打下了基础。

猜你喜欢
角点关键点组件
一种改进的Shi-Tomasi角点检测方法
无人机智能巡检在光伏电站组件诊断中的应用
肉兔育肥抓好七个关键点
多支撑区域模式化融合角点检测算法仿真
建筑设计中的防火技术关键点
新型碎边剪刀盘组件
U盾外壳组件注塑模具设计
基于FAST角点检测算法上对Y型与X型角点的检测
机械能守恒定律应用的关键点
风起新一代光伏组件膜层:SSG纳米自清洁膜层