SSD(Single Shot MultiBox Detector)系列算法属于one-stage算法;
SSD算法采用直接回归计算出目标类别和位置。处理对象为原始图像经过卷积之后的feature map。
与two-stage算法的区别是,不需要proposal box候选框的提取,即不需要RPN网络。
图1 one-stage系列算法框架
同时使用多尺度的feature map的预测,即将得到的feature map通过下采样(这里使用pooling来实现下采样),得到不同大小的feature map,每个feature map作为后续层(Prior Box层)的输入。如下图所示:
图2 SSD系列网络架构
Prior Box Layer(anchor机制):
假设有m*n个cell(原始图像经过卷积之后的feature map上的每个像素---以其映射到原图中的坐标为中心点坐标,选K个box,也就是anchor,一般选取3个尺寸大小和3个比例值,k=9)
如上所述,假设每个feature map有m*n个cell,每个cell产生k个bounding box,每个bounding box预测c个类别score和4个offset,则该网络有(c+4)*k*m*n个输出。
其中,对于38*38的feature map,每个cell产生4个prior box,19*19的feature map,每个cell产生6个prior box……,如下:
一共产生:38*38*4+19*19*6+10*10*6+5*5*6+3*3*4+1*1*4 = 8732个prior box。
每个cell的k个default box,经过与GT(Ground truth)做IOU,当IOU大于正样本阈值时作为正样本,如果IOU小于负样本阈值将其作为负样本,其余中间的prior box将其忽略掉。
训练时需要确保prior box的分类准确,且尽可能回归到GT Box。
注意点:
难例挖掘
正负样本比为1:3
损失函数如下:
SSD算法对小目标不够鲁棒性,主要是因为浅层feature map的表征能力不强。------>DSSD网络
DSSD网络:
1、改变了主干网络:ResNet
2、使用了反卷积网络结构