1. 引言
在实现“双碳”目标的新形势下,太阳能技术创新和应用正迎来前所未有的发展机遇[1]。太阳能应用的主要形式是光伏发电。其中2024年上半年新增并网容量102.48 GW,其中集中式光伏发电站49.60 GW,分布式光伏52.88 GW [2]。在发电系统中,光伏板将光能转化为电能。但是在此过程中,由于光伏板受到紫外线、腐蚀以及恶劣天气下受潮等影响,可能会引发断栅、隐裂等问题,这些缺陷会对光伏发电转化效率造成严重的影响,进而影响整个发电系统的稳定性[3]。
因此,如何及时有效地对光伏板进行有效的缺陷检测非常重要。早期的光伏板缺陷检测主要是通过人工目测、光伏板的红外热成像检测以及一些传统的机器视觉。但早期的人工检测方法成本高、效率低以及误检率高等不足,并且接触光伏板时可能会造成二次损坏,使得目前检测难以满足现代光伏板生产效率高、性能好的检测要求。
基于以上背景,研究目的是将深度学习技术拓展到光伏板缺陷检测领域,从而实现一个具有实时检测且精度高的光伏板缺陷检测的算法。
缺陷检测随着计算机技术的发展,深度学习在缺陷检测领域被广泛应用且取得了显著的成果。基于深度学习的目标检测算法在步骤上包括双阶段(two-stage)和单阶段(one-stage)两种目标检测框架[4]。在双阶段的检测算法中,R-CNN [5]是一种基于区域的卷积神经网络,通过使用选择性搜索算法来对输入图像提取潜在的候选区域。然后,对每个候选区域进行特征提取,并使用支持向量机(SVM)进行分类。这样就将目标检测问题转化为一个候选区域分类的任务。而Faster R-CNN [6]在R-CNN的基础上进行了改进,引入了区域建议网络(Region Proposal Network, RPN),使得整个目标检测系统实现端到端地进行训练。但由于候选区域生成过程可能存在一些限制,导致漏检或定位不准确。
而在单阶段算法中,SSD (Single Shot MultiBox Detector) [7]采用了基于卷积神经网络(CNN)的特征提取器,并在多个不同尺度的特征图上进行目标检测。它通过在不同层级的特征图上应用不同大小的卷积核来检测不同尺寸的目标。这种多尺度的检测策略使得SSD能够有效地检测不同大小的目标。而YOLO (You Only Look Once)也是一种单阶段的目标检测算法。与SSD不同的是,YOLO是将目标检测问题转化为一个回归问题。它将输入图像分成一个固定大小的网格,并在每个网格单元中预测目标的边界框和类别。
YOLO [8]算法凭借检测速度快,且只需要一次前向传播就可以得到所有目标的检测结果的特点,实现了对目标的实时检测。YOLO作为单阶段模型的代表之一,相较于更早提出的两阶段目标检测算法,不仅拥有更快的预测速度;对于背景图像(非物体)中的部分被包含在候选框的情况误检率更低,还拥有更好的算法通用性。以上这些特性,都使YOLO系列模型成为工业目标检测场景首选的算法。
2. YOLOv13算法
YOLOv13 [9]算法于2025年6月提出,与之前的YOLO系列算法相比,YOLOv13在减少了计算量的同时还提高了检测的精度能够更好地识别和定位目标物体,对小目标的检测效果也较好。YOLOv13的具体创新点具体包括引入了HyperACE机制来用于捕捉高阶多对多语义关系,提出了FullAD架构,将特征增强贯穿于Backbone、Neck、Head整个网络结构以及采用DSC3k2模块来构建轻量模块,降低模型的复杂度。
YOLOv13网络结构
YOLOv13模型的网络结构依然是包括Backbone、Neck以及Head三部分构成,其具体结构见下图1。
Figure 1. Network structure of the YOLOv13 mode
图1. YOLOv13网络结构图
在卷积神经网络,它通过卷积核与输入的图像进行卷积运算,图像中的像素信息转化为网络能够理解和利用的特征图这一过程不仅高效地提取了图像的关键特征,还为后续的网络层提供了有力的支持,进一步增强了整个网络在图像识别等任务中的性能。卷积的具体操作步骤如下:首先将卷积核放在图像矩阵的最左上角,便覆盖了这一角的对应数值,将重叠块的数值进行乘积,最后将得到的所有乘积值累加便得到了一个输出值,置于新生成矩阵的左上角,接下来卷积核右移,重复上述过程得到对应位置新的输出,通过滑窗的方式遍历整个原图像矩阵后,新的特征矩阵便生成完毕。卷积层就是由多个卷积滤波器组成,卷积操作就是基于卷积滤波器来进行计算,其计算过程见图2。
Figure 2. The process of convolution calculation
图2. 卷积计算过程
YOLOv13网络结构的Backbone部分使用了Conv、A2C2f、DSConv以及DSC3k2提取多尺度特征图
、
、
、
和
,其中Conv作为基础特征提取单元来构建底层特征,而DSConv和DSC3k2通过轻量化的设计来降低计算负担,最后A2C2f模块再弥补轻量化带来的精度损失。
HyperACE是YOLOv13提出的核心模块(自适应超图计算见图3),它介于Backbone与Neck网络结构之间,基于C3AH模块的全局高阶感知分支和基于DS-C3k块的局部低阶感知分支。C3AH模块通过自适应超图计算对高阶视觉关联进行线性复杂度建模,保留了CSP bottleneck分支分裂机制,同时集成了自适应超图计算模块,实现了跨空间位置的全局高阶语义聚合。解决了之前的模型只能建模局部两元关系的问题。
Figure 3. Details of the adaptive hypergraph construction and convolution
图3. 自适应超图计算原理
YOLOv13网络的Neck结构在设计上聚焦于特征融合的性能提升:一方面,通过嵌入DSConv与A2C2f等高效模块,从结构层面优化了融合流程、提升了运算效率,同时强化了特征的区分度与表征能力;另一方面,针对Backbone输出的不同尺度特征图,该部分通过跨尺度融合机制实现特征信息的深度交互,让最终生成的每一个特征层既保留了底层特征的细节纹理信息,又融入了高层特征的语义类别信息,从而为网络的检测精度提升奠定基础。
YOLOv13的Head部分最主要的作用是多尺度目标预测,其中的Conv与DSC3k2是通过对Neck输出的特征进行提取、优化以及增强区分度。Concat利用局部跨尺度特征融合适配不同尺寸目标的特征表达。而Detect则是设置了三个检测分支来分别对应Neck的高、中、低分辨率特征来分别检测小、中、大目标最终输出坐标位置、类别以及置信度。
3. 基于YOLOv13n的改进光伏板缺陷检测算法
本文通过改进YOLOv13n模型的结构,来改进其在光伏板缺陷检测中针对裂纹、划痕以及断栅等小缺陷在检测中检测效果不足。针对于光伏板的缺陷检测,需要根据数据集的特征来对模型进行改进和优化。在YOLOv13的网络结构的Backbone中引入CA注意力机制,使得其更好的对小目标和密集目标的特征进行提取。同时在此基础上还对损失函数进行了改进,通过类别加权和小目标加权双重优化,使得对小目标缺陷的检测更准确。
3.1. CA注意力机制
坐标注意力机制(coordinate attention,CA,见图4) [10]。是将位置信息加入到了通道注意力当中,使网络可以在更大区域上进行注意。为了缓解以前的注意力机制如SENet,CBAM等提出的二维全局池化造成的位置信息丢失、该注意力机制将通道注意分解为两个平行的一维特征编码的过程,分别在两个方向上聚合特征,一个方向得到准确的位置信息,另一个方向得到远程依赖关系,对生成的特征图进行编码以形成一对方向感知和位置敏感的特征。
CA通过精准的位置信息编码通道关系和长程依赖关系,主要包括两个步骤:坐标信息嵌入和坐标注意力生成,一个CA模块可以看作是一个用来增强特征表示能力的计算单元它可以将任何中间张量
作为输入并输出一个有增强表示能力的同样尺寸的输出
,其中
为通道数,
和
分别为输入图片的高和宽。
Figure 4. Structure of the CA module
图4. CA模块结构
对于坐标信息嵌入来说,为了促进注意力模块可以获取精准位置信息的空间长距离依赖关系,CA模块将全局池化分为一对一维特征编码操作。对于输入的特征图X,维度为
,先使用大小为
和
的池化核分别沿水平方向坐标和竖直方向的坐标对每个通道进行编码,也就是高度为
的第
个通道与宽度为
的第
个通道的输出,输出公式如式下所示:
(1)
(2)
以上公式返回一对方向感知注意力特征
和
,使得网络对目标的定位更加精确。
对于坐标注意力生成来说,级联之前模块先生成两个特征层,然后使用一个共享的
卷积进行变换
。并激活,其公式如下所示:
(3)
其中
是对空间信息在水平方向和竖直方向的中间特征图,
表示下采样比例。
表示沿空间维度的连接操作,
表示非线性激活函数。然后,沿空间维度将
切分成两个单独的张量
和
再利用两个
卷积
和
将特征图
和
变换到和书如
同样的通道数,得到结果如公式 所示:
(4)
(5)
最后,对
和
进行拓展,作为注意力权重,CA模块的最终输出可以表示如下所示:
(6)
Coordinate Attention作为一种简单、灵活且易于集成的模块,展现了一种创新的移动网络注意力机制。其独特之处在于,无需增加额外的参数,即可有效提升网络的精度。
3.2. 损失函数
YOLOv13中目标检测的损失函数包括CLS、IoU以及DFL三部分,由这三部分加权求和得到。
3.2.1. CLS
在目标检测中,通常情况下背景的样本量通常比目标的样本量要多,如果使用普通的交叉熵损失,那么模型可能会被大量的易分类的背景样本主导,从而导致对目标的的样本学习不足。YOLOv13的分类损失中通常采用Focal Loss,这种分类损失针对类别不平衡的问题,通过
来调节因子,从而降低易分类负样本的权重,聚焦难以分类的样本,其计算原理如下:
(7)
其中,
的取值为0 (背景)或1 (目标),
表示预测的概率,
是平衡因子,用于调节正负样本的权重,
是聚焦参数,其值越大代表对样本越关注。
3.2.2. CIoU损失
目标检测中的边界框回归损失函数是通过学习预测边界框的位置,使得模型尽可能地接近真实的边界框。进而提供检测目标的精确定位和区域的关键信息。而YOLOv13的边界框损失中使用了基于CIoU损失,增强缺陷类别的小目标权重,CIoU是对于IoU损失的改进,其计算方法如下:
(8)
(9)
(10)
(11)
(12)
其中
表示包围两框的最小外接矩形对角线长度,
表示预测框
与真实框
的中心欧氏距离平方。
3.2.3. 分布焦点损失
DFL是为了解决传统连续值回归的局限性,通过将坐标建模为离散的概率的分布,从而来提升边界框定位的精度,在小目标和边缘目标的检测中起到了重要的作用。其对于边界框坐标的离散分布损失,同样采用强关键样本权重,计算方式为:
(13)
其中代表分布焦点损失,将连续坐标值建模为离散分布,计算并预测分布
与目标分布
的交叉熵,即:
(14)
其中
为
的向下取整,
为向上取整,
代表交叉熵损失。
3.3. 改进损失函数
改进之后的损失函数加入了类别加权机制、小目标加权机制以及动态计算损失。
首先是类别加权机制,在实际的场景中,光伏板中正常区域的样本数量要远远多于缺陷区域,如果没有类别加权,则模型会更倾向于降低整体损失而导致部分缺陷被漏检。而加权损失则是对于不同类别的缺陷赋予其不同的权重,以此来提高对该类别损失的关注度。通过损失加权的方式,可以使模型在训练中对于缺陷类分配更多的注意力,最终实现漏检率更低,检测更准确的检测目标。对于不同类别的缺陷,其类别加权的表达式为:
(15)
其中
为正样本总数,
为总的样本数,
为缺陷类别的总数,
表示第
类的权重,
和
分别表示第
个样本是否属于第
类标签以及属于
类别的预测概率。对于小目标缺陷来增大其
的值来实现对小目标类别赋予更高的权重。
其次是小目标加权机制。在训练过程中小目标因为在图像中占据的像素小而导致其表达能力不足而导致特征提取困难,同时因为目标小而导致边界框微小偏移对IoU的影响要大于大目标而造成对定位的误差更敏感。而小目标加权机制则通过计算目标缺陷的面积,对于面积小于指定阈值的目标判定为小目标,对于小目标对其损失进行加权放大以此来动态调整缺陷的权重,使小缺陷的损失在总损失中占比更加合理。其计算方法为:
(16)
其中
表示缺陷目标的面积,
表示小目标面积的阈值,
为指示函数,当判断条件成立时为1,否则为0。当缺陷目标面积小于小目标面积的阈值时则判定为小目标,对于小目标则额外加入额外权重
。
最后是多损失组件权重融合,如果只在单一损失中应用加权可能会导致模型优化失衡,而多损失组件加权融合则在分类、CIoU以及DFL三个损失中同步应用缺陷和小目标权重,从而实现模型在检测的准确度和定位的精度上都可以得到优化。
3.4. 改进后到的YOLOv13网络结构设计
根据以上内容,本文将在YOLOv13原有的网络结构的Backbone部分引入CA注意力机制,并对损失函数进行优化,改进后YOLOv13的Backbone部分的网络结构见图5。
Figure 5. The improved Backbone structure
图5. 改进后的Backbone结构
4. 实验
4.1. 实验数数据集的准备
实验数据集来自北京航空航天与河北工业大学发布的光伏板缺陷数据集,其中包括了12个不同类别的异常缺陷一共3684张图像。数据集示例见图6、图7。
Figure 6. Examples of the dataset
图6. 数据集示例
Figure 7. Demonstration of dataset defects
图7. 数据集缺陷展示
4.1.1. 数据集的划分
根据含缺陷的光伏板数据集的大小,将训练集、验证集、测试集划分比例设置为7:2:1。即2578张图片设置为训练集,736张设置为验证集,361张设置为测试集。为了实验的可靠性有一定的保证,对数据集进行划分时,采用随机打乱顺序划分,这样划分可以消除数据的顺序性和相关性,减少模型受到数据排列顺序的影响。
4.1.2. 数据集的转换
由于光伏板数据集的标签采用的是XML形式标注的,而YOLO只能识别TXT形式的标签。因此,在进行训练之前需要将数据集的标签进行转化,使得模型可以正确读取和识别到标签中的信息。
4.2. 实验平台
4.2.1. 实验配置
实验配置见表1。
Table 1. Configuration of the experimental environment
图1. 实验环境配置
类型 |
参数 |
CPU |
12th Gen Intel(R) Core(TM) i5-12600K |
GPU |
NVIDIA GeForce RTX 3080 Ti |
操作系统 |
Linux |
显存 |
12GB |
Python版本 |
3.9.5 |
Pytorch版本 |
2.4.1 |
开发环境 |
VScode |
加速环境 |
Cuda11.8 |
4.2.2. 实验评价指标
我们可以通过下面这些指标来对我们算法的性能进行衡量:
在这些常用的指标中有这样一些参数如下表2所示:
Table 2. Common parameters
表2. 常用参数
|
正样本 |
负样本 |
预测正样本 |
|
|
预测负样本 |
|
|
其中:
表示正样本中被预测为正样本的个数;
表示负样本的被预测为正样本的个数;
表示正样本中被预测为负样本的个数;
表示负样本中被预测为负样本的个数。
由以上几个参数可以得出以下三个评价指标:
(精确率):在预测为正样本的目标中,正样本的比例。其计算公式为:
(17)
(准确率):在所有被检测的目标中,被正确预测的比例。其计算公式为:
(18)
(召回率):在正样本中,被预测为正样本的比例。其计算公式为:
(19)
通常情况下,我们很希望
、
都越高越好。但是
(精确率)和
(召回率)之间存在一种权衡关系,调整分类模型的阈值会对它们产生影响。所以我们需要构建Precision-Recall曲线来帮助分析。通过将
作为
轴,将Precision作为
轴,在Precision-Recall空间中绘制所有可能的点,每个点对应于不同的预测阈值下模型的性能,连接这些点就形成了P-R曲线。通过分析P-R曲线,可以选择合适的阈值来平衡Precision和Recall,以满足具体任务需求。
(mean Average Precision):即平均精度均值,在所有类别中,平均得到整个数据集的平均精确度,便可得到整个数据集的
值。其计算方式为:
(20)
4.3. 实验结果
本实验实中epoch设置了1024,每个批次传入的图片数batch_size设置为4,初始学习率设置为0.01,用GPU设备进行训练,输入尺寸设置为640
640,workers设置为0,不启用混合精度进行训练。
为验证添加CA注意力机制以及改进损失函数的有效性,对原始的YOLOv13n模型分别进行只加入CA注意力机制、只改进损失函数以及同时加入CA注意力机制与改进损失函数进行消融实验,而CA注意力机制在YOLOv13n的Backbone部分进行添加。实验结果见下表3。
Table 3. Experimental results
表3. 实验结果
Model |
Position |
P |
R |
mAP50 |
mAP50-95 |
YOLOv13n |
|
0.914 |
0.912 |
0.934 |
0.604 |
YOLOv13n + CA |
Backbone |
0.925 |
0.907 |
0.944 |
0.596 |
YOLOv13 + 改进Loss |
Loss |
0.933 |
0.919 |
0.951 |
0.609 |
YOLOv13n-PV |
Backbone |
0.931 |
0.928 |
0.957 |
0.632 |
根据实验结果,仅在YOLOv13n模型的Backbone部分添加CA注意力机制后,其模型的准确率P与回归精度mAP分别提升了0.011与0.01,但是召回率R与mAP50-95有所下降,说明CA注意力机制在此过程中弱化了低响应特征区域从而导致了召回率与mAP50-95的下降。而改进了损失函数后在检测精度与回归精度方面分别提升了0.019与0.017,说明了改进损失函数后模型对缺陷的检测更加准确。
与原YOLOv13n模型训练得到的结果相比较,在Backbone部分添加CA注意力机制并改进损失函数之后模型的准确率P、召回率R和回归精度mAP都有所提升,准确率提升了1.85%,召回率提升了1.74%,平均精度也提升了0.023。同时,与仅在Backbone部分增加CA注意力机制相比,模型的召回率R与mAP50-95也有所提升,这表明在增加了CA注意力机制且对损失函数改进后的YOLOv13-PV模型在光伏缺陷检测方面更准确、全面。
而增加的CA注意力机制为轻量化模块,参数量与计算量较低,且损失函数的修改不会改变模型的结构与推理过程。修改后的YOLOv13n-PV模型与原模型YOLOv13n在光伏板缺陷数据集上的参数比较见表4。
Table 4. Comparison of model parameters
表4. 模型参数对比
模型 |
参数量(M) |
GFLOPs (G) |
FPS |
YOLOv13n |
2.5 |
6.4 |
507.6 |
YOLOv13n-PV |
2.55 |
6.43 |
505 |
由表可知,对于改进后的模型,参数量等方面仅有少量增加,推理速度也未明显下降,各方面变化幅度均小于1%。因此,该模型在提升了检测精度的同时仍兼顾了计算效率。
同时为了验证模型的泛化能力与其可靠性,在测试集上对改进后的模型进行验证,并将各个指标进行对比,结果见图8。
Figure 8. Model metrics on the test set
图8. 测试集中模型指标
由图可知,改进后的YOLOv13-PV光伏板缺陷检测模型在测试集上的多个指标要更好,其中准确率比原始模型提高至0.941,召回率提高至0.936,且平均精度方面也有所提高。且改进后的YOLOv13-PV模型对于小目标缺陷有更好的检测效果,原始模型与改进后模型对于“裂纹”、“断角”以及“星型裂纹”三种缺陷检测效果对比见图9。
Figure 9. Comparison of defect detection effects among three types
图9. 三种缺陷检测效果对比
改进后的缺陷检测效果对比图如下图10~14所示:
(a) YOLOv13-PV (b) YOLOv13n
Figure 10. Comparison of prediction performance for crack defects
图10. 裂纹缺陷预测效果对比
(a) YOLOv13-PV (b) YOLOv13n
Figure 11. Comparison of prediction performance for crack defects
图11. 断栅缺陷预测效果对比
(a) YOLOv13-PV (b) YOLOv13n
Figure 12. Comparison of detection and prediction performance for corner defects
图12. 折痕缺陷检测预测效果对比
(a) YOLOv13-PV (b) YOLOv13n
Figure 13. Comparison of detection and prediction performance for corner defects
图13. 星状裂纹缺陷检测效果对比
(a) YOLOv13-PV (b) YOLOv13n
Figure 14. Comparison of detection performance for thick-line defects
图14. 粗线缺陷检测效果对比
综上,改进后的光伏板缺陷检测模型在光伏板缺陷检测方面效果更好,通过引入了CA注意力机制以及改进损失函数之后使得模型在各方面上都得到了优化,在光伏板的缺陷检测方面有了一定的提升。
5. 展望
本文提出了一种以基于YOLOv13n模型为基础的光伏板缺陷检测模型YOLOv13n-PV,通过引入CA注意力机制以及改进损失函数来对模型进行优化。该模型可以快速准确地检测出光伏板的各种缺陷,大大提升了对太阳能发电板缺陷的检测效率,节约了人力和物力的成本,提高了太阳能板发电的效率。其次,YOLOv13-PV模型也有很好的泛化能力和识别能力,可以适应不同的光伏板检测需求。由于光伏板种类较少,因此该模型可以用来适应各种光伏板的缺陷检测需求。后续研究会进一步考虑对模型算法的复杂度进行优化,使其在低算力设备上可以有更好的表现效果,并且对于数据集进行算法的微调(如光伏板热成像数据集),使其可以更好应用于各类情况。
基金项目
重庆理工大学本科科研项目(KLC24115)。
NOTES
*第一作者。
#通讯作者。