深度网络中的目标检测算法SSD系列-SSD论文理解

一、简述

单个深度神经网络来做目标检测。(加速)
将bounding boxes输出离散化,为在每一个feature map上的一组不同长宽比及不同尺寸的一组默认边框。

在预测阶段:计算出每一个default box中的目标,其属于每个类别的可能性,即score(得分)。如对于poscal voc数据集,总共有20类,那么得出每一个bounding boxes中物体属于这20个类别的每一种的可能性。同时。要对这些bounding boxes的shape进行微调,使得其符合目标物体的外接矩形。为了处理相同物体不同尺寸的情况,SSD结合了不同分辨率的feature map的预测(predictions)。

二、基础网络

基于VGG16

  1. 将VGG中的FC6 layer,FC7 layer转化为卷积层,并从模型的FC6,FC7上的参数,进行下采样得到这个两个卷积层的参数。
  2. 将poling layer的参数,从2 * 2 -s2 转变成3 * 3 -s1,但这样变化后,会改变感受野的大小。(采用了空洞卷积的技术)
  3. 并删除fc8 layer 和 所有的dropout层。
  4. 增加4个卷积层。
  5. 使用SGD精调;学习率0.001,momentum 0.9,weight decay 0.00005,batch size 32.

三、多尺寸特征图检测

使用不同的卷积层来预测,卷积层的特征图逐步减少,可以在不同的scale上预测。

卷机器检测

使用一系列的卷积器,产生一系列固定大小的预测(predictions)。对于一个大小为m * n,具有P通道的特征图,使用的卷积器就是3 * 3 * P的卷积核来预测类别和边框值。

Default boxes—默认边框

将一组默认边框default boxes与不同层的feature map cell关联。假设每个feature map call有k个default box,那么对于每个default box都要预测C个类别score 和 4个坐标偏置(offset)。如果一个feature map的大小是m * n,也就是有m * n个feature map cell,那么这个feature map就是有 m * n * k * (c+4)个输出。

四、训练过程

匹配策略

  • 对每个ground truth box找IOU最高的default box。
  • default boxes 如果任一个ground truth box的IUO大于0.5

以上两种情况可以匹配的default boxes就是候选框的样本;其中完全匹配gt的是正样本,其他为负样本。

困难负样本挖掘

在匹配策略完成后,产生的负样本远远大于正样本。
使用负样本中分类置信度损失函数最高的那些样本作为新的负样本,选择数量的正样本:负样本比例1:3。

数据增广

对图像随机crop,比例为[0.1, 1.0],并resize到固定尺寸。

default boxes 设置

对于每一张特征图,按照不同的尺寸(scale)和宽高比(ratio),生成k个默认框。

  1. 尺寸(scale) 每个feature map中default box的尺寸大小,计算:
    Sk = Smin + ((Smax-Smin) / (m - 1)) * (k - 1) k->[1, M]
    Smin = 0.2,Smax=0.95,表示最低层的尺度是0.2,最高层的尺度为0.95.
  2. 宽高比(ratio) 使用不同的ratio值 ar = 1,2,3,1/2,1/3 . 计算default box的宽度和高度。
  3. 中心
    ( (i + 0.5)/|Fk| ,(j + 0.5)/|Fk|)
    |Fk| 是 feature map的尺寸大小

五、预测过程

对生成大量的bounding boxes,首先通过设置confidence(置信度)的阈值为0.1,过滤掉大多数的boxes。然后对每一类使用0.45的阈值进行NMS。对每张图最终保留最佳的200个检测结果。

你可能感兴趣的:(目标检测,深度学习)