改进卷积神经网络算法在机械零件实时识别与定位中的应用

2019-01-11 06:00周庆华蒋华胜林思宇
智能计算机与应用 2019年1期
关键词:尺度聚类卷积

王 乐, 周庆华, 王 磊, 蒋华胜, 林思宇

(长沙理工大学 物理与电子科学学院, 长沙 410114)

0 引 言

工业生产中机械零件种类繁多、产量大,人工分拣不仅影响工作效率,而且带来不可靠的因素,直接影响产品质量与成本。对于一些危险场合,人工分拣更是无法完成的。因此工件自动化分拣是自动化生产系统中的重要环节,可以有效地解决工业生产中传送带上零件集中混型输送和识别[1],而提高分拣精度、减少分拣耗时是提升生产效率的重要途径。传统自动化生产线中的分拣技术主要应用各种传感器的组合,对工件的材质、颜色、形状等进行检测[2],这些方法算法简单、对处理器要求不高,但对工件的摆放位置具有严格的要求,灵活性差,检测速度慢,有时对工件进行接触,造成一定损伤。

随着现代信息技术的发展,机器视觉技术因其高精度、速度快、无接触、无损检的特点逐渐取代传统自动化分类和定位技术。机器视觉技术一般通过摄像头采集图像信息,然后进行二值化、边缘提取、SIFT、SURF 等操作提取特征信息,最后通过支持向量机、k近邻等分类器对目标物体进行分类。但此类方法很大程度上依赖于特定的检测条件,对于不同的目标或者同一目标的不同形态,需要设计不同的方法去提取特征,算法的最终识别效果也受制于设计者的经验,普适性差,很难满足复杂场景的要求。

卷积神经网络(convolutional neural network,CNN)将人工神经网络和卷积运算相结合,通过逐层提取,获得了丰富的特征信息,并对一定程度的扭曲和形变有良好的鲁棒性[3]。同时,卷积神经网络采用局部感受野、稀疏连接和权值共享,极大减少了神经网络的训练参数,降低了网络运算的复杂度。因此,本文将卷积神经网络算法用于机械零件的定位与分类中。2012年Hinton等人[4]提出了AlexNet卷积神经网络,在著名的ImageNet图像分类问题上取得了最好成果,将top-5的错误率下降了15%。2014年Christian Szegedy[5]等人提出的Inception结构,进一步将top-5的错误率降到了6.67%,获得了大型机器视觉挑战赛(ILSVR)的冠军。2014 年Ross Girshick[6]等人提出了 R-CNN算法,其主要分为产生候选区域、提取特征信息和进行图像分类3个阶段。但由于这3个阶段彼此分离,导致检测过程复杂,花费时间较长,且难以优化。2015 年 Ross Girshick 和 Shaoqing Ren 又相继提出了 Fast R-CNN[7]和其改进版 Faster R-CNN[8]。Faster R-CNN在一定程度上降低了检测的复杂度,但检测速度仍然较慢, 难以满足实际工业中实时性的要求。

2016年Joseph Redmon[9]等人提出了YOLO目标检测算法,这是一种全新的端到端(End-to-End)的检测算法,使用单一的卷积神经网络在检测图像上同时完成了边界框和类别概率预测。同年在 YOLO 的基础上,Joseph Redmon[10]又提出了 YOLO v2 。虽然YOLO v2相比R-CNN系列检测算法在检测速度上有了很大的提升,但检测准确率并不是很高,尤其是对于复杂场景和小目标物体的检测。

本文以螺母和垫片2种目标物体为检测对象,以工业传送带为研究场景。同时,考虑到传送带上干扰物的存在,在YOLO v2检测算法的基础上,采用多尺度训练、网络预训练和k-means维度聚类等优化方法,提出了用于机械零件实时识别与定位的改进卷积神经网络算法。改进算法能够实现运动传送带上目标物体的识别和定位,检测准确率达到了85%以上,检测速度达到了实时性的要求,为零件实时分拣提供了基础。

1 基本理论

1.1 卷积神经网络的特点

卷积神经网络是一种前向传播和反向传播相结合的人工神经网络,是一种典型的深度学习算法,在传统的神经网络的基础上增加了卷积和池化操作。卷积神经网络采用局部感知、参数共享、下采样等技术减少了网络参数的数量。在保证提取足够特征信息的同时,降低了计算的复杂度,提高了网络识别的效率[11]。

1.2 CNN模型

LeNet-5[12]是卷积神经网络的经典网络,最早被用于手写数字的识别,取得了很好的效果。其总共有7层(不包含输入层),由2个卷积层、2个池化层、2个完全连接层和1个输出层组成。局部感知和参数共享理论被应用在卷积层,下采样操作用在池化层。这样就构成了完整的卷积神经网络系统。

图1 为LeNet-5网络结构图,输入图片大小为32*32,采用5*5的卷积核进行卷积操作,步长为1,即每次滑动窗口的大小为1个像素,得到28*28的特征图。下采样层以2*2的卷积核,每次滑动2个像素大小进行平均池化操作,得到14*14特征图。完全连接层将所有结点汇总起来,传给输出层。输出层具有10个结点,代表0到9数字的输出概率。

图1 LeNet-5模型的结构

1.3 YOLO算法

YOLO算法属于CNN,拥有24个卷积层和2个完全连接层,其中大量运用了卷积的级联结构,卷积核主要包括 3*3 和 1*1两种大小的卷积核。YOLO将整张图片用于训练,不需要任何的裁剪和预处理操作。其将整个目标的检测作为回归问题来处理,训练出的网络模型能够接受原始的像素信息,在输出端直接输出目标物体的边界框和类别信息,是一个端到端的检测模型。在检测过程中,将整个图片分成S*S的网格,如果有目标物体的中心落在某个单元格里,这个单元格负责检测该物体。每个单元格需要预测B个边界框,对于每个边界框需要预测其置信度。计算公式如下:

(1)

(2)

可以看到,损失函数主要包括5部分。其中Ii表示是否有物体中心落入网格i中,若有Ii值为1,反之为0。Iij表示判断网格i中第j个检测边界是否负责该物体,若是则为1,反之为0。

YOLO虽然速度快,但有以下3个缺点:

(1)与目前流行的R-CNN系列目标识别算法相比,精度并不是很高。

(2)与基于候选区域的算法相比,虽然对于背景的误判较小,但是对于目标的定位并不是很准确。

(3)由于YOLO算法规定一个网格中只能预测一类物体,因此YOLO对于粘连物体和小目标物体的识别精度不高。

针对以上缺点,YOLO v2在YOLO的基础上进行改进。去掉了YOLO网络的完全连接层和最后一个最大池化层,使用每个anchor box 来预测物体的种类,并且将网络的输入调整到了416*416,使得网络在经过多次卷积和下采样操作后,得到的特征图为13*13,有利于中心点的计算。YOLO v2在每个卷积层的后面都加入了批量归一化操作[13],这样在去掉dropout层后,网络也不会过拟合,同时也提高了网络预测的精度。针对YOLO对于小物体预测精度低的问题,YOLO v2借鉴残差网络,引入了传递层,即将上一层26*26的特征图直接与13*13的特征图相连,使得网络能够获取更加丰富的特征信息。

在YOLO v2之前,大部分的网络结构都是基于VGG-16[14],但VGG-16网络结构复杂、参数较多、计算量大。Darknet-19作为YOLO v2的基本网络结构,参考了YOLO和SSD[15]的网络结构,兼顾了精度和复杂度,使得网络在具有较高精度的同时,具有较少的参数。Darknet-19具有19个卷积层和5个最大池化层,在ImageNet数据集上可以达到72.9%的top-1精度和91.2%的top-5精度。网络中以3*3的卷积核为主,大量使用了卷积的级联,并借鉴了Network in network[16]的思想,在3*3的卷积之间均采用了1*1的卷积核,在减少网络训练参数,降级计算成本的同时增加了网络的深度。

2 用于机械零件识别和定位的改进算法

考虑到在实际分拣中可能存在各种干扰物,采用通用的目标识别与定位卷积神经网络算法难以兼顾精度和速度的要求。因此,本文以Darknet-19作为网络训练框架,并从网络预训练、多尺度训练、k-means维度聚类3个方面进行优化,以达到复杂场景中,传送带上目标物体实时识别与定位的目的。目标检测算法的流程如图2所示。由于标签数据集稀少,首先在ImageNet数据集上进行网络预训练,然后在标签数据集上进行再训练。通过前向传播获取网络输出,依靠反向传播更新参数。在目标检测的过程中,加载训练好的网络模型获取特征图,使用k-means维度聚类优化候选框,得到2组候选框的尺寸,然后在特征图中产生边界框。对于一个目标物体可能产生多个边界框,需要通过非极大值抑制来留下置信分数最高的边界框,实现对物体的精确定位,对于每个边界框预测出的多个物体的类别概率,也通过非极大值抑制留下类别分数最高的预测,实现对物体的分类。

图2 目标检测算法的流程

2.1 网络预训练

由于目标物体的标签数据较少,且往往分辨率较低,直接采用制作的标签数据集进行网络的训练,往往精度不高,定位较差。因此,在实际的训练中采用了预训练的方法,提高了物体识别的精度,同时降低网络训练的时间。本文网络的训练主要分为以下2步:

(1)ImageNet 数据集有1 400多万幅图片,有着1 000个目标类别,图像清晰,分辨率较高,且多数的图片具有明确的类别标注信息。因此,可以在ImageNet 1 000类的数据集上进行预训练。由于手工收集的标签数据集只有2个类别,因此,将预训练后的网络最后一层由1 000个类别输出调整为3个类别输出(包括2个类别和背景),使网络获得对目标物体的普遍认识,达到对网络权重参数的初始化操作。

(2)经过预训练的模型已经收敛到局部最优解,然后采用收集到的1 000个手工标签的螺母和垫片数据集对网络进行再训练。在此以Darknet-19作为网络训练框架,为了适应本文的检测任务去掉了最后一个卷积层,增加了3个3*3的卷积层,卷积核的个数为1 024,同时,添加了一个1*1的卷积层,使卷积层的输出数量与检测任务的输出一致。在每轮模型训练开始之前将训练数据模型集随机打乱,确保模型不同轮数相同批次状态下接触到不同数据,这样的操作可以加快网络的收敛速度。在模型训练时,将初始的学习率设为0.000 1,在训练10轮后将学习率提高到0.001,适当的加快模型的训练次数,当训练次数达到20 000时将学习率降低为0.000 1,在5 000时将学习率降为0.000 01,避免因为较大的学习率使模型跳过最优解。在迭代训练的过程中将批处理样本设置为32,通过前向传播预测输出,通过反向传播和随机梯度下降(SGD)更新参数。

2.2 多尺度训练

为了使网络对不同输入尺寸的图片具有一定的鲁棒性,在训练的过程中采用5种单一尺度和多尺度训练的方法。对于单一尺度的训练,进行了5组实验,5组实验的输入图片尺寸分别为:288*288,352*352,416*416,480*480,544*544。对于多尺度的训练方法,在训练的过程中每隔10轮,则随机的改变输入图片的尺寸。因为模型的下采样因子为32,则多尺度输入图片必须是32的倍数,其计算公式为:

s=32(7+a)

(3)

其中,s为输入图片的尺寸,a为在训练过程中随机产生的0到12之间的整数。

2.3 用k-means维度聚类法优化候选框

为了提高网络的召回率,YOLO v2的作者在文中使用了5种不同尺寸的候选框,但是对于特定的检测任务效果并不理想[18]。本文针对螺母和垫片的检测任务,通过k-means 对数据集中手工标记的目标框做聚类分析,找到目标框的统计规律。首先,通过肘部法则来估计聚类的个数。随着k值的增大,平均畸变程度会降低,每个类中包含的样本数会减少,样本离其聚类中心点会更近,但随着k值继续增大,平均畸变的改善效果会逐渐降低。因此,取平均畸变改善效果最好的位置所对应的k值为聚类的个数。然后,以聚类个数k为候选框的个数,对标签数据集中目标物体归一化后的宽和高进行聚类分析。图3显示了k值对平均畸变的影响。可以看出,当k=2时,平均畸变的改善效果下降幅度最大,平均畸变的改善效果最好,此时标签数据集的聚类效果达到最好,其空间聚类效果如图4所示,其中绿色的正方形代表各聚类中心点,候选框的尺寸为2个颜色区域的聚类中心点所对应的目标边界框的宽和高。由此得到2组候选框的尺寸为[4.54,4.43],[5.27,5.41]。

图3 k值对平均畸变的影响

图4 k=2时的聚类效果

3 实验与结果分析

3.1 实验配置与训练结果

本文以螺母和垫片2种物体为识别与定位的对象,以工业传送带为场景,同时考虑到了传送带上干扰物的存在。通过传送带上的摄像头,实时截取1 000张分辨率为640*480的图片,其中100张图片作为验证数据集,900张图片作为训练数据集。通过LabelImg软件,手动标记出图像中螺母和垫片的位置,并通过旋转、缩放、饱和度和曝光度等方式对数据进行扩充。

本文在配置有2.60 Ghz双核Intel Core CPU 和 Ubuntu16.04系统下进行网络的训练和测试,显卡型号是 NVIDIA -GTX 1050 Ti 独立显卡,开发包CUDA 8.0。开发环境为vs2013和opencv3.1.0。开发框架为Darknet,训练过程中的部分网络参数的设置见表1。

表1 网络训练参数

图5显示了一个检测结果的例子。其中,nut代表目标物体螺母,pad代表目标物体垫片,可以看到运用训练出来的模型能够对复杂场景中的目标物体进行正确的分类和定位。验证集中平均准确率达到了0.858,检测速度可以达到每秒23帧。

图5 多目标、复杂场景检测结果

3.2 改进算法的效果

为了测试本文算法的有效性,首先分别对网络预训练、多尺度训练、k-means维度聚类优化候选框等优化方法的效果进行测试,然后将本文算法与Faster R-CNN及YOLO v2算法的准确率和检测速度进行了对比。表2给出了网络预训练与直接采用标签数据集训练的结果对比,参数AP(Average Precision)表示平均准确率。可以看到本文的检测精测与直接使用标签数据集的检测精度相比有了一定的提高。图6是采用网络预训练和直接训练时,迭代次数与损失函数的关系。(a)为直接训练时,损失函数与迭代次数的关系,(b)为采用网络预训练时,迭代次数与损失函数的关系。可以看到当迭代次数达到40 000次时,采用直接训练的方法,损失函数收敛到2.0,而采用网络预训练的方法,损失函数收敛到1.5左右。因此,采用预训练的算法能够使模型更快更好地收敛。训练时使用的输入图片大小为416*416,批处理尺寸为16。

表2网络预训练与直接训练结果对比

Tab.2Thecomparisonbetweennetworkpre-traininganddirecttrainingresults

训练方法验证集AP螺母垫片直接训练的方法0.7960.790网络预训练的方法0.8250.829

(a)直接训练

(b)网络预训

图6采用网络预训练和直接训练时,迭代次数与损失函数的关系

Fig.6Therelationshipbetweentheiterationsandthelossfunctionduringpre-traininganddirecttraining

在对多尺度训练效果测试实验中,采用了288*288、352*352、416*416、480*480、544*544这5种单一尺寸和多尺度的训练方式。在多尺度的训练过程中,每隔10轮就改变输入尺寸的大小。使用验证集对训练好的模型进行评估,表3给出了验证集中每类物体的检测时间和精度,参数AP(Average Precision)表示平均准确率。可以看到,随着输入图片尺寸的增加,检测时间增加,同时精度提高。对于使用多尺度训练的网络,采用416*416的输入图片进行测试,可以看到相比其它输入图片的尺寸,多尺度训练的图片在检测时间和检测精度上达到了较好的平衡。因此,采用多尺度训练的网络对不同输入尺寸的图片具有较强的鲁棒性。

表3多尺度与单一尺度训练结果对比

Tab.3Thecomparisonofmulti-scaleandsingle-scaletrainingresults

输入尺寸检测时间/s验证集AP螺母垫片288×880.0220.7950.798352×3520.0260.8120.816416×4160.0370.8250.829480×4800.0420.8360.836544×5440.0520.8380.839多尺度0.0350.8320.837

在对k-means维度聚类优化候选框效果的测试实验中,使用自采集的标签数据集,对目标边界框的宽和高进行聚类信息,得到2组候选框的尺寸为[4.54,4.43],[5.27,5.41]。表4给出了YOLO v2和维度聚类方法的结果对比,本文的维度聚类方法在候选框数量较少的情况下保证了较高的平均重叠率(IOU)和检测精度,同时也节省了计算资源。训练时使用的输入图片大小为416*416,批处理尺寸为16。

表4k-means维度聚类与YOLOv2结果对比

Tab.4Thecomparisonofk-meansdimensionclusteringandYOLOv2results

候选框产生的方法候选框的数量平均重叠(IOU)螺母垫片验证集AP螺母垫片YOLO v250.6570.6280.8250.829维度聚类20.6610.6430.8270.832

最后,将本文提出的改进卷积神经网络算法与Faster R-CNN 和YOLO v2算法进行对比,结果见表5。Faster R-CNN中采用了ZP网络框架训练的模型检测准确率高于本文的检测算法,但在本文硬件配置下只达到了每秒7帧的检测速度,很难满足复杂场景中实时性要求。同时,将本文的算法与YOLO v2算法进行对比,本文的算法在检测准确率和速度上都有了提升,基本能够满足复杂场景中实际分拣的需求。

表5本文算法与通用目标检测算法的对比

Tab.5Thecomparisonbetweentheproposedalgorithmanduniversaltargetdetectionalgorithms

检测算法验证集AP螺母垫片检测速度(FPS)Faster R-CNN ZF0.8880.9747YOLO v20.8250.82920本文算法0.8580.85823

4 结束语

本文以YOLO v2卷积神经网络算法为基础,通过多尺度训练、网络预训练、k-means维度聚类以及批处理尺寸设置对算法进行改进。通过多尺度训练,增强了网络对输入图片尺寸的鲁棒性;采用网络预训练在标签数据较少的、图像分辨率不高的情况下提高了物体识别的准确率;k-means维度聚类算法对自己的标签数据集中目标边界框的宽和高进行聚类分析,得到候选边界框信息,提高了物体定位的准确度;通过设置适当的批处理大小,在保证实时性分拣的同时,提高物体识别的准确度,减少网络训练的时间和GPU计算的负担。本文算法在NVIDIA -GTX 1050 Ti 的配置下,达到0.858的检测准确率和每秒23帧的检测速度。在识别准确率和速度上达到了很好的平衡,为零件实时分拣提供了基础。

猜你喜欢
尺度聚类卷积
基于全卷积神经网络的猪背膘厚快速准确测定
一种傅里叶域海量数据高速谱聚类方法
环境史衰败论叙事的正误及其评判尺度
基于知识图谱的k-modes文本聚类研究
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
一种改进K-means聚类的近邻传播最大最小距离算法
基于模糊聚类和支持向量回归的成绩预测
以长时间尺度看世界