APP下载

多尺度特征图分类再提取的目标检测算法

2021-03-22尹震宇超1赵志浩1哲1张飞青1

小型微型计算机系统 2021年3期
关键词:金字塔尺度卷积

尹震宇,樊 超1,,赵志浩1,,黄 哲1,,张飞青1,

1(中国科学院大学,北京 100049) 2(中国科学院 沈阳计算技术研究所,沈阳 110168)

1 引 言

目前,目标检测在行人检测[1]、智能机器人[2,3]、视频监控[4,5]等多方面广泛应用.目标检测已经成为计算机视觉领域中重要的研究方向之一.目标检测需要识别图像中指定类别范围的目标,并预测出目标的具体类别和相应位置.近年来,如何提升目标检测方法的性能已经成为该领域的研究热点.早期传统的目标检测方法大多采用特定的特征提取方式和分类器分类的方法进行目标检测,但是多数方法的鲁棒性和实时性都比较差.随着2012年AlexNet[6]的崭露头角,基于深度学习的目标检测方法开始迅速发展,并展现出了良好的鲁棒性和实时性.

基于深度学习的目标检测算法包括双阶段检测算法和单阶段检测算法两类.双阶段检测算法需要生成候选区域后,再进行目标分类和定位.由于双阶段检测算法生成了精度较高的候选区域,使得双阶段检测算法的检测精度较高,然而随着模型复杂度的增加,算法的实时性也有一定程度地降低.典型的双阶段检测算法包括RCNN[7],Fast-RCNN[8],Faster-RCNN[9],Mask-RCNN[10]、R-FCN[11]等.单阶段检测算法直接通过回归的方式实现目标检测.典型的单阶段检测算法主要包括SSD[12]系列算法和YOLO[13]系列算法.为进一步提高SSD算法的检测能力,Liu W等于2017年提出了检测精度更高的DSSD[14]算法,但是检测速度却有所下降.随后RSSD[15]、FSSD[16]和DSOD[17]也对SSD进行了相应的改进,一定程度上提升了检测效果.2018年RetinaNet[18]算法在特征金字塔网络[19](Feature Pyramid Network,FPN)的基础上,通过采用新型的损失函数大幅提高了算法的检测精度.

本文通过对SSD算法中的多尺度特征图进行分类再提取,提升SSD算法检测目标的能力.分类后的原始特征金字塔包括低层特征图和高层特征图两类.在低层特征图中设计了新的特征提取模型,增加了网络深度;在高层特征图中采用两段反卷积的方式融合语义信息进行特征提取.实验结果表明,本文算法相比经典的单阶段检测算法,在检测速度有所保证的前提下,也具有较高的检测精度.

2 相关工作

2.1 SSD特征金字塔

SSD采用VGG16作为主干网络,利用不同尺度特征图进行不同大小目标的检测,是一种单阶段目标检测算法.不同卷积层对应的不同 尺度特征图形成了SSD特征金字塔,金字塔中靠近底部的特征图用于检测小目标,中部的特征图用于检测中等目标,靠近顶部的特征图用于检测大目标.用于检测目标的特征金字塔最底部的特征图是原VGG16中的Conv4_3层,紧接着是VGG16中全连接层fc7层转换成的Conv7层,后续通过相应尺寸的卷积核和相应的步长进行卷积,分别得到Conv8_2,Conv9_2,Conv10_2,Conv11_2层.上述6个不同尺寸的特征图构成了SSD特征金字塔.

SSD算法通过对特征金字塔中的不同特征图选取不同尺度的候选框,采用回归的方法得到目标所属各个类别的置信度和候选框与真实区域之间的方差.SSD特征金字塔中,靠近顶部的特征图语义信息丰富、边缘信息不足、分辨率低;而靠近底部的特征图语义信息较弱,边缘信息丰富、分辨率高.因此,SSD算法采用多尺度检测即从底部到顶部检测的目标大小逐渐变大的方式能够有效避免特征图的缺陷.然而,在SSD模型中,真正检测小目标的特征图只有最底部的Conv4_3层,且由于该层处于卷积网络中的浅层导致其特征非线性程度不够,因此SSD模型检测小目标的精确度较差.同时检测中等目标和大目标的特征图由于分辨率的降低,导致一定程度上的特征丢失,容易出现漏检的情况.本文通过分析SSD模型中的不足,提出了针对SSD多尺度特征图进行分类再提取的目标检测算法.

2.2 反卷积及棋盘格效应

反卷积也叫转置卷积,是一种特殊的正向卷积.首先按照一定比例通过补零来扩大输入图像的尺寸,接着旋转卷积核,再进行正向卷积.通过对特征图进行反卷积可以获得更高分辨率的特征图.然而反卷积后的特征图并不能恢复卷积过程中丢失的特征信息,即反卷积后的特征图与卷积前的特征图并不完全相同.反卷积类似于其他上采样,比如双线性插值、最近邻插值等方式,实现了图像分辨率的提高.因此,对于SSD特征金字塔中靠近顶部的特征图,采用反卷积的方式能够生成分辨率更高的特征图,将其与尺寸一致的相应原始特征图进行融合,会使SSD特征金字塔中的原始特征图融入更深层的语义信息.

结合反卷积的实现过程,不难发现当反卷积次数过多时,累积的噪声信息会越来越多.当噪声信息过多时,通过反卷积的方式生成的特征图将不再有效.为了避免反卷积次数过多引发的噪声信息累积过大的问题,本文提出了一种两段反卷积的方式.

尽管反卷积实现了图像分辨率的提高,但是很容易出现不均匀重叠的现象.当反卷积过程中的卷积核边长无法被卷积步长整除时,就会出现这种现象.实践中,这种现象在神经网络中很难通过权值的学习来避免.这种重叠现象在二维结构中就会形成许多棋盘状的图案,称之为棋盘格效应.棋盘格效应是一种典型的人造物现象,为了有效地抑制这种现象,本文提出了一种回流式反卷积的方式.

2.3 SENet(Squeeze-and-Excitation Networks)

SENet[20]首先对输入特征图进行全局平均池化(Global Average Pooling,GAP),得到1×1×C的特征图,其中C为通道数目;然后经过全连接层(Fully Connected layers,FC)得到1×1×(C/16),将通道数进行压缩,减少计算量,全连接层后紧跟BN层和ReLU层;随后继续进行全连接层恢复1×1×C的特征图,并紧跟BN层和Sigmoid层,此时特征图包含的C个参数,可以作为原始输入特征图各个通道的重要性权重;最后通过乘法逐通道加权到初始特征上,完成在通道维度上对原始特征的重新标定.

3 本文算法

3.1 多尺度特征图分类

3.1.1 添加Conv3_3

SSD特征金字塔中包含6个不同尺度的特征图,通过先验框的设计分别用来检测不同尺度大小的目标.多尺度特征图先验框的设置包括检测尺度、长宽比和数目.Conv4_3的先验框尺度是单独设置的,其他特征图的先验框尺度设置遵循线性递增的规则:

(1)

min_sizek=sk×input_size

(2)

max_sizek=sk+1×input_size

(3)

为了提高对小目标的检测能力,本文考虑添加新的卷积层.由于Conv3_3与检测小目标的Conv4_3最接近,且所检测的目标比Conv4_3更小,而Conv2_3相比Conv3_3距离Conv4_3较远,且由于处在更低层,特征表示不如Conv3_3.因此,本文特征金字塔中添加了Conv3_3作为最底部的特征图,用来检测更小尺度的目标.添加Conv3_3后的特征金字塔中各层先验框的设置如表1所示.本文SSD模型的图片输入尺寸为300×300.

3.1.2 特征图分类

添加新的特征层Conv3_3后,对7个多尺度特征图进行分类,分类后的的特征金字塔如图1所示.Conv3_3和Conv4_3被归为一类,即低层特征图.低层特征图处在整个神经网络较浅层,非线性程度不够,特征表示不足,且缺乏语义信息.

表1 多尺度特征图先验框Table 1 Multiscale feature map prior box

然而低层特征图边缘信息丰富,且分辨率较高,能够较好地保存小目标的信息.因此低层特征图通过适当地特征提取后能够有效检测小目标.Conv7,Conv8_2,Conv9_2,Conv10_2和Conv11_2被归为一类,即高层特征图.高层特征图处于整个神经网路的中部和末端,边缘信息缺乏,分辨率较低.然而高层特征图非线性程度较高,语义信息丰富,能够有效表示中等目标和大目标.因此高层特征图经过适当上采样提高分辨率并融合语义信息,能够有效地检测中等目标和大目标.

图1 多尺度特征图分类Fig.1 Multi-scale feature maps classification

3.2 SFE模块

为了提高低层特征图的非线性程度,加强特征表示,进而有效检测出小目标,本文设计了SFE模块.SFE模块的具体结构图如图2所示.SFE模块主要包含两部分内容:第1部分

图2 SFE模块Fig.2 SFE module

是采用不同感受野的空洞卷积进行特征提取和特征融合;第2部分是采用SENet对不同感受野提取并融合出的新特征建立通道之间的相互依赖关系.其中,第1部分的输出是第2部分的输入.两部分连接在一起组成了SFE模块.

SFE模块的第1部分首先对输入的特征图进行1×1卷积,将通道数转换为初始的四分之一,目的是为了减少参数量,提升模型训练及测试的速度.卷积完成后需要进行BN和PReLU,获得压缩通道数后的特征图.然后对压缩通道数后的特征图分别进行4个不同感受野大小的空洞卷积,卷积核的有效计算参数均为3×3,stride=1,膨胀系数dilation分别设置为1,2,4,6,对应的pad也分别设置为1,2,4,6.将空洞卷积得到的四组特征图分别进行BN和PReLU之后,采用级联(Concatenate)的方式进行特征融合,得到与初始特征图通道数相同的新的特征图.为弥补空洞卷积带来的网格效应,将新的特征图与初始特征图进行各元素求和(element-wise sum)的方式进行特征融合,得到了多个感受野下的特征提取和融合后的初步结果,并作为第2部分的输入特征图.SFE模块的第2部分通过SENet完成在通道维度上对输入特征的重新标定,最终获得多个感受野下的特征融合结果.

本文将低层特征图中Conv3_3和Conv4_3,分别输入至两个SFE模块,输出得到加强特征表示后的特征图,作为最终进行检测的特征图.

3.3 两段反卷积和回流式反卷积

为了提高高层特征图的分辨率并融合更深层的语义信息,本文采用了两段反卷积的方式进行上采样,并采用回流式反卷积的方法减弱反卷积过程中可能存在的棋盘格效应.具体的实现结构图如图3所示.

图3 两段反卷积Fig.3 Deconvolution with two sections

两段反卷积分别从Conv11_2和Conv9_2开始,分别与其低两层的特征图进行融合,使得融合后的特征图添加了来自更深层的语义信息.反卷积采用两段而不是单独一段,可以避免因为反卷积次数过多而导致的噪声信息过多的问题.进行特征融合前,尺度小的特征层经过反卷积将特征图分辨率与待融合特征图分辨率保持一致.特征融合首先采用级联融合的方式,并在级联融合后进行1×1卷积,恢复融合前的通道数目.反卷积操作的计算公式如下:

d=s×(i-1)+k

(4)

其中,s代表步长,k代表卷积核尺寸,i为输入特征图尺寸,d为反卷积输出特征图尺寸.根据反卷积操作计算公式,设计的反卷积操作参数如表2所示.

第1段反卷积中,Conv11_2直接作为检测特征层,并进行反卷积得到Deconv11;Comb_conv10_2是由Conv10_2和Deconv11融合得到的检测特征层,并对其反卷积得到Deconv10;Comb_conv9_2是由Conv9_2和Deconv10融合得到的检测特征层.

第2段反卷积中,首先对Conv9_2进行了连续的3次反卷积,最终获得Deconv9并与Conv8_2融合得到Comb_conv8_2作为检测特征层;从Comb_conv8_2进行反卷积后需要获得尺寸为19×19的特征图,直接进行反卷积计算得到的参数中,卷积核尺寸k不能被步长s整除(其中k=3,p=1,s=2),因此会产生棋盘格效应.为了减弱棋盘格效应,此处先将Comb_conv8_2进行反卷积获得尺寸为20×20的特征图Deconv8_1,再进行卷积获得尺寸为19×19的特征图Deconv8,将Deconv8与Conv7进行特征融合得到Comb_conv7作为检测特征层.

表2 反卷积参数Table 2 Deconvolution parameters

特征图Deconv8的获取过程中,先通过反卷积获取比目标尺寸更大的特征图,再通过卷积进行下采样得到与目标尺寸相同的特征图的过程称之为回流式反卷积.这种反卷积的方式与传统直接采用反卷积的方式相比,有效减弱了棋盘格效应.同时与采用双线性插值或最近邻插值等方式先进行上采样,再进行卷积实现下采样的方式相比,回流式反卷积的方式计算量更少,网络速度更快.

3.4 多尺度特征图分类再提取的网络结构

本文设计了多尺度特征图分类再提取的网络结构,其融合了上述SFE模块和反卷积结构.如图4所示,本文模型改进了了SSD模型中的多尺度特征图结构,并保留VGG16作为主干网络.对SSD特征金字塔中的特征图进行分类后,在低层特征图中嵌入了SFE模块,加强了低层特征图的特征表示;在高层特征图中嵌入了两段反卷积来融合语义信息,并在第2段反卷积中采用了回流式反卷积的方式减弱棋盘格效应.

图4 多尺度特征图分类再提取模型Fig.4 Module based on the multi-scale feature maps classification and feature extraction

4 实验结果与分析

本文实验硬件配置为Intel Xeon(R) CPU E5-1603 v4@2.8GHz CPU,32G运行内存,NVIDIA GeForce GTX 1080Ti 显卡;实验的软件环境为ubuntu18.04系统,采用Caffe深度学习框架,开发语言为Python.本文实验所用数据集为PASCAL VOC 数据集.使用 VOC2007 和 VOC2012 数据集进行训练,数据集共包括20个类别.测试集为VOC2007数据集中的测试数据.

4.1 训练与实验结果分析

实验设置模型的输入图像分辨率为300×300,Batch size设为32.模型训练策略基本采用了SSD的策略,包括数据增强、难例挖掘、先验框尺度及比例设置以及损失函数等.优化算法采用了随机梯度下降法SGD(Stochastic Gradient Descent).针对训练过程中的学习率大小,训练过程经过多次调整,得到了最优的学习率变化方案.以PASCAL VOC 数据集进行训练和测试的模型,基本都以mAP(mean average precision)作为衡量精度的指标,并且IoU(Intersection over Union)阈值统一设为0.5.实验共生成了两种IoU阈值下的模型.第1种是将IoU阈值设为0.4,以VGG作为预训练模型,得到了mAP值为82.1的模型;第2种以第1种生成的模型作为预训练模型,并修改IoU阈值为0.5,得到了mAP值为79.6的模型.设置的初始学习率为2.5×10-3,初始学习率衰减因子为0.2,分别在10000次、25000次和35000次进行学习率调整,其对应的学习率分别为5×10-4、1×10-4和2×10-5.随后调整学习率衰减,在50000次和60000次分别以1×10-5和1×10-6的学习率进行训练.最终总共迭代65000次.将本文模型与传统的SSD算法和DSSD算法进行对比,得到的mAP值及各类对应的AP值的结果如表3所示.其中SSD300*是SSD300经过数据增强后更新的结果.

从检测结果的对比情况,可以看出本文提出的算法相比SSD算法,所有类别的AP值均有提升;相比DSSD算法,大多数类别的AP值也获得了提升.本文算法的mAP值也是3个算法中的最优结果,相比传统的SSD算法,提升了2.4%.

表3 不同算法各个类别目标检测精度对比结果Table 3 Comparison results of object detection accuracy in different categories of different algorithms

此外,为了更准确地衡量本文算法模型的整体性能,增加了FPS(frames per second)作为新的衡量指标,用于衡量模型的检测速率.同时选取了一些与本文算法输入尺度差别不大且均在VOC2007 测试集上测试结果较好的单阶段目标检测算法作为对比对象.对比结果如表4所示.

图5是目前具有代表性的单阶段目标检测算法检测性能对比图.这些算法的训练数据集与本文算法相同,均是VOC2007和VOC2012数据集,测试集也均采用了VOC2007数据集.图中横坐标是FPS,代表每秒钟检测的图片数目.FPS值反映了当前算法在本文实验环境下的检测速度.图中纵坐标是mAP,代表了算法的检测精度.根据图5可以得到,本文算法相比SSD算法,由于模型参数变多,结构更为复杂,导致

表4 在VOC2007测试集上的测试结果Table 4 Test results on VOC2007 test dataset

图5 算法速度精度对比图Fig.5 Algorithm FPS and mAP comparison chart

图6 检测结果对比Fig.6 Comparison of test results

检测速度有所下降,但是模型的检测精度却提升了2.4%;同时本文算法相比其他算法,精度仅低于Retinanet500,然而检测速度却比Retinanet500快不少,且Retinanet的输入图片尺寸明显更大,一定程度上也使得mAP值更大.本文算法与YOLOv3-320算法相比,检测速度略慢,检测精度相同.然而YOLOv3-320输入图片尺寸更大,导致目标尤其是小目标分辨率更高,更易于检测.当输入图片尺寸下降到与本文算法一致时,理论上其mAP值也会有所下降,即本文算法的检测精度略优.

4.2 检测效果对比展示

为了更为直观地展示本文算法相比SSD算法的性能提升,图6给出了两种算法在3张测试集图片上的检测效果图.其中左侧为SSD算法的识别结果,右侧为本文算法的识别结果.图6(a)中可以看出,本文算法可以识别出SSD算法漏检的部分目标;图6(b)中可以看出,对于有遮挡的目标和部分小目标,本文算法比SSD算法识别效果更好;图6(c)中可以看出,本文算法不仅可以识别出SSD漏检的部分目标,同时也能修正SSD误检的部分目标,获得正确的目标类别.总之,本文算法相比SSD算法,对于目标类别的识别更为精确,且对目标给出了准确的定位,同时在部分复杂场景下,避免了SSD算法出现的漏检和误检问题.

5 结束语

为提高传统SSD算法目标检测的性能,提出了一种对多尺度特征图进行分类再提取的目标检测算法.算法将多尺度特征图分为低层和高层两类特征图.低层特征图中采用设计的SFE模块进一步提取特征;高层特征图中采用设计的两段反卷积进行语义信息融合,并采用设计的回流式反卷积减弱棋盘格效应.实验结果表明,本文算法相比经典的SSD系列算法,精度优势明显;相比YOLO系列算法,性能与目前最新的YOLOv3相比,检测精度也略有优势.同时本文提出的SFE特征提取模块和回流式反卷积的方法有较好的移植性,可以在一定程度上提升其他算法的性能.下一步将针对算法中部分模块的移植性进行研究,将其应用于更多的算法上;同时将进行算法模型的进一步简化,特别是SFE模块中参数量的进一步减少,从而提升算法的检测速度.

猜你喜欢

金字塔尺度卷积
“金字塔”
基于全卷积神经网络的猪背膘厚快速准确测定
环境史衰败论叙事的正误及其评判尺度
基于FPGA的卷积神经网络加速优化方法
基于图像处理与卷积神经网络的零件识别
Great Vacation Places
基于深度卷积网络与空洞卷积融合的人群计数
金字塔是用金子造的吗
以长时间尺度看世界
9