深度解析SSD论文

一、背景

当前深度学习通用目标检测框架分为两大类:

深度解析SSD论文_第1张图片

 SSD的出现是在16年,YOLOv1之后,YOLOv2之前,既然都是one-stage的算法,SSD的出现必然和YOLOv1比试一番。

YOLOv1和SSD的主要区别就是,YOLOv1只利用了末端特征图信息,SSD则利用了最后几层特征图综合起来的信息,所以,从理论上说,SSD比YOLOv1的准确度必定更高。

二、SSD算法是什么

首先说明卷积的一个结论:卷积层的前几层主要提取了图像的细节信息,后几层更偏向于图像的全局抽象信息。

深度解析SSD论文_第2张图片

通过上述可视化,我们可以得出:

SSD则综合利用了多尺度特征图的信心,获得了很好的效果。

三、SSD网络结构 

SSD网络结构如下图所示,前端使用VGG16网络,然后在VGG16的基础上新增了5个卷积层来获得更多的特征图以用于检测。

深度解析SSD论文_第3张图片

对于每个特征图,SSD引入初始框的概念,也就是说在每个特征图的单元格的中心设置一系列尺度和大小不同的初始框,这些初始框都会反向映射到原图的某一个位置,如果某个初始框的位置正好和真实目标框的位置重叠度很高,那么就通过损失函数预测这个初始框的类别,同时对这些初始框的形状进行微调,以使其符合我们标记的真实目标框。

深度解析SSD论文_第4张图片

四、初始框的设置

 本文的核心便是采用了低层和高层的特征图进行检测,如下图所示:

深度解析SSD论文_第5张图片

feature map cell是指feature map中每一个小格子,图b中是8x8的feature map cell,图c中是4x4的feature map cell。

default box,是指在feature map的每个小格(cell)上都有一系列固定大小的box,如下图c有4个(下图中的虚线框,仔细看格子的中间有比格子还小的一个box)。

假设每个feature map cell有k个default box,那么对于每个default box都需要预测c个类别score和4个offset,那么如果一个feature map的大小是m×n,也就是有m*n个feature map cell,那么这个feature map就一共有(c+4)*k * m*n 个输出。

prior box,是指实际中选择的default box(每一个feature map cell 不是k个default box都取)。也就是说default box是一种概念,prior box则是实际的选取。

训练中一张完整的图片送进网络获得各个feature map,对于正样本训练来说,需要先将prior box与ground truth box做匹配,匹配成功说明这个prior box所包含的是个目标,但离完整目标的ground truth box还有段距离,训练的目的是保证default box的分类confidence的同时将prior box尽可能回归到ground truth box。

 举个列子:假设一个训练样本中有2个ground truth box,所有的feature map中获取的prior box一共有8732个。可能分别有10、20个prior box能分别与这2个ground truth box匹配上。训练的损失包含定位损失和回归损失两部分。

通过上面的讲解,我们可以知道,对于不同尺度的feature map,我们会将其进行grid cell划分,划分后,每个cell对应几个default box,当然,default box只是一种概念,我们具体取的时候并不取那么多,我们只是取与gtbbox相近的。

 

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