SSD: Single Shot MultiBox Detector

[pdf] [code]

摘要

提出一种在图像中检测物体的方法,叫做SSD,使用single deep neural network;
SSD: 将bounding boxes的输出空间离散化成一组default boxes(在每个feature map location上不同宽高比尺度);
预测时:网络为每个default box中存在的每个物体类别评分,并调整box以更好匹配物体形状;
另外,网络预测结合了多种feature maps和不同分辨率来处理不同尺寸的物体

The Single Shot Detector (SSD)

多种宽高比和尺度的default box

Fig. 1: SSD framework. (a) SSD only needs an input image and ground truth boxes for each object during training. In a convolutional fashion, we evaluate a small set (e.g. 4) of default boxes of different aspect ratios at each location in several feature maps with different scales (e.g. 8 × 8 and 4 × 4 in (b) and (c)). For each default box, we predict both the shape offsets and the confidences for all object categories ((c1, c2, · · · , cp)). At training time, we first match these default boxes to the ground truth boxes. For example, we have matched two default boxes with the cat and one with the dog, which are treated as positives and the rest as negatives. The model loss is a weighted sum between localization loss (e.g. Smooth L1 [6]) and confidence loss (e.g. Softmax).

多尺度

Fig. 2: A comparison between two single shot detection models: SSD and YOLO. Our SSD model adds several feature layers to the end of a base network, which predict the offsets to default boxes of different scales and aspect ratios and their associated confidences. SSD with a 300 × 300 input size significantly outperforms its 448 × 448 YOLO counterpart in accuracy on VOC2007 test while also improving the speed.
由SSD的网络结构可以看出,SSD使用6个不同特征图检测不同尺度的目标。低层预测小目标,高层预测大目标。

理论感受野和有效感受野

影响某个神经元输出的输入区域就是理论感受野,也就是我们平时说的感受野,但该输入区域的每个像素点对输出的重要性不同,越靠近中心的像素点影响越大,呈高斯分布,也就是说只有中间的一小部分区域对最后的输出有重要的影响,这个中间的一小部分区域就是有效感受野

图a中,整个黑色区域就是理论感受野(TRF),中间呈高斯分布的白色点云区域就是有效感受野(ERF)
图b中,图中黑色虚线区域对应理论感受野,蓝色虚线部分对应有效感受野,红色实线框是anchor大小,他比理论感受野小很多,但是能够匹配有效感受野。

为什么要设置default box?

SSD在6个特征图上使用2组3x3的卷积核分别做分类和boundingbox回归,所以SSD是一个全卷积神经网络。我们知道每个特征图上每个像素点对应一个理论感受野,所以SSD相当于对原图中所有的理论感受野作分类和回归,由于有效感受野在理论感受野中有重要的影响,其他区域的影响可以忽略,所以这里我们认为SSD是对有效感受野作分类和回归,那么问题来了,既然是对所有的有效感受野做分类和回归,那每个有效感受野的分类的label和回归的label是如何确定的呢?default box就是用来干这个的。
每一层的default box设置了每一层特征图的有效感受野,然后使用这些default box与ground truth进行匹配来确定特征图上每个像素点的实际的有效感受野的label(包含分类label和回归label),分别用于分类和boundingbox回归。说的简单点,default box就是用来确定特征图上每个像素点实际的有效感受野的label的。
既然default box是确定实际有效感受野的label的,所以如果default box设置的有效感受野能够很好的匹配实际的有效感受野,SSD模型效果就会很好,如果两者相差较大,模型效果就会很差。

上图中,某一层特征图的某个像素点对应的实际有效感受野是红色区域,这个实际有效感受野的label应该是猫,但是SSD训练时这个红色区域的label是由default box确定的,如果default box设置的有效感受野对应的是蓝色区域,通过对default box与ground truth进行匹配我们发现,蓝色区域的label不是猫,而是背景,这样由default box确定的labe与实际有效感受野的真实的label就匹配不上了,如果用这个label作为红色区域的真实label就不对了,训练效果就会很差。
由于default box只要匹配实际的有效感受野就可以了,而实际的有效感受野要比理论感受野小很多,所以SSD中每一层的default box的大小可以比理论感受野小很多。作者在论文中也提到了这一点:
Feature maps from different levels within a network are known to have different (empirical) receptive field sizes .Fortunately, within the SSD framework, the default boxes do not necessary need to correspond to the actual receptive fields of each layer. We design the tiling of default boxes so that specific feature maps learn to be responsive to particular scales of the objects.
大意就是:SSD中default box不必响应实际的感受野,default box只对特定尺度的目标响应。也就是说,SSD的default box只要能够响应有效感受野就可以了。
所以在训练SSD的时候,default box大小的设置非常重要。目前实际的有效感受野的大小还不能精确计算出来,如何让default box设置的有效感受野更好的匹配实际的有效感受野还需要进一步研究。这一点作者在论文中也提到了:
An alternative way of improving SSD is to design a better tiling of default boxes so that its position and scale are better aligned with the receptive field of each position on a feature map. We leave this for future work.
了解了default box的作用后,我们就很容易知道SSD的本质了。

SSD对6个特征图上所有的default box进行分类和回归,其实就是对6个特征图对应的实际的有效感受野进行分类和回归,说得更加通俗一点,这些有效感受野其实就是原图中的滑动窗口,所以SSD本质上就是对所有滑动窗口进行分类和回归。这些滑动窗口图像其实就是SSD实际的训练样本。知道SSD的原理后我们发现深度学习的目标检测方法本质与传统的目标检测方法是相同的,都是对滑动窗口的分类。

注:

  1. 这里要好好理解这两个概念:“每一层实际的有效感受野”“default box设置的有效感受野”
  2. 注意全卷积神经网络与非全卷积神经网络的区别,一般的分类网络比如AlexNet只需要对整幅图像提取特征然后做分类,感受野是整幅图像,所以最后会用全连接层,而SSD中,由于要对每一个感受野做分类,所以只能用卷积层。

default box的匹配

现在我们知道了default box是用来确定label的,那么是如何确定label的呢?

在训练阶段,SSD会先寻找与每个default box的IOU最大的那个ground truth(大于IOU阈值0.5),这个过程叫做匹配。如果一个default box找到了匹配的ground truth,则该default box就是正样本,该default box的类别就是该ground truth的类别,如果没有找到,该default box就是负样本。图1(b)中8x8特征图中的两个蓝色的default box匹配到了猫,该default box的类别为猫,图1(c)中4x4特征图中的一个红色的default box匹配到了狗,该default box的类别为狗。图2显示了实际的匹配过程,两个红色的default box分别匹配到了猫和狗,左上角的default box没有匹配,即为负样本。

为什么要设置多种宽高比的default box?

我们知道default box其实就是SSD的实际训练样本,如果只设置了宽高比为1的default box,最多只有1个default box匹配到,如果设置更多宽高比的default box,将会有更多的default box匹配到,也就相当于有更多的训练样本参与训练,模型训练效果越好,检测精度越高。

作者实验结果表明,增加宽高比为1/2,2,1/3,3的default box,mAP从71.6%提高到了74.3%。

如何选择default box的scale和aspect ratio?

假设我们用m个feature maps做预测,那么对于每个featuer map而言其default box的scale是按以下公式计算的。

示例:
假设m=6,即使用6个特征图做预测, 则每一层的scale: 0.2, 0.34, 0.48, 0.62, 0.76, 0.9
对于第一层,scale=0.2,对应的6个default box为:

宽高比
1 0.200000 0.200000
2 0.282843 0.141421
3 0.346410 0.115470
1/2 0.141421 0.282843
1/3 0.115412 0.346583
最后增加的default box 0.260768 0.260768

注:表格中每个宽高比的default box的实际宽和高需要乘以输入图像的大小,如SSD300,则需要使用上面的数值乘以300得到default box实际大小。

数据增强

SSD中使用了两种数据增强的方式
放大操作: 随机crop,patch与任意一个目标的IOU为0.1,0.3,0.5,0.7,0.9,每个patch的大小为原图大小的[0.1,1],宽高比在1/2到2之间。能够生成更多的尺度较大的目标
缩小操作: 首先创建16倍原图大小的画布,然后将原图放置其中,然后随机crop,能够生成更多尺度较小的目标

作者实验表明,增加了数据增强后,mAP从65.5提高到了74.3!

SSD的缺点及改进

SSD主要缺点:SSD对小目标的检测效果一般,作者认为小目标在高层没有足够的信息。
论文原文:
This is not surprising because those small objects may not even have any information at the very top layers. Increasing the input size (e.g. from 300× 300 to 512× 512) can help improve detecting small objects, but there is still a lot of room to improve.
对SSD的改进可以从下面几个方面考虑:

  1. 增大输入尺寸
  2. 使用更低的特征图做检测
  3. 设置default box的大小,让default box能够更好的匹配实际的有效感受野

原文:https://blog.csdn.net/qianqing13579/article/details/82106664

你可能感兴趣的:(SSD: Single Shot MultiBox Detector)