一种改进的SSD目标检测算法
2021-07-13张争,王宇
张 争,王 宇
(河南广播电视大学 信息技术中心,河南 郑州 450008)
一、引言
目标检测是在图像中找到感兴趣目标,并确定其类别和位置。作为计算机视觉研究领域的研究热点和难点,目标检测被广泛地应用于智能监控、智能交通、智慧医疗等领域。近几年,虽然深度卷积神经网络(CNNs)强大的表示能力推动了图像分类、目标检测的成功,但是目标检测任务还远远没有解决,其中一个主要原因是卷积网络在处理难样本,特别是小目标分类时,消除高歧义仍然存在困难。[1]为了缓解这一问题,工业和科学界的研究人员提出了许多方法,主要包括基于特征金字塔融合方法和级联检测器的两类方法。特征金字塔融合方法主要有FPN[2]、TDM[3]、DSSD[4]、FSSD[5]和FP Reconfig[6],该类方法通过将语义更深的特征聚集到较浅的层次来解决小目标检测中的模糊性,通常,从主干中提取的一组特征映射跨尺度融合在一起,产生金字塔式的表示,在此基础上进行后续的检测操作。最早Lin等人提出了特征金字塔网络(Feature Pyramid Network,FPN),该网络通过迭代上采样和像素加法,将较高层次的判别特征融合到较低层次上,融入高层的语义信息和低层的位置信息。在此基础上,提出了TDM,将融合操作由像素加法改为像素级联。除了这两项基础工作外,还提出了一些更为复杂的特征金字塔融合方法,如FSSD重构了特征金字塔,通过把网络中某些特征进行尺度调整,特征图较小的层进行上采样来统一到同一尺寸,并通过级联对特征连接。DSSD算法通过利用上下文信息和反卷积操作,单向融合了低层特征和高层特征,提高了小目标检测的准确性。FP Reconfig通过非线性方式将特征金字塔进行重构,融入低层和高层语义特征,对全局关注和局部重新配置组成,获得全局与局部的不同空间位置和尺度的特征。该类基于特征金字塔融合的方法普遍存在的问题是必须先获取融合后的特征图,然后在特征图上对其进行目标检测,而没有直接对底层特征进行监督,认为更高级的特性更容易实现区分,从而将语义更深的特征融入到浅层来解决小目标检测中的歧义性,虽然获得的高层区别性的信息增强了小目标检测的特征,但融合过程缺少有效监督,导致对高级特征的过度依赖,从而使当前级别得不到充分的学习。
级联检测器的方法,如Cascade[7],主要是两阶段检测器。两阶段检测器首先提取一组候选框(区域生成),然后使用头部子网对每个候选窗进行分类和定位,得到最终检测结果。由于头部网络多次应用于处理区域生成集,通过多次预测优化目标检测获得更精确的结果,两阶段检测器通常检测效率较低,但检测精度较高。该类算法典型的有R-CNN[8]和Fast R-CNN[9]系列,其中R-CNN采用selective search提取候选区域,然后进行特征提取,用获得的特征进行分类,用非极大值抑制和边界框回归进行精确检测。Fast R-CNN是在R-CNN的基础上,进行了相关改进,将特征提取、区域分类等融合在一起,将分类与回归同时训练,极大地提升了训练中的空间耗费问题,同时该方法采用了VGG-16网络,相比R-CNN精度和速度都有了极大提高。但两阶段方法只在定位过程中进行显式求精,而对于目标分类任务,通过在不同的级联阶段重新评分来生成多个预测,这意味着在级联阶段不考虑早期阶段的分类分数。因此,不能最大限度地减少小目标分类的歧义性。
为了避免对高阶特征的过度依赖,减少小目标分类处理过程中的歧义性,本文在SSD网络[10]结构的基础上,引入一种新的逐步求精网络,通过对分类分数进行多次求精即通过逐步融入上层上下文回归残差,并在求精的每个阶段用特定的权重直接保留分类的监督信号,利用监督信号对所有阶段进行整合,获得最终分类分数,从而减少目标分类歧义。该方法避免了对高层信息的过度依赖,在当前尺度级别上提供了充分的学习,实验表明该方法在PASCAL VOC数据集上,相对当前经典方法获得了更高的准确度。
二、改进的SSD方法
SSD是典型的one-stage深度学习算法,该类方法是不单独选取候选区域进行预处理,整个检测流程是单一阶段。SSD网络采用的基础网络为VGG-16,SSD网络结构图如图1所示,把VGG的两个全连接fc6、fc7转化为两个卷积层conv6、conv7,通过3×3、1×1的卷积核对conv7进行卷积形成特征金字塔,利用SSD提取6个尺度特征图。提取 的 特征图是conv4_3,conv7,conv8_2,conv9_2,conv10_2和conv11_2,形成特征金字塔,通过多个尺度的特征图汇聚更丰富的高层语义特征和不同大小的感受野进行目标检测。SSD算法通过多尺度特征来进行不同尺寸目标的检测,通过大尺度的特征图检测小目标,通过小尺度特征图检测大目标,从而一定程度上提高了小目标检测的准确性。同时,该网络借鉴锚点方式,采用不同尺度、不同长宽比例的先验框实现目标检测,提高了多目标检测的准确性。
图1 SSD网络结构图
SSD系列算法虽然一定程度地提高了小目标检测的准确性,但其在低层特征学习上不充分,特征表征能力较弱,为了克服SSD网络过分依赖高层信息,充分学习底层信息,本文提出一种逐步求精网络。假设获取n个特征图x1,x2,…,xn,首先对SSD提取的特征图x2,…,xn,利用1×1卷积生成一组新的特征图集合h2,h3,…,hn。把获得的特征集合作为求精的特征图。接下来,对于某一个特定i尺度下,对特征图xi进行3×3卷积,作为softmax的输入,用于第i层中锚点的基本分类分布,记作?是一个Hi×Wi×(K+1)Ai形状的张量,其中Hi×Wi是xi的空间大小,K+1是类的数量和Ai表示在xi每个网格单元中锚点数量。进行k-stage逐步分数求精,然后从集合{hj}n j=2中提取k个特征图,即hi+1,hi+2,…,hi+k,利用高层上下文特征hi+1对zi0的一阶残差进行回归,表示为ℜ1(zi),并融入前一阶段求精的softmax输入中,执行k次迭代,产生每个阶段softmax输入:
其中λj(0≤j≤k)控制在每一个阶段的监督信号的强度和=1,由于小目标通常分布在较低的级别,我们对尺度1、2、3级进行逐步的分数优化。针对优化的阶段数目设定为2,利用权重控制在每个阶段的分类监督信号的强度,λ0=λ1=0.25,λ2=0.5,因为我们求精的最高等级是3级,我们做2个阶段的逐步求精,h1最高的等级是h5。所以,我们在x2到x5输出减半,利用1×1的卷积,得到在h2到h5作为用于优化的特征图,h6是被忽略的。对于水平4,5和6,分类模型与原始的SSD保持一致。定位只需要主干特征图x1,x2,…,x6。如图2所示。
图2 融合逐步求精在SSD网络的结构图
对于在第7级通过SSD提取的大小512×512的输入,对于尺度1,2,3和4,我们利用2阶段的逐步求精。其他设定与300×300输入尺寸设定是一样的。我们得到的两种输入尺寸下的模型分别表示为PRN300和PRN512。训练的目标函数,对于逐步求精来说,总的训练目标函数由两部分组成:
分类损失Lcls表示为:
分别包含第1级到m级的逐步求精和不执行逐步求精的其他级别。对于后者分类损失与基准SSD相同。在300×300输入下,设置m=3,n=6,边框回归Lloc的定位损失与原始SSD中的定义相同。使用因子α来平衡定位和分类,在我们的方法中根据经验设置为2.5。
三、实验与分析
为了验证算法的有效性,在PASCALVOC 2007数据集上进行了相关实验,该数据集是经典数据集,数据集包含20个类别,同一图像可能包含多尺度不同目标,主要应用于图像分类,目标检测、分割等算法性能验证。整个实验环境使用NVIDIA (R)GTX (R)1080TI显卡,Intel Core TM i7-6800 K CPU处理器,128G内存,在Ubuntu16.04系统下采用灵活的Pytorch开发框架实现,训练时采用VOC 2007+2012的训练集合,测试采用VOC 2007的测试集。
训练时Minibatch大小为32,优化采用随机梯度下降算法,Momentum与权重的衰减率分别为0.9和0.0001。该模型训练采用逐步升温的策略,初始学习率为0.001,衰减率为0.1,测试阶段IoU阈值采用0.45。
在PASCAL VOC 2007数据集上,如表1所示。输入大小300×300,利用融入逐步求精网络的模型平均精度达到79.5%,超过许多其他以SSD探测器,包括DSSD,STDN,FSSD。它达到了与深度特征金字塔重构FP Reconfig方法相当的精度,后者基于特征金字塔融合,使用了手工设计的融合转换。如表2所示,本文算法运行速度非常快(75.7 fps),与其他类似SSD算法相比速度具备更多的优势,特别是与DSSD、FP Reconfig方法相比速度得到了极大的提升。
表1 在PASCAL VOC 2007数据集上的结果
表2 在PASCAL VOC 2007数据集上,输入大小为300×300的处理速度
四、结论
本文提出了一种新的逐步求精网络,并把该网络融入到经典的SSD算法中,形成改进的SSD目标检测算法。新的增强尺度鲁棒性的逐步求精网络,采用的是逐步分数求精,而不是多次重复预测分数,通过自适应地逐步增加预测的残差,可以得到歧义性较小的分类分布。同时,为了得到最终分数,对求精的各阶段,采用的整合方式也有助于稳定分类分布,减少求精错误的副作用,通过高层特征解耦,在小尺度上定位时引入具有更多空间信息的特征。把逐步求精网络融入到基本的SSD深度学习框架,从而提出了改进的SSD算法,该方法有效融入当前尺度信息,避免过分依赖高层信息,相比特征金字塔融合更为有效。