王宗良, 陆 丽
(上海电机学院 电气学院, 上海 201306)
在光伏发电系统中,光伏电池将太阳能转化为电能,转换效率对整个发电系统的运行效率至关重要。然而,在光伏电池的制造过程中,晶硅制作工艺可能引发表面缺陷,例如裂痕、断栅和破损等[1]。因此,光伏电池表面缺陷的检测成为延长使用寿命和提高发电效率的关键所在。光伏电池电致发光(Electroluminescence, EL)测试技术是一种常用的缺陷检测方法,它能够通过对晶体硅电池施加电压来使其发光,并使用机器视觉技术进行图像分析,以检测和分析光伏电池的缺陷[2]。另外,机器视觉技术中深度学习方法在图像分割、目标检测、图像分类等领域发挥着重要作用[3-4]。通过输入大量的光伏电池图像样本进行训练学习,深度学习模型能够提取出深层抽象特征,并在实际环境中展现出良好的鲁棒性和泛化能力。因此,基于深度学习的机器视觉技术在光伏电池缺陷检测中的应用越来越广泛。
任喜伟等[5]提出了一种基于改进U-net网络的光伏板图像分割方法,使用深度可分离卷积和ECA 注意力机制组成一个复合模块,在网络中穿插多个复合模块来提升分割性能。黄彦乾等[6]以原型网络方法为基础,通过优化模型主干网络和调整相似性度量标准有效解决了原型网络对光伏板缺陷的特征嵌入能力较差和模型精度一般的问题。Sun等[7]通过改进锚点和增加预测头实现对小目标的检测,使之在较高帧率下能继续保持87.9%的mAP值。目前,部分现有的缺陷检测算法在解决EL图像中缺陷和背景耦合问题,以及提高微小缺陷检测精度方面存在一定的局限。作为YOLO系列中最成熟的产品,YOLOv5目标检测算法具备更高的检测精度。
本文基于YOLOv5的目标检测网络,改进其网络结构和参数,实现光伏电池缺陷检测。首先,采用K-means++聚类算法和IoU 距离,以改善聚类结果的准确性和稳定性;其次,在C3模块增加密集残差结构,增强特征表达能力,减少训练过程中产生的特征图冗余;再次,使用WIoU 损失函数,以提高回归精度[8-11]。最后,通过消融实验对实验结果进行分析,评价本文改进模型的综合性能。实验结果表明,改进YOLOv5算法能够对光伏电池EL缺陷图像实现高精度缺陷检测。
YOLOv5算法检测流程可分为4个部分,输入端(Input)、特征提取层(Backbone)、特征融合层(Neck)和输出端(Prediction)。
输入端对原始图像进行填充或缩放,并将图像数据归一化为[0,1]区间内的浮点数。增强马赛克数据,将图像拼接后进行随机缩放、裁剪和排列,有效扩充数据集的数量[12]。同时,采用自适应锚框计算并结合遗传算法,增加了结果的可靠性。自适应图片缩放和更加合理的黑边填充比例,减少了信息冗长带来的干扰。
特征提取层采用了CSP-Darknet53作为主干网络,由复合卷积模块、C3(具有3个卷积的跨阶段局部瓶颈)和快速空间金字塔池化(Spatial Pyramid Pooling-Fast)3个模块组成[13-14],通过模块不断叠加来深化网络结构,实现对目标特征的提取。
特征融合层采用特征金字塔网络(Feature Pyramid Network, FPN)+路径聚合网络(Path Aggregation Network, PAN)金字塔式的特征融合方法[15-16]。FPN自顶而下将高层的强语义信息向下传递;PAN 自底而上补充低层的强定位信息传递,进一步提取和融合特征提取层提取到的不同尺度的特征信息。
输出端主要对特征融合层融合的3个尺度信息进行分类和定位,预测输出目标对象的类别、置信度以及边界框位置,最后输出检测结果。
基于YOLOv5模型在光伏电池EL缺陷图像检测中的实际需求,对YOLOv5模型进行了参数优化和网络调整。
YOLOv5网络模型的先验框是用K-means聚类算法在COCO 数据集上得到的。但是COCO数据集其本身的检测种类较多,以至于先验框尺寸大小分布十分不均衡,这不适合光伏电池EL缺陷检测。同时,K-means聚类算法本身也存在着一些缺陷,由于初始聚类中心是随机确定的,有可能导致聚类效果不稳定,甚至陷入局部最优解。
相对于传统的K-means算法,K-means++算法在计算复杂度上多了一步聚类中心的选取优化,能够让初始聚类中心更具离散性,使聚类结果趋于全局最优解。K-means++聚类流程图如图1所示。
图1 K-means++聚类流程图
在聚类操作中,距离公式的选择对于聚类结果的准确性非常重要。在标准的K-means++聚类算法中,通常采用广泛应用于连续数值特征的欧几里得距离公式作为度量函数,但是在目标检测中,可能会导致较大的真实框相比于较小的真实框产生更大的误差。在这种情况下,本文采用IoU 的距离公式作为度量函数,即
式中:b为真实框;c为聚类中心。
随着网络层数加深和特征图通道数增加,可能会导致特征图的冗余问题。为了解决这个问题,将YOLOv5中的C3模块替换成了梯度流更丰富的C2f模块。C2f具有2个卷积的跨阶段局部瓶颈,可以通过密集残差结构能够增强特征表达的能力,将大尺度的语义信息和小尺度的细节信息相结合,增强卷积神经网络的特征融合能力;并根据缩放系数,通过拆分和拼接操作改变通道数,降低计算复杂度和模型容量,提高推理速度,实现进一步的轻量化;同时由于兼顾了所有通道的信息,不会造成精度下降。
在C2f模块中,第1个卷积(Convolution)模块的输出通道数为c,然后拆分成两份0.5c个通道的特征图,并将划分后的结果存入列表y中。后面串联的n个瓶颈层中的每个瓶颈层(Bottleneck)的输入都是列表y的最后1个元素即0.5c个通道的特征图。每个瓶颈层的输出都会被存入列表y中作为下1个瓶颈层的输入。经过n个瓶颈层后,会把列表y中的元素按通道拼接,得到1个0.5(n+2)×c维的特征图。最后,经过第2个卷积模块,将特征图的通道数压缩输出。改进前后模块结构如图2所示。
图2 改进后模块结构图
YOLOv5网络边界框损失函数主要用于衡量真实边界框和预测边界框之间的误差,从而指导网络优化和提升目标检测性能。
由于光伏电池EL缺陷数据集中的1张图片里包含多个检测目标,因此数据在人工标注过程中难免会产生一些质量较低的标注示例,而且CIoU 损失函数只考虑了边界回归的重叠面积、中心点距离和长宽比一致性的问题,并没有考虑两者之间的区域问题。因此本文采用WIoU(Wise IoU)损失函数,WIoU 着重于处理普通质量的锚框,通过提供合理的梯度增益分配策略来降低锚框之间的竞争性。该策略有助于减小低质量实例引起的有害梯度,并同时降低高质量锚框的竞争力,从而提升检测器的整体性能。
WIoU 在IoU 损失函数的基础上结合了距离注意力机制,其中,第1层注意力用于计算样本之间的距离,第2层注意力则用于削弱几何因素的惩罚。WIoU 损失函数为
式中:RWIoU为距离度量的惩罚项;LIoU为IoU 损失函数;x、y为锚框的中心点坐标;xgt、ygt为真实框中心点坐标;Wg、Hg为真实框与锚框的交集的宽和高。
RWIoU∈[1,e)和LWIoU∈(0,1)处于动态的相互作用之中。RWIoU会显著放大普通质量锚框的LWIoU;LWIoU会显著减少高质量锚框的RWIoU,并在锚框与真实框重合较好的情况下显著降低其对中心点距离的关注。
本文使用了由河北工业大学和北京航空航天大学联合发布的光伏电池异常缺陷检测数据集PVEL-AD进行模型的训练、验证以及测试[17]。根据数据分布情况以及研究需要,在原始数据集的基础上进行筛选,选择线状裂纹(crack)、断栅(finger)、黑芯(black core)、粗线(thick line)、星状裂纹(star crack)、水平位错(horizontal dislocation)、垂直位错(vertical dislocation)、短路(short circuit)8类常见缺陷进行训练和交叉验证。首先对组成的数据集进行图像预处理,再按照8∶1∶1的比例划分训练集、验证集、测试集。
硬件环境:操作系统为Windows11;GPU 为NVIDIA GeForce RTX 3050,显存为4GB;CPU为Intel i5-12500H。
软件环境:编程语言为Python3.8,网络开发框架为Pytorch1.12.1。CUDA 并行计算框架为11.6。
表1 部分实验参数设置
为评估模型性能,实验中采用了多项指标来全面评估模型表现,其中包括准确率(Precision)、召回率(Recall)、和平均精度均值(mean Average Precision, mAP)。其中,mAP@0.5表示IoU 阈值为0.5时的平均精度均值,而mAP@0.5∶0.95表示IoU 阈值在0.5到0.95范围内,步长为0.05时的平均精度均值。
根据准确率、召回率、mAP@0.5、mAP@0.5∶0.95等4项指标,发现在光伏电池EL缺陷数据集中,改进算法在300个训练次数内检测结果波动较为平稳,相比于原始算法震荡较小,在150次后各项指标趋于平稳,200次后数值稳定且模型收敛。检测结果也都有不同程度的提升。这表明改进方法在提高模型性能方面是有效的,可以更好地适应实际场景的需求。如图3所示。
图3 改进YOLOv5与YOLOv5检测数据变化图
为全面评估本文改进算法的性能,对测试集中使用改进的YOLOv5算法和原始的YOLOv5算法进行了检测效果展示。通过锚框可视化的方式,可以直观地比较这两个模型在检测任务上的优势,并对原始图像中的缺陷位置和数量进行分析。图4为光伏电池EL缺陷图像的检测结果。
图4 光伏电池EL缺陷图像的检测结果对比
图4 (a)为多个小目标图像,原始网络在特征提取方面稍有不足,在检测过程中存在几处漏检问题;而改进后的模型通过更好地利用特征和更关注目标区域,降低了漏检率。图4(b)为被栅线隔断的大尺度目标图像,由于被栅线的部分遮挡,原始模型出现了漏检情况;而改进后的模型具备更强的抑制干扰能力。图4(c)为检测目标位于图像边缘,边缘部分的图像信息受背景干扰严重;而改进模型对于缺陷识别的定位范围和识别精度表现更好。图4(d)检测目标相对于背景图像信息不明显,而且属于长宽比较大的目标,原始网络对特征的提取稍有不足;而改进模型将其准确识别了出来。图4(e)对于在重叠的目标图像,且图像对比度较暗,亮度明显不足,原始模型只能识别部分缺陷;而改进模型能够通过特征正确识别缺陷,识别精度明显优于原始模型。
经过改进的算法相较于基准模型YOLOv5,在缺陷识别方面表现出更高的精度,成功降低了漏检率和误检率。
为分析不同改进策略对模型检测性能的影响,在保证数据集和训练参数相同的前提下,通过控制变量进行验证。实验结果如表2所示。
表2 改进YOLOv5算法的消融实验
由表2可知,YOLOv5模型修改为K-means++聚类先验框,检测精度mAP@0.5和mAP@0.5∶0.95分别提高了0.8%和0.9%,准确率和召回率也有了改观,可见初始先验框的选择确实会直接影响网络对目标的检测精度;YOLOv5模型融入C2f模块之后,检测精度mAP@0.5和mAP@0.5∶0.95分别提高了1.8%和1%,可见C2f模块可以通过自适应调整不同层级特征图的融合比例,来对齐局部特征;YOLOv5模型修改损失函数为WIoU之后,mAP@0.5和mAP@0.5∶0.95分别提高了1.6%和1.4%,可见WIoU 损失函数能提供符合当前情况的梯度增益分配策略。
将这几种改进策略同时加入YOLOv5模型,在提高分类指标,满足实时性要求的同时,检测精度mAP@0.5和mAP@0.5∶0.95分别提高了2.6%和2.5%,证明了改进策略的有效性。
针对光伏电池EL缺陷检测,提出了一种基于改进YOLOv5的光伏电池EL 图像缺陷检测方法。首先采用K-means++聚类算法产生先验框,以避免聚类结果不稳定产生的局部最优解,从而选择更适合检测光伏电池缺陷的先验框。其次修改C3模块为梯度流更丰富的C2f模块,提高算法对光伏电池缺陷的敏感度,减少模型参数量,提升检测性能。最后采用更强大的WIOU 损失函数替代CIOU,使模型聚焦于普通质量的锚框,提高检测器整体性能。实验结果表明,改进YOLOv5算法的mAP@0.5 优于原始网络,达到0.942,较YOLOv5提升2.6%,有效提高复杂背景下缺陷检测精度,满足模型部署要求,具有一定的泛化性能。
对模型进行轻量化处理有待进一步研究,如模型剪枝等方法,以减少模型参数量和计算量。此外,引入新的模块架构,抑制复杂背景的干扰,并进一步提升模型的泛化性能。通过这些改进措施,使模型更加适应实际应用场景的需求,实现更好的性能和效果。