目标检测:SSD-Single Shot MultiBox Detector

SSD,单发多框检测器,一种one-stage的目标检测算法。

论文地址:http://arxiv.org/abs/1512.02325

TensorFlow版:https://github.com/balancap/SSD-Tensorflow

整体流程如下:

                                          目标检测:SSD-Single Shot MultiBox Detector_第1张图片


【摘要】

我们提出了一种使用单个深度神经网络检测图像中物体的方法。我们的方法,名为SSD,将边界框的输出空间离散化为一组根据不同长宽比和每个特征图位置缩放的默认框。

在预测期间,网络会在每个默认框中为每个对象类别生成分数,并对框进行调整(偏移量)以更好地匹配对象形状。另外,该网络将来自多个不同分辨率的特征图的预测结合起来以自然处理各种尺寸的对象。

相对于需要区域提案(region proposal)的方法而言,SSD非常简单,因为它完全消除了提案生成和随后的像素或特征重新采样阶段,并将所有计算封装在单个网络中。这使得SSD易于训练和直接集成到需要检测组件的系统中。


【介绍】

相比于two-stage的目标检测算法,本文提出了第一种one-stage的物体检测器,它不对边界框假设的像素或特征进行重采样,并且与所采用的方法一样准确。

我们的改进包括:

  1. 使用小的卷积核来预测边界框位置中的对象类别和偏移量
  2. 对不同宽高比检测使用可分离的卷积,并将这些卷积核应用到网络后期的多尺度(multi-scale)的feature-map上,以便执行多尺度物体的检测。

通过这些改进,特别是使用multi layers进行不同尺度的预测,我们可以使用低分辨率的输入实现高精度,进一步提高检测速度。

我们总结我们的贡献如下:

- 我们引入了SSD,这是一种针对多个类别的单发检测器,比YOLO更快,并且更精确,精度上可以和包括faster rcnn在内的two-stage目标检测算法媲美

- SSD的核心是在特征图上应用小卷积核来预测固定的一组默认边界框(anchor)的类别分数和框偏移量。

- 为了实现高检测精度,我们根据不同尺度的特征图生成不同尺度的预测,并通过宽高比来区分预测。

- 即使在低分辨率输入图像上,这些设计也可实现简单的端到端训练和高精度,从而进一步提高速度与精度之间的平衡。

- 实验包括对PASCAL VOC,COCO和ILSVRC评估的不同输入尺寸模型的时序和精度分析,并与最新的一系列最新技术方法进行比较。


【The Single Shot Detector (SSD)】

                           目标检测:SSD-Single Shot MultiBox Detector_第2张图片

SSD在训练时,只需要待预测的图片和标注的目标框信息作为输入。图片经过CNN提取特征得到不同尺度的feature maps,对于不同分辨率的特征图上的每一个像素点,我们生成一组不同宽高比和大小的框(比如4个)

                                                        目标检测:SSD-Single Shot MultiBox Detector_第3张图片

对于每一个像素点的每一个框,我们预测它的属于每一个类别的置信度得分和相对于ground truth的偏移量。

偏移量的计算如下:

表示类别P,第i个先验框和第j个gt。

目标检测:SSD-Single Shot MultiBox Detector_第4张图片

目标检测:SSD-Single Shot MultiBox Detector_第5张图片

训练时,我们把这些框和ground truth进行比对,根据jaccard overlap的阈值关系,大于阈值作为正样本,小于阈值则作为负样本进行训练。

整个模型的损失函数由边界框定位loss类别置信度loss组成。

SSD方法基于一个前馈卷积网络,该网络可生成固定大小的边界框集合和在这些框中存在物体的分数,然后进行非极大值抑制NMS以生成最终检测结果。然后,我们在基础网络中添加辅助结构来生成具有以下主要特征的检测结果:

Multi-scale feature maps for detection 在传统基础的CNN中,我们在末端添加了卷积层。这些卷积核随着特征度分辨率的降低而逐步减小,可以实现多尺度下的预测。

Convolutional predictors for detection 每一个增加的卷积层可以使用一组卷积核来生成类别置信度得分和边框偏移量。例如,对于mxnxp的特征图,我们使用3x3xp的卷积核,在每一个点上(共mxn个)的每一个先验框都得出scores和offsets,而在YOLO中则是使用全连接层得到最后的scores和offsets。

Default boxes and aspect ratios 对于feature map上的每一个grid cell,我们都生成k个不同宽高比的先验框。对于这k个框中的每一个框,我们都会得到c个类别得分和4个边框偏移量。如果是mxn的特征图,那么我们就会得到(c+4)xkxmxn个输出。可以看出SSD是一种密集预测的方式。

Matching strategy 在训练期间,我们需要从先验框里挑选出和ground truth相对应的框,然后训练网络。和multibox不同,我们在先验框里找和gt的iou大于0.5的即可作为正样本。相比于multibox只选最大iou的做法,这样做简化了网络的训练。

Training objective 损失函数的设计

Choosing scales and aspect ratios for default boxes

Hard negative mining 在先验框和gt匹配的步骤结束后,我们发现大多数的先验框都是负样本,尤其是先验框的数量很多的时候。这使得正负样本比例极不平衡,相比于使用所有的负样本,我们通过挑选其中最高的置信度loss的框来进行训练,使正负样本比例保持在1:3,这样可以加速优化和稳定训练。

 Data augmentation 为了使模型对于不同尺寸的物体更加鲁棒,我们采用随机的数据增强。

你可能感兴趣的:(目标检测)