陈文韵,王学影,胡晓峰,郭 斌
(1.中国计量大学计量测试工程学院,浙江 杭州 310018; 2.杭州沃镭智能科技股份有限公司,浙江 杭州 310018)
随着国家经济与科技的不断发展,以工业机器人与机器视觉为基础的零件自动化装配在工业生产得到广泛应用。智能生产线在生产和装配的过程中,通过机器视觉和多种传感器,根据图像所反映的不同特征信息[1],支持多种相似产品的混线生产和装配,引导机器人抓取,并能够灵活调整工艺,适应多品种生产模式。对于人工操作的工位,也能够给予智能提示。智能生产线的未来发展将实现数字化、网络化、柔性化以及高准确度、高速度、高效率。在市场的不断需求下,生产线规模也向着多品种柔性的方向和信息密集的方向发展。
在机器视觉对图像的识别领域内,卷积神经网络拥有着巨大的优势,是第一个真正意义上的多层结构学习算法[2],其利用卷积核来提取图片特征,大量卷积运算可以提取到深层次的图像特征[3]。为使得网络模型获取更高的准确率,通常通过优化网络深度、网络宽度和图像分辨率的方法来实现,如ResNet[4]、DenseNet[5]、Faster R-CNN[6]等,但这些网络模型常常只是优化三个维度的其中一个维度,且需频繁地手动进行参数的调整,仍旧会产生次优的准确率与效率,检测速度也较为缓慢。为了缩短检测时间,加快检测速率,后来逐步发展出onestage的目标检测算法,从RoI的提取到识别、检测均包含在一个框架下,实现了端到端,该类算法虽实现检测速度的加快,但通常伴随着检测准确率的降低。Google团队通过复合比较网络深度、网络宽度、图像分辨率对准确率、参数量和浮点运算量的影响,首先提出了EfficientNet网络模型[7],继而在其基础上又提出了基于加权双向特征的EfficientDet网络模型[8],获得了较高的准确率与较快的检测速度。由此,针对ECU零件,设计了一套基于EfficientDet的分类检测系统,并在BiFPN的基础上增加跨级数据流,实现对多类别零件的检测和分类。
针对传统目标检测算法,本文提出了基于EfficientDet目标检测算法的ECU分类检测方法,其流程图如图1所示。采用电子控制单元ECU作为检测对象,将采集的ECU样本图片经图像预处理后,按4∶1的比例分为训练集和测试集,其中标注后的训练集作为EfficientDet目标检测算法的输入,通过梯度下降法进行迭代,进而优化网络参数,帮助网络更快的收敛,模型训练完毕后通过测试集验证其对ECU零件检测的准确率,并对网络进行评估。工业生产线要求零件识别的平均准确率达到90%以上,若网络模型性能达到实际要求,则将网络投入实际的ECU分类检测中,反之则继续调整网络参数并重新训练网络。
图1 EfficientDet的ECU识别检测方法流程图
EfficientDet采用EfficientNet作为主干特征提取网络,其结构如图2所示,其提出了一种新型的加权双向特征提取网络BiFPN,可实现简单快速的多尺度特征融合,并结合了一种复合尺度扩张方法,该方法可以统一地对主干特征网络和预测网络的分辨率、深度和宽度进行缩放。主干特征提取网络将输入的图片不断进行下采样提取特征得到P1~P7,由于P1、P2只进行了浅层的下采样,不具有较高的语义信息,因此不将P1、P2输入加强特征提取网络。下采样获得的 P3、P4、P5、P6、P7称之为有效特征层,将这5个有效的特征层传入加强特征提取网络进行进一步的特征提取,通过BiFPN的重复运算,将获得的5个具有较高的语义信息的有效特征层传输入分类预测和回归预测,进行特征整理获得预测结果。
模型设计上,EfficientDet与YOLO[9]等主流的单级检测网络模型近似,仍旧运用的是“特征提取、多尺度特征融合、分类/回归预测”的框架,其包含的D0~D7八个模型,随着模型等级的提升,其参数越多,准确率越高,计算量越大,要求计算机性能越高,计算速度越慢。考虑到现实环境中所需ECU检测准确率、效率和计算机系统的性能,选择EfficientDet-D1进行对ECU的分类检测。
与传统的任意缩放网络深度、宽度和分辨率三个因子不同,EfficientNet使用一组固定的缩放系数均匀地对网络的宽度、深度和分辨率进行统一缩放,实现了利用简单高效的复合系数完成了对三个参数所有维度的统一缩放,如图3所示。内部采用MBConv卷积块[10]堆叠而成,其结构如图4所示,对输入的特征层进行1× 1的卷积并升维后,进行深度可分离卷积,对通道施加注意力机制(SENet),其结构如图5所示,判断更加关注哪个通道内容,完成注意力机制的施加后,利用1× 1的卷积进行降维并与残差进行组合输出结果。为了降低过拟合风险,在网络中加入Drop Connect算法,将隐含层节点中与其相连的输入权值以一定概率清零,起到正则化效果,提高网络泛化能力。
图3 EfficientNet模型的调参示意图
图4 MBConv卷积块
图5 注意力机制
缩放网络深度是许多卷积神经网络最常用的优化方法之一,虽然更深层的网络可取得更为丰富、更为复杂的特征,但是由于梯度消失的原因,更深层的网络也更难训练;缩放网络宽度往往运用于小型的模型,更广泛的网络往往能够取得更细微的特征,但是很宽却很浅的网络往往难以获得更高层的特征;对于使用更高分辨率的输入图像,卷积神经网络能够获得潜在的细小特征,但对于极高的分辨率,其准确率又有所减少。因此三者需要一个平衡来使模型达到最优状态。EfficientNet提出了一种新的复合标度的方法,利用复合系数对网络的深度、宽度和分辨率进行缩放,可由公式(1)表示:
式中:d,w,r——网络深度、宽度、分辨率的系数;
α,β,γ——对应维度的资源分配参数;
φ——由用户指定的资源控制系数。
α,β,γ 则能够决定额外资源到网络的宽度、深度和分辨率上的分配。在实际的深度学习的应用中,通过不停地修改网络深度、宽度、图像分辨率的系数,EfficientNet网络模型将逐渐达到最优的准确率[11]。
较早的检测器只是简单的使用骨干网络提取的金字塔特征层甚至只在最后一层[12]进行类别和位置预测。FPN[13]首次通过使用自上而下的途径来组合多尺度特征,如图6(a)。PANet[14]在其基础上,额外增加了一条自底向上的路径来进一步融合特征,如图6(b)。随着自动机器学习的发展,NAS-FPN使用了神经架构搜索自动设计了特征网络拓扑结构,如图6(c)。虽然 NAS-FPN拥有优异性能,但其消耗大量算力,且生成的FPN网络不规律。
图6 特征融合网络设计
EfficientDet使用一种新型高效的双向特征提取网络BiFPN,如图7(a),通过将骨干网络EfficientNet结构中3~7层的输出特征不断得做自顶向下和自底向上的特征融合,使用以下技巧来提高性能:1)拥有自顶向下以及自底向上这两条路径的融合特征;2)忽略只有一个输入的节点并加入跳跃连接以轻量化网络;3)可学习权重自动加权融合过程的输入特征。为了更充分地利用不同层级的语义和位置信息,在 BiFPN的设计基础上增加数据流,将下层节点特征融合到上层节点中共同学习[15],如图7(b),增加了跨级的数据流,提升了网络性能。
图7 BiFPN的改进过程图
由于在本Efficientdet的训练过程中,正负样本极不平衡,如图8所示,即存在着对应真实框的先验框可能只有若干个,但不存在对应真实框的负样本却有上千个甚至上万个的情况,导致负样本的loss值极大。
图8 正负样本数
为了解决这个问题,则引入Focal Loss来平衡正负样本。实验中将EfficientDet网络模型的损失函数的计算分成两个部分,一为获取所有正标签的框的预测结果的回归损失Smooth L1 Loss,如式(2), 可更好地避免因出现较大的错误偏移去主导损失,最终造成梯度爆炸的情况;二为取得所有未被忽略的种类的预测结果的交叉熵分类损失Focal Loss,可控制正负样本和易难分类样本的权重。
式中:v=(vx,vy,vw,vh)——真实框的框坐标;
该实验应用在ECU混线自动分拣上料系统上,图像的采集由REALSENSE D435i相机完成,通过RGB摄像头拍照获取各类ECU原始图像。为防止所建网络出现过拟合现象,经采集得到2000张ECU原始图像,对原始图像进行标注,再通过数据增强策略,将原始图像通过翻转图像、改变明暗、改变色域、增加噪声等方式进行样本的扩增,增加样本的同时减小标注成本,数据增强过程中,使用padding的方式,使样本图片不失真并保持原本尺寸,最终共获得10 000张图像样本,对样本进行归一化处理,按照4∶1的比例分为训练集、测试集来建立和验证模型。
在图像识别任务中,大部分数据存在相关性,通过迁移学习可将已学到的模型参数分享给新模型,从而加快并优化模型的学习效率[16]。在训练中采用预训练模型,对EfficientDet-D1模型进行迁移学习,共训练200个epoch,并对EfficientDet-D1得到的权重参数进行部分冻结处理,在前100个epoch的训练过程中不对其进行计算,设置学习率为0.001,batch size为4,大大缩减模型的训练时间,后100个epoch对冻结部分进行解冻,设置学习率为 0.000 1,batch size为 2。
标注对建立深度学习网络至关重要,样本标注不准确很容易导致在后期训练深度学习网络时模型不收敛的情况。针对该实验样本,采用labelimg软件进行标注,如图9,标注后自动保存为xml文件生成VOC数据集,将生成的VOC数据集通过数据增强得到的新数据集的路径添加至代码中进行改进的EfficientDet-D1网络的训练。
图9 样本标记示意图
本训练搭建深度学习网络的主要环境如下:处理器为Intel Core i7-7700,16G内存,GPU为GTX 1070,操作系统为 Windows10,依赖 python3.7、tensorflow-gpu2.1.0、CUDA10.1、cuDNNv7.6。为了验证EfficientDet网络性能,将在相同实验条件下,采用多种网络模型对同一数据集进行训练并将实验结果进行对比。
绘制出网络模型随训练次数增加而变化的损失函数图和精确率(Accuracy)曲线图,如图10所示。从图10中可看出,EfficientDet网络的损失函数震荡幅度小,且能迅速收敛,随着迭代次数的增加,网络模型的损失值呈不断减小的趋势,在epoch为100处对冻结部分的权重参数解冻,解冻时损失函数值有少许增大,但随着迭代次数的进一步增加,损失函数值逐渐减小趋于稳定,最终稳定在0.025左右;同时,随着迭代次数的增加,精确率在前50个epoch快速上升,而后减缓上升趋势并逐渐趋于稳定。
图10 改进的EfficientDet-D1网络损失函数和精确率图
图11(a),准确率(Precision)表示在预测的样本中,实际正样本数在所有正样本数中所占的比例,最终得到改进的EfficientDet-D1网络的准确率为93.4%;图11(b),召回率(Recall)表示在预测的样本中,实际正样本数在所有预测样本中占有的比例,最终得到改进的EfficientDet-D1网络的召回率为90.8%。
图11 改进的EfficientDet-D1准确率和召回率图
分别比较各网络的检测性能,如表1所示。EfficientDet网络,训练耗时较短,且不需要区域候选网络,其采用的新型加权双向特征提取网络结合复合尺度扩张方法,更简单快速地实现多尺度特征融合,在检测速度和准确率上明显优于Mask RCNN、Faster R-CNN网络。改进的EfficientDet-D1网络的参数量大于EfficientDet-D0,其检测时间稍长于EfficientDet-D0,但语义信息更丰富,特征的提取、学习更深入,其准确率明显高于EfficientDet-D0。在实际生产应用时,由于现场环境存在光照不匀、检测物体重叠等不确定因素,改进的EfficientDet-D1网络鲁棒性更强,更能适应环境以准确地检测出物体种类并快速定位,减小生产线装配压力,其实际应用中效率高于EfficientDet-D0网络。在ECU装配生产线中选用改进的EfficientDet-D1做为检测网络更符合要求。
表1 网络模型性能对比
改进的EfficientDet-D1网络检测结果如图12所示。将两种类型的ECU外壳摆放成各种不同的角度,观察检测结果可看出,在不同角度不同对象的情况下,改进的EfficientDet-D1网络模型的检测结果均正确且置信度得分普遍较高,符合实际在ECU装配生产线上的要求。
图12 ECU外壳检测效果图
针对机械零件研究了基于深度卷积神经网络的目标检测算法EfficientDet,并对算法的原理进行了分析。对采集到的样本进行预处理、数据增强与标注,并与其他网络模型进行比较分析。实验表明,对于Faster R-CNN、Mask R-CNN网络产生的检测速度慢、准确率不高的问题,EfficientDet网络回归物体的类别概率和位置坐标值,同时通过BiFPN与复合尺度扩张方法,提高了模型的检测速度与检测准确率;实际生产应用中,改进的EfficientDet-D1网络比EfficientDet-D0网络更能适应环境以准确地检测出ECU种类并快速定位,其准确率高效率高,满足实时检测的要求。