SSD算法学习记录

本文详细介绍了SSD(Single Shot MultiBox Detector)算法,包括其理论基础、网络结构、default box的生成与可视化、数据预处理中的自定义随机裁剪和正负样本划分,以及损失函数的计算。SSD作为一种one-stage目标检测方法,相比两阶段方法如Faster R-CNN,具备更快的检测速度。在实现中,通常选择VGG16或ResNet50作为backbone,并通过特定方式生成和匹配default box,以实现高效的检测任务。

SSD算法学习记录

一、SSD算法理论介绍

​ 在faster rcnn中,采用的是two_stage,即先使用rpn结构选取一定数量的anchors,再对选取的anchors进行分类和计算边界框回归参数。这样的优点是模型检测的精度较高(因为这里对边界框相当于进行了两次回归的操作),但是由于两次的边界框回归,使得模型的检测速度慢。在SSD算法中,采用one_stage的方法,即一步就可以完成对目标的分类以及计算边界框回归参数,使得检测速度有所提高。

在目标检测中,一般先使用特征提取网络作为网络的backbone,接着将提取到的特征图输入至后续的网络中做后续的处理。对于SSD算法,论文中提到采用的是以VGG16作为backbone。简单介绍一下VGG16模型。

在这里插入图片描述

https://zhuanlan.zhihu.com/p/42233779


下图显示了vgg模型的网络架构以及每层的特征信息。

在这里插入图片描述


在SSD论文中,使用如下的网络结构

在这里插入图片描述

在VGG16-SSD网络中,backbone部分一直延续到conv5_3,并且将上图中橙色部分的maxpooling由2×2、步距为2,改为了3×3、步距为1。接着又添加一些列的额外添加层,构成了整个SSD网络模型(输入图像尺寸需调整为300×300的大小),整个流程用类似于上面的图可以表示为:

在这里插入图片描述

这里选取conv4_3、FC7(conv7)、conv8_2、conv9_2、conv10_2、conv11_2共6个预测特征层,在上图中已经用红色标注。需要注意的是,在conv10_2和conv11_2中,padding=0

SSD模型每个预测特征层上采用3×3大小的卷积,在预测特征层的每个ceil的位置生成k(4或6)个default box,以3×3大小的feature map为例:

在这里插入图片描述

对于每个预测特征层,在每个点生成不同数量的default box,具体如下:

特征层 预测特征层大小 default_box大小 default_box数量
conv4_3 38×38 21{1/2 1 2};sqrt(21×45){1} 38×38×4
FC7 19×19 45{1/3 1/2 1 2 3};sqrt(45×99){1} 19×19×6
conv8_2 10×10 99{1/3 1/2 1 2 3};sqrt(99×153){1} 10×10×6
conv9_2 5×5 153{1/3 1/2 1 2 3};sqrt(153×207){1} 5×5×6
conv10_2 3×3 207{1/2 1 2};sqrt(207×261){1} 3×3×4
conv11_2 1×1 261{1/2 1 2};sqrt(261×315){1} 1×1×4

{}前的数字表示default box的尺寸,{}中的数字表示该尺寸对应的比例。由表格可知,在6个预测特征层上共生成的default box的数量为:

38×38×4+19×19×6+10×10×6+5×5×6+3×3×4+1×1×4 = 8732

对于每个default box,会生成c个类别概率以及4个坐标偏移量

在这里插入图片描述

关于正负样本的选择:

正样本:(1)与ground_truth的IOU值最大的default box

​ (2)与ground_truth的IOU值大于0.5

负样本:负样本与正样本的比例为3:1(Hard Negtive Mining,选出负样本中得分排在前面的,即把难判断的选出来进行训练)

关于损失的计算
L(x,c,l,g)=1N[Lconf(x,c)+αLloc(x,l,g)] L(x,c,l,g)=\frac{1}{N}[L_{conf}(x,c)+\alpha L_{loc}(x,l,g)] L(x,c,l,g)=N1[Lconf(x,c)+αLloc(x,l,g)]
式中,N表示匹配到的正样本的个数,α=1
Lconf(x,c)=−∑i∈posNxijPlog⁡(c^iP)−∑i∈neglog⁡(c^iP)c^iP=exp(ciP)∑Pexp(ciP)Lloc(x,l,g)=∑i∈pos∑m∈(cx,cy,w,h)xijksmoothL1(lim−g^jm) L_{conf}(x,c)=-\sum_{i∈pos}^{N}{x_{ij}^{P} \log(\hat{c}_i^P)}-\sum_{i∈neg}{\log(\hat{c}_i^P)}\\ \hat{c}_i^P=\frac{exp(c_i^P)}{\sum_P{exp(c_i^P)}}\\ L_{loc}(x,l,g)=\sum_{i∈pos}\sum_{m∈(cx,cy,w,h)}{x_{ij}^{k}}smoothL_1(l_i^m-\hat{g}_j^m) Lconf(x,c)=iposNxijPlog(c^iP)ineglog(c^iP)c^iP=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值