1. 引言
永磁电机作为一种利用永久磁瓦产生磁场的电机,与传统电动机相比具有许多优势,所以广泛应用于现代制造行业中,如电动汽车、风能发电系统、医疗设备、航空航天领域和各种家用电子设备都离不开永磁电机。而永磁电机最核心的零件是一种永磁材料——磁瓦[1]。
在磁瓦的生产过程中,由于工艺、材料和设备等原因的影响,会不可避免的产生如断裂、磨损、气孔和损坏等缺陷,从而对磁瓦的使用寿命造成影响。由于磁瓦的缺陷种类较多,人工目视很难全面的检查磁瓦缺陷,因此设计一个快速而准确的机器学习检测方法具有重要的现实意义。Li [2]等人采用离散快速曲线波变换和纹理分析对磁瓦表面缺陷图像进行处理,可以实现较理想的检测效果,但计算复杂度过高,在某些应用的使用上存在限制。陈荣演[3]等人提出一种基于深度学习的磁瓦检测算法,将YOLOv3网络中的neck模块与Swin-Transformer结合,并将注意力机制部分优化构建了磁瓦缺陷检测算法,并通过锐化和滤波对图像进行增强。虽然检测速度较快,但是精度较低。张晓晓[4]等人提出了一种改进YOLOv4算法的磁瓦缺陷检测方法。采用空洞卷积空间池化金字塔模块代替原有模块,增强信息的相关性。但由于磁瓦表面缺陷的复杂性、不同类别的缺陷难以判定,检测准确性不高。
相较于其他算法模型,YOLOv7算法的检测速度更快、精度更高;在不同尺度下进行检测时,可以更好的检测小目标;同时YOLOv7采用了相对简单的结构,更容易训练,所以采用YOLOv7算法进行检测。对磁瓦表面缺陷进行检测时,受到复杂场景和密集缺陷的影响,会存在精检度低等问题,因此提出对YOLOv7检测算法进行改进。在该模型中,使用MobileOne网络替换原骨干网络,对模型进行轻量化,加快模型推理速度。然后,引入ECA注意力机制,提取更加重要的通道特征。同时,结合SPPF与SPPCSPC提出SPPFS模块,可以更好的检测密集缺陷。最后,引入α-IoU损失函数,加快模型收敛,优化模型检测性能。
2. YOLOv7网络模型原理
YOLO作为一种应用广泛的目标检测模型,在检测不同的物体和不同的场景时可能会出现各种各样的问题。因此,需要根据实际场景需求对模型进行改进,使其适应不同的场景。目前,该模型的改进方向主要是提高检测精度和检测速度。YOLOv7作为目前较为先进的目标检测算法[5] [6] [7]。在一些公共数据集上显示了非常好的结果。其网络结构如图1所示。
Figure 1. YOLOv7 network structure
图1. YOLOv7网络结构
由图1可知,YOLOv7结构主要分为骨干网络和头部网络。原始图像经过预处理后作为输入进入骨干网络进行提取特征,头部网络主要用于进一步融合提取的特征。骨干网络中的ELAN结构通过控制最短和最长的梯度路径,使深层网络进行有效的学习和收敛。MP1结构具有池化和卷积两种下采样方法,使网络可以选择两种下采样方法中较好的一种。在头部网络中,使用了一种名为ELAN-H的结构来学习不同尺度融合后的特征,该结构比ELAN结构多了两条梯度路径。由于YOLOv7对密集缺陷不敏感,所以在针对磁瓦表面缺陷进行检测时,需要对YOLOv7算法进行改进。
3. 改进YOLOv7算法
3.1. 引入MobileOne模块
MobileOne模块的主要结构类似于MobileNetV1 [8],关键的区别是集成了过度参数化和重新参数化方法。减少模型的参数量和推理时间,对网络进行了轻量化。MobileOne模块结构如图2所示。
其中左侧为MobileOne模块在训练时的结构,上半部分为深度卷积层,下半部分为点向卷积层。深度卷积层本质上是一个分组卷积,由三个分支组成。左分支是一个1 × 1的卷积,中间分支有k个3 × 3的过参数化卷积,右分支是一个包含批归一化的跳跃连接。卷积群的数量等于输入通道的数量。点向卷积层由两个分支组成,左分支有k个1 × 1的过参数化卷积,右分支是包含批归一化的跳跃连接。在本文中,k为4。右侧显示了推理期间MobileOne模块的结构。上半部和下半部分别是深度卷积层和点向卷积层的重新参数化结构。深度卷积由三个分支组成。在深度卷积的第一个分支中,采用零填充法将1 × 1卷积核转换为3 × 3卷积核。这个3 × 3卷积核与批处理归一化合并成为第一个新的3 × 3卷积核。新卷积核的权重ω'和偏置b'由式(1)和式(2)所示。
(1)
(2)
其中ω和b是卷积的权值和偏置,γ、β、μ和
是批归一化的权值、偏置、均值和方差,ε是一个小值,以防止被零除。
在第二个分支中合并卷积和批处理归一化使用相同的方法。合并后对第k个卷积核的参数求和,成为第二个新的3 × 3卷积核。第三个分支没有卷积层,因此在批归一化层之前构建一个3 × 3的卷积核,以保证三个分支可以融合。将3 × 3卷积核与批归一化合并,形成第三个新的3 × 3卷积核。将这三个新的3 × 3卷积核融合形成深度卷积的重新参数化结构。同样的方法也适用于点向卷积的重参数化结构。
Figure 2. MobileOne module
图2. MobileOne模块
3.2. ECA注意力机制
在卷积神经网络中,注意力机制可以对输入特征图的不同部分赋予不同的权重,从而从大量信息中选择最重要的信息。ECA [9]作为一种高效的通道注意机制,采用一种不降维的局部跨通道交互策略,可以通过一维卷积实现。此外,一维卷积的卷积核大小可以根据通道数自适应调整,在较少的附加参数下提高模型的检测精度。ECA注意力机制如图3所示。
Figure 3. ECA attention mechanism
图3. ECA注意力机制
在有效的信道注意块中,首先,将输入的特征映射分解为多个通道并对每个通道进行全局平均池化操作,将每个通道的特征映射转化为一个标量值。然后对全局平均池化后的特征序列应用一维卷积操作,引入可学习的卷积核来捕捉通道之间的关系。最后将一维卷积的输出通过Sigmoid激活函数进行归一化,得到注意力权重,并把注意力权重与原始的特征映射相乘,得到加权后的特征映射。从而使模型可以自动学习并关注重要的特征通道,减少冗余信息的干扰,提高模型的性能。
3.3. 改进SPPCSPC
通过结合SPPF [10]与SPPCSPC [11]模块,提出了SPPFS模块,其结构如图4所示。
Figure 4. SPPFS modular structure
图4. SPPFS模块结构
特征映射通过池化内核的不同大小依次池化,然后对得到的特征图像进行拼接。且不同池化核大小具有不同的接受域,多特征融合有利于提取图像中的密集缺陷的特征。同时,在同一特征图上进行不同感受野的特征提取,增强特征信息的交互作用,提高目标定位的检测精度,有利于磁瓦图像中密集缺陷的检测。
3.4. 引入α-IoU损失函数
在定位图像中目标时,通常使用Bounding box (BBox) [12]回归来预测目标的边界框。在早期目标检测任务中,常常使用ln-norm损失函数进行BBox回归。该损失函数用于优化目标检测模型,使其能够准确地预测目标的位置。为了改进目标检测中的定位损失,使用IoU (Intersection over Union) [13]损失函数的度量标准越来越常见。但IoU损失函数的缺点是当边界框与标记的真实目标位置所对应的矩形框不重叠时将会导致梯度消失,减小了模型参数的更新量,从而使模型收敛缓慢,无法有效地学习到正确的目标位置和形状,导致目标检测器在预测时出现偏差,或检测不到目标存在。
因此提出了GIoU [14]、DIoU [15]和CIoU [16]等改进措施。其中,GIoU与IoU相比加入了边界框位置和大小关系,但是当预测框和真实框重叠的时候会失去效果。而DIoU则考虑了框之间的距离问题,可以有效的解决重叠问题。CIoU则综合考虑了预测框与真实框的重叠面积、距离问题以及框尺寸差异问题,可以更好的预测目标尺寸和形状,从而实现更准确的检测和定位。在此基础上提出新的损失函数α-IoU,如式(3)和式(4)所示:
(3)
(4)
其中,α为Power参数(0 < α ≤ 3),β是权重函数,C为最小包庇矩形的对角线,v为度量长宽比的相似性。
通过调节α值,可以灵活平衡不同水平BBox回归精度,提高其检测性能,增强其鲁棒性,同时α-IoU损失更有利于轻量化模型。
3.5. 改进后的YOLOv7网络
通过综合考虑速度和检测精度,对YOLOv7算法进行改进。在原网络基础上进行了四部分改进。其一,用MobileOne网络替换原骨干网络,加快推理速度,对模型进行轻量化改进。其二,为了更准确的对磁瓦表面缺陷进行检测,捕捉更丰富的特征信息,引入了ECA注意力机制。其三,在SPPF与SPPCSPC的基础上提出SPPFS,可以更好的检测密集缺陷。其四,引入α-IoU损失函数,α-IoU损失函数收敛更快,可以更好的预测目标尺寸和形状,从而实现更准确的检测和定位,优化模型检测性能。改进后的YOLOv7网络结构如图5所示。
Figure 5. Modified YOLOv7 network structure
图5. 改进后的YOLOv7网络结构
4. 实验
4.1. 实验环境
实验软件环境为Win10,Python3.11,PyTorch2.1,CUDA12.1,cuDNN8.9.5;硬件环境为CPU:AMD R7-5800H,RAM:DDR4 32GB,GPU:RTX4060。
4.2. 实验数据集
数据集选自中国科学院自动所,共包括1400张磁瓦图片,将其按照6:4划分为训练集和测试集,其中训练集840张,测试集560张。磁瓦表面缺陷分为5类:孔洞、损坏、裂痕、磨损和不均。
4.3. 实验评价指标
本文使用精确值(Precision)、召回率(Recall)、平均准确度均值(mAP)以及FPS作为实验评价指标,模型的复杂度用参数量(Parameter)来进行评价。各指标具体计算公式如下所示:
(5)
(6)
(7)
(8)
其中,TP为预测为正样本实际也为正样本的数量,FP为预测为正样本实际为负样本的数量,FN为预测为负样本实际为正样本的数量,c为检测的类别总数。
4.4. 损失函数
批量处理参数batch size设置为128,迭代次数为300次。动量设定为0.9,初始学习率lr为0.001,学习率调节因子为0.1。模型优化器采用动量为0.95的Adam随机梯度下降算法,权重衰减Decay为0.0005。在相同条件下,将CIoU与α-IoU作为YOLOv7的边界框回归损失函数,比较两种损失函数对模型性能的影响。两种损失函数随迭代次数的变化曲线如图6所示。
Figure 6. Loss function convergence contrast
图6. 损失函数收敛对比
可以看出,随着迭代次数的增加,两条曲线的损失值明显下降,在230次左右时,损失值很小并趋近于平稳,同时α-IoU的收敛速度更快,损失值更小。
4.5. 消融实验
为验证本文所提出的各项改进的有效性,在中国科学院自动所数据集上进行6组消融实验,结果见表1。
Table 1. Comparison of ablation experimental results of various improvements and modules
表1. 各项改进和模块的消融实验结果对比
Group |
MobileOne |
ECA |
SPPFS |
α-IoU |
FPS |
参数量(M) |
mAP (%) |
1 |
× |
× |
× |
× |
73 |
37.3 × 106 |
90.6 |
2 |
√ |
× |
× |
× |
87 |
31.8 × 106 |
88.9 |
3 |
× |
√ |
× |
× |
58 |
37.8 × 106 |
92.3 |
4 |
× |
× |
√ |
× |
70 |
37.6 × 106 |
91.6 |
5 |
× |
× |
× |
√ |
71 |
37.4 × 106 |
92.0 |
6 |
√ |
√ |
√ |
√ |
68 |
32.4 × 106 |
92.7 |
由表1可以看出,第一组实验以YOLOv7算法为基准,其检测精度为90.6%。第二组实验引入了MobileOne模块,减少了模型的参数量,提高了检测速度,同时检测精度略有下降。第三组实验引入了ECA注意力机制,在增加了少量模型参数量的情况下,将检测精度提高了1.7%。第四组实验改进了SPPCSPC模块,将检测精度提高了1.0%。第五组实验使用α-IoU损失函数更准确的定位目标,在其余评价指标基本不变的情况下将检测精度提高了1.4%。第六组实验则同时引入了所有改进,与原YOLOv7模型相比,明显减少了模型参数量,并将检测精度从90.6%提升至92.7%,实现了磁瓦表面缺陷高精度检测的目的。
4.6. 对比实验
为了更好的验证本文算法的有效性,将其与一些常用主流算法进行对比,结果见表2。
Table 2. Performance comparison of different networks
表2. 不同网络性能对比
算法 |
mAP |
FPS |
SSD [17] |
82.4 |
48 |
Faster R-CNN [18] |
88.3 |
24 |
YOLOv7 |
90.6 |
73 |
YOLOv8 [19] |
91.4 |
64 |
本文算法 |
92.7 |
68 |
由表2可以看出,SSD算法作为经典的单阶段检测算法,其检测精度较低,具有较大改进空间。Faster R-CNN算法是一种被广泛应用的双阶段网络算法,与SSD算法相比,在检测精度上有明显提升,但受限于双阶段的网络特性,在计算时参数量较大,从而导致实时性很低,FPS为24。YOLOv7算法作为目前较为新颖的单阶段检测算法,在检测速度和精度方面都较为优秀。可以应对一些工业化产品检测需求。YOLOv8算法在检测精度上略高于YOLOv7算法,而在检测速度上略低于YOLOv7算法。本文所提出算法在YOLOv7算法的基础上进行了改进,可以更好的应对磁瓦表面缺陷。同时检测速度可达68 FPS。与其他主流算法对比具有较大优势。
图7为部分缺陷类型在一些经典算法上的检测结果对照。从图中可知,本文算法在检测效果上优于当前的一些主流算法。
Figure 7. Defect detection result diagram
图7. 缺陷检测结果图
5. 结论
本文针对磁瓦表面缺陷检测任务的研究,提出了一种改进YOLOv7的检测算法。首先引入了MobileOne模块,对网络进行轻量化,提高检测速度。然后引入ECA注意力机制提取更重要的特征通道,实现更准确的目标检测。同时对SPPCSPC模块进行改进,提高检测精度。最后引入α-IoU损失函数,实现更准确的检测和定位。在磁瓦数据集上的实验数据表明,本文算法可以有效降低模型参数量,同时提高磁瓦表面缺陷的检测精度,检测效果优于原网络模型和一些经典目标检测模型。在后续工作中,将探索模型在不同场景下的性能,探究模型的泛化能力,更好的满足工业检测中的需求。
基金项目
辽宁省教育厅高等学校基本科研项目重点项目(LJKZ0583);辽宁省科技厅应用基础研究计划(2022JH2/ 101300253);沈阳市科技计划项目22-322-3-36。