对SSD的初步认识

1、SSD网络结构

在这里插入图片描述

SSD采用VGG16的基础网络结构,使用前面的前5层,然后利用astrous算法将fc6和fc7层转换成两个卷积层,并且对conv4_3输出做正则化处理。再额外增加3个卷积层,和一个average pool层。不同层次的feature map分别用于default box的偏移以及不同类别得分预测,最后通过NMS得到最终的检测结果。不同卷积层的feature map大小变化比较大,能够检测出不同尺度下的物体,在不同的feature map进行卷积,可以达到多尺度的目的。
在这里插入图片描述
横向流程图
2、分类和回归
这步主要完成三个操作:生成prior box、做卷积->定位(localization)、做卷积->分类(confidence)。(以5x5x256为例)
在这里插入图片描述
2.1、卷积->回归
对feature map做卷积,使用的卷积核都是3x3,回归得到每个预测框的x、y、w、h。输出的通道数为default box的个数4。
2.2、卷积->分类
卷积核的数目跟分类数目相关。对feature map做卷积,使用3x3的卷积核,输出的通道数(卷积核个数)为default box的个数
分类数目。

2.3、生成prior box
区别于default box,default box有4个参数,而prior box是从位置回归的feature map中生成的,它有8个参数,4个location维度+4个偏置(回归所需的参数)。从代码看,default box输入重写的Keras层生成prior box。
2.4、如何生成default box
按照不同的scale和ratio生成s个default box,s默认是6,对于conv4_3,s的值为4。
 scale:假设使用m个不同层的feature map来做预测,论文中最低层的feature map的scale的值 在这里插入图片描述为0.2,最高层的值 在这里插入图片描述为0.9,其他层通过下面的公式计算得到
在这里插入图片描述
当前网络使用了6个feature map,即m=6。
 ratio:使用ratio的值 在这里插入图片描述,计算default box的宽度和高度, 在这里插入图片描述,另外对ratio=1的情况,额外指定scale为 在这里插入图片描述,即生成6个不同的default box。
 default box中心:每个default box的中心位置设置成 在这里插入图片描述,其中 在这里插入图片描述表示第k个特征图的大小,在这里插入图片描述
这些参数都是相对于原图的参数,不是最终值。

2.5、如何生成prior box
将原图切割成feature_map_width*feature_map_height个小矩形格,比如原图大小为300x300,feature map大小为5x5,那么每个小格的尺寸为60x60。获取每个小格的宽和高,获取每个小格的起始坐标。
首先,boxes_tensor=np.zeros((feature_map_height, feature_map_width, self.n_boxes, 4))创建一个四维矩阵,代表的是每个feature map的每个特征点有n_boxes个prior box,而每个prior box有x,y,w,h四个参数来定义一个prior box。接下来是把prior box超出原图边界的修正下. 然后再创建一个variances_tensor,它和上面的boxes_tensor维度一样,只不过它的值都为0加上variance.然后将variances_tensor和boxes_tensor做连接操作。所以生成的prior box 会变成
size= [feature_map_height,feature_map_width,n_boxes,8]。

2.6、转换特征矩阵
 对【分类】步骤的结果reshape:[n_boxes_conv6_2n_classes,5,5]即[21x4,5,5])–>[-1,n_classes]
 对【回归】步骤的结果reshape: [n_boxes_conv6_2
4,5,5] 即[4x4,5,5])–>[-1,4]
 对【priorbox】步骤的结果reshape:[n_boxes_conv6_2*8,5,5]即[4x8,5,5])–>[-1,8]

2.7、连接
连接所有的分类,回归,prior box。从代码上来看,所有的分类走一条线,回归走一条线,生成prior box走一条线。回归和prior box所生成的结果是相互独立的,而分类的结果之间是相互影响的,最后做一个softmax实现多分类。
3、非极大值抑制NMS
 将所有框的得分排序,选中最高分及其对应的框
 遍历其余的框,如果和当前最高分框的重叠面积(IOU)大于一定阈值,我们就将框删除。
 从未处理的框中继续选一个得分最高的,重复上述过程。
4、损失函数
损失函数定义为位置误差(locatization loss,loc)与置信度误差(confidence loss, conf)的加权和:
在这里插入图片描述
其中 在这里插入图片描述是先验框的正样本数量。这里 在这里插入图片描述为一个指示参数,当 在这里插入图片描述时表示第 在这里插入图片描述个先验框与第在这里插入图片描述 个ground truth匹配,并且ground truth的类别为在这里插入图片描述在这里插入图片描述 为类别置信度预测值。 在这里插入图片描述为先验框的所对应边界框的位置预测值,而 在这里插入图片描述是ground truth的位置参数。对于位置误差,其采用Smooth L1 loss,定义如下:
在这里插入图片描述
由于 在这里插入图片描述的存在,所以位置误差仅针对正样本进行计算。值得注意的是,要先对ground truth的在这里插入图片描述 进行编码得到在这里插入图片描述 ,因为预测值在这里插入图片描述 也是编码值。对于置信度误差,其采用softmax loss:
在这里插入图片描述
权重系数在这里插入图片描述 通过交叉验证设置为1。

在这里插入图片描述
5、Hard Negative Mining
用于预测的 feature map 上的每个点都对应有 6 个不同的 default box,绝大部分的 default box 都是负样本,导致了正负样本不平衡。在训练过程中,采用了 Hard Negative Mining 的策略(根据confidence loss对所有的box进行排序,使正负例的比例保持在1:3) 来平衡正负样本的比率。这样做能提高4%左右。
6、匹配策略
这里的匹配是指的ground truth和Default box的匹配。
主要是分为两步:第一步是根据最大的overlap将ground truth和default box进行匹配(根据ground truth找到default box中IOU最大的作为正样本)。
第二步是将default boxes与overlap大于某个阈值的ground truth进行匹配。
7、Data Augmentation
使用整张图像作为输入。
使用IOU和目标物体为0.1、0.3、0.5、0.7和0.9的patch,这些patch在原图的大小的[0.1, 1]之间,相应的宽高比在[1/2, 2]之间。
随机采取一个patch。
8、
VGG 16结构如下图所示:

在这里插入图片描述

为什么使用3x3的卷积核,设置步长=1:

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值