基于改进SSD的密集工件检测*

来源:优秀文章 发布时间:2023-01-20 点击:

徐 健,陆 珍,刘秀平,黄 磊,韩 琳,闫焕营

(1.西安工程大学电子信息学院,西安 710048;
2.深圳罗博泰尔机器人有限公司,深圳 518109)

柔性制造技术是指制造系统利用已有要素快速应对环境不确定性的能力[1],是对各种不同形状对象实现程序化加工技术的总和。在实际生产过程中,工件的识别与定位是工业智能化的重要组成部分,快速识别与定位工件能够有效提升生产效率,解放生产力。然而工件的种类、尺寸、位置以及环境的光线等因素都为检测过程带来了挑战。

传统目标检测方法缺点在于需要耗费大量人力提取有效特征,在目标特征发生变化时模型缺少泛化能力,并且单一特征或多种特征的检测算法丢失了目标的绝大部分特征信息,无法适用于实际工业检测场景。近年来,基于深度学习的目标检测算法表现突出[2],从专注于精度的双阶段目标检测算法Faster R-CNN、Mask R-CNN[3]系列,到专注于速度的单阶段目标检测算法YOLO(you only look once)[4]系列,均表现出卷积神经网络的优越性。大量学者进行了相关研究:杨琳等[5]针对多角度无序零件识别难度大的问题,在YOLOV4的基础之上分别对优化器、预测边界框进行改进,最终达到精确识别定位的效果。李佳禧等[6]提出了一种基于YOLOv3的工件识别方法,采用深度可分离卷积网络对网络结构进行改进,通过K-means聚类方法得到更准确的预测框,同时运用数据增强方法对训练数据进行扩充,最终达到实际工业生产需求。

本文基于密集工件检测方法研究,结合当前主流目标检测算法的优缺点,选取在速度与精度方面都有所突破的SSD[7]作为基础算法。然而研究发现基础SSD模型存在以下问题:①对于小目标物体检测效果较差,易出现漏检、误检的情况;
②在距离较近、目标较多、分布密集的情况下定位不够精准。针对以上问题,本文在SSD特征提取网络中融入RFB模块,采用激活函数PReLU提高模型表达能力,同时使用CIoU对损失函数进行优化,使用平滑标签、融入BN层等优化方法防止过拟合,提高模型泛化性。对比现有多种目标检测算法表明:本文改进算法对于密集工件的检测精度更高,能够达到精确检测的效果。

SSD利用Conv6、Conv7卷积层代替传统VGG-16中的全连接层FC6、FC7,新增了Conv8_2、Conv9_2、Conv10_2、Conv11_2卷积层,以改进后的VGG-16作为主干特征提取网络,最终在大小分别为38×38、19×19、10×10、5×5、3×3、1×1等6个不同尺度的特征图上进行目标检测,通过非极大值抑制(non-maximim suppression,NMS)滤除多余边界框得到检测结果。SSD网络结构如图1所示。

图1 SSD网络结构

2.1 RFBNet

在人类视觉皮层中,群体感受野群PRF(population receptive field)的大小受视网膜图上偏心率的影响,当偏心率增加时,PRF也会增加[8],即越靠近视野中心区域权重越高。RFB模块[9]模拟人类视觉感受野,借鉴了Inception思想,使用并联膨胀卷积层进行特征提取,有效增大了网络的感受野,加强了模型学习的深层特征,提高了网络的特征提取能力,避免了SSD网络模型对于小目标特征提取能力不强的情况,因此使得检测精度得到了有效提升。RFB模块原理图如图2所示。

图2 RFB原理示意图

本文基于RFBNet300-E,包括两种网络结构,如图3所示为第一种网络结构BasicRFB。在每个支路后分别加入了卷积核大小为3×3,膨胀率分别为1、3、5、7的卷积层。在膨胀率为5的卷积层中,使用两个3×3卷积核串联代替一个5×5卷积核,两个3×3卷积核串联所需的参数共2×3×3=18个,拥有相同效果的一个5×5卷积核所需的参数共5×5=25个,参数更少却得到更详细的特征信息,增强了网络的非线性变换能力和特征提取能力。在膨胀率为7的卷积层中使用两个非对称卷积1×7与7×1的矩形卷积核代替网络中7×7的正方形卷积核,极大减少了网络的参数量与计算量;
同时借鉴了残差网络的“Short Cut”思想,将并联后四个不同膨胀率的结果拼接并进行1×1卷积操作,与输入进行“Short Cut”合并后输送到激活函数得到最终输出。

图3 BasicRFB连接结构

如图4所示为第二种网络结构BasicRFB_a。在每个支路后加入了卷积核大小为3×3,膨胀率分别为1、3、5、7的卷积层。在膨胀率分别为3、5的支路上,BasicRFB_a网络使用了3×1、1×3的卷积并联结构;
在膨胀率为7的支路上,使用1×3、3×1卷积和3×1、1×3卷积并联结构,形成了包含有8条支路的网络结构,最终输出方式与BasicRFB相同。

图4 BasicRFB_a连接结构

融入BasicRFB和BasicRFB_a之后的网络结构如图5所示。与SSD网络模型的不同之处是Conv4_3与FC7的特征融合以及相应先验框的变化。在SSD网络结构中,经过Conv4_3卷积操作后的特征图,直接进行预测操作,而本文网络结构将Conv4_3层卷积操作后的特征图继续进行特征提取,将FC7层卷积后的结果进行上采样操作,与Conv4_3的卷积结果进行特征融合,融合之后经过BasicRFB_a模块完成第一个特征层P3的提取。在FC7层之后,经过多个BasicRFB模块的处理后分别得到P4、P5、P6特征层,经过BasicRFB模块后的结果继续进行卷积操作后得到P7、P8特征层,之后进行分类和回归预测。最终得到与SSD网络具有相同尺寸与通道数的6个特征层P3、P4、P5、P6、P7、P8,先验框数量分别为8664、2166、600、150、36、4,共计11 620个。

图5 本文算法网络结构

2.2 激活函数优化

激活函数的作用是给神经元提供非线性因素约束,使得神经网络逼近非线性函数,从而提高模型的表达能力。在神经网络训练过程中,ReLU能够解决梯度消失问题,加快收敛速度,因此在卷积神经网络学习中被广泛应用。但是随着训练轮数的增加,存在一部分权重不再更新而导致部分神经元“死亡”的现象,影响模型的收敛效果。ReLU的变体L_ReLU(logarithmic rectifide linear unit,对数修正线性单元)、PReLU[10-11]等激活函数的相继提出,有效地解决了此问题。

L_ReLU将一个非零斜率赋值给所有的负值,本文将斜率设置为0.01,使得负半轴呈现出较小的梯度,有效解决了ReLU函数进入负区间后神经元不学习的问题。但是斜率由人为设置的固定值,针对不同的神经元具有相同的参数,因此无法获取最合适的网络模型。

PReLU负半轴的斜率并非人为设置的固定非零值,而是通过学习获取的。在保证无神经元死亡的前提下,收敛速度更快。在训练的过程中不断调整数值使得网络模型不断适应数据的变化,从而得到更加合适的网络模型。PReLU激活函数表达式如下:

(1)

式中,ai的梯度表达式为:

(2)

式中,

(3)

(4)

本文将ReLU与L_ReLU、PReLU等激活函数进行对比,选取最佳激活函数PReLU,各激活函数的曲线如图6所示。

图6 激活函数

2.3 损失函数优化

加入RFB模块前后网络的损失函数不变,包括位置损失(locatization loss,loc)与置信度损失(confidence loss,conf)两部分。位置损失采用Smooth L1 loss[12],用于预测框的回归,置信度损失采用softmax loss,用于预测框的分类。网络总体损失函数表达式为:

(5)

式中,x为输入图片;
c为预测框置信度;
l为预测框位置信息;
g为真实框的位置信息;
N为与真实框相匹配的默认框数量;
α为权重参数。

IoU(intersection over union)[13]是评价目标检测性能的重要指标,评价模型时用来判断是否正确检测到目标。IoU表达式为:

(6)

IoU损失函数表示为:

(7)

式中,A为预测框;
B为真实框。

直接用IoU作为包围框的损失函数会出现以下问题:当预测框与真实框不重叠时,即A∩B=0,相应的IoU值也为0,不能有效反映预测框与真实框区域之间的距离,从而无法进行参数更新;
当预测框与真实框在不同情况下相交面积相等时,IoU值相等,如图7所示。因此不能直接用IoU值来反应两区域的相交情况。

图7 不同相交形式

DIOU考虑到了真实框与预测框之间的距离、重叠率、尺度[14],表达式如式(8)、式(9)所示;
而CIoU是在DIoU考虑因素的基础之上,又考虑了真实框与预测框二者之间的长宽比,使得预测框更贴近于真实框,在模型回归过程中能够达到更好的收敛速度和更高的精度,避免训练过程的发散问题,表达式如式(10)~式(13)所示。因此针对原始模型对密集工件检测效果不佳以及IoU损失函数存在的问题,本文采用CIoU作为包围框回归的损失函数代替Smooth L1。

(8)

(9)

(10)

(11)

(12)

(13)

式中,d为预测框与真实框中心点的欧式距离;
c为包围框对角线的距离;
α为长宽比的权衡参数;
v为衡量预测框与真实框长宽比一致性的参数;
ωgt、hgt分别为真实框的宽和高;
ω、h分别为预测框的宽和高。包围框回归预测过程如图8所示。

图8 包围框回归预测

2.4 过拟合解决方案

本文运用平滑标签与批量标准化等方法来避免模型的过拟合问题,以此提高模型泛化能力,增加鲁棒性。

平滑标签是对标签进行平滑操作,在二分类情况下假设原始的标签为0和1,平滑操作后标签变为0.005与0.995,对分类结果进行了微量惩罚,降低分类的准确性即可缓解过拟合现象。平滑操作的具体公式如下:

new_labels=labels*(1-label_smoothing)+label_smothing/num_class

(14)

式中,labels为平滑前的标签;
label_smoothing为平滑量,本文设置为0.005;
num_class为总类别数。

在全连接层后加Dropout层是一种防止过拟合的有效手段,但是现代卷积架构中全连接层逐渐被全局平均池化层所代替,而对于网络的非全连接层使用Dropout并不能达到消除过拟合的效果。本文采用的另外一个防止过拟合方法是在每个卷积层后融入批规范化BN层,BN层在很大程度上替代了卷积结构中的Dropout层,在正则化的基础上批处理规范化还可以减少训练过程中的梯度弥散现象,并且能够加快网络的训练以及收敛速度,防止过拟合,提升训练效果。

本文实验操作系统为:Windows10,CPU为Intel i7-7800X,GPU为NVIDIA RTX 2080Ti,16 G内存,编程语言为python3.6。

网络超参数设置如下:优化器采用AdamOptimizer,训练200个Epoch,其中第1~100个Epoch学习率为5×10-4;
第100~200个Epoch学习率下降为10-4,最终损失值趋于稳定时训练过程结束。

3.1 数据集

由于目前没有公开的大型工件样本数据库,根据实际生产需求,选取了包含螺丝(screw)、螺钉(bolt1,bolt2)、螺帽(nut)、垫片(gasket)等五类工件样本,使用工业相机模拟实际生产场景,分别对包含不同数量不同种类工件的图片进行采集,数据集样本如图9所示。为充分发挥卷积神经网络的性能,对包含有工件样本的原始图像进行离线数据增强处理,降低由于工件样本数量少,多样性分布不平衡而导致的模型泛化能力差的问题,扩充后的部分样本如图10所示,将扩充的工件图像作为模型的输入,最终选取80%作为训练集,20%作为测试集。

(a) bolt1 (b) bolt2 (c) screw (d) gasket (e) nut

图10 数据集扩充

经过数据增强操作后,最终得到包含4121张图片的工件数据集,使用Labelimg软件按照VOC2007数据集格式对每张数据集进行标注,每标注一张就会生成相应的包含目标工件位置信息与类别信息的xml文件用于模型训练。各类工件样本数目如表1所示。

表1 工件数据集样本数目

3.2 评价指标

评价目标检测模型性能的常用指标有准确率(Precision)、召回率(Recall)、平均精度值(AP)、平均精度均值(mAP)等,各项指标表达式如下:

(15)

(16)

(17)

(18)

式中,TP为正样本被预测为正确的样本数目,即真正例;
FP为负样本被预测为正确的样本数目,即伪正例;
FN为正样本被预测为错误的样本数目,即伪反例;
mAP为不同样本种类的AP的平均值。

3.3 不同损失函数的实验结果对比

为直观体现本文所改进损失函数的性能,分别对引用SmoothL1、DIoU、CIoU三种损失函数下5种目标工件的AP值、mAP值指标进行对比实验,实验结果如表2所示。

表2 损失函数优化前后性能对比 (%)

由表2可知,位置回归损失函数为SmoothL1、DIoU时模型的mAP分别为93.86%、94.47%,本文所引用CIoU损失函数的mAP达到了94.83%,较原模型提升了0.97%,较使用DIoU损失函数提升了0.36%。表明长宽比参数的引入有效提高了检测精度,CIoU能更好的解决密集工件检测效果不佳的问题。

3.4 不同网络模型的实验结果对比

平均检测精度是评价目标检测效果的重要指标。为了对比基于改进SSD算法的密集工件检测方法与当前主流目标检测算法的性能,将本文改进算法与SSD、RFBNet等主流目标检测算法的实验结果进行对比,选取5种目标工件在以上几种模型中进行实验,以平均精度值AP作为评价指标,实验结果如图11所示。

图11 不同模型下目标工件的AP值

由图11可知,本文改进算法在各类工件的AP值都有所提升,这是因为本文使用改进后的感受野模块、损失函数、激活函数以及防止过拟合等优化方法更有利于检测任务。由于bolt2与bolt1外形较为相似,且尺寸较bolt1小,容易被误检为bolt1,导致这种类型工件的检测效果低于其他类型的目标工件。总体来说,本文改进算法对于5种目标工件的平均检测精度更高,并且对于其他算法容易误检、漏检的bolt2工件也取得了更好的检测效果。

为验证本文所提方法的优势,分别将3种模型对于密集工件的检测结果进行对比,结果如表3所示。

表3 构建数据集上各模型的性能对比 (%)

由表3可知,在平均检测精度方面,本文改进算法的mAP达到了95.24%,较SSD与RFBNet算法分别高出4.42%、1.38%,因此本文所改进算法对于密集工件而言是一个有效的检测方案

为直观描述本文改进算法的普适性和泛化能力,对密集工件进行测试,将实验结果结果分为单类密集工件、多类密集工件、变换背景光线有无关杂物干扰等情况,其中包含bolt1、bolt2、nut、screw、gasket等5种工件样本。图12为本文算法改进前后检测效果对比图,检测边界框上方的值为算法预测该类别的置信度。

(a) 改进前算法检测效果

由图12可知,当存在小目标工件的检测中,改进前网络模型出现了不同程度的误检、漏检现象,而本文改进算法对于小目标的检测效果有了明显的提升,同时不仅能够在简单背景情况下准确检测到目标,当背景、光线发生变化以及其他物品干扰的情况下仍能够对工件进行有效检测,表明所提算法能极大降低密集目标工件的误检率和错检率,适用于柔性智能制造生产过程。

针对柔性制造过程中密集工件容易发生漏检、误检的情况,提出了一种基于改进SSD的网络模型。分别对网络结构、激活函数以及损失函数进行相应的改进;
同时为避免过拟合现象的发生,采用了平滑标签、融入BN层等优化方法。实验结果表明与其他主流算法相比,本文所改进算法表现出了较好的效果,使得目标检测的精度提升了4.42%,能够精确检测到目标工件,基本满足实际工业生产过程。虽然本文改进算法对于密集工件目标的检测效果高于其他算法,但是仍有优化空间,接下来将进一步增加数据集的多样性以及工件的密集度,同时加强目标检测器在不同环境条件下算法的鲁棒性。

猜你喜欢 网络结构工件卷积 带服务器的具有固定序列的平行专用机排序杭州电子科技大学学报(自然科学版)(2022年4期)2022-08-23带冲突约束两台平行专用机排序的一个改进算法杭州电子科技大学学报(自然科学版)(2022年3期)2022-06-08工业机器人视觉引导抓取工件的研究智能制造(2021年4期)2021-11-04基于3D-Winograd的快速卷积算法设计及FPGA实现北京航空航天大学学报(2021年9期)2021-11-02快递网络结构研究进展西安邮电大学学报(2020年1期)2020-12-17一类带特殊序约束的三台机流水作业排序问题杭州电子科技大学学报(自然科学版)(2020年3期)2020-06-08卷积神经网络的分析与设计电子制作(2019年13期)2020-01-14基于AutoML的保护区物种识别①计算机系统应用(2019年9期)2019-09-24从滤波器理解卷积电子制作(2019年11期)2019-07-04基于傅里叶域卷积表示的目标跟踪算法北京航空航天大学学报(2018年1期)2018-04-20推荐访问:工件 密集 改进
上一篇:公路隧道照明智能节电技术的应用——以萧山河上隧道为例
下一篇:食管黏膜下腺导管腺瘤3例临床病理观察

Copyright @ 2013 - 2018 优秀啊教育网 All Rights Reserved

优秀啊教育网 版权所有