基于卷积神经网络的发动机主轴承盖姿态识别算法
2022-12-19于微波周旺杨宏韬李昱
于微波,周旺,杨宏韬,李昱
(长春工业大学电气与电子工程学院,长春 130012)
随着汽车市场对汽车零部件的需求越来越大,在大量生产汽车零件的过程中,会出现零件尺寸不合格的情况,为了保证零件的质量,需要对生产的汽车零件进行尺寸测量。主轴承盖作为汽车发动机的重要组成零部件,保证其加工精度是提高主轴承盖核心竞争力的关键。目前,发动机主轴承盖在加工打磨后,通常是利用人工对其进行抽检,这种方法不仅检测时间较长,而且人工费较高,检测的精度会随着检测人员疲劳程度的上升而下降,无法持续保持高精度的测量。随着数字图像处理技术的飞速发展,由于机器视觉检测技术具有无接触、测试时间短等优势,因此被广泛应用于汽车工件尺寸测量中。由于发动机主轴承盖结构的特殊性,轴承盖的4个面都需要进行尺寸测量。所以需要先对发动机主轴承盖进行姿态识别。
传统的图像识别主要依赖于大量的图像预处理算法,例如图像去噪、图像增强、边缘提取等,以剔除图像中的冗余信息,保留并增强识别目标的主要信息,然后针对识别目标的特征人为设计特征提取器进行特征提取,并运用主成分分析(principal component analysis,PCA)、支持向量机(support vector machines,SVM)等机器学习算法对特征进行分类[1]。石志良等[2]提出了一种基于尺度不变特征变换(scale-invariant feature transform,SIFT)-SVM的主轴承盖分类识别算法,该算法的识别准确率高,识别时间短,但是该算法容易受到光照因素的影响,导致SIFT关键点发生改变,造成识别错误。江波等[3]采用轮廓Hu不变矩的方法进行工件图像的匹配与识别,与归一化匹配法相比,提高了识别的准确率,但是过多的预处理操作使得该算法操作变得复杂。刘振宇等[4]提出了一种基于像素灰度并结合纹理信息的多模板旋转匹配的工件识别方法,该方法的优点是既能有效识别非遮挡状态下的工件,也能识别遮挡状态的工件,缺点是没有考虑工件实时性检测的问题。陈宪帅等[5]提出了一种多特征融合的零件分类与姿态识别方法,该方法不仅识别准确率高,而且可以计算旋转角度和抓取点坐标,由于融合了零件的多种特征,并对零件进行了两级分类,导致该方法变得十分复杂,且旋转角度和抓取点坐标误差较大。Lee等[6]提出了一种基于PCA并结合Harris角点特征和最小均方误差进行零件与数据库匹配的电子零件识别方法,而且利用提取的4个角点结合Hough变换中的直线对识别出的零件进行精确的位姿估计,但是该方法要构建匹配数据库,非常耗费时间和精力。Sasikala等[7]提出了一种多目标多模板匹配的自适应方法对列车转向架零件进行识别,该方法识别列车转向架零件是否存在缺陷,从而防止列车转向架零件出现缺陷引起列车事故,但是该方法仍然存在15%的误差率。
使用上述传统识别方法进行目标检测,需要对采集的图像进行复杂的预处理操作,且与识别物体的特点相关性强,通用性很差,对于不同的物体需要设计不同的算法,特别容易受到环境因素影响,比如当光照改变时,识别准确率会下降。而发动机主轴承盖每个面颜色很相近,非常容易受到光源影响,误识别率高,所以传统的方法不适合对其进行姿态识别。近年来,基于深度学习的目标检测算法发展比较快[8],出现了非常多识别效果比较好的算法。目前来看,识别效果比较好的算法有LeNet(le network)[9]、AlexNet(alex network)[10]、VGGNet(visual geometry group network)[11]、ReDet(a rotation equivariant detector for aerial object detection)[12]、Sparse R-CNN(sparse regions with convolutional neural network features)[13]、NAS-FPN(neural architecture search-feature pyramid network)[14]、FSCE(few-shot object detectionviacontrastive proposal encoding)[15]、EfficientDet(scalable and efficient object detection)[16]、改进的YOLOv4(you only look once v4)[17]等。相比于传统算法,基于深度学习的目标检测算法,不用对图像进行预处理,且受光照因素的干扰较小,检测精度更高,实时性更好。
1 发动机主轴承盖姿态识别算法设计
1.1 算法总体设计
由于发动机主轴承盖结构简单,4个面特征差异大,如果直接使用基于深度学习的目标检测算法,对发动机主轴承盖进行姿态识别,需要更高的软硬件条件支持,资源消耗巨大。而且基于深度学习的目标检测算法不仅网络结构复杂、训练难度大、梯度下降慢,还可能会过度学习发动机主轴承盖的特征,导致卷积神经网络出现过拟合,进而影响识别效果。所以设计一个结构简单、资源消耗小且训练容易的网络模型,对发动机主轴承盖进行姿态识别。在不影响识别效果的情况下,尽可能降低网络层数和参数量,进一步提升算法的实时性。
算法设计思路如图1所示,利用相机拍摄发动机主轴承盖原始图像,构建姿态识别数据集。网络搭建好以后,输入训练集和验证集数据训练网络,当网络损失函数值下降到一定范围内,停止网络训练,用训练好的网络模型对测试集中的图片进行姿态识别,进而将发动机主轴承盖的4个面区分开。
图1 算法过程示意图
1.2 卷积神经网络模型
所搭建的网络模型如图2所示,先将图像送入搭建好的网络模型中,卷积层搭配ELU(exponential linear unit)激活层和BN层获取图像的特征数据,利用最大池化层对特征图像的数据进行精简,精简后的特征数据转化为一维数据送入全连接层,为了防止模型出现过度学习,Dropout的加入,使得全连接层中的一部分神经元“罢工”,“罢工”的神经元不进行权重更新和特征数据的传送,未“罢工”的神经元将学习到的特征数据送入输出层,通过softmax函数计算出输出图像所属类别和概率。
Conv为卷积层;BN为批量归一化层;ELU为激活函数;Maxpooling为最大池化层;Dense为全连接层;Dropout为随机失活层;Softmax为分类概率函数
2 卷积神经网络模型搭建
(1)卷积层。搭建5层卷积层对发动机主轴承盖进行特征提取,由于较低的卷积层对细节信息比较敏感,较高的卷积层对轮廓特征比较敏感,所以将特征提取的重点放在底层和高层。底层设置两个卷积层,卷积核有32个,高层设置两个卷积层,卷积核有128个,中间层设置为一层,卷积核有64个,卷积核大小都是3×3,步长是1且不需要填充。
(2)激活层:ELU[18]函数是在Relu[19]函数的基础上进行了优化,计算公式如式(1)所示,ELU函数不仅具有Relu所有优点,而且在其基础上,将负值输入的零输出改成了非零输出,增加负值的训练数据,这样负值输入的数据也可以参与网络训练和权值更新,提高学习率的同时网络的训练效果也会变好。
(1)
式(1)中:f为ELU激活函数;α为调节系数;x为ELU激活函数的自变量。
(3)批归一化层。在模型中加入批量归一化层(batch normalization,BN)[20]。批量归一化BN是将每个数据减去这一批数据的均值,再除以这一数据的标准差,使数据的均值和方差归一化为0和1,计算过程如下。
设输入数据为
x={x1,x2,…,xm}
(2)
式(2)中:xm为m个数据的最后一个数据。
(3)
式(3)中:m为数据的总数。
(4)
则归一化的数据为
(5)
引入两个可学习参数γ和β,则输出数据可表示为
(6)
式(6)中:yi为批量归一化后的输出数据。
如果同时出现式(7)和式(8)的情况,BN会丧失对数据进行归一化的能力。
(7)
β=E(x)
(8)
因此,可以通过可学习参数γ和β使搭建的网络模型进行特征分布的学习,提高训练效率。
(4)池化层。使用池化参数设置为2×2大小的采样核,步长为1,无填充。
(5)随机失活层。在模型中加入两层随机失活层Dropout[21]增加网络的适应能力。第一层随机失活比例设置为0.6,第二层随机失活比例设置为0.4。
(6)全连接层。经过卷积、池化等操作后的矩阵数据会被送入全连接层,全连接层将矩阵数据转化为一维数据,并标记不同类别的一维数据进行区分,达到分类的目的。其中,256个神经元分布在第1层,30个神经元分布在第2层,4个神经元分布在第3层,第3层作为输出层,采用Softmax函数进行识别分类。
(7)Softmax层。Softmax函数是基于逻辑回归的线性分类器,作用是将全连接层学习到的不同类别的特征数据的输出数值转化为相对应的概率值,然后对不同类别的样本数据进行分类,计算公式为
(9)
式(9)中:xi为第i个输入;yi为与之对应的预测类别;φl(xi)为输入xi后第l个类的输出,l=1,2,…,k;P(yi=l|xi,φ)为输入xi预测为类别l的概率;hφ为类别概率。
3 训练网络模型
3.1 准备数据集
发动机主轴承盖需要识别的面有4个,即正面、底面、2个侧面,如图3所示,为了区分2个侧面,将其中的一个侧面重新改名为宽面。利用相机拍摄发动机主轴承盖原始图片,其中正面、底面、侧面、宽面图片各500张,总共2 000张。
图3 发动机主轴承盖4个面图像
训练好一个网络需要大量的数据,但是在面对实际问题时,需要人工来获取训练数据和制作训练数据的标签,时间成本非常高。数据增强方法的优点是可以利用原图数据增加虚拟数据,生成大量新的“原图”,可以解决原始图片数量不够的问题,节约制作数据集的时间,并降低模型过度学习的能力。利用数据增强方法对原始图片进行处理,生成大量新的“原图”,处理后的图片总数量从2 000张增加到12 000张,每个面有3 000张。原始图片及数据增强图片如图4所示。第一列为原始图片,其余列为数据增强图片。使用Labeling软件对所有图片进行标注,每一张图片标注为所属类别名,将标注好的图片放入数据集中。
3.2 损失函数
在网络模型训练之前,要选取一个合适的损失函数。模型的好坏可以由损失函数来判定,如果搭建的模型效果好,那么标准输出值与训练输出值非常接近,即损失函数值很小,损失函数值越小说明模型和参数越符合训练样本,模型的识别能力会越强。采用交叉熵代价函数监督网络的训练效果,表达式分别为。
(10)
(11)
3.3 优化函数
在模型中加入Adamax[22]算法对网络进行优化,找到梯度下降的最快路线,降低期望输出与实际输出之间的差距,使网络能更好更快地收敛,计算公式分别为
mt=β1mt-1+(1-β1)gt
(12)
ut=max(β2ut-1,|gt|)
(13)
(14)
(15)
3.4 训练结果
数据增强图片将数据集中的数据按0.8∶0.2的比例划分为训练集和验证集,其中训练集图片9 600张,验证集图片2 400张。Adamax算法的初始学习率α设置为0.02,Batch设置为32,Epochs设置为100,在卷积层和全连接层中,加入初始化器Truncate Normal生成随机张量,其中均值为0,方差为0.01。
搭建好的网络模型导入训练数据集之前,再次利用数据增强方法,增加训练数据。图5、图6记录了网络的训练过程。从图5中可以看出,训练集损失在下降,慢慢无限趋近于0,验证集损失虽然在10轮左右有所波动,但是随着训练轮次的增加,损失值也慢慢无限趋近于0。从图6中可以看出,训练集准确率上升很快,随着训练轮次的增加,准确率已经慢慢无限趋近于1,验证集准确率虽然在10轮左右有所波动,准确率下降,但是随着轮次的增加,准确率也慢慢无限趋近于1。
图5 训练损失图像
图6 训练准确率图像
利用验证集验证网络的训练效果,使用6个评价指标识别精度(precision)、召回率(recall)、综合评价指标(Fl-score)、宏平均(macro avg)、加权平均(weight avg)、准确率(accuracy)来验证网络模型优劣。验证结果如图7所示,每个评价指标的计算值都为1,说明所搭建的网络模型已经训练的很好。
图7 验证结果
4 测试结果及分析
利用相机拍摄发动机主轴承盖每个面的测试图片各50张,放入测试集中。将测试集图片送入训练好的网络进行测试,每个面的测试效果如图8所示,可以看出,所搭建的网络模型不仅可以将每个面识别出来,而且每个面的识别精度很高。
图8 识别结果图
对测试集中所有图片进行测试。测试结果如表1所示。可以看出,正面、侧面、底面、宽面全部识别正确,没有出现错误识别的情况。每一张图片的平均识别时间为3.80 s,平均识别准确率为100%,超过了工业要求的95.000 0%。
表1 实验结果统计
本文模型是参考AlexNet和VGG16网络搭建的,为了更好地体现本文算法的优势,采用AlexNet网络、VGG16网络对发动机主轴承盖进行姿态识别。如表2所示,VGG16算法的平均识别准确率达到100%,训练时长为138 338.75 s,每张图片的平均识别时间为8.54 s。AlexNet算法的平均识别准确率为99.975 0%,训练时长为95 381.67 s,每张图片的平均识别时间为4.57 s。本文算法的平均识别准确率为100%,训练时长为23 404.87 s,每张图片的平均识别时间为3.80 s。和VGG16算法相比,本文算法所需要的训练时长更短,每张图片所用的识别时间更少。和AlexNet算法相比,本文算法不仅训练时间和识别时间更短,而且平均识别准确率更高。
表2 3种算法识别效果对比
本文算法虽然与AlexNet算法具有相同的卷积层数,但是选用的卷积核大小和数量不同。AlexNet算法使用了较大、数量较多的卷积核,较大的卷积核容易忽略一些细节特征,特征提取能力会下降,而且训练数据变多,特征学习的速度变慢,不仅会增加训练时间,而且降低了识别效率。本文算法选用3×3的小卷积核,可以提取更多的细节信息,加强全局特征的提取能力。而且使用的卷积核数量更少,降低参数量和计算量的同时缩小了训练时间和训练时间。VGG16算法的网络层数深、卷积核数量多,虽然可以保证网络的识别精度,但是参数量和计算量巨大,网络训练和识别所需的时间更长。本文算法在保证识别精度的同时,简化了网络结构,降低了网络复杂度,减小了计算量和参数量,增加了识别效率。
采用传统的基于HOG-SVM结合的算法对轴承盖进行姿态识别,识别准确率为83.50%,与本文算法相比,准确率下降了16.50%。可以看出,本文算法识别准确率要高于传统的基于HOG-SVM结合方法的识别准确率,且避免了对图像进行复杂的预处理操作。
5 结论
所提出的基于卷积神经网络的发动机主轴承盖姿态识别算法,有效区分了发动机主轴承盖的四个面,而且识别准确率达到100%。与VGG16、AlexNet算法相比,本文算法的训练时长和识别时间更短,资源消耗更少。与传统识别算法HOG-SVM相比,本文算法摒弃了图像的预处理步骤,而且识别准确率更高,不会受到光照环境的改变而降低识别准确率,鲁棒性更好,为小样本识别提供了一种新的思路。