APP下载

改进多层尺度特征融合的目标检测算法

2022-02-15李康康于振中范晓东宋思远

计算机工程与设计 2022年1期
关键词:尺度卷积物体

李康康,于振中,,范晓东,宋思远

(1.江南大学 物联网工程学院,江苏 无锡 214122; 2.哈工大机器人国际创新研究院 智能装备研究所,安徽 合肥 230601)

0 引 言

在对无序生活用品的分拣归类或生活垃圾的分拣归类中,因其复杂的种类、堆叠的混乱状态,传统的物体分类算法较难胜任。结合深度学习对待抓取的物体进行目标物体检测,能够有效解决混乱状态下的物体分类分拣问题。

目标检测技术在计算机视觉领域是一个非常重要的研究方向[1,2]。早期传统目标检测是利用SIFT[3]、HOG[4]、Haar[5]等手工设计特征的方法结合SVM、adaboost等一些分类器。由于目标检测受到复杂环境、外形、大小、堆叠状态及外部光照变化的影响,存在提取目标特征准确性、稳定性较差的问题,导致所提取的目标特征泛化能力弱,鲁棒性较差。通常需要根据每一个特定物体的形状结构,依靠先验知识提出相应的算法,在目标检测精度和稳定性上堪忧。结合深度学习的目标检测方法有很大的优势,通过卷积网络计算自主学习不同层级的特征更加丰富,学习到特征的表征能力更强[6]。基于深度学习的目标检测算法主要有:R-CNN[7]、Fast R-CNN[8]、Faster R-CNN[9]、R-FCN[10]、YOLO[11]、SSD[12]等。其中,SSD算法相较于其它算法从不同尺度特征图上进行预测,根据不同尺度特征图其自身所对应感受野的大小检测不同尺度的物体,有助于提高了目标检测的精度。由于生活用品分类分拣中存在物品种类多,结构大小差别大。因此,通过改进SSD算法,基于回归思想搭建深度神经网络进行目标检测,提高目标检测的准确率。

1 SSD目标检测算法

1.1 原始SSD算法模型

SSD算法模型是end-to-end的卷积神经网络结构。在网络结构上,原始SSD算法模型主要由基础网络(VGG)、附加特征提取网络、原始默认框生成部分、卷积预测部分组成。如图1所示,基础网络基于VGG16构建,并对其进行了统一调整,保留前面的卷积层,将后面的全连接层改换成卷积网络层。附加网络层如图中Extra Feature layer所示,添加4个不同尺度卷积网络层。卷积预测部分为所示Detetction部分,采用回归的思想进行预测。

图1 SSD算法模型

1.2 原始SSD算法存在的问题

原始SSD算法的基础网络VGG16和附加特征提取网络是直接利用卷积层之间级联方式,前一卷积层的输出是下一卷积层的输入,原始SSD算法目标预测利用不同尺度的特征图进行。结合图1 SSD模型结构,其多尺度计算及级联方式过程可用数学公式定义如下[13]

Fn=φn(Fn-1)=φn(φn-1(φn-2(…φ1(I))))

(1)

R=G(Cn(Fn),Cn-1(Fn-1),…,Cn-d(Fn-d)), n>d>0

(2)

式中:Fn为第n层特征图,φn为第n-1层到第n层特征图的非线性卷积运算,φ1(I)为输入图像I得到第1层特征图的非线性卷积运算,Cn(·)为在第n层特征图Fn上的检测结果,G(·)为将所有不同尺度特征图的检测结果进行集合统计,R为算法最终的结果。

由式(1)、式(2)可知,第n层特征图上特征信息由第n-1层特征图上信息决定,分辨率的大小决定了该层特征图上感受野大小。SSD用来预测的特征图Conv4_3、Conv7、Conv8_2、Conv9_2、Conv10_2、Conv11_2中最大尺度的分辨率为38*38,如果输入图像中小目标尺寸较小,经过pooling层池化后,会丢失低层网络包含的细节信息,如边缘信息、像素信息[14],如对一些小目标物体在经过4个pooling后,会使得小目标的特征图减少1/16。甚至导致像素较小的目标物体的特征消失。在低层特征图进行目标预测时,小目标特征的表达能力不够;另一方面,在层层卷积、池化后,高层低分辨率保留的细节信息更少;从卷积特征层Conv4_3、Conv7、Conv8_2、Conv9_2、Conv10_2、Conv11_2作为预测的6个stage,未能兼顾相邻不同尺度特征层上的特征;此外,由于SSD用于检测的低层网络中只有一层,包含的目标信息较少,算法在小目标物体的检测上存在误检、漏检[15]。因此,文中拟提出以下改进方法:深层神经网络提取到的抽象特征,配合相邻不同尺度特征图进行特征融合;低层网络结合更大分辨率特征层并与自上而下传递的高层语义融合,补充低层检测层上细节信息及语义信息。

2 基于SSD的改进和优化方法

针对上述分析,改进的SSD目标检测算法具体为:一是在基础网络上引入额外的特征层,进一步加强目标检测层特征表达的能力;二是在附加网络层中提出融合3种不同尺度特征图加强前后尺度图之间的语义信息相关性;三是在进行融合时,构造特征增强模块,优化特征融合策略,降低参数增加带来的检测速度变慢的影响。

2.1 基础网络层特征融合改进

基础网络卷积层卷积计算得到的特征图拥有较大的分辨率,深层网络对分类任务有利,而对于检测任务,需要检测物体的位置。如图2所示,图片输入网络经卷积层特征提取后,将低层的特征层Conv3_3、Conv4_3进行可视化操作,特征层Conv3_3的分辨率为75*75,相对于Conv4_3特征层的分辨率38*38较大,细节特征表达较丰富。

图2 低层特征图可视化

为提高SSD算法低层特征层对小目标细节特征的充分表达能力,改善SSD算法对小目标的检测效果,改进算法融合相邻底层高分辨细节特征明确的特征图和高层低分辨率丰富语义信息的特征图。基础网络特征融合结构如图3所示,图3中仍以Conv4_3的尺度大小作为新预测stage的尺度,采用Concat方式融合Conv3_3、Conv4_3及自上而下高语义特征图,补充Conv4_3卷积特征图的特征信息。

图3 基础网络特征图融合结构

2.2 附加网络层特征融合改进

随着网络卷积层的加深,卷积神经网络的抽象学习能力使得特征图的表达能力越来越强,具有丰富的语义信息[16]。文中改进算法提出结合FPN算法[17]思想,构造特征增强模块:融合三级不同尺度特征图并改进融合策略的方法。结构如图4所示。

图4 特征增强模块连接结构

图4左侧自下向上为原始SSD算法前向卷积特征图预测stage,在进行检测时,使用了Conv7到Conv11_2的5种不同级别的特征层作为预测stage,分别对应图4中一级、二级、三级…。深层网络良好的平移不变性和结合更大分辨率的特征图细节信息,有利于目标检测中的分类预测和位置预测[18]。因此,对选择的原始SSD预测stage,采用结合两级不同分辨率的特征层,自上而下,将融合后的信息向下传递,进一步将深层的高语义信息与浅层的细节信息融合。图4特征增强模块连接结构算法流程:

(1)对原始SSD算法用于检测的特征层(二级)用1×1 卷积[19]核提取特征并进行横向链接操作;

(2)对两倍于(1)中分辨率的特征图(一级)进行1×1 卷积计算后,避免引入额外参数,采用最大池化下采样操作;

(3)将上一轮下Concat得到的特征图进行双线性插值两倍上采样操作;

(4)Concat 融合方式能够增加该层级下特征[20],将上述步骤(1)~步骤(3)得到的3个相同尺度的特征图进行Concat融合操作。

(5)重复步骤(1)~步骤(4),将融合后的各级特征图一方面经3x3卷积核消除融合混叠效应,作为新的预测stage送入Detection任务,另一方面将特征信息传递,用于下一层级的特征融合。

3 改进SSD网络整体结构

针对上述对原始SSD分析及文中提出改进方法,基于多层特征融合算法总体流程如图5所示:网络输入图片,经SSD前向网络提取特征后形成不同尺度的特征图,通过特征增强模块提升目标特征表达能力,进行检测任务。

图5 基于多层特征融合算法流程

总体网络设计后的结构如图6所示。图6中虚线框1应用于底层改进方法,对于特征层Conv4_3,引入额外高分辨率特征层,结合高层自上而下高语义特征层并采用Concat融合方式以提高小目标的检测效果。虚线框2对应于附加网络层的改进方法,Zeiler等[21]提出,不同尺度级别的卷积特征层分别表征了不同级别的语义信息,卷积网络越深,卷积特征层图语义级别越高。但并不意味着融合所有不同尺度的特征图,随着网络的复杂度增加,网络的检测速度必然会受到某种程度的影响。因此不对Conv10_2、Conv11_2做自上而下的多级特征融合处理。

以融合得到的Conv8_2_2层为例进行说明,由图7特征增强模块融合流程图得到,融合之后输出的预测stage为Conv8_2_2层,其特征图尺寸大小为512×10×10。Conv9_2_2层为上一特征融合模块的输出,512×5×5经过1×1卷积和上采样后得到维度为10×10×128的特征图,Conv7层经过1×1卷积和下采样后得到256×10×10的特征图,将上述两个采样后的结果和Conv8_2层特征图经1×1 卷积提取特征得到尺度为128×10×10的特征图融合,得到维度为512×10×10的Conv8_2*中间层,经3×3卷积核进行特征整合后,得到最终的预测stage(Conv8_2_2层),同时作为下一特征融合模块的输入。

图6 改进SSD整体结构

图7 Conv8_2_2层特征增强融合流程

改进算法采用多级不同尺度融合的方法并结合FPN思想自上而下的传递各级不同尺度特征图的特征信息。在训练阶段,由于前一级卷积层参数的更新,将影响后一级输入层数据分布的变化,导致卷积特征层数据分布差异较大,直接进行Concat融合操作,会造成特征图之间有较大的差异。某一网络层发生微小的变化,特征经过融合层将会被累计放大下去,导致算法收敛过慢。因此在每层特征层后加入BN[22](batch normalization)操作,做归一化处理,解决数据分布变化带来的影响,进而降低因融合操作增加模型复杂度带来训练过程变慢的影响。

4 实验数据准备与结果分析

4.1 实验环境与数据

实验硬件配置:CPU为Intel(R)Core(TM)i7-10750HCPU, GPU为NVIDIA RTX 1080Ti显存6 G,内存为16 G。软件环境:操作系统为Ubuntu16.04,深度学习框架为pytorch,编程语言为Python2.7,第三方库为OpenCV,以及CUDA。

实验用的数据集共有两个:公开数据PASCAL VOC2007,其中VOC2007包含9963张图像,20分类。按照PASCAL VOC2007的格式制作家庭生活用品数据集(Supplies Dataset),包含4700张图像,15分类(与20分类不同)。

4.2 模型训练参数

为检验改进后的模型效果,将PASCAL VOC2007数据集划分为训练集和测试集。输入图片尺寸300*300,图片经过数据增强处理。网络卷积层权重采用xavier初始化方法,整个网络采用批归一化BN(BatchNormal)处理,lr设为1e-4,每进行20 000次迭代(iter),学习率下降10倍,momentom设为0.9,weight_decay设为5e-4,batc_size设为4,进行7万次迭代。在Supplies Dataset数据集上,采用同样的方式进行训练和测试。

4.3 实验结果分析

4.3.1 训练结果

构建改进后的网络,在PASCAL VOC2007训练集上进行训练,模型的训练损失如图8所示,经过10 000次迭代训练后,模型损失趋于平稳,表明模型达到最好效果。将训练得到的模型在PASCAL VOC2007测试集上进行测试,置信度阈值设置为0.5,文中改进算法的mAP(mean average precision)为78.6%,FPS为45 f/s。相比较于原始SSD算法的mAP提升了近10.4%。

图8 训练损失

4.3.2 中小目标实验结果对比分析

为测试改进后算法的检测性能,采用mAP为评价指标。选取PASCAL VOC2007数据集中包含中小目标的图片200张,共10类。分别对比YOLO、Faster-RCNN、SSD和改进算法的mAP,mAP实验结果见表1。

从检测结果可以看出,改进算法提出的利用FPN算法思想结合不同层级融合的SSD目标检测算法的检测精度明显提升。尤其对于小目标,如bottle提升了近22%,aero提升了近37%,mAP相比原SSD算法提高近14.1%,对比结果如图9所示。

图9 检测对比结果

图10为效果对比图部分演示,左边是原始SSD检测效果图,右边是改进算法效果图。对比图10(a)~图10(d)可以明显看出,改进后算法较原SSD算法能够正确检测出更多的物体,提升算法检测小目标的能力。从图10(g)和图10(h)则可以看出对于形态多样的一类物体,改进算法有更高好的检测效果,并且能够成功定位出被遮挡的物体。从图10(e)和图10(f)可以看出,改进算法对小目标的检测精度有很好的提升。仔细分析可以得出,基于SSD的目标检测算法,在经过不同层级的特征融合后,不仅提升了物体检测精度,对物体的召回率也有不错的提升。

图10 效果对比

4.3.3 生活用品数据集检测结果对比分析

针对复杂生活用品的识别是实现机械臂智能抓取的重要前提条件,定位的准确与否决定着后续物体点云分割提取后的真实三维坐标,决定了机械臂在视觉系统下的抓取的成功率。因此,提高混乱场景下物体识别与定位的准确率尤为重要。文中在对改进后算法的可靠性进行充分实验,生活用品数据集(Supplies Dataset)4700张,包含15类生活用品,如penholder(笔筒)、soap(香皂)、scissors(剪刀)、dumbbells(哑铃)…等。根据PASCAL VOC2007数据集格式进行标注和修改,采用同样的训练方法,将得到的模型进行测,测试效果部分演示如图11所示,左面一栏是原SSD模型的检测效果图,右面一栏是改进算法检测效果图。

图11 效果对比

从图11效果图11(a)、图11(b)和图11(e)、图11(f)可以看出:对于环境复杂,物体形态不明显的种类,改进算法在融合不同层级的增强特征表达能力后,能够准确检测出目标物体。从效果图11(c)和图11(d)可以看出,对存在堆叠的物体,改进算法不仅正确检测出小目标物体,同时也提高了检测精度,有效避免原算法中存在的漏检和误检。随着混乱复杂度增加及物体间的叠加效应影响,从图11(g)和图11(h)中可以看出,文中改进算法检测效果尤为明显,尤其对形态相似的物体种类,改进算法在融合不同层级的特征后,能够有效检测出目标。如类别为pencil与类别为sosp的物体,改进算法精准定位出pencil位置,避免了原算法的定位不准。说明了改进算法对相似物体的检测有较强的鲁棒性。

通过以上检测结果及测试结果可以得到以下结论:①改进后算法较原始SSD模型算法能够检测出更多的物体,减少漏检;②改进算法能够提高小目标物体置信度,提高检测精度;③对于类别相似的物体,该改进后算法能够提高准确度,减少误检。④改进算法对堆叠效应下物体的检测也具有较强的鲁棒性和更好的效果。

4.3.4 测试速度结果对照表

为了测试本文所提算法的可用性,使用两个数据集进行对比验证,由表2中PASCAL VOC2007数据集和表3中Supplies Dataset数据集上的测试结果可知,改进算法的mAP明显提升;考虑到模型融合带来的模型结构复杂度的提升,模型的检测速度未受到太多的影响,基本满足要求。

表2 实验结果对照

表3 实验结果对照

5 结束语

文中首先介绍了SSD算法网络构成,并分析原始SSD算法存在的问题及检测中小目标物体效果差的原因。针对这些存在的问题,提出了对网络改进的方法。将改进后的算法在PASCAL VOC2007数据集和Supplies Dataset数据集上进行训练和测试。评价指标mAP相比于原始算法提高了10.4%,考虑到算法网络层的增加,检测速度FPS为45 f/s,检测速度符合算法的实时性要求。此外,为验证改进算法对中小目标检测的效果,从PASCAL VOC2007测试集里面选取200张包含小目标的图片进行测试,改进算法的mAP明显高于其它算法,其中相较于原始SSD算法提高了14.1%,说明改进算法的有效性。为验证改进算法的可用性,在Supplies Dataset数据集上的测试结果表明,改进算法对存在堆叠状态物体下的识别也具有较强的可用性和鲁棒性。综合实验结果表明,改进的目标检测算法在提高精度的同时,算法的实时性也基本满足要求。在下面的研究工作中,将进一步改善网络结构,调整网络参数,提高算法检测精度的同时,提高算法的检测速度,提升算法的整体性能。

猜你喜欢

尺度卷积物体
基于3D-Winograd的快速卷积算法设计及FPGA实现
财产的五大尺度和五重应对
深刻理解物体的平衡
卷积神经网络的分析与设计
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法
宇宙的尺度
揭开物体沉浮的秘密
为什么同一物体在世界各地重量不一样?
9