基于PDSSD改进型神经网络的小目标检测算法

2021-01-15 08:29陆振宇詹天明戴玉亮
计算机应用与软件 2021年1期
关键词:空洞金字塔尺度

王 鹏 陆振宇 詹天明 戴玉亮 芦 佳

1(南京信息工程大学电子与信息工程学院 江苏 南京 210044) 2(南京审计大学信息工程学院 江苏 南京 211815)

0 引 言

随着科技的发展和进步,人们日常生活中接触的设备越来越智能化,图像识别作为智能设备的一个重要因素也获得了长足的发展和进步。根据不同对象自动采取相对应的解决方案是一个智能设备必不可少的能力,而拥有一个高精准率的图像识别算法对于智能化设备来说在定位对象方面如虎添翼。图像识别是计算机对一幅图像进行分析和计算之后,识别出所需要的目标和对象的技术,在算法上可以分为目标检测,目标分类和通过数据库匹配输出目标身份三个部分。目标检测作为图像识别的首要部分有着举足轻重的地位,必须将目标成功检测才能进行识别,目标检测的精度对最终目标识别的精度有很大的影响,因此目标检测也一直是计算机视觉领域的热门话题之一。

1994年以来,目标检测算法的研究从未间断。时至今日目标检测领域已经诞生了很多算法,如Haar特征加上Adaboost特征检测[1-3],通过基于级联分类模型的分类器和矩形特征来实现目标检测,由于Haar特征仅仅使用了很弱的特征,用Haar特征做分类的检测器也是弱分类器,且Haar特征的精度靠的是多个弱分类器来实行一票否决式推举来提高命中率,因此Haar特征分类的性能有限,分类器的个数只能通过不断尝试才能确定。除此之外,还有Hog特征和Svm算法[4-6]。Hog检测器沿用了最原始的多尺度金字塔加上滑窗的思路进行检测,并在图像提取中引入了区块(Block)的概念,将相邻的细胞单元归并为一个Block,并在Block内对细胞单元特征进行局部归一化,这样可以进一步增强其光照不变性以及非线性表达能力。虽然Hog特征能较好地捕捉局部形状信息,对几何和光学变化都有很好的不变性,但对被遮挡的目标以及动作幅度过大的目标检测都不是很理想。这些传统的算法都可以实现目标检测,但是效果不是很理想,不能满足要求极高的目标检测任务。随着硬件条件的提升,目前深度学习在目标检测领域有了突破性的发展,并且深度学习算法效果已经全面超越了传统算法,因此深度学习算法更适合用于目标检测。

近年来,随着目标检测在各个领域的广泛运用,在深度学习方面诞生了很多基于卷积神经网络(CNN)的新算法。在这些算法中最引人注目的有两个分支,一是双阶段检测Region-based-CNN(R-CNN)[7]。R-CNN是深度学习在目标检测领域真正意义上的第一个算法,其思路与传统目标检测类似,先寻找目标可能出现的候选区域,再使用CNN预测相对应的类别,最后对这些候选区域使用边界框回归模型进行修正。随着研究的不断深入,在R-CNN的基础上出现了Mask R-CNN[8]、Fast R-CNN[9]、Faster R-CNN[10]等一系列算法。另一个分支是单阶段预测,直接预测每一个默认框的置信度和偏移量算法,包括Single Shot Multibox Detector(SSD)[11]、Deconvolutional SSD(DSSD)[12]、You Only Look Once(YOLOv1)[13]、YOLOv2[14]、YOLOv3[15]等。YOLOv2和YOLOv3是YOLOv1的改良版,在精度和速度上都有了很大的提升。SSD相对于YOLO速度更快但精确度低一点,DSSD是SSD作者对SSD的升级,将基础网络VGG16[16]改为了Resnet101[17],并在原特征层后添加了反卷积网络。DSSD与SSD相比虽然提高了精度,但是训练速度有大幅度的下降。SSD是2016年提出的网络结构,在当时拥有远超其他算法的速度以及拔群的识别效果,虽然与最近提出的一些算法相比,识别效果已经略微落后,但是不可否认的是SSD拥有很高的可以被改进的潜力。最近提出的一些机制能够有效地对神经网络进行优化,例如空洞卷积、注意力机制和残差网络等。将SSD网络运用于目标检测最主要的缺点在于图像中小目标的检测。针对SSD在目标检测方面的缺点,选择融合最近提出的一些算法来对SSD进行改进。

空洞卷积[18-22]可以降低图像尺寸提高感受野,并且在很多研究者的实验中证明了加入空洞卷积的神经网络在池化、提取特征以及感受野方面有一定的提升。除此之外还有残差网络[23-24],可以提高网络提取特征的能力,大量的实验证明了残差具有提高神经网络提取特征的能力,但同时会损耗大量的时间。基于以上的几种方法,选择将空洞卷积对SSD进行强化,将空洞卷积组成空洞金字塔模块(PDC模块)结合到SSD的低层网络特征层中,可以提高底层网络的语义信息和感受野,将空洞卷积组成特征空洞金字塔模块(FPDC模块)结合到SSD的网络特征层可以提高网络提取目标特征的能力。在PASCAL-VOC数据集上的测试结果表明,本文所提PDSSD方法比目前主流的算法具有更高的识别精度和训练速度。

1 SSD简介

1.1 网络结构

SSD使用简化的VGG16作为基础网络,与传统VGG16相比,SSD利用Astrous算法将VGG16中的两个全连接层fc6和fc7层转化成了conv6和conv7两个卷积层。并利用conv7层与3×3和1×1大小的卷积核的不断卷积形成特征金字塔结构。然后从特征金字塔中选出conv7、conv8_2、conv9_2、conv10_2、conv11_2层,以及VGG16中的conv4_3层作为特征层。

1.2 Prior Box

(1)

式中:m是特征层的数量。由于数据集图片样本的多样性,本文采用了SSD作者在DSSD中改进的方法,添加了一组纵横比,原SSD网络使用的纵横比为(1.0,2.0,3.0,1/2,1/3),现在变为(1,1.6,2.0,3.0)。

1.3 loss函数

SSD的loss函数包含预测类别损失和预测位置偏移量损失两部分,其中总损失函数公式如下:

(2)

式中:N表示被挑选出来的包含正样本和负样本在内的默认框的总数;x表示输入的图像;c为每一类的置信度;l表示预测的框;g表示标签的框;Lloc(·)表示位置偏移量损失,即默认框与标签所标记的框之间的位置偏移和网络所预测出来的位置偏移量之间的损失;Lconf(·)是预测类别损失即多类别Softmax loss;α表示位置偏移量损失的比率,初始值设为1。Lloc(·)定义为:

(3)

(4)

(5)

(6)

(7)

(8)

(9)

(10)

2 PDSSD模型

本文使用的PDSSD网络结构如图1所示,在VGG16中的conv4_3特征层和conv7特征层后加入了特征空洞金字塔模块(FPDC模块),并将SSD中conv8_2层通过空洞金字塔模块(PDC模块)产生的PD8_2层代替原来的conv8_2层。PD8_2层通过不断卷积产生的PD9_2、PD10_2、PD11_2层也取代原conv8_2、conv9_2、conv10_2、conv11_2层作为新特征层。

图1 PDSSD模型

2.1 空洞金字塔模块及其结构优化

SSD网络在检测小目标的方面一直表现不佳,原因如RRC[25]和RON[26]所述。SSD在检测目标时,使用浅层的特征层来检测小目标,用深层的特征层来检测大目标,然而浅层所能提取的特征信息远远低于深层的特征层,因此SSD对小目标的检测性能会不太理想。基于此,认为提升浅层部分的感受野和信息能够有效地提升SSD网络对小目标的检测。不仅如此,提升浅层部分的感受野对于深层部分的检测精度也有一定的提升。最近提出的空洞卷积是解决这个问题的很好的选择,空洞卷积能够在卷积核大小不变的前提下进行扩张,提高卷积核的感受野,并且能保证输出的特征层的大小不变。

ASSP[27]和Pyramid Dilated Deeper ConvLSTM[28]等都使用了空洞金字塔的结构,并在图像语义分割和视频流检测上获得了不错的成果,证明了空洞金字塔结构用于捕获多尺度的信息以及更高密度的提取特征时有一定的提升。基于此,我们也使用了类似的结构,并在受到了DSSD和残差网络的启发后做出了一些改进。DSSD在加入反卷积网络时,将两个矩阵进行了点和,丰富了特征层的信息,因此在将SSD中的conv_8层融合了空洞金字塔模块之后又尝试与conv_8层本身进行了矩阵相加。整体结构如图2所示。

图2 空洞金字塔模块

在空洞金字塔模块中,输入的图片分别进行扩展尺度为3、5、10的空洞卷积,然后将三个空洞卷积的结果用concat算法结合到一起与大小为1×1×512、步长为1的卷积核进行卷积,卷积的结果与原输入图片大小为1×1×512、步长为1的卷积核卷积的结果进行矩阵相加得到输出。

(11)

(12)

(13)

T=({F1,F2,F3}⊗(R1×1×512)s2=1)⊕(F0⊗(R1×1×512)s2=1)

(14)

每一个核大小为c、扩展尺度为r的空洞卷积都能提供[(c-1)2r-1]大小的视野,人眼在观察到物体的一些背景之后才能更加突出物体的特征,使用不同扩展尺度的空洞卷积并且将这些空洞卷积放到一起就能够模拟出人眼观察物体的情形。而且空洞卷积具有使输出的图片大小不变的特性,这样能够提高感受野并提高特征提取密度的方式,很适合用来提升SSD的性能。

在测试不同扩展尺度时,由于SSD卷积层大小以10、5、3的大小依次下降,尝试将扩展尺度与SSD额外添加层的大小对应起来设为3、5、10后发现与ASSP将尺度设为6、12、18,以及Pyramid Dilated Deeper ConvLSTM将尺度设为1、4、8的测试结果相比准确度更高,并且使用数值更大的扩展尺度测试效果反而会下降。因此最后将其扩展尺度设为3、5、10。将conv8层经过空洞金字塔模块后产生的层替代原SSD网络的额外添加层conv8,这样可以使SSD剩余的添加层的输入由原来的F0⊗(Rc×c×C)s2变为T,在提取特征时也能获得比之前更高的感受野,对整体网络的检测效果有较明显的提升。由于空洞卷积的性质,能用较少的参数获得更多的视野,再加上模块中使用了很多1×1的卷积进行降维和升维,有效地减少了模块的计算参数,因此即使在SSD加入了空洞金字塔模块后,整体网络的训练速度也没有损失多少。

2.2 特征空洞金字塔模块

SSD网络一共有6个特征层,由浅到深分别是conv4_3、conv7、conv8_2、conv9_2、cov10_2、conv11_2。其中使用conv8_2经过空洞金字塔模块后产生的PD8_2层代替了SSD原来的conv8_2特征层,所以conv9_2、cov10_2、conv11_2三个深层的特征层也转化为了PD9_2、PD10_2、PD11_2。虽然加入了空洞金字塔之后的SSD网络的检测能力有了不少的提升,但由于SSD使用浅层特征层检测小目标的原理,conv4_3和conv7两个最浅的特征层提取小目标的能力仍然不强,因此提出针对特征层优化的特征空洞金字塔模块,如图3所示。

图3 特征空洞金字塔模型

与空洞金字塔模块相比特征空洞金字塔没有在concat算法之后与原矩阵进行相加,并且由实验测试之后将空洞卷积的扩张尺度扩大为6、12、18。由于特征层会直接输入到预测算法,将concat算法后的结果与原矩阵相加意义不大而且会增加计算量,因此直接将concat算法后的结果作为新的特征层。在不改变特征层大小的前提下,进一步扩大特征的感受野和语义信息可以有效地提高原conv4_3层和conv7层对小目标的提取能力。

3 实 验

3.1 实验步骤

实验步骤如图4所示。

图4 实验步骤

3.2 实验数据集

实验时使用的数据是PASCAL-VOC数据集,PASCAL-VOC是一个用于计算机视觉项目中图像分类、检测和分割的一整套标准化的优秀的数据集。PASCAL-VOC数据集文档详细,使用非常方便,在计算机视觉领域研究论文中应用非常广,是图像领域分类、检测和分割算法性能检验的标准数据集之一。

2005年至2012年每年欧盟资助的PASCAL组织都会举行一个世界级的计算机视觉挑战赛PASCAL VOC挑战赛,这个比赛使用的数据集就是PASCAL-VOC数据集。

PASCAL-VOC数据集包括VOC2007和VOC2012两个版本,VOC2012是VOC2007的升级版,包括了11 530幅图片,两个版本标注的内容都包含了人、动物、车、家具等20种类别。VOC2007包含9 963幅标注过的图片,由训练、验证和测试三部分组成,VOC2012由训练和测试两部分组成。在实验时将VOC2012和VOC2007的训练部分组合在一起作为训练集,由于训练集直接参与模型调参的过程,不能反映模型的真实性能,并且需要验证集帮助调整参数和防止过拟合,因此凭借着充足的数据量借鉴留出法将VOC2012和VOC2007的测试部分的四分之三作为测试集,四分之一作为验证集。因此有19 000多幅训练集图片,2 000多幅验证集图片,5 000多幅测试集图片。

3.3 实验环境和模型评估指标

实验时使用的机器为TITAN X,编程语言是Python 3.6,框架是Tensorflow1.4。

实验时评价网络性能好坏的标准采用的是AP值、mAP值和FPS。其中AP值是用于评价模型性能指标之一,可由精度(precision)和召回率(recall)组成的PR曲线图中曲线与xy轴所围成的图形面积计算得知。精度(precision)表示检测正确的数据个数除以总的检测个数,召回率(recall)表示检测正确的数据个数除以标签之中所有正数据个数。mAP值是所有的AP值的和除以检测的类别,也是鉴定多目标检测网络性能的主要指标。FPS代表网络训练时的速度表示每秒钟网络处理的图片数。

3.4 空洞金字塔模块扩张尺度

实验在构建好SSD网络后,先加入了空洞金字塔模块并测试不同的扩张尺度来确定最优尺度,为保证实验准确,每次实验的学习率设为0.000 1,Batchsize设为8。尝试的扩张尺度并不是随意取值,而是以目前主流的空洞卷积最优尺度以及被认为可以获得较好的结果的一些尺度,将只加入空洞金字塔模块的SSD称为PDSSD-a,括号内为扩张尺度,在以输入图片大小为300×300的前提下,实验结果如表1所示。

表1 PDSSD-a300在不同扩张尺度下的结果

越大的扩张尺度不代表越高的精度,而过小的扩张精度提升有限,为了保证准确,在输入为512×512的条件下进行一次实验,结果如表2所示。

表2 PDSSD-a512在不同扩张尺度下的结果

续表2

结合表1和表2的实验结果,当扩展尺度为3、5、10时,模型可获得最高的mAP值,因此本文最终将空洞金字塔模块的扩张尺度定位为3、5、10。

3.5 特征空洞金字塔模块扩张尺度

在确定了空洞金字塔模块的扩张尺度后,尝试单独加入了特征空洞金字塔模块,并且都做了不同扩张尺度的实验测试,结果如表3所示。

表3 两个FPDC模块在不同尺度下的实验结果

由实验结果可得,扩张尺度越大,网络的表现越稳定,并且与小尺度的扩张结果对比,网络的整体性能有一定的提升。虽然在输入为512×512的条件下,特征空洞金字塔模块的扩张尺度设为6、12、18没有将尺度设为6、12、18和3、5、10的精度高,但两者精度相差不远,并且考虑到300×300条件下,两个特征空洞金字塔模块尺度都设为6、12、18时的精度最佳,因此根据实验结果最终选择将两个特征金字塔模块的扩展尺度定为6、12、18。

3.6 模型训练参数

在选择最佳特征空洞金字塔模块和空洞金字塔模块的扩张尺度后,对整体的PDSSD网络进行了调参,由于网络具有一定的复杂性,过大的学习率和Batchsize会导致loss梯度爆炸和显存溢出,能保证网络正常训练的最大的学习率和Batchsize是0.000 1和8。当学习率降低到0.000 01时,会导致loss收敛过慢。因此在实验测试之后本文最终将学习率设为0.000 05,Batchsize设为8。

3.7 算法对比

将调参后的PDSSD网络的训练结果与在同样学习率和Batchsize以及数据集下的目前主流的一些算法进行了对比,包括了SSD作者对SSD的升级网络DSSD、YOLOv2、Fast-Rcnn、Faster-Rcnn。实验结果如表4所示。

表4 VOC2012测试集测试结果

续表4

实验结果表明:在加入空洞金字塔模块和特征空洞金字塔模块之后,在300×300的输入下,PDSSD检测大部分类别的AP值相比于SSD都有了很大的提升,mAP值提高了4.1个百分点;在512×512的输入下,PDSSD的mAP值相对于SSD提高了4.5个百分点,而且在速度方面并没有降低多少。相比于SSD的升级版DSSD,改进后的网络拥有更高的mAP值,并且在速度上快了2倍多。与其他主流算法相比,PDSSD网络在20种类别的检测中有最多的最高AP值和最高的FPS。

3.8 不同模块对模型的提升

对在SSD300中分别加入空洞金字塔模块和特征空洞金字塔模块对网络性能的提升做了测试,结果如表5所示。

表5 不同模块对模型的提升

单独添加特征空洞金字塔模块虽然没有添加空洞金字塔模块的提升明显,但特征空洞金字塔对浅层特征层提取特征的能力有一定加强。因此同时加入空洞金字塔模块和特征空洞金字塔模块才能充分地提高模型的检测能力。

3.9 对小目标图片检测测试

除了网络的性能提高之外,加入了空洞金字塔模块和特征空洞金字塔模块后的SSD在小目标的检测的能力上大大提升。从测试集中提取了一些有小目标需要识别的图片用于对比SSD和PDSSD的小目标的检测能力,效果如图5所示。

(a) SSD检测效果 (b) PDSSD检测效果

图5中,(a)、(c)、(e)、(g)是SSD的检测效果图,(b)、(d)、(f)、(h)是PDSSD的检测效果图。(a)和(b)是同一幅测试集图片,PDSSD相对于SSD能够成功检测图中远处较小的人和狗;(c)和(d)是同一幅测试集图片,SSD未能检测到图中目标相对较小的船而PDSSD能成功检测;(e)和(f)是同一幅测试集图片,其中PDSSD能够准确地识别出远处的几个很小的目标而SSD未能全部识别;(g)和(h)是同一幅测试集图片,PDSSD相对SSD能成功识别右侧的小羊。以上测试图片的结果证明了加入空洞金字塔模块和特征空洞金字塔模块确实能提高SSD对于小目标的检测能力,从而提高整体网络检测目标的mAP值。

4 结 语

本文提出一种通过加入空洞金字塔模块和特征空洞金字塔来提高SSD神经网络检测多目标能力的方法。本文改进后的模型在PASCAL-VOC数据集上的检测结果显示其拥有比目前主流的算法更高的准确率和更快的速度,并且在512×512的输入下mAP值达到了82.1%,比YOLOv2和DSSD的正确率更高。除此之外,本文根据SSD对小目标检测性能不高的原因提出了改善方法,并通过实验证明了可行性。

下一步将缩小对不同种类检测的精确度的差异,提高分类和识别的准确度。然后尝试引入TDM模块和反卷积网络来进一步改善网络的性能,以及尝试借鉴GAN对抗网络来提高检测的效果。

猜你喜欢
空洞金字塔尺度
“金字塔”
环境史衰败论叙事的正误及其评判尺度
Great Vacation Places
北极上空出现罕见臭氧层空洞
利用瑞利波法探测地下空洞
金字塔是用金子造的吗
空洞的眼神
以长时间尺度看世界
9
班有活宝