SSD系列算法原理讲解----(2)Prior Box Layer、样本构造、损失函数介绍(笔记)

SSD系列算法原理介绍

Prior Box Layer:

  • m *n个cell (每个点都作为一个cell)
  • 每个cell上生成固定scale和aspect ratio的box(尺寸和长宽比例)
    • 假设一个feature map有m *n个cell,每个cell对应k个default box,每个default box预测c个类别score和4个offset
    • ( c +4)* k * m * n个输出

Prior Box Layer:
SSD系列算法原理讲解----(2)Prior Box Layer、样本构造、损失函数介绍(笔记)

  • shape数量越多,效果越好

  • Anchor

  • 38 *38 *4 + 19 *19 *6 + 5 *5 *6 + 3 *3 *4 + 1 *1 *4 = 8732个prior box
    38层提取4个default box,19层6个…

  • 每一个feature map cell不是k个default box都取

  • prior box 与GT box(真值)做匹配,IOU > 阈值为正样本

  • 训练:确保prior box的分类准确且尽可能回归到GT box

构造样本

  • 正样本
    • 从GT box出发找到最匹配的prior box放入候选正样本集
    • 从prior box集出发,寻找与GT box满足IOU>0.5的最大prior box放入候选正样本集
  • 负样本
    • 难例挖掘
    • 正负样本比: 1:3

难例挖掘:
SSD系列算法原理讲解----(2)Prior Box Layer、样本构造、损失函数介绍(笔记)
除了单纯使用正负样本构造的方法,还可以采用数据增强的方法。
数据增强

  • 随机采样多个path,与物体之间最小的jaccard overlap为0.1,0.3,0.5,0.7与0.9
  • 采样的patch比例是[0.3 , 1.0],aspect ratio在0.5或2
  • GT box中心在采样patch中且面积大于0
  • Resize到固定大小
  • 以0.5的概率随机的水平翻转

同时对于每一个prior box,会预测出一个类别以及坐标偏移量。也就是说,对于SSD损失函数包含两个部分,
损失函数:

  • 分类loss + 回归loss
  • 分类loss:Softmax Loss
  • 回归loss:Smooth L1 loss
    SSD系列算法原理讲解----(2)Prior Box Layer、样本构造、损失函数介绍(笔记)
    损失函数计算:
    基本思路:
    让每一个prior box回归到GT box,这个过程的调控我们需要损失层的帮助,它会计算真实值和预测值之间的误差,从而指导学习的走向。
    SSD系列算法原理讲解----(2)Prior Box Layer、样本构造、损失函数介绍(笔记)
    损失函数计算通常会采用回归loss和分类loss结合来计算最终loss的方式。这样的loss也会用于后续的反向传播。对于每一个prior box 希望它尽可能的回归到GT box中,在计算当前的prior box,是背景还是候选目标,通常会采用IOU方式计算,最终的IOU会通过相应的阈值进行调控。

使用细节

  • 数据增强时,Crop采样大小(配置文件)
  • 多任务网络的权重
  • 正负样本比例(1:3)
  • 难挖掘方式默认只取64个最高predictions loss来从中寻找负样本。
    SSD系列算法原理讲解----(2)Prior Box Layer、样本构造、损失函数介绍(笔记)