APP下载

基于卷积神经网络的工件识别算法*

2018-04-20徐一丁杜慧敏毛智礼张丽果顾文宁

组合机床与自动化加工技术 2018年4期
关键词:工件神经元卷积

徐一丁,杜慧敏,毛智礼,张丽果,顾文宁

(西安邮电大学 电子工程学院,西安 710121)

0 引言

随着我国工业生产自动化与智能化的重要性不断提升,现代化工厂对工业机器人的要求也越来越高[1-2]。工件的识别和定位作为工业机器人的核心模块,对推进生产自动化有着重要的意义[3]。传统的工件识别算法有基于图像分割、形状匹配、特征分析、决策分类、多传感器信息融合、双目立体视觉等方法[4-6]。其中基于特征提取的工件识别一般是通过分析待识别工件的灰度图像进行识别[7-8],通过提取工件的边缘、轮廓、尺度不变特征(Scale-invariant feature transform, SIFT)等特征提取识别算法[9-11]。近些年在基于特征提取的识别算法方面,提出了许多融合方法的识别算法,如基于局部二值模式(local binary pattern, LBP)与支持向量机(support vector machine, SVM)相结合的识别算法[12],基于LBP与方向梯度直方图(Histogram of oriented gradient, HOG)特征融合的识别算法[13],基于主成分分析(Principal Component Analysis, PCA)与SIFT特征相结合的识别算法[14],基于SVM和组合矩的识别算法[15],还有基于角点检测和霍夫变换的识别算法[16]。这些基于特征的工件识别算法与工件本身的特点相关性较强,对于不同的工件需要重新设计算法,通用性差。而且由于工件表面颜色相近,形状变化平缓,很难提取出鲁棒性较强的特征,因此误识别率很高,受光源、噪声等环境因素的影响较大。

本文采用机器视觉技术与机器学习相结合的方法对工件进行识别和定位。通过构建一个4层卷积神经网络实现对工件的识别,网络包括2层卷积层和2层全连接层。本文制作了一个小规模的数据集对网络进行训练并根据数据集的特点设计训练网络的策略。为了能够用小规模的数据集实现更好的训练效果,本文在卷积层中加入了批归一化层,在全连接层使用随机失活的方法增加网络的泛化能力。然后结合图像处理技术对图像进行预处理以进一步增强算法的识别效果。根据对工件识别这一问题的研究,在保证识别效果的前提下将卷积神经网络的层数改小,减少参数以降低对运行平台的需求,使其能够在不使用GPU等加速设备的情况下仍然能够进行实时识别。如果需要改变应用场景,识别其他种类的工件,无需修改程序,只需载入重新训练的网络模型。

本文任意选取了10种工件进行实验,实验表明基于卷积神经网络的工件识别能够有效的解决传统工件识别方法通用性差、特征提取困难、工件的平移、旋转和光照变化对识别效果影响较大等问题。

1 图像预处理

图像预处理的主要目的是降低背景变化、光源变化、工件平移和摄像头高度变化等环境因素对识别的影响,改善图像质量并提升卷积神经网络的训练效率和准确率,使卷积神经网络能够在层数较少的情况下仍然能够准确识别。

1.1 阈值分割

本文使用的摄像头采集640×480大小的图像。首先将采集到的原始图像转为灰度图像并进行高斯滤波,滤除原始图像中的噪声。

对处理后的灰度图像进行阈值分割,这里使用的阈值分割算法是最大类间方差法(OTSU)。OTSU算法是一种自适应阈值确定的算法,它根据图像的灰度特性,将图像分为前景和背景两个部分,是一种基于全局的二值化算法[17]。当取得最佳阈值时,前景和背景之间的差别应该是最大的,OTSU算法衡量差别的标准就是类间方差[18],如式(1)所示。

(1)

1.2 图像截取

图1 工件区域与中心位置

图像截取是为了提高输入图像的信息量并且消除工件平移对识别造成的影响,达到提升训练效率和识别准确率的目的。

图像截取的方法是通过绘制工件的最小矩形,然后根据最小矩形x轴与y轴的最大和最小坐标来确定工件区域,同时可以根据最小矩形四个顶点的坐标计算出工件的中心位置,和识别结果一起传输给机械手作为抓取所需的位置信息,效果如图1所示。

最后将工件区域平移至图像的中心,截取图像中心256×256像素大小的图像。目的是为了保留工件的尺度信息,以区别形状相同,大小不一样的工件。

2 卷积神经网络

卷积神经网络(convolutional neural network, CNN)是一种专门用来处理具有类似网格结构的数据的神经网络[19]。卷积神经网络在诸多应用领域都有优异的表现,如手写字符识别、行人检测、人脸识别、人眼检测等[20-23]。卷积神经网络主要由四种类型层构成:卷积层、激活层、池化层和全连接层。

(1)卷积层通过对输入图像进行卷积运算提取特征[24-25],较低的卷积层捕获低级图像特征,较高的卷积层捕获复杂的细节[26]。

(2)激活层的作用是通过激活函数为网络模型加入非线性因素,使神经网络能够学习到平滑的曲线,而不是用复杂的线性组合去逼近一条曲线[27]。

(3)池化层的作用是逐渐降低数据的尺寸,减少网络参数的数量,进而有效的控制过拟合[27]。

(4)神经网络的分类是通过全连接层完成的。全连接层还起到将提取到的分布式特征映射到样本标记空间的作用[28]。

2.1 网络模型

图2 网络模型

根据工件识别的特点,需要多层卷积层提取工件的特征。由于全连接层参数的数量占整个网络参数数量的比重较大,因此在能够保证图像质量和特征提取的前提下减少全连接层的层数,能够大幅减少运算量。本文设计的网络模型如图2所示。

卷积层:使用3×3大小的卷积核,其中第一层卷积层有32个卷积核,第二层卷积层有64个卷积核。

激活层:使用指数线性单元(Exponential Linear Units, ELUs)作为激活函数。ELU函数表达式如式(2)所示。

(2)

ELU函数图像如图3所示。

图3 ELU函数图像

ELU与修正线性单元(Rectified linear units, ReLU)相比解决了输入为负时发生梯度消失的问题和由于不良的初始化或过高的学习率而导致神经元不再被激活的问题[29]。

池化层:使用空间大小为2×2,步长为1的最大值池化操作。

批归一化层:在网络中加入批归一化层的目的是对输入数据做一个归一化处理。因为网络在进行训练时,网络中的参数不断的发生更新,前面层训练参数的更新会导致后面层输入数据的分布发生变化,这种数据分布的改变称为内协移[30]。网络前面层的微小变化都会累积放大到后面层,如果每一批训练数据的分布都不相同,那么网络在训练时的每次迭代都需要适应不同的分布,这不仅会导致训练效率的下降,还会因为验证数据的分布与网络学习到的数据分布不同而导致网络泛化能力的降低。

批归一化操作通过每个数据减去这一批数据的均值并除以这一批数据的标准差,使数据的均值和方差归一化为0和1,如式(3)所示。

(3)

(4)

全连接层:最后的全连接层由含有100个神经元的隐藏层和10个神经元的输出层构成。

2.2 训练网络

在对网络进行训练之前,需要做的是要确定优化函数和损失函数,制作训练集和验证集,参数的初始化。在训练时对全连接层使用随机失活[31](Dropout)的方法防止过拟合优化函数:本文使用自适应矩估计(Adaptive Moment Estimation, Adam)函数作为优化函数。Adam函数利用梯度的一阶矩估计和二阶矩估计动态的调整学习率,使每次迭代的学习率在一定的范围内[32],公式如式(5)到式(9)所示。

mt=μ×mt-1+(1-μ)×gt

(5)

(6)

(7)

(8)

(9)

损失函数:使用交叉熵代价函数作为损失函数。交叉熵代价函数与方差代价函数相比解决了权重更新过慢的问题[33],表达式如式(10)所示。

(10)

a=σ(∑ωj×xj+b)

(11)

其中,a为神经元的实际输出,y为期望输出,ωj和b为神经元的参数,xj为神经元的输入。函数图像如图4所示。

训练集与验证集:使用预处理后的工件图像制作训练集,选取总数据集的10%作为验证集验证网络的训练效果。

图4 交叉熵损失函数图像

参数的初始化:用小随机数初始化参数。网络中所有卷积核和神经元的权重以方差为0.1的正态分布的随机数作为初始值,偏重以常数0.1为初始值。

随机失活:Dropout是指在网络训练时以一定概率使网络中的神经元暂时失活。因为是随机失活,所以每次迭代训练的网络都有所不同。Dropout能够有效的防止过拟合,本文训练时使全连接层中隐藏层的神经元以50%的概率失活,既每次迭代隐藏层均有一半的神经元失效。

2.3 算法执行流程

图5 算法执行流程图

在算法执行时,只需载入训练好的网络模型。具体执行流程图如图5所示。

工件中心坐标、工件区域的四点坐标、识别结果和对应概率作为算法的结果传输到系统的下一级。

3 实验结果与分析

本文算法采用python语言编写,实验在Intel Corei5-3210M CPU,主频为2.50GHz,内存配置为6GB的电脑上进行。实验中视频采集与图像预处理算法均采用基于OpenCV3.2的python语言实现。使用TensorFlow深度学习框架实现卷积神经网络。实验任意选取10种工件进行训练和识别,10种工件如图6所示。

图6 实验选取工件

图中10种工件下对应的数字为工件的类别。对采集到的图像进行预处理,预处理的效果如图7所示。

图7 预处理效果图

在光源稳定的室内环境下对工件识别进行测试,识别效果如图8所示。图中显示的数字,上方表示识别的类别,下方表示对应的概率。

图8 识别效果图

3.1 网络训练结果与分析

图9 损失下降曲线图

实验采集这10种工件共1万张图像,从中抽取1000张图像作为验证集,剩余9000张图像作为训练集。训练时每批训练图像为25张,学习率为0.001,总迭代次数为10万次。损失下降曲线如图9所示。

图10 验证集识别正确率图

损失函数的值随着训练次数的增加不断下降,网络不断的收敛。用验证集的图片测试网络识别的正确率,如图10所示。

根据图9和图10可知,当迭代次数到达1万次时,损失值的下降速度明显变缓,验证集正确率的提升速度也同时降低。当迭代次数达到10万次时,损失值趋近于0,正确率趋近于1.0,基本得到理想的训练效果。

3.2 算法准确率分析与测试

在光照稳定的室内环境下对工件识别进行测试,测试结果如表1所示。对每一类工件进行300次实验,所有工件均任意摆放。

根据表1可知,算法从采集图像到显示结果平均所需时间为0.169s,平均识别准确率为98.3%。文献[34]基于特征和模板匹配的工件识别准确率为97.05%。说明基于卷积神经网络的工件识别的准确率高于传统基于特征提取和模板匹配的工件识别。

表1 工件识别测试结果

4 结束语

本文针对于工业机器人的关键模块工件识别应用,通过结合卷积神经网络和图像处理的方法实现工件识别。与传统工件识别方法相比,通用性更强,识别准确率更高。通过实验证明,基于卷积神经网络的工件识别算法准确率统基于特征提取和模板匹配的工件识别。

[参考文献]

[1] 王喜文. 工业4.0:智能工业[J]. 物联网技术, 2013(12):3-4.

[2] 张曙. 工业4.0和智能制造[J]. 机械设计与制造工程, 2014(8):1-5.

[3] Aldrich C, Marais C, Shean B J, et al. Online monitoring and control of froth flotation systems with machine vision: A review[J]. International Journal of Mineral Processing, 2010, 96(1-4):1-13.

[4] 王耀南, 陈铁健, 贺振东,等. 智能制造装备视觉检测控制方法综述[J]. 控制理论与应用, 2015, 32(3):273-286.

[5] 车录锋, 周晓军. 多传感器信息融合机器人工件识别[J]. 中国机械工程, 2000, 11(11):1266-1268.

[6] 李胜利. 基于双目立体视觉的工件识别与定位技术研究[D]. 哈尔滨:哈尔滨工业大学, 2016.

[7] Papari G, Petkov N. Edge and line oriented contour detection: State of the art[J]. Image & Vision Computing, 2011, 29(2-3):79-103.

[8] 郝麟, 冯少彤, 聂守平. 利用深度和灰度图像实现三维目标的识别与分类[J]. 光电子·激光, 2010,21(2):312-317.

[9] Lourenco M, Barreto J P, Vasconcelos F. sRD-SIFT: Keypoint Detection and Matching in Images With Radial Distortion[J]. IEEE Transactions on Robotics, 2012, 28(3):752-760.

[10] 熊晓松, 周凯. 基于机器视觉的工件识别系统[J]. 机床与液压, 2016, 44(4):106-108.

[11] 吴益红, 许钢, 江娟娟,等. 基于LBP和SVM的工件图像特征识别研究[J]. 重庆理工大学学报自然科学版, 2016, 30(1):77-84.

[12] 吴益红, 许钢, 江娟娟,等. 一种用于工件识别的LBP-HOG特征融合方法[J]. 南阳师范学院学报, 2016, 15(9):33-38.

[13] 符宇, 任获荣. PCA-SIFT的工件图像识别算法[C]. 数控机床与自动化技术专家论坛, 2014.

[14] 周伟峰, 江娟娟, 林园胜,等. SVM与组合矩在工件识别中的应用研究[J]. 重庆工商大学学报(自然科学版), 2015, 32(4):78-84.

[15] 黄山. 基于机器视觉的机械臂分拣系统的研究[D]. 镇江:江苏科技大学, 2016.

[16] Otsu N. A threshold selection method from gray-level histograms[J]. Automatica, 1975, 11(285-296): 23-27.

[17] Gonzalez R C, Wintz P. Digital image processing[M]. 北京:电子工业出版社, 2007.

[18] Schmidhuber J. Deep Learning in neural networks: An overview.[J]. Neural Netw, 2015, 61:85-117.

[19] Haykin S, Kosko B. GradientBased Learning Applied to Document Recognition[D]. Wiley-IEEE Press, 2009.

[20] Szarvas M, Yoshizawa A, Yamamoto M, et al. Pedestrian detection with convolutional neural networks[C]// Intelligent Vehicles Symposium, 2005. Proceedings,IEEE, 2005:224-229.

[21] Chen Y D, Wang L M, Physics S O, et al. Convolutional neural network for face recognition[J]. Journal of Northeast Normal University, 2016.

[22] Tivive F H C, Bouzerdown A. An eye feature detector based on convolutional neural network[C]// Eighth International Symposium on Signal Processing and ITS Applications. IEEE, 2005:90-93.

[23] Kavukcuoglu K, Sermanet P, Boureau Y L, et al. Learning Convolutional Feature Hierarchies for Visual Recognition.[J]. Advances in Neural Information Processing Systems, 2010:1090-1098.

[24] Jaderberg M, Simonyan K, Vedaldi A, et al. Reading Text in the Wild with Convolutional Neural Networks[J]. International Journal of Computer Vision, 2016, 116(1):1-20.

[25] Krizhevsky A, Sutskever I, Hinton G E. ImageNet classification with deep convolutional neural networks[C]// International Conference on Neural Information Processing Systems. Curran Associates Inc. 2012:1097-1105.

[26] Cybenko G. Approximation by superpositions of a sigmoidal function[J]. Mathematics of Control, Signals, and Systems, 1989, 2(4):303-314.

[27] Scherer D, Ller A, Behnke S. Evaluation of pooling operations in convolutional architectures for object recognition[C]// International Conference on Artificial Neural Networks. Springer-Verlag, 2010:92-101.

[28] Lin M, Chen Q, Yan S. Network In Network[J]. Computer Science, 2014.

[29] Clevert, Djork-Arné, Unterthiner T, Hochreiter S. Fast and Accurate Deep Network Learning by Exponential Linear Units (ELUs)[J]. Computer Science, 2015.

[30] Ioffe S, Szegedy C. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift[J]. Computer Science, 2015.

[31] Srivastava N, Hinton G, Krizhevsky A, et al. Dropout: a simple way to prevent neural networks from overfitting[J]. Journal of Machine Learning Research, 2014, 15(1):1929-1958.

[32] Kingma D P, Ba J. Adam: A Method for Stochastic Optimization[J]. Computer Science, 2014.

[33] Boer P T D, Kroese D P, Mannor S, et al. A Tutorial on the Cross-Entropy Method[J]. Annals of Operations Research, 2005, 134(1):19-67.

[34] 尤卫卫. 机器人分拣作业中工件识别实用技术的研究与实现[D]. 南京:东南大学, 2016.

猜你喜欢

工件神经元卷积
基于3D-Winograd的快速卷积算法设计及FPGA实现
曲轴线工件划伤问题改进研究
卷积神经网络的分析与设计
考虑非线性误差的五轴工件安装位置优化
从滤波器理解卷积
跃动的神经元——波兰Brain Embassy联合办公
基于傅里叶域卷积表示的目标跟踪算法
基于力学原理的工件自由度判断定理与应用
ERK1/2介导姜黄素抑制STS诱导神经元毒性损伤的作用
毫米波导引头预定回路改进单神经元控制