APP下载

基于改进YOLOv5的太阳能电池片表面缺陷检测

2022-07-02王淑青张鹏飞要若天鲁东林顿伟超

仪表技术与传感器 2022年5期
关键词:太阳能损失电池

王淑青,张鹏飞,要若天,鲁东林,顿伟超

(1.湖北工业大学电气与电子工程学院,湖北武汉 430068;2.武汉大学电气与自动化学院,湖北武汉 430072)

0 引言

太阳能作为主要新能源之一,安全隐患低,可适用性强。太阳能在利用过程中不会造成环境污染,并且储量大,维护成本较低,是很合适的代替能源[1-2]。由于太阳能电池片产出量巨大,所以生产工艺要求也越来越严格,太阳能电池片的表面质量直接影响着光能的吸收效率[3]。在太阳能电池片的生产过程中,由于机械故障及人为原因,不可避免地会对电池片表面造成各种损伤,根据损伤的情况可划分为破损、划痕、断栅、污渍4种主要缺陷类型,这些缺陷对发电效率有极大的负面影响。因此,为保证太阳能电池片的生产质量,在生产流程中增加太阳能电池片表面缺陷检测环节是非常有必要的。

近年来,基于机器视觉和计算机视觉的检测方法被不断地应用于太阳能电池片表面缺陷检测,如视觉显著性检测法、鲁棒视觉检测法、数据增强法以及卷积神经网络等方法[4-9]。这些方法虽然都能有效地检测出太阳能电池片表面的某种缺陷,但是并没有对生产过程中可能出现的多种缺陷进行检测,缺陷类型不够全面,并且检测效率偏低。

为了解决上述问题,本文提出了一种改进YOLOv5的太阳能电池片表面缺陷检测方法。在模型的输入端设计了一种动态反馈多尺度训练的数据增强方法,以提高小缺陷的特征训练精度,并优化了训练过拟合问题;采用指数线性单元(ELU)激活函数替换了Leaky ReLU激活函数,解决了神经元“死亡”问题的同时,使输出值更接近于0,加快收敛速度;在模型输出端采用聚焦的高效交叉损失函数(F-EIOU)来提高分类和定位精度。

1 检测模型原理

太阳能电池片表面缺陷检测方法主要采用YOLOv5s卷积神经网络,其结构与YOLOv4网络较为相似,为高实时性、高精度的one-stage检测网络[10]。YOLOv5s主要由输入端、Backbone、Neck以及输出端组成,如图1所示。

图1 太阳能电池片表面缺陷检测模型结构

模型输入端采用Mosaic数据增强,随机使用4张太阳能电池片图片进行裁剪并拼接为一张图片,同时采用自适应锚框计算增强方式,将预测框和真实框进行差值计算,反向更新网络参数,从而丰富图像数据集。

Backbone由CSPDarknet53(cross stage paritial dark network 53)+Focus结构构成,是主要的特征提取基准网络。其中,CSPDarknet53将特征图大小由608逐次下降到18,起到下采样的作用,通过特征映射和跨层次连接将电池片特征分解且合并,在减少计算成本的同时提高了特征提取的精度。Focus结构的核心为切片操作,保证了特征图宽度,提高了电池片细节特征的学习能力。

Neck部分由特征空间金字塔(FPN)和路径聚合网络(PAN)构成,不仅使用FPN将太阳能电池片特征图的高层信息进行传递融合,获取预测特征图,而且加入两个PAN结构,自下向上传达了强定位特征,进一步加强特征融合效果,从而强化了网络对太阳能电池片图像的缺陷分类和检测能力[11]。

模型输出端采用GIOU_Loss作为边界框损失函数,已解决边界框不重合时的问题。并使用非极大值抑制NMS进行后处理,以便更好地识别多目标选框,提高模型检测精度。

2 模型优化

2.1 动态反馈多尺度训练

尺度变化是指模型在不同尺度下的不公平以及对尺度较低的缺陷目标检测质量差的现象。动态尺度训练范式可以有效缓解目标检测中尺度变化的问题。YOLOv5s模型输入端中的Mosaic数据增强虽然对训练图像都进行了拼接操作,但其中有一些较大的特征并不需要重复此操作也可以达到很好的训练效果,反而限制了处理尺度变化的能力。为此本文改进了一种动态反馈策略来应对这个问题,如图2所示。

图2 动态反馈尺度训练流程图

在每次训练迭代中,获取太阳能电池片表面缺陷的损失比例作为反馈,如果当前迭代中的损失比例低于某一阈值,则判定此时可以通过补偿的方式来优化网络不平衡状态。如果损失比例小于或等于阈值,采取随机剪裁、缩放的方式将4张太阳能电池片表面缺陷图像随机拼接成一张图片作为输入数据。否则,如果统计的损失值超过阈值,则采用常规图像作为输入数据,具体表示如式(1)所示:

(1)

如图3所示,为常规图像和k=4的拼接图像,在模型训练中,缺陷特征训练框左上角的0,1,2,3分别表示太阳能电池片表面的破损、划痕、断栅、污渍4种缺陷类型。可以看出,在动态尺度反馈训练中,通过改进的拼接方式可以将较小的缺陷目标按比例进行尺度变化处理,而且拼接图像和常规图像大小相同,并不会额外增加网络计算量,较好地优化了太阳能电池片小尺度缺陷目标的训练精度,同时避免了已经训练好的特征重复训练导致额外计算量,提升了特征训练速度。

(a)常规图像 (b)拼接图像

2.2 ELU激活函数

太阳能电池片表面缺陷检测运用于工业检测时,最重要的是模型的高精度和高定位效果,模型训练好后,基本不会影响检测速度。因此本文采用效果更好的ELU激活函数替换网络中间层和隐藏层中的Leaky ReLU激活函数,即图1模型结构中的CBL,CSP1_X和CSP2_X模块。

Leaky ReLU激活函数主要解决了神经元“死亡”的问题,保证了数据反向传播过程中,梯度不为0。而ELU激活函数具备了Leaky ReLU 激活函数的所有特点,如式(2)所示:

(2)

式中α为超参数,α=1。

ELU激活函数在所有点都是连续可微的,更好地解决了梯度消失和梯度爆炸问题,相比Leaky ReLU激活函数可以在神经网络训练中加快训练速度并提高准确度。虽然ELU是指数线性单元,但与Leaky ReLU不同,ELU也有一个负值,这会导致其均值向0偏移。由于这种偏移,模型的训练将比Leaky ReLU激活函数收敛的更快。虽然ELU激活函数计算速度较慢,但是相比之下,ELU激活函数所具备的更快的收敛性使模型的训练速度比Leaky ReLU激活函数更快,具备更好的泛化性,所以准确性也更高,Leaky ReLU和ELU激活函数对比如图4所示。

(a)Leaky RELU

2.3 聚焦的高效交叉联合损失函数

在太阳能电池片缺陷检测中没有缺陷重叠的情况,而YOLOv5s网络输出端的边界框损失函数为GIOU_Loss结合加权的非极大值抑制(NMS),这种方法对于筛选遮挡重叠的目标较为有效,但并不适用于太阳能电池片表面缺陷的检测,为此,本文采取一种聚焦的高效交叉损失(F-EIOU Loss)作为边界框损失函数。十字交叉联合(IOU)损失函数是最为基础的边界框损失函数,而CIOU损失函数是在其基础上的进一步优化[12]。本文采用的F-EIOU损失函数则结合了CIOU损失函数,如式(3)所示。

LF-EIOU=IOUγ·LEIOU

(3)

式中γ为控制异常值的抑制程度参数,γ∈(0,2]。

LEIOU如式(4)所示,可分为3个部分,即IOU损失函数LIOU,距离损失函数Ldis和方向损失函数Lasp。

LEIOU=LIOU+Ldis+Lasp=1-IOU+

(4)

如图5所示,为GIOU损失函数和F-EIOU损失函数在10、50、150次迭代下最左侧目标框和最右侧锚点框的优化过程,可以看出GIOU损失在优化过程中无法有效测量目标框和锚点框之间的差异,忽略了锚点框信息的重要性,导致边界框回归模型优化收敛过程缓慢,并且定位不准。而本文采用的F-EIOU损失开发了边界框回归损失的潜力,该损失函数采用了基础的IOU损失并结合了距离和方向损失来明确度量重叠区域、中心点和边长3个关键几何因子的差异,并在此基础上采用参数控制损失回归中的异常值。通过上述策略实现了高效且准确的太阳能电池片表面缺陷的检测。

图5 GIOU和F-EIOU损失优化过程对比

3 实验仿真与结果分析

3.1 试验配置

本实验的训练平台采用的CPU为Intel(R)Core (TM)i5-10600KF、内存16 GB、显存8 GB、GPU为NVIDIA GeForce RTX 2070S,满足深度学习模型训练的硬件配置要求。实验操作系统为Windows 10,软件为PyCharm 2020.2.2、Matlab R2020a、Python 3.8;GPU 加速包为CUDA11.1和CUDnn10.1。

网络模型训练采用Pytorch1.7.1,训练初始化COCO和VOC数据集中的类别、类别名称和训练路径等相关参数。图像输入尺寸宽高设为640×640,采用Adam算法进行训练优化,最大的迭代轮数设为500,单次图片训练数设为8,动量因子设为0.9,权重衰减系数设为0.000 5,学习速率设为0.001。

3.2 数据集预处理

太阳能电池片数据集制作是最基础的步骤,同时也是实验前最重要的步骤。数据集包含合格与不合格两大类,在不合格的太阳能电池片中,包含了破损、划痕、断栅、污渍4种缺陷类型。由于太阳能电池片在整个工业线生产中出现表面缺陷的比例较小,为使数据集数据更加丰富,符合模型训练标准,本文通过随机选取太阳能电池片图像进行随机旋转、镜像、亮度调节、随机切片等数据扩充方法优化数据集,具体操作如图6所示。

图6 数据集扩充方法

优化后的太阳能电池片数据集共包含5 440张图片,有的图片含有多种缺陷,其中无缺陷图片2 060张,破损1 542张、划痕765张、断栅772张、污渍761张;模型训练集、验证集、测试集按7:2:1比例随机分配。数据集制作完成后,使用LableImage对数据集进行标注,如表1所示。表格中每行都代表了一个缺陷目标的位置信息,标签代表具体目标的标注类别,x,y,w,h为相对于整幅图片尺度的归一化值,位于0~1之间。x、y分别为标注框的中心点在x轴及y轴方向的坐标;w、h分别为标注框的宽、高。

表1 标注数据

3.3 模型性能评估指标

模型的性能评估主要通过损失值(Loss)曲线与平均精度值均值mAP(mean average precision)来进行评估,mAP根据在太阳能电池片数据集上预测到的精确值(Precision)和召回率(Recall)决定,如式(5)所示:

(5)

式中:Precision为预测结果中正确的比例;Recall为全部目标中被正确预测出的比例;TP为被正确划分的正类样本的数量;FP为被正确划分的负类样本的数量;FN为被错误划分的正类样本的数量。

精确值和召回率构成了P-R曲线,P-R曲线下方所占面积为平均精度(AP),对应的所有太阳能电池片表面缺陷类别的平均值,即为mAP。

3.4 检测结果与分析

模型训练完成后,通过训练日志内的指标,经适当的平滑处理绘制相应曲线,对改进后的模型进行评估。如图7所示,为改进YOLOv5与原始网络的边界框损失值对比。

图7 模型损失曲线对比

由图7可知,F-EIOU损失相比GIOU损失在训练前期损失值下降较快,随着迭代次数的增加,逐渐趋于平稳,并且损失值较小,证明了改进后的损失函数具有更快的收敛速度和更好的回归精度。图8为改进YOLOv5模型与原始模型的训练精度对比。

图8 模型训练精度对比

由图8可知,改进YOLOv5模型的精度值虽然在训练前期由于动态反馈特性和ELU激活函数的相对复杂性,曲线上升较慢,但随着训练轮次的增加,优势逐渐体现,训练精度较快提升,并且超越了原始网络模型的精度值,证明改进的模型对太阳能电池片缺陷特征的训练性能有显著的提升。同时可以看出,改进的YOLOv5的检测精度值相比原始网络有一定的提升,模型检测性能增强。

在与原始网络模型对比的基础上,为进一步验证模型的检测性能,在保持训练平台的配置信息不变的情况下,使用Faster-RCNN、SSD、YOLOv4等网络模型在相同训练集上进行训练[13-15]。最终选择各网络模型的最佳权重在测试集上进行对比分析,对比结果如表2、表3所示。

表2 模型检测的缺陷类别AP值对比 %

表3 模型检测性能对比

由表2和表3可知,与Faster-RCNN,SSD,YOLOv4以及YOLOv5s模型相比,改进的YOLOv5的mAP值分别提高了12.5%,19.1%,8.8%,3.7%,并且检测速度比YOLOv5s模型提升了0.7帧/s,进一步验证了改进后的模型对太阳能电池片表面缺陷检测的性能更强。改进后的模型对太阳能电池片表面缺陷检测的结果如图9所示。

图9 改进YOLOv5的太阳能电池片表面缺陷检测结果

由图9可知,改进的YOLOv5不仅能精确识别太阳能电池片表面较大的缺陷,同时对尺度较小的缺陷也能精确定位,并有着较高的识别效果。

4 结论

本文提出了一种改进YOLOv5模型的太阳能电池片表面缺陷检测方法。该方法优化了原始模型输入端的数据增强方式,替换了骨干网络的激活函数,并在输出端改进了边界框回归损失函数。通过上述改进,提高了模型的特征提取和训练收敛速度,优化了模型过拟合问题,加强了缺陷目标的定位精度,从而提升了太阳能电池片表面缺陷的检测精度及效率,对工业生产中的太阳能电池片的质量保障有着实际意义。

猜你喜欢

太阳能损失电池
应用广泛的太阳能无人机
电池很冤
“一粒盐电池”
少问一句,损失千金
把电池穿身上
穿在身上的电池
胖胖损失了多少元
玉米抽穗前倒伏怎么办?怎么减少损失?
太阳能可以这样玩
太阳能虚拟窗