DSSD : Deconvolutional Single Shot Detector论文阅读笔记

文章目录

  • DSSD : Deconvolutional Single Shot Detector论文阅读笔记2017
    • Abstract
    • 1. Introduction
    • 2. Related Work
    • 3. Deconvolutional Single Shot Detection (DSSD) model
      • 3.1 Using Residual-101 in place of VGG
      • 3.2 Prediction module
      • 3.3 Deconvolutional SSD
      • 3.4 Deconvolution Module
      • 3.5 Training
    • 4. Experiments
    • 5. Conclusion

DSSD : Deconvolutional Single Shot Detector论文阅读笔记2017

Abstract

本文的主要贡献是提出了一种方法,将额外的context引入到SOTA通用的目标检测中。==实验中,我们首先将一种SOTA分类器(ResNet-101)和快速检测框架SSD进行组合。然后我们增加了反卷积层来引入额外的大尺度context,提升了准确率,尤其是对小目标,因此我们将模型叫做DSSD。==尽管这两个贡献在高等级上很好描述,但是naive implementation没有成功。相反我们发现,添加learned transformations的其他阶段,尤其是反卷积中的一个前馈连接模块和新的输出模块,可以使得新的模型有效,并有进一步发展的潜力。我们的DSSD,513 * 513输入的情况下,在VOC2007test取得81.5% mAP,在VOC2012test取得80.0%mAP,在COCO取得33.2% mAP,超过了目前SOTA模型R-FCN。

1. Introduction

本文主要贡献是对SOTA目标检测中加入了额外的context信息,最后结果取得了SOTA同时可以保持较快的速度。我们首先组合SSD+ResNet-101,然后引入了额外的大尺度语义信息,提升了准确率,我们的模型叫做DSSD。

最近两年,有一种研究趋势是回到滑窗方法(one-stage)。这个想法是,不再首先提出proposal然后分类,而是直接进行预测。这些方法将潜在的bbox数量减少,对每个box预测一个分数,然后预测offset,最近的YOLO和SSD都比较有效,且速度较快。

**当寻找继续提高检测准确率的方法时,明显的目标就是更好的特征网络和增加更多的context,尤其是小目标的,以及提升bbox的空间分辨率。**之前的SSD网络基于VGG,目前我们使用更好的ResNet-101。目前在检测外的领域上的研究,**出现了一种可以整合context的网络,“encoder-decoder”,网络中,中间的瓶颈层用来将输入图像的信息编码,然后后续的更大的层将它解码成一个map。这种宽-窄-宽的结构通常称为沙漏。**这些方法在语义分割和位姿识别上取得了很好的效果。

然而,这些修改,无论是使用更深层的ResNet-101还是在SSD特征成之后加入反卷积层,都无法直接使用。因此,十分有必要构建一个组合模块,来整合反卷积,和输出模块(在训练的时候隔离ResNet-101),并可以有效学习。

2. Related Work

主要的目标检测方法,包括SPPnet、Faster R-CNN、R-FCN、YOLO都使用最后一层conv的特征图来进行检测不同尺度的目标。尽管有效,使用这一层特征图检测所有可能的目标尺寸,负担较重。

通过检测多个特征图,可以提高准确率。第一类是将不同的特征图进行组合,在组合的特征图上进行检测,比如ION、HyperNet。组合的特征图有来自图像不同尺度的特征,但是组合的特征图不仅增加了模型的内存占用量,也降低了速度。

另一类是在不同尺度的特征图上进行预测,比如SSD、MS-CNN等。然而,为了检测小的目标,这些方法可能会使用更浅层的信息,这回导致在小目标上效果不佳,因为浅层的特征的语义信息较少。通过使用反卷积层和skip connections,我们可把更深层的语义信息注入,这就可以帮助检测小的目标。

还有另一条研究线路是在预测中包括语义context信息。Multi-Region CNN不止对region proposal进行池化获得特征,同样预先定义了一些区域,比如半部分、中央、边界和context区域,对这些区域进行池化。我们使用一个encoder-decoder的沙漏结构来在预测之前传递context信息。反卷积层不止解决了CNN中特征图分辨率缩小的问题,同样为预测带来了context信息。

3. Deconvolutional Single Shot Detection (DSSD) model

我们首先回顾SSD的结构,然后设计了一个新的预测模块,可以提升训练效果。然后我们探讨如何增加反卷积层来构建沙漏结构,并将新的反卷积模块整合,对最后的DSSD模型传递语义context信息。

SSD

SSD建立在一个基础网络之后,增加了一系列的小的卷积,如图1上。每个增加的层,以及一些前面的base层用于预测bbox。这些预测通过3 * 3 *#通道的卷积核进行。使用了NMS进行后续处理,具体结构见原论文,使用VGG作为基础网络。DSSD : Deconvolutional Single Shot Detector论文阅读笔记_第1张图片

3.1 Using Residual-101 in place of VGG

我们首先将基础网络更换为ResNet-101,如图1上。我们在conv5_x block之后加层,然后对conv3_x、conv5_x、以及后续的增加层进行预测。这样没有提升准确率,如后续的表4中实验,在321 * 321输入的时候,取得了76.4%的mAP,低于原来300 * 300输入,使用VGG的77.5%mAP(表3)。增加额外的预测模块之后,有效的提升了表现。

3.2 Prediction module

原来的SSD中,目标函数直接应用到选择的特征图上,对conv4_3使用了L2归一化,因为梯度太大。MS-CNN指出,提升子网络可以提升准确率,因此我们对每个预测层增加了一个残差块,见图2c。我们同样尝试了原来的SSD(a),以及使用带有跳跃连接的残差块(b)和两个连续残差块(d)。DSSD : Deconvolutional Single Shot Detector论文阅读笔记_第2张图片

不同预测模块的对比见表4,并在第四部分讨论。我们注意到ResNet-101和预测块的表现比没有预测块的VGG效果好(即使VGG的输入分辨率更高)。

3.3 Deconvolutional SSD

为了引入更高等级的context,**我们将预测放在一系列反卷积层之后(反卷积层放在原SSD之后),组成了一个对称的沙漏的结构,如图1下所示。我们的DSSD模型基于SSD和ResNet-101,增加的反卷积层用来提升特征图的分辨率。为了加强特征,我们使用了跳跃连接。**尽管沙漏模型包含了对称结构(编码和解码阶段),我们将解码阶段设置的很浅,原因有两个。一是检测是视觉中的基础任务,可能需要为下游任务提供信息。**因此,速度是一个关键因素。构建对称网络意味着测试的时间会翻倍,这不是我们想要的。**第二,目前没有包含decoder阶段的检测的预训练模型。SOTA方法依赖于迁移学习,使用预训练的分类模型,再进行微调。因为没有预训练的decoder模型,我们必须随机初始化从头训练。而反卷积层的重要影响是计算花费较大,尤其是还添加了之前层的信息。

3.4 Deconvolution Module

为了将前面特征图的信息整合到反卷积层之中,我们使用图3中的反卷积模块设计。DSSD : Deconvolutional Single Shot Detector论文阅读笔记_第3张图片

这个模块应用到DSSD的结构中,如图1下的实线圆所示。这个反卷积模块受到Pinheiro等人的启发,他们的论文中表明反卷积模块的精简版本有着与复杂版本相同的准确率,并且更有效率。

我们的反卷积模块中:

  • 每个卷积层之后都加了BN层;
  • 使用了学习到的反卷积层,而不是双线性上采样;
  • 我们尝试了不同的组合方法:逐元素相加和逐元素相乘,结果表示逐元素相乘取得更高的准确率。

3.5 Training

我们使用与SSD相似的训练策略。首先,需要匹配一系列目标的GT box。对于每个GT box,我们将它与最大IoU的默认box以及IoU大于某个阈值(比如0.5)的box进行匹配。对于不匹配的box,我们按照confidence loss排序,选择loss最大的一些,使得负正样本比例为3:1。然后我们使得定位和分类的联合loss最小化。因为没有Faster R-CNN中的特征/像素的resample阶段(即第二阶段),我们使用了数据增强,包括裁剪、随机光度畸变、随机水平翻转。

我们同样在先验框的长宽比上做出一点改变。原SSD中,长宽比为2、3的实验中证明很有效。为了找到训练数据上合适的长宽比,我们使用k-means聚类。刚开始k设为2,如果错误率可以降低至少20%,就增加聚类数量,结果见表1。因为SSD将输入图像resize到正方形,大部分的训练图像是更大的,因此大多数bbox是较高的也不奇怪。基于这个表格,我们看到大部分的box长宽比在1-3范围内,因此我们决定在每个预测层使用长宽比(1.6,2.0,3.0)。

DSSD : Deconvolutional Single Shot Detector论文阅读笔记_第4张图片

4. Experiments

Base network

我们的实验都基于预训练好的ResNet-101,**与R-FCN一样,我们把conv5的有效步长从32像素降到16像素来提升特征图分辨率。**conv5中第一个步长2的卷积层变为1,然后使用atrous空洞卷积,对conv5中所有卷积核尺寸大于1的卷积层,膨胀从1变为2,来填上洞。与SSD一样,我们增加了几个额外的层来降低特征图尺寸。

DSSD : Deconvolutional Single Shot Detector论文阅读笔记_第5张图片

表2展示了原来VGG和现在ResNet-101中选择的特征图,深度为网络中的位置,计算位置时只考虑卷积层和池化层。值得注意的是两个网络中第一个预测层的深度。尽管ResNet-101有101层,我们需要使用dense特征层来预测更小的目标,因此我们必须选择conv3_x中的最后一个特征层。

PASCAL VOC 2007

我们在2007trainval和2012trainval联合数据上训练我们的模型。

对于原来的SSD,我们的batchsize为32(321 * 321输入),20(513 * 513输入),前40k使用0.001学习率,之后在60k和70k除以10。我们将训练好的SSD作为DSSD的预训练模型。

首先,我们冻结原SSD的参数,只训练额外的反卷积,前20k学习率为0.001,后10k学习率除以10。然后,我们微调整个DSSD网络,前20k学习率为0.001,后20k学习率除以10。

表3展示了我们在PASCAL VOC2007 test的结果,SSD300* 和 SSD512* 是使用了新的扩展数据增强的最新版本SSD结果,可能会比SOTA效果好。将VGG替换为ResNet-101,如果输入图像比较小,效果是相似的,但是收敛得更快。当增大输入图像尺寸,ResNet的效果更好,我们认为这是因为ResNet更深,需要更大尺寸的输入来提取更强的特征。增加了反卷积层的DSSD321和DSSD513提升了1-1.5点准确率,这证明了我们方法的有效性。我们的单模型准确率比SOTA的R-FCN好1%。

总之,DSSD对于有着特定背景的目标和小目标的检测有了大幅提升。比如飞机、船只、牛、羊都有着特定的背景,比如天空、草地等。以及一些小目标比如瓶子。

DSSD : Deconvolutional Single Shot Detector论文阅读笔记_第6张图片

Ablation Study on VOC2007

为了展示我们对SSD的修改的有效,我们在VOC2007上做了实验,如表4所示。PM为预测模块,DM为反卷积模块。使用ResNet-101的原SSD(321像素输入)取得76.4% mAP,这实际上比VGG要差。增加PM我们发现效果提升,最好的PM为在预测之前使用一个残差块作为中间层。

增加DM之后,逐元素乘积效果最好。

我们同样尝试在增加DM之后,微调整个网络,但是没有发现效果提升。DSSD : Deconvolutional Single Shot Detector论文阅读笔记_第7张图片

PASCAL VOC 2012

对于VOC2012,我们对VOC2007的设置进行一点改变。使用07++12数据,因为更多的训练数据,我们提升了训练的迭代数。对于SSD,我们0.001学习率训练60k,然后再30k,再10k,每次学习率除以10;对于DSSD,使用SSD作为预训练模型,冻结参数,训练后续模型。训练分卷积层,30k,学习率0.001,之后20k,学习率0.0001。结果如表所示。同样验证了DSSD超过了其他模型,值得注意的是我们的模型是第一个没使用额外的训练数据,取得80.0%mAP的模型。

DSSD : Deconvolutional Single Shot Detector论文阅读笔记_第8张图片

COCO

因为ResNet-101使用了BN,为了得到更可靠的结果,我们设置batchsize48(SSD321),20(SSD513),使用学习率0.001(160k),之后60k,除以10,最后20k再除以10。

我们然后将训练好的SSD作为DSSD的预训练模型。首先冻结参数只训练反卷积层,前80k学习率0.001,后50k学习率除以10。依照表4的结果,我们没有进行第二阶段训练。

表6所示,我们SSD300* 已经比Faster R-CNN和ION好了。**使用ResNet-101取代VGG之后,效果更好。我们发现它对于大目标提升了7.9%,对小目标没有提升。我们认为这证明了ResNet-101的特征更好,使得对大目标效果提升。**增加了反卷积层之后,我们发现对小目标效果也提升了,但是没有对大目标效果提升。DSSD : Deconvolutional Single Shot Detector论文阅读笔记_第9张图片

对于更大的模型SSD513-ResNet-101,比SOTA的R-FCN好1.3%,提升主要是在大尺寸目标。DSSD513-ResNet-101在所有尺寸的目标上都超过了R-FCN。当提升输入尺寸时,模型的表现提升,但是需要更长的训练和测试时间。

Inference Time

为了提升测试速度,我们在测试阶段使用如下的等式来取代BN层。DSSD : Deconvolutional Single Shot Detector论文阅读笔记_第10张图片

等式1中,卷积层的输出使用减去均值,除以标准差进行归一化,然后加上学习到的参数shift。为了简化,加速模型测试,我们重写了卷积层的权重和偏置,移除了所有BN相关的变量。我们发现这会提升1.2-1.5倍速度,并且最多减少3倍的内存使用。

我们的模型没有原来的SSD快,有以下几个原因。首先ResNet-101层数更多。第二,我们增加的额外层,尤其是PM和DM,引入了额外的计算。一个简单的加速方法就是将反卷积模块改为双线性插值上采样。第三,我们使用了更多的默认框。表7展示出,我们使用的默认框是SSD的2.6倍。这些默认框花费了更多的时间,不止在预测阶段,同样在NMS阶段。DSSD : Deconvolutional Single Shot Detector论文阅读笔记_第11张图片

Visualization

图4中,我们展示了一些使用SSD321和DSSD321的COCO检测样本。相比于SSD,我们的DSSD提升了两方面,首先是小目标和密集目标的检测,如4a。因为小的输入尺寸,SSD在小目标上效果不佳,但是DSSD有了明显提升。第二点是对于有着特定context的类别,效果提升。

5. Conclusion

我们提出了一种方法,将context添加到SOTA目标检测框架中,证实了它的有效。同时我们也期待找到更好的方法来组合特征。我们的DSSD模型表现超过了SSD模型,尤其是对小目标和特定语义背景目标,同时有着相当的速度。尽管我们只对SSD使用了沙漏模型,沙漏模型同样可以应用到R-CNN系列模型中。

你可能感兴趣的