APP下载

基于深度学习的零件实例分割识别研究*

2019-05-24黄海松魏中雨姚立国

组合机床与自动化加工技术 2019年5期
关键词:螺母卷积样本

黄海松,魏中雨,姚立国

(贵州大学 现代制造技术教育部重点实验室,贵阳 550025)

0 引言

在工业生产过程中存在大量的零件识别定位,零件识别技术已经成为提高产品生产质量和效率的重要一环。对此,在零件识别方面国内外学者都进行了大量的研究。张青等[1]提出了应用形状匹配算法粗识别搜索图像中的零件,提取其边缘,使用EM算法实现精确配准目的。汪嘉杰等[2]提出一种提取电连接器的斑点特征和尺度不变特征放入支持向量机的分类器,借助Hough变换与零件训练模型实现了电连接器的在线分类识别。 夏庆观等[3]提出了基于小波变换提取零件图像特征和用神经网络实现识别的方法。何晓阳等[4]提出了利用Hu不变距作为零件识别形状特征,利用神经网络识别零件方法。司小婷等[5]提出了一种通过提取零件轮廓的几何特征来实现零件快速识别方法。以上方法主要通过人工选取特征提取方法对零件图像进行特征提取,所以特征提取的质量直接影响识别精度,并且在包含多目标的零件图像中无法进行有效识别。

近年来随着人工智能、深度学习[6]的发展,涌现出大批优秀的目标检测框架如YOLO[7]、SSD[8]、Faster R-CNN[9]等。为解决上述问题本文提出了一种基于深度学习的零件识别方法,采用Mask R-CNN[10]框架, 提出了一种基于Mask R-CNN的零件识别检测算法,采用卷积神经网络对零件图像进行特征提取。在实现零件识别的同时,加入Mask分割掩码,将同一类别的不同零件分别开来,满足在生产加工过程中对同类不同零件实例分割识别的需求,可以对图像中多个零件目标进行识别。最后通过实验平台和算法验证了方法的可行性,为零件实例分割识别提供新的思路。

1 零件识别框架

Mask R-CNN(网络架构如图1所示)是在Faster R-CNN基础上进行的扩展,添加了一个小的全卷积网络结构(Fully Convolutional Network,FCN)预测分支,在实现目标检测的同时可以把目标像素分割出来,输出一个掩码,提供了像素级的分割技术。

图1 Mask R-CNN网络框架图

传统物体检测与分割算法在对物体进行分类的时候会输出分类结果,并且相同类别的物体用一种颜色分割出来。与传统图像识别与分割算法不同,Mask R-CNN可以将同类别的目标分别生成不同颜色的掩码,实现对图像中目标的实例分割,本文以螺母等为例,分别进行3种识别,效果如图2和图3所示。

(a) 目标检测 (b) 语义分割 (c) 实例分割图2 分割效果对比图

图3 原始图像及其对应Mask结果

1.1 特征提取

卷积神经网络(Convolution Neural Network, CNN)是一种前馈神经网络,它通过权值共享的方式减少了参数数量,降低了模型复杂度。卷积神经网络的卷积层通过卷积核滑动去提取图片特征,可以较容易的得到区域内相关性。在Mask R-CNN框架下本文选用ResNet网络对图像进行特征提取。相较与AlexNet、VGG、GooLeNet等。ResNet101网络引入了残差块网络结构,解决了随着网络深度加深,准确率没有等量上升的问题。为提升对图像中小物体检测的准确率,引入特征金字塔网络(Feature Pyramid Networks,FPN)。本文中FPN网络通过1*1的卷积核减少了特征图数量,最后通过添加新的特征元素,生成新的特征图。

1.2 区域建议网络

区域建议网络(Region Proposal Networks,RPN)可以快速生成比例不同的窗口,每个窗口的中心对应K个锚点(anchor),通过判断窗口内前景或者背景的概率生成感兴趣区域(Region of Interest,RoI)。锚点的表示方式如下:

anchor=(x′,y′,w′,h′)

(1)

式中,x′,y′表示窗口的中心坐标;w′,h′表示窗口的宽度和高度。

区域建议网络的工作原理是在特征图上利用一个滑动窗口再执行一次卷积操作,经过卷积后把得到的特征图分别输入两个平行的全卷积层:回归层和分类层,对应输出物体的位置信息和类别信息。

区域建议网络主要结构如图4所示。

图4 区域建议网络结构

本文中针对零件目标识别检测问题,对RPN网络进行参数设置如下:使用尺寸为3*3的卷积核在特征图上进行滑动卷积操作,每一次操作一个生成256维的特征向量,将特征向量输入分类层和回归层进行零件目标分类任务和零件位置框回归任务。每个滑动窗口中心生成5种尺寸和3种长宽比的锚点,根据本文待识别零件在图像种的占比特点,设置锚点尺寸为(8*6,16*6,32*6,64*6,128*6),长宽比为0.5、1、2共15种尺寸的滑动窗口。

对特征图上每一个像素点计算目标/非目标的概率值得到30个目标分类结果。计算目标框位置回归时,由于目标框表示需要4个参数,生成60个目标框回归结果。

本文RPN网络采用非极大值抑制(Non-Maximum Suppression,NMS)的策略选取样本。为了区分推荐区域中是否包括待识别目标,将产生的锚点和真实目标窗口(Ground Trueth,GT)的交并比(Intersection over Union,IoU)作为判别依据。 IoU>0.5时判别为正样本,IoU<0.3 时判定为负样本,按照正负样本比例1:1的比例选取256个样本,其余样本不参与训练。

1.3 目标分割网络

1.3.1 RoI Align

本文算法使用了RoI Align方法将特征图中相应区域转为为固定尺寸的特征图。RoI Align方法使用双线性内插的方法获得坐标为浮点数像素点上的像素值,在遍历预选框和生成单元之前不做量化,最后采用双线性差值的方法获得每个单元4个位置坐标,进行最大池化操作。RoI Align的反向传播公式如下:

(2)

式中,xi为池化前特征图上的像素点;yrj代表池化后第i个候选区域的第j个点;i*(i,j)代表像素yrj的来源;d(,)表示两点之间的距离;Δh和Δw表示xi与xi*(r,j)横纵坐标的差值。

1.3.2 Mask层

为实现对本文中待识别零件进行实例分割,本文选取了Mask R-CNN目标检测框架,在Faster R-CNN的基础上增加了一个用于预测掩码(Object Mask)的新分支,该分支采用了一个全卷积网络结构(Fully Convolution Network, FCN)。针对零件特点对RoI Align计算产生的特征图进行4次卷积操作,生成28*28*2的二值特征图像,将待识别零件与背景分割。由于增加了Mask层,每个RoI损失函数定义如下:

Loss=Losscls+Lossreg+Lossmask

(3)

其中,Losscls为分类损失函数;Lossreg为回归损失函数;Lossmask为掩码回归函数。

2 数据集处理及模型训练

2.1 图像预处理

针对本文零件图像采集特点,为方便后续将图像输入卷积神经网络进行特征提取,将采集到的图像归一化为长度为1280,宽度为960(单位:像素)的大小。由于采集图像样本中的情景类别较少,为增加样本的多样性,使用数据增强方法对采集到的数据集进行扩充,增加模型的鲁棒性。数据增强可以增加样本的多样性,减少过拟合的风险。本文中数据增强的具体方法是改变图像对比度、对图像进行随机剪裁、和添加椒盐噪声。所用数据增强方法的具体参数如表1所示。

表1 数据增强具体参数

数据增强后的图像与原始图像对比如图5所示。

(a) 原图 (b) 增加对比度

(c) 图像随机剪裁 (d) 添加椒盐噪声图5 图像数据增强前后对比

对增强后的数据使用LabelMe软件对训练样本进行标记,标记后的文件会自动添加背景并将背景默认为一类,并生成包含图像信息的相应文件夹。训练时模型自动读取文件夹内相关信息进行训练。

为了得到更为稳固、健壮的模型。对标记好的训练样本划分K折交叉验证(此处取K=5),分别输入训练模型,进行训练。将初始样本集分割成5个子样本,并分别编号,留取其中一个子样本用作验证模型的数据,其他样本用作训练。交叉验证进行5次,每个子样本依次验证一次。

2.2 模型训练

深度网络模型需要大量的标签训练数据进行训练防止网络的过拟合。模型微调是指利用训练好的模型来进行网络的初始化,利用自己的数据重新进行参数调整,使训练得到的模型能够达到理想的效果,解决缺少足够标签数据带来的欠拟合的问题。本文针对零件识别特点,结合自己数据集对已经通过大量数据训练好的模型进行微调,设置超参数使之达到较好的训练效果。训练过程中参数微调流程如图6所示。

图6 预训练参数微调流程

在训练过程中设置迭代次数与迭代周期,每进行一个周期的迭代后记录损失函数数值。整个模型训练流程如图7所示。

图7 模型训练流程

对于模型参数的设置最大迭代次数为50个时期(epoch),每个周期进行50次迭代,动量设为0.9,学习率设为0.001,学习率衰减系数设为0.001。

3 实验

3.1 图像采集装置

为验证算法可靠性,搭建零件图像采集识别平台如图8所示。零件图像采集系统由传送装置、工业CCD相机、镜头、图像采集卡、LED弧形光源和计算机组成。采集之前,调整镜头焦距和光源位置,保证图像采集质量。实验流程如图9所示。

图8 零件图像识别系统实物图

图9 零件图像识别流程

实验用的计算机的配置为:操作系统Ubuntu 16.04, AMD Ryzen 7 1800X Eight-Core处理器,主频3.6GHz,16GB内存,GPU选用GeForce GTX 1080,实验以螺母为对象,采集图片200张。对采集的数据进行预处理,制作数据集后分别输入训练模型,进行训练。

3.2 实验与结果分析

本文首先以螺母检测对象,对Mask R-CNN网络模型进行训练,训练使用深度学习框架TensorFlow和Keras。为使模型更好的适应本数据集,设置训练类别为3,GPU每次训练图片数量为1,anchor大小设置为(8*6,16*6,32*6,64*6,128*6),比例设置为0.5、1、2。LOSS值变化如图10所示。

(a) 损失函数值 (b) 回归损失函数

(c) 分类损失函数 (d) 掩码损失函数图10 损失函数变化

Loss值在20次迭代后趋于稳定。模型训练完毕后对单个螺母和与紧固在螺栓上的两个螺母进行测试,测试结果如图11所示,基于Mask R-CNN框架的零件识别算法对单个零件和配合组件上的零件均有较好的识别效果。选取40个样本进行测试,识别准确率超过80%判为识别正确,其中38个样本识别正确,2个样本识别错误,正确率为95%。在配合组件中,算法不仅可以识别出紧固在螺栓上的螺母,还可以对螺母进行实例分割,将螺母与螺栓进行实例分割。

(a) 螺母正面识别 (b) 螺母侧面识别

(c) 不同角度螺母面识 (d) 配合组件上螺母识别图11 螺纹识别结果

图12 相似度较高零件实例分割结果

为检测模型的可靠性,重新选取三个相似度较高的目标进行测,选取的待检测目标分别为波纹铣刀、丝锥、和螺栓。采集样本图像200张。选取样本在图像中的所占的比重较大,并且待检测零件本身长宽比较大,并锚点重新进行设置,具体参数为锚点大小(16*8,32*8,64*8,128*8,256*8)比例为(0.75,1,1)。其余参数设置如上,选取40个分别包含待识别目标的图像进行测试,为增加识别的可靠性,设置是否正确识别的阈值为80%,识别概率大于80%判定为识别正确,反之判定为识别错误。实验结果如图12和表2所示。

由表2可知,三个样本检测的平均准确率为94.1%,实验说明本方法对零件识别有较好的识别率,漏检率和错检率较低,满足工业产线中对零件识别的要求。

4 总结

针对传统零件识别人工征提取效果不佳的问题,本文提出了一种基于Mask R-CNN网络框架的零件识别方法。以ResNet101和FPN网络作为特征提取网络,Mask R-CNN网络用于零件的识别分类,并对零件图像进行实例分割。为解决数据样本较少的问题,进行数据增强实验,增加训练样本的多样性。根据训练样本中零件的形状特点对网络模型进行调参优化,重新设置锚点的大小与比例,提升识别精度。通过搭建实验平台进行实验证明该方法能快速的对零件进行识别,并将零件与背景进行实例分割,证明了方法的有效性和准确性。

猜你喜欢

螺母卷积样本
新型自锁、防松螺母的制作与应用*
基于3D-Winograd的快速卷积算法设计及FPGA实现
用样本估计总体复习点拨
“永不松动”的螺母
卷积神经网络的分析与设计
杯沿“叠罗汉”
从滤波器理解卷积
规划·样本
基于傅里叶域卷积表示的目标跟踪算法
随机微分方程的样本Lyapunov二次型估计