基于改进Faster RCNN的零件识别方法研究
2022-02-28马钲东董光林
王 一,马钲东,董光林
(华北理工大学 电气工程学院,河北 唐山 063200)
引言
随着工业4.0 的快速发展,“中国制造2025”被提出,我国工业生产自动化得到飞速发展,现代化工厂应运而生,其中对装配零件的识别和分类成为工业生产流程中一个常见的工作项目,各式各样的工业分拣机器人成为现代化工厂中非常重要的组成部分。在自动化的装配零件分拣流水线中,对装配零件进行匹配和识别定位是工业分拣机器人的核心模块之一,能否对装配零件进行精确的匹配和识别,对推进生产自动化有着重要的意义[1]。传统的零件匹配和识别算法有基于图像分割、形状匹配、特征分析、决策分类、多传感器信息融合、双目立体视觉等方法[2-4],例如采用图像色彩增强的方法[5]、基于图像分割结合形状特征匹配的方法[6]、基于支持向量机((support vector machines,SVM)和组合矩的识别算法[7],还有基于角点检测和霍夫变换的识别算法[8]。然而在实际的工厂操作环境当中,待识别和分类的零件往往会受到相互之间遮挡、光线强度等因素的影响,从而导致传统算法鲁棒性低,在提取图像特征的时候会受到很大的干扰,导致物体匹配识别失败,误识别率较高,从而影响工厂下一步的进程,降低工作效率。
近年来,随着GPU 性能的不断发展升级,深度学习相关技术得到迅猛发展,越来越多的科研人员把深度学习方法应用到物体分类、语音识别、目标检测和定位、图像分割和检测等很多传统机器视觉难以实现的复杂场景中,并且取得了非常精确的实验结果。深度学习主要包括两类算法:1)基于回归算法系列,如YOLO、SSD 等;2)基于区域建议系列,如RCNN、Fast RCNN、Faster RCNN等。2006年,Hinton 等[9]通过CNN 从数据中提取图片特征。2012年,Krizhevsky 团队[10]第一次在CNN 中加入AlexNet,提出了CNN AlexNet,使得人们对CNN 的应用有了进一步的了解。Girshick 等[11]提出了RCNN 模型,RCNN 使用选择性搜索选择候选框,使用多个支持向量机对特征分类,最终实现目标检测。2015年,Girshick[12]提出了Fast RCNN,他采用了ROI(region of interest)Pooling 来共享特征区域,提升模型工作效率。随着Fast RCNN 的广泛使用,科研人员发现该模型在提取特征区域时所耗时间较长,于是Ren 等[13]在Fast RCNN 的基础上稍做改进,引入RPN(region proposal network)网络,设计一个3×3 滑动窗口对输入特征图进行卷积操作并生成候选区域,提出了Faster RCNN,该模型较原有模型在精确和速度方面都有较大的提升。
本文提出了一种改进的Faster RCNN 零件识别检测算法。通过对比VGG-16 和ResNet-101 两种不同的特征提取网络,发现ResNet-101 网络的检测精度和召回率要优于VGG16,综合考虑后使用ResNet101 作为改进模型的特征提取网络;增加锚点的数量,同时给候选框设置新的纵横比来更好地检测较小目标;最后使用ROI Align 算法代替原有模型中的ROI Pooling 算法。结果表明改进后的模型可以更准确地识别受到遮挡、光照等因素影响的装配零件。
1 Faster RCNN 网络及改进
当前主流目标检测算法大多都是基于CNN 构建,RCNN 和Fast RCNN 都采用SS(selective search)[14]方法来确定目标候选框,该方法在现实运行中耗时较长,效率较低。2016年,为了提高目标检测的效率和实时性,Girshick 团队首次在Faster RCNN引入了RPN,减少了Fast RCNN 在候选区域提取的时间。
Faster RCNN 的基本结构如图1所示[13]。其网络结构主要包括4 个部分:卷积层、区域建议网络(RPN)、ROI 池化层、分类和回归。
图1 Faster RCNN 结构图Fig.1 Structure diagram of Faster RCNN
1.1 特征提取基础网络
1.1.1 VGG16
VGG16 算法模型含有13 个卷积层、3 个全连接层、5 个池化层,因为其中的卷积层和全连接层含有权重系数,所以也把他们称为权重层,其总数为13+3=16,因此16 也就是VGG16 中16 的来源。图2 为VGG16 算法模型图。
图2 VGG16 算法模型图Fig.2 Algorithm model diagram of VGG16
1.1.2 ResNet101
残差ResNet 网络于2015年由微软研究院何恺明等人提出,并在ImageNet 比赛的分类任务中获得第1 名。随着深度学习研究的不断发展,在许多数据库中存在一些共性问题:各种网络的层数不断加深,出现了训练集训练结果准确度下降的现象,发生梯度弥散或者梯度爆炸,产生退化问题。为解决退化问题,ResNet[15]利用深度残差网络解决了网络层数加深而带来的梯度弥散现象。残差网络使用了一种叫shortcut connection 的连接方式,把输入直接传到输出作为初始结果,当输入为x时网络学习到的特征记为H(x),于是希望得到F(x)=H(x)−x的结果,那么只需要F(x)=0,就得到一个恒等映射函数H(x)=x。这样实际残差并不会为0,同时网络也会在输入特征图像的基础上学习到新的特征。图3 为残差学习结构图,表1 为ResNet101 网络参数表。
图3 残差学习结构图Fig.3 Structure diagram of residual learning
表1 ResNet101 网络参数表Table 1 ResNet101 network parameters
1.2 RPN 网络
由于传统机器视觉生成候选区域的方法非常耗时,难以达到检测实时性的要求,微软Ren 等人提出了一种区域建议网络(region proposal network,RPN)来生成候选区域。相比于之前的选择性搜索(selective search,SS)方法在检测图片生成候选区域大约需要2 s~4 s 来说,通过RPN 方法检测区域,可以更快地生成候选区域,大大减少检测区域生成的时间,提高了效率。
RPN 的网络结构是一种典型的全卷积结构。卷积层和激活层构成了整个RPN 网络模型,为了减少训练时间,提高效率,RPN 舍弃了全连接层,实现了端到端的检测。因为是全卷积结构,所以它的输入可以是任意大小的特征图,最终输出一系列矩形框,即为候选框。首先,使用n×n大小的滑动窗口卷积核在所得到的特征图上的每个点进行初始窗口滑动操作。每个滑动窗口会生成不同尺度、不同长宽比锚点(anchor)作为初始检测区域,用于每一个特征点的检测。这些锚点的尺寸选用128×128 pixel、256×256 pixel、512×512 pixel 3 种,并同时搭配{1∶1,1∶2,2∶1}这3 种纵横比,即可得到9 种不同的候选框。若使用1 张l×h大小的卷积特征图,则可以得到l×h×9 个锚点,进而会在输入原始图像上生成大小尺寸不同的候选框,从而实现多尺度检测。最初产生的锚点框不是很精确,在3×3 的卷积操作之后,接着进行两条线的1×1 卷积操作,其中一条线输出利用Softmax分类网络函数得到锚点框是前景还是背景的概率,进一步筛选候选区域;另外一条线为回归偏移量的计算,对得到的前景候选框进行回归计算,剔除一些误差较大的候选框区域,得到得分较高的候选区域。由于RPN 的训练网络采用的是end-toend 方式,在训练过程中会产生大量的候选框,例如,800×600 pixel 的原始图像经过特征网络的处理可得到800×600 pixel 的特征图,由于设置了9 种不同大小的锚点,会生成800×600×9 个候选框,在这些大量的候选框中往往存在候选框的重叠现象,故使用非极大值抑制(NMS)来去除多余的候选区域。因此,RPN 网络的实际作用是对所要检测目标进行初步定位,其结构如图4所示。
图4 RPN 原始结构图Fig.4 Original structure diagram of RPN
1.3 Faster RCNN 网络的改进
为了让Faster RCNN 网络在工件检测中表现出更好的精度并克服工件遮挡、光照等影响,本文使用ResNet101 残差特征网络替代原始Faster RCNN 中的VGG16 特征提取网络,同时增加锚点数量,使用Soft-NMS 算法替换原有的NMS 算法,最后采用多尺度训练策略对模型进行训练。
1.3.1 特征网络的改进
Faster RCNN 模型的原始特征提取网络是VGG16,VGG16 算法模型含有13 个卷积层、3 个全连接层、5 个池化层,通过多次卷积和池化操作生成特征图。通过大量不同数据集的实验发现,使用VGG16 特征提取网络的Faster RCNN 模型,随着卷积层的加深,实验所得的结果精度有所下降,这正是因模型的退化所导致。为比较VGG16和ResNet101 之间检测精确的优劣,分别对两种特征提取网络进行训练,并对实验结果进行对比。因为ImageNet 数据集包含图像种类很多,所以选用ImageNet 分类数据集进行训练测试,由表2 选择精度更高的网络作为特征提取网络。由表2 可知,VGG16 网络的检测召回率和准确率分别为90.3%和94.5%,单张检测时间为0.47 s;ResNet101网络的检测召回率和准确率分别为91.8%和96.3%,单张检测时间为0.4 s,发现ResNet101 的召回率和准确率检测效果明显优于VGG16。这是因为ResNet101 特征提取网络中引入了残差学习,残差学习中加入了很多跳跃连接,从而在训练深层次网络的同时保留了图像的更多特征。残差学习把原来的输出特征H(x)变成了F(x)=H(x)−x,解决了原有特征网络因为卷积层数太多而导致梯度下降的问题,提高了检测的准确率。因此,本文选用ResNet101 作为工件的特征提取网络。
表2 特征检测网络实验对比Table 2 Experimental comparison of feature detection network
1.3.2 改进的RP N
在Faster RCNN 模型中RPN 是非常重要的一部分,其中的锚点数量是RPN 网络中的一个极其重要的超参数,它的数量的多少会直接影响后面候选区域的生成。原始Faster RCNN 使用9 种不同种类的锚点,每个滑动窗口会产生9 个不同尺度、不同长宽比的候选区域,最后对整张图片产生的候选区域使用非极大值抑制算法剔除多余的候选区域。原始模型默认设置的锚点对有些小目标无法实现召回,所以本文在原始模型默认的基础上,添加两组32×32 pixel 和64×64 pixel 的锚点,这样可使所用网络更好地检测较小目标,并在训练过程中将锚点的长宽比设置为1∶1、1∶1.5、3∶1,尺度大小分别为32×32 pixel、64×64 pixel、128×128 pixel、256×256 pixel、512×512 pixel,这样RPN 网络一共可以得到15 种不同尺度和纵横比的锚点样式。实验证明本文增加的32×32 pixel 和64×64 pixel 尺度和重新设置的纵横比可以更加准确地检测到较小目标。
1.3.3 非极大值抑制算法的改进
非极大值抑制(NMS)是目标检测算法中非常重要的部分,其目的是消除多余的重复框,找到最佳目标位置。NMS 首先把所有的检测框按照得分进行排序并找到最大得分的检测框,然后计算所有检测框与最大得分检测框的重叠度并直接删除与该框重叠度大于阈值的框,接着再选择一个没有和得分最高框重叠的且未被处理的框,重复上述操作。传统NMS 操作表达式如下式所示:
式中:Si为第i个检测框的得分;M为得分最大的候选框;bi为第i个待检测框;Nt为设定的阈值;IOU为bi和M的交并比。
NMS 的最大缺点是,当检测框bi和置信度最大框M的交并比大于设定阈值(本文阈值的设定根据原有模型来设定)时,检测框将被直接删除。如图5(a)所示,当图中2 个杯子出现遮挡时,NMS只会保留得分最高的右侧红色候选框,只能检测到黑色杯子,导致银色杯子漏检。为了解决目标漏检问题,本文使用Soft-NMS 算法代替NMS 算法。Soft-NMS 算法并不会直接删除得分较低的临近候选框,而是根据得分递归的结果重新进行评分,当同类别的检测目标发生重叠时就不会对预测框进行误删,如图5(b)所示。
图5 NMS 算法和Soft-NMS 对比图Fig.5 Comparison of NMS algorithm and Soft-NMS algorithm
Soft-NMS 分数重置函数表示如下:
最终改进后模型结构图如图6所示。
图6 改进后模型结构图Fig.6 Structure diagram of improved model
1.3.4 多尺度训练策略
在实际场景当中,所检测工件大小不一,尺度上存在差异,原始Faster RCNN 模型通常会对所有训练的数据集图片采用单一恒定的尺寸,在这种情况下对图片中较小的工件目标会出现漏检,从而导致训练效果不佳。为了让网络模型在测试时降低漏检率,提高测试精度,本文采用多尺度方式训练,设置400 pixel、600 pixel、800 pixel 3 种尺度。在训练时,每张数据集图片会随机分配到1 种尺度以输入训练网络,从而使训练得到模型的特征范围更广。实验表明,使用多尺度训练可以有效降低工件漏检率,提高工件检测的准确率,让训练得到的模型具有一定的鲁棒性。
2 数据集的制作和标注
由于没有发现关于装配零件的公开数据集,所以本文通过网络搜集和自行拍摄采集图像等方式共获得图像1 400 张。为了进一步扩大数据集,提高训练精度,将收集到的1 400 张图像利用反转、平移、拉伸等方式来实现数据集的扩充,然后对经过扩充后的数据集进行筛选,去除一些图像质量极差的图片,最终经整理得到3 400 张。
在准备好数据集后,对数据集中需要识别的目标进行标注,本文采用labeling 软件对零件图像进行手动标注,利用软件自带的矩形标注框框出所需要识别的零件,并对框选的零件进行命名。需要标注的零件有3 类:螺丝(ls)、螺母(lm)、垫片(dp)。labeling 软件标注图如图7(a)、7(b)、7(c)、7(d)所示。
图7 数据集标注图Fig.7 Annotation diagram of data set
3 实验及结果分析
本文实验的硬件设备和参数设置如下:Windows 1 064 位操作系统,16 G 运行内存,处理器为Intel(R)Core(TM)i7-6700HQ 2.60 GHz,GPU 为RTX2070,实验使用的深度学习框架为Tensorflow1.4,使用Python 编程语言版本为Python3.6,拍摄数据集的相机为尼康D7500,镜头为AF-S DX 尼克尔18 mm~200 mmf/3.5-5.6G ED VR II 镜头。实验使用的数据集为网上收集和自己拍摄所获得,整个数据集一共有3 400 张图片,选择其中的3 000 张图片作为训练集,剩下的400 张图片作为验证集。经过对不同工件的手动标注后,将所有数据集转换为VOC2007的格式进行训练。
为了评价本文改进的Faster RCNN 模型在工件检测中的准确度和有效性,采用精确度(precision)和召回率(recall)作为评价指标,如下式所示:
式中:TP 为网络中预测为正值的正样本;FP 为网络中预测为负值的正样本;FN 为网络中预测为负值的负样本[16]。
实验1,为了检验ResNet101 特征提取网络的检测效果,本部分实验设计了4 种特征网络的实验作为对比,分别使用VGG16、ZF-NET、ResNet50、ResNet101 作为模型的特征提取网络。为了保持实验的公平性,本部分实验除了使用的特征网络不同之外,其他参数都保持一致,实验结果如表3所示。
表3 不同特征网络对比实验Table 3 Experimental comparison of networks with different characteristics
实验2,进一步验证本文模型改进的有效性,使用不同策略对网络模型进行训练和测试,实验结果如表4所示。策略1 为原始Faster RCNN 模型,对本文工件检测的准确率为90.5%,对比策略2 可发现,ResNet101 中加入的残差网络解决了网络过深带来的模型退化问题,检测准确度提高了1.1%;通过观察策略2 到策略5 可知,当使用单个改进策略测试时,单个策略改进后的模型召回率和准确率提升较小;当使用全部改进策略之后,最终的检测模型准确率和召回率分别为96.3%和92.8%,较最初模型提高了5.8%和4.6%。
表4 不同策略的模型测试效果Table 4 Model test results of different strategies
实验3,把SSD、YOLOv3、Faster RCNN 和本文改进的方法进行实验对比,实验结果如表5所示。从表5 可以发现,原始Faster RCNN 和YOLOv3识别的准确率和召回率的结果比较相近,改进后Faster RCNN 较原始模型在准确率和召回率上分别提高了4.6%和3.9%,YOLOv3 虽然在检测时间上优于改进后的模型,但准确度没有改进后的模型高。由于本文方法增加了两组新的锚点,所以识别时间较原来Faster RCNN 检测时间略有增加。
表5 不同模型实验结果Table 5 Experimental results of different models
最后,使用本文改进的模型对部分工件图像进行检测,这些图像中存在着零件之间相互遮挡、零件姿态不同、受光线影响、较小零件的检测等情况,测试结果如图8所示。由图8(a)可以发现,即使零件之间存在堆叠和遮挡的情况,本文的模型也可以很好地检测识别出来,且有较高的准确率;由图8(b)可以看出,当零件处于不同姿态时(平放和站立),本文模型有很好的检测结果,当生产流水线中遇到摆放不齐的零件时,此算法能够得到很好的应用;由图8(c)可以发现,当零件遇到强光照射并且存在水滴干扰时,改进的模型仍然可以很好地适应外部干扰并进行检测识别;由图8(d)可以看出,对于较小尺寸的零件(本文选用直径5 mm 的螺母),本文的改进模型也可以很好地检测出来,有良好的识别效果。
图8 测试结果图Fig.8 Diagram of test results
4 结论
针对工业生产中装配零件的检测识别准确率的问题,本文提出了一种改进的Faster RCNN的零件识别模型,首先利用ResNet101 作为特征提取网络代替原有的VGG16 特征提取网络,增加不同尺度的锚点,然后使用Soft-NMS 代替原有模型中的NMS 算法,最后使用多尺度策略训练模型,得到本文改进后的Faster RCNN 模型。通过实验测试说明,改进后的模型有效解决了传统检测方法因受到零件之间相互遮挡和不同姿态、光线照射、小目标等干扰而检测识别鲁棒性差的问题,达到了更好的识别效果,较原有模型检测精度更高。本文所提出的改进的Faster RCNN 零件识别模型,具有较高的准确率,可以对装配零件进行良好的识别和分类,为自动化生产流水线中零件的自动识别、智能分拣等环节提供了技术支持。接下来将进一步优化模型结构以便获得更加精确的零件识别率,同时适度减小网络深度,缩短检测时间,提高检测速率。