基于改进轻量型YOLOv5的太阳能电池板缺陷检测*
2023-11-28李婷,孙渊
李 婷,孙 渊
(上海电机学院机械学院,上海 201306)
0 引言
根据国家“双碳”政策的要求,新能源与信息技术联系紧密,太阳能因安全可靠等优点,已成为备受瞩目的新能源[1]。太阳能电池板是将太阳能转换为电能的重要工具,但在组装和使用过程中会因某些原因形成黑斑、断栅等缺陷,这些缺陷不仅影响电池发电效率,还严重威胁人们的生命财产安全[2]。因此,对太阳能电池板缺陷进行检测具有非常重要意义。
目前国内外对太阳能电池板缺陷检测有许多方法,人工检测法[3]虽然可以检测出太阳能电池板的缺陷,但是效率低,错检率高,不能满足高效率生产需求;LI等[4]利用空气耦合超声波对太阳能电池裂纹检测,但是检测速度有待提高;王宇等[5]运用传统机器视觉方法只能针对太阳能电池板某些缺陷检测;伏安测算法、锁相热图法、光致发光法和电致发光法等检测方法虽然可以检测出缺陷,但是检测范围、检测精度和检测速度需要进一步提升。
随着深度学习和图像处理方法的发展,其因非接触,高检测精度和速度的特点被广泛应用在各种工业场景中[6]。ZHANG等[7]通过优化Faster R-CNN深度学习模型,实现了太阳能电池板的多种尺度缺陷检测,但是检测速度比较慢;唐政等[8]优化YOLOv4的主干网络并改进NMS处理,提高检测精确度和速度,但是只能检测裂纹、断栅两类缺陷类型;太阳能电池板缺陷的种类与尺寸多样,尤其微小尺寸缺陷检测是整个检测过程的难点;王淑青等[9]设计一种动态反馈多尺度训练的数据增强方法,提高了小缺陷的特征训练精度,但是模型部署不够轻量化;张鹏飞等[10]设计了一种轻量化YOLO深度学习算法高精度地检测出太阳能电池多种类型缺陷但检测速度还可以提升。
针对上述方法对太阳能电池板多尺度多种类型缺陷,尤其小尺寸缺陷检测精度低的问题,同时为了实现工业实时检测,本文提出了一种改进轻量型YOLOv5的太阳能电池板缺陷检测方法,该方法通过改进的MobileOne Block模块和引入融合SimAM注意力机制的ASFF自适应特征融合模块获得轻量的缺陷检测模型,在减少特征信息丢失同时提高模型检测速度,SepViT Block加强了网络模型局部与全局特征信息的连接,并根据太阳能电池板缺陷特点增加P2特征层,在低参数量的同时增强网络对小目标的检测能力,满足准确识别各类尺度缺陷目标的需求。改进后的模型满足工业高检测精度及高实时性的要求。
1 YOLOv5目标检测算法
YOLOv5经过多次迭代升级成为在工业界应用最广泛的SOTA算法。如图1所示,YOLOv5的主干特征提取网络Backbone由多个标准卷积,含有Bottleneck的C3模块和空间金字塔池化层SPPF组成,主干网络的浅层部分提取输入图像特征,再通过SPPF网络对提取特征快速地进行融合。Neck层中的C3_1模块不包含残差结构,而是采用路径聚合网络PANet以上下采样结合的方式进行特征融合,最后将提取的特征输入到Head层实现对小中大尺寸目标的预测。
图1 YOLOv5网络结构图
2 YOLOv5目标检测算法改进
为完成本研究中对太阳能电池板缺陷的轻量化实时检测,针对本数据集小尺寸目标检测精度差的问题,本文针对太阳能电池板缺陷特点,基于YOLOv5算法进行了改进。改进的网络结构如图2所示,具体改进部分如下:①将改进后的MobileOne Block模块替代网络模型的部分卷积层,轻量化地提高网络特征提取能力;同时将主干特征提取网络的最后一层替换为SepViT Block模块,注重提取图像全局特征信息。②在Neck层增加P2层的融合与检测,提升小目标的检测精度。③融合SimAM注意力机制的轻量化ASFF自适应特征模块,通过学习权重参数的方式,特征能更好地融合,更容易提取难检测的小目标的特征信息。
图2 改进轻量型YOLOv5网络结构图
2.1 MobileOne轻量化主干特征提取网络
MobileOne Block[11]与RepVGG网络[12]结构相似,都是利用结构重参数化解耦训练阶段和推理阶段,RepVGG网络训练阶段结构类似ResNet网络,如图3a所示,采用3×3卷积主干结构、1×1卷积残差结构和Identity残差结构组成多分支网络结构。如图3b所示,其推理阶段由训练阶段重参数化形成,首先将所有卷积层和BN层进行融合;其次将融合后卷积核大小不同的卷积层都转换到单个3×3卷积上,最后通过将所有权重W和偏置B叠加融合所有分支中3×3卷积,得到一个完全等效的Conv3*3网络层。推理阶段舍去了残差结构,节省了操作内存,同时操作过程可以对Conv3*3做特定加速,极大的提高了推理速度和计算效率。
(a) RepVGG网络训练结构图 (b) RepVGG网络推理结构图 (c) MobileOne网络训练结构图 (d) MobileOne网络推理结构图
同时本文将MobileOne Block的激活函数替换为SiLU,可以有更好的正则化效果,防止过度拟合。所以为了提高太阳能电池板缺陷检测模型精度和速度,本文将改进后的MobileOne Block模块替换主干网络的部分卷积层,在减少特征信息丢失同时提高模型检测速度。
2.2 主干网络深层引入SepViT
深度可分离自注意力模块(separable vision transformer,SepViT)[14]借鉴深度可分离卷积结构并模仿其思想在保持精度的同时平衡计算成本。本文所要检测的太阳能电池板缺陷存在于含有栅线的正常板上,检测时可能会出现混淆。因此,模型不仅需要关注目标的局部细节特征,还需要捕捉图像的全局特征。使用CNN网络可以从目标中提取局部特征,而使用Vision Transformer可以实现全局特征的学习。因此,本文利用两个模块整合在一起,将主干特征提取网络的最后一层替换为SepViT Block模块,增强了模型的特征提取能力,优化了网络局部和全局信息的关系。
在SepViT Block中,通过深度自注意(DWA)和点自注意(PWA)减少计算量,并分别由它们实现局部和全局的信息交互。首先对输入特征划分好的窗口视为特征图的一个输入通道,每个窗口包含不同的信息,然后对每个window token 和ipixel token进行深度自注意操作,融合每个通道的空间信息,如式(1)所示:
DWA(f)=Attention(f·WQ,f·WK,f·WV)
(1)
式中:f为特征图划分的token,由window token和ipixel token组成;WQ、WK和WV代表在一个自注意模块的3个线性层的查询,键和值的计算权重。
将深度自注意操作的输出利用点自注意建立跨窗口信息的连接,并通过归一化层(layer normalization,LN)和Gelu激活函数生成注意特征图,每个窗口之间的注意计算使得全局信息交换。如式(2)所示:
PWA(f,wt)=Attention(Gwlu(LN(wt))·WQ,
Gelu(LN(wt))·WK,f)
(2)
式中:wt表示窗口标记。那么SepViT Block可以表示:
(3)
图4 SepViT Block结构图
2.3 融合SimAM注意力机制的轻量化ASFF自适应特征模块
图5 ASFF结构设计图
(4)
(5)
所以在多尺度特征融合部分引入ASFF模块不仅可以提取不同尺度缺陷目标特征信息,还可以轻量化网络模型,但是轻量化设计在一定程度上对检测精度有不良影响,所以可以在Neck部分的C3_1模块后引入无参数的SimAM注意机制。注意力模块可以根据图像特征,使得模型更关注有用信息,减少对其他不重要信息的关注。SimAM注意机制[16]不同于SE模块和CBAM模块只能通过空间或通道维度细化特征,其注意力权重可以随空间和通道灵活变化,并且在不向原始网络添加参数的情况下,通过能量函数推断出该层特征图的三维注意权重。三维注意力权重如图6所示。
图6 SimAM注意力权重图
SimAM注意机制具有高灵活性、高模块化、轻量化等优点,满足了模型改进的要求。同时本文数据集太阳能电池板图片因为栅线可能会被误检为裂纹;黑斑等小尺寸缺陷难以检测等问题也会降低整体检测精度,所以在模型中引入融合SimAM注意力机制的ASFF自适应特征融合模块,轻量化地强化模型特征表达能力,提升模型对太阳能电池板缺陷检测速度和检测精度。
2.4 新增检测层
太阳能电池板缺陷数据集中缺陷的尺度跨度大,尤其是难以检测的小目标数量比例大,而原YOLOv5网络中只有3个检测层P3、P4、P5层分别通过8倍、16倍、32倍采样,也就是说输入图片尺寸为640×640时,P3、P4、P5分别对应生成80×80、40×40、20×20的特征图,实现小、中、大目标的检测。然而“黑斑”等的极小像素的小目标缺陷在原80×80尺寸检测层无法被精准检测出来,所以增加64倍下采样检测层,输出特征图尺寸为160×160。最后160×160特征图检测“黑斑”中极小缺陷目标,其特征需要底层特征中的细粒度辨别,保留了80×80和40×40两个特征层检测黑斑、裂纹与断栅等中尺寸缺陷,20×20特征层检测缺片和裂片这类大尺寸缺陷。新增检测层满足准确识别各类尺度缺陷目标的需求,同时输出层每层先验框由原来的3个增加至4个,提高了网络的检测性能,减少了漏检、误检的情况。
3 实验结果与分析
3.1 实验数据
实验数据来源于使用工业相机拍摄某公司生产使用的太阳能电池板,共拍摄裂片(LP)、断栅(DS)、黑斑(HB)、裂纹(LW)和缺片(QP)5种缺陷的485张照片,经过图像反转平移和亮度调节等方式扩增数据集至2697张图片,图7分别为5类缺陷与正常电池板图片,输入图片大小统一为640×640,将数据集按7:2:1划分为训练集、验证集和测试集。
(a) 断栅DS (b) 黑斑HB (c) 裂片LP
(d) 裂纹LW (e) 缺片QP(f) 正常
3.2 实验配置与评价指标
本文采用Windows10操作系统,GPU为NVIDIA Quadro RTX 4000,深度学习配置为CUDA10.2,Python3.8.0和PyTorch1.8.0,初始学习率设置为0.01,并使用SGD优化器进行训练,Batch size设置为16,训练次数Epoch设置为100。
本文以mAP@0.5%、参数量和检测速度FPS 作为网络性能评价指标,其中mAP@0.5%表示IoU阈值为0.5时的平均检测精度,参数量衡量模型对内存资源的消耗量,FPS是指网络模型1 s可以处理的图片数量,用于衡量模型检测速度。
3.3 消融实验
表1设计消融实验验证改进网络算法的优势,序号1表示原YOLOv5模型,序号2实验表示增加P2检测层,序号3实验表示在2的基础上将主干网络的部分卷积块替换为改进后的MobileOne Block模块,序号4实验表示在3的基础上在骨干网络最后一层增加SepViT模块,序号5实验表示在4的基础上引入ASFF特征融合网络模型,序号6实验表示在5的基础上在head检测层之前引入无参数的SimAM注意力模块,生成最后的改进算法模型。表2为消融实验结果。
表1 消融实验设计
表2 消融实验结果
实验2相较于实验1(原YOLOv5模型)虽然检测速度FPS下降了9 F/S,但是平均检测精度有了很大的提升,提高了2%,由图8所示,模型增加P2检测层之后,5种缺陷的检测精度都提升,尤其是黑斑还有部分裂纹这类小尺寸缺陷精度提高了近4%,说明了新增检测层对模型改进的有效性;实验3相比实验2参数量减少了71.3%,检测速度FPS提升了17 F/S,同时检测精度也提升了0.6%,说明 MobileOne Block模块引入网络模型对检测精确度影响较小,但可以轻量化改进模型,明显提升整体检测速度,挽救了实验2中因增加检测层对模型参数量和检测速度的影响;实验4比实验3的模型权重只增加了0.1 MB,FPS也只下降了2 F/S,但是平均检测精度提升了1%,说明SepViT模块可以对网络全局信息提取;实验5相比于实验4,模型权重略有增加,检测精度mAP和检测速度FPS大幅度改善,同时缺片和黑斑尺寸相差大的缺陷检测精度均有2%~3%的提升,说明特征融合网络ASFF 轻量化明显提升检测效果;实验6是在实验5的基础上引入SimAM注意力模块,模型权重没有变化,检测速度FPS由原来的112 F/S降至103 F/S,但是检测精度由95%提升至96.2%,证明了SimAM注意力模块对网络模型有一定的提升效果。通过上述实验过程与分析证明本文提出的改进网络模型对太阳能电池板缺陷检测的有效性。
图8 消融实验各缺陷检测精度图
3.4 主流算法性能对比实验
为了验证本文中改进网络算法的性能,将本文算法与目前主流目标检测算法Faster R-CNN、YOLOv5、YOLOX和最新的YOLOv7-tiny[17]在相同条件下进行对比实验,表3是各性能对比结果。
表3 主流算法对比实验
相较于两阶段目标检测算法Faster R-CNN、本文改进算法在模型权重、检测精度与检测速度等方面有很明显的优势;相比原始算法YOLOv5,本文算法检测速度有小范围浮动,但是检测精度提高了6.7%;YOLOvX实现了91.4%的检测精度,相比YOLOv5算法提升了1.8%,而权重参数增加了超过一倍,检测速度也下降了20 F/S,不符合实时检测要求;虽然本文改进YOLOv5算法在检测速度上不如YOLOv7-tiny,但在其他参数上性能却远远高于它,检测精度达到了96.2%,比最新的YOLOv7-tiny提高了5.3%,检测速度达到103 F/S,缺陷效果如图9所示。
(a) 断栅DS (b) 黑斑HB (c) 裂片LP
(d) 裂纹LW (e) 缺片QP (f) 正常
综上所述, 本文改进算法相比于目前主流目标检测算法,可以在模型权重、检测精度和检测速度达到很好的平衡,满足实际检测要求。
4 结论
本文提出了一种改进轻量型YOLOv5 的太阳能电池板缺陷检测模型。利用改进后的MobileOne Block模块和SepViT Block模块重新设计部分主干网络,在轻量化改进基础上提高了检测精度和检测速度;引入融合SimAM注意力机制的ASFF自适应特征融合模块,在改进多尺度特征提取的同时增强目标特征的关注;最后增加P2检测层,提高小目标的检测效率,持续提升模型检测精度。通过多项对比试验证明,本文提出的改进YOLOv5模型解决了太阳能电池板缺陷尺寸跨度大,小目标检测精度不高等问题,更加方便工业设备轻量化部署,完成实时精准检测。