经典网络结构梳理:SSD目标检测算法。

论文下载地址:https://arxiv.org/abs/1512.02325

论文代码:https://github.com/weiliu89/caffe/tree/ssd

SSD全称:Single Shot MultiBox Detector  是2016年ICCV的一篇论文。是目前为止主要的目标检测算法。

算法的主要优点:

1. 速度比Faster-Rcnn快,精度比YOLO高。(在兼顾速度的同时,精度也很高。在不同的测试集下面结果都很不错)。

2.为提高准确率在不同的特征图下面(不同的尺度下面)进行结果的预测特征金字塔预测方式。

3.采用了END-TO-END的训练方式,即使分辨率比较小的图片,分类结果也很准确。

SSD网络结构:

SSD 是基于一个前向传播 CNN 网络,产生一系列 固定大小(fixed-size) 的 bounding boxes,以及每一个 box 中包含物体实例的可能性,即 score。之后,进行一个 非极大值抑制(Non-maximum suppression) 得到最终的 predictions。SSD网络结构从图中可以看出来分为两部分 基础网络 + 金字塔网络。基础网络是VGG-16的前4层网络。金字塔网络是特征图逐渐变小的简单卷积网络由5部分构成。

1.Mult-scale feature map for detection

    就是特征金字塔检测方式。从不同尺度的特征图下面来预测目标分类与位置。

2.Convolutional predictors for detection

   在金字塔结构中每一部分都有3*3的卷积来进行预测,在某个位置上得到一个预测值,这个预测值可能是一个分类的得分,也可能是现对于默认框的的位置偏差。从图3可以看出来conv6-2,conv7-2,conv8-2,conv9-2,fc7,conv4-2。

3.Default boxes and aspect ratio

在特征图的每个位置预测K个box,每个box预测c个分类得分,和4个现对于默认框的位置偏移量。那么在m*n的特征图中就可以得到(c+4)*n*m个预测值。论文中的prior box 类似于Faster-Rcnn中的anchor。如下图4所示。

图2,SSD网络结构:

图3,金字塔结构:

SSD网络训练:

SSD 训练图像中的 groundtruth 需要赋予到那些固定输出的 boxes 上。SSD 输出的是事先定义好的,一系列固定大小的 bounding boxes。

1.Matching strategy:主要介绍的是如何将GT与默认框组成label。

在开始的时候,用 MultiBox 中的 best jaccard overlap 来匹配每一个 ground truth box 与 default box,这样就能保证每一个 groundtruth box 与唯一的一个 default box 对应起来。但是又不同于 MultiBox ,本文之后又将 default box 与任何的 groundtruth box 配对,只要两者之间的jaccard overlap 大于一个阈值,这里本文的阈值为 0.5。 

2.Training objective:

总的目标损失函数(objective loss function)就由 localization loss(loc) 与 confidence loss(conf) 的加权求和:

 

其中:

  • NN 是与 ground truth box 相匹配的 default boxes 个数

  • localization loss(loc) 是 Fast R-CNN 中 Smooth L1 Loss,用在 predict box(ll) 与 ground truth box(gg) 参数(即中心坐标位置,width、height)中,回归 bounding boxes 的中心位置,以及 width、height

  • confidence loss(conf) 是 Softmax Loss,输入为每一类的置信度 cc

  • 权重项 αα,设置为 1

3.Choosing scales and aspect ratios for default boxes:

大部分 CNN 网络在越深的层,feature map 的尺寸(size)会越来越小。这样做不仅仅是为了减少计算与内存的需求,还有个好处就是,最后提取的 feature map 就会有某种程度上的平移与尺度不变性。

4.Hard negative mining:

在生成一系列的 predictions 之后,会产生很多个符合 ground truth box 的 predictions boxes,但同时,不符合 ground truth boxes 也很多,而且这个 negative boxes,远多于 positive boxes。这会造成 negative boxes、positive boxes 之间的不均衡。训练时难以收敛。

因此,本文采取,先将每一个物体位置上对应 predictions(default boxes)是 negative 的 boxes 进行排序,按照 default boxes 的 confidence 的大小。 选择最高的几个,保证最后 negatives、positives 的比例在 1:3。

本文通过实验发现,这样的比例可以更快的优化,训练也更稳定。 

3.Data augmentation:

  • 使用原始的图像
  • 采样一个 patch,与物体之间最小的 jaccard overlap 为:,,, 与 
  • 随机的采样一个 patch

SSD存在的缺点:

1.需要手动设置参数prior box,无法通过训练得到,依赖经验。

2.存在着对小目标检测效果不好的现象。

猜你喜欢

转载自blog.csdn.net/donkey_1993/article/details/81460386