Enhancement of SSD by concatenating feature maps for object detection笔记
《Enhancement of SSD by concatenating feature maps for object detection》论文阅读
摘要:
用resnet网络代替传统SSD当中的分类网络VGG,共享权重的属性使得训练更快,泛化能力更好。在VOC2007和VOC2012组成的训练库上做的训练,在VOC2007测试库上做的测试。输入图像的大小为300*300时,实现的map是78.5,输入图像的大小为512*512时,实现的map是80.8。提出的网络较传统的SSD有更好的检测性能。
Introduction
问题:
1、 在各种各样的检测方法中,由于SSD是充分利用多个卷积层进行目标检测,它的速度相对较快,对尺度变化的鲁棒性也较好。
2、 传统SSD的框架如下图所示:特征金字塔的每个层都会分别作为分类网络的输入,而不同层负责的是检测不同尺度的物体,这样对于同一个物体来说,其实是可以得到不同尺度的检测框。这样做导致的问题如下所示:
传统的SSD看起来是一个层对应一个scale,没有考虑不同scale之间的关系。例如图5(a)所示,传统的SSD更多的是对于同一个目标检测出了多个框,而本文提出的如(b)所示,仅仅是一个。(对于同一个目标,实际上我们需要考虑检测框之间的关系,对其进行选择保留和合并)
3、 第二,和大多数目标检测算法一样,SSD对小物体的检测性能并不好,为了解决这个问题,已经做了很多的尝试:比如,用更好的网络替换原有的VGG网络,或者是增加同一层的通道数。
解决方案:
本文中,我们解决这些问题如下:1、特征金字塔中层与层之间的关系被利用。2、一个层的通道数或feature map数目有效的增加。
我们提出的结构可以防止为同一个目标检测出多个box,同时,通道数的增加可以提高其检测小物体的有效性。但是较传统的SSD而言,速度略微有所降低。
论文的方法(提出不同版本的SSD,提出的SSD称为rainbow SSD)
论文的策略是在不改变基准网络的前提下,让分类网络更多的利用特征金字塔中层与层之间的关系,从而提高SSD的性能。除此之外,特征金字塔中的通道数也会有效的增加。
图3给出的是增加分类网络不同层feature map数的几个方法。在图3(a)中,底层的特征map通过pooling和高层的特征map进行连接。这样具有大的可接受领域的分类网络(这句就是说分类网络的使用面广)对于检测任务有好的特征表示性能。在图3(b)中,给出的是通过反卷积或者上采样的方法连接底层和高层的feature map。图3(c)给出的是,在底层运用pooling,高层运用反卷积进行feature map的连接。图3如下图所示:
值得注意的是:不同层的特征值的尺度是不一样的,因此在连接之前,batch normalization被用于每个滤波器。
上述方法被详细叙述如下:
3.1通过pooling和反卷积进行连接
通常在SSD结构中,底层的通道数通常高于高层的通道数。为了得到特征金字塔和通道数增加之间明确的关系,高层的feature map通过pooling进行连接,底层的feature map通过反卷积进行连接。
这样做的好处就是可以利用多个层的信息,不好的是,信息流动的方向不明确,分类网络不能有效的利用其它方向的信息。
3.2 Rainbow连接
每层进行pooling和反卷积之后,feature有相同的尺寸,接着我们对其进行连接。用这种方法连接特征,目标的尺寸或大或小的情况都被考虑在里面了,所以会有更好的检测性能。也就是说比检测目标更大或者更小的目标信息都会被利用到。因此,可以想到,特定尺寸的目标仅仅会在特征金字塔适当的层被检测到。
此外,通过与高层feature map进行连接,底层变现能力差的feature map的性能将得到提升,更有助于检测小物体。在没有额外的时间开销的情况下,可以得到与DSSD相同的检测小物体的能力。
通过rainbow连接,特征金字塔的每层会包含2816个feature maps,因为金字塔中的每层的feature map的数目是一样的,所以不同层的不同分类网络的权值是可以共享的。传统的SSD中每个分类器会检查4或6个default boxes,论文提出的R-SSD能够统一权值共享的不同层的default box。每层当中4个default box共享一个分类器会得到7760个box。6个共享一个分类器,会得到11640个box。
3.3
众所周知,增加通道数可以提高性能。相比以VGG16作为基准网络的SSD来说,每个卷积层的通道数被扩大2到8倍,得到I-SSD模型。
实验以及实验结果
为了说明提出算法的有效性,我们测试了不同版本的SSD。
训练数据是:VOC2007+VOC2012的“trainval”。
输入图像大小为300*300,训练的batch size是8,学习率从10-3减少到10-6,每次减少10-1 ,对于每个学习率,训练的迭代次数是:80K,20K,20K,20K。这样对于每个模型而言,总的迭代次数是140K。
输入图像大小为512*512,训练的batch size是4,学习率和输入图像大小为300*300时候的学习率相等,从10-3减少到10-6,每次减少10-1 ,对于每个学习率,训练的迭代次数是:80K,20K,20K,20K。这样对于每个模型而言,总的迭代次数是140K。
速度的测量是将batch size设定为1,计算一次前向传播所花费的时间。
实验结果如表3所示:
结果分析:
1、 ISSD. 输入图像大小为300*300时,如表3.3所示,不同层的通道数增加了2到8倍,实验的结果是,较传统的SSD模型,性能提高了0.4%,但是由于模型复杂度的提高,速度减小到了26.9FPS。
2、 Concatenation through pooling or deconvolution. 输入图像大小为300*300时,通过pooling和反卷积,进行连接feature map较传统的SSD模型,性能下降了0.6%和0.4%,同时由于模型复杂度的增加,速度也增加到饿了48.3和39.9FPS。
3、 R-SSD。输入图像大小为300*300时,较传统的SSD,性能提升了0.8%,由于计算复杂度的增加,速度增加到35.0FPS。输入图像大小为512*512时,较传统的SSD,性能提升了1%,由于计算复杂度的增加,速度降低到16.6FPS。比较两个SSD512模型,本文的较传统的在召回率为0.8,0.9时,查准率分别提升了2.9%,8.2%。
讨论:
较传统的SSD而言,通过pooling或者反卷积连接的两个模型,尽管它们也利用了层与层之前的关系以及增加了通道数,但是准确率和精度都偏低。因为它们需要执行很多操作,所以速度有所下降。至于准确率方面,可以推测原因是,和其它层共享feature maps的很多层受到其它尺度损失的影响不能集中注意关注特定的尺度(本来同一个尺度的目标会有适当的一个层做预测,这样连接导致了,做固定尺寸预测的层受到了做其它尺寸预测的层的损失的影响,对于原本需要它预测的尺度的物体的关注降低了)。也就是说,特征层不能很好的学习需要它们预测尺度的物体。