SSD网络后半段解析

ssd网络的特征提取部分与常见的卷积方式大同小异,这里从得到六张不同尺寸的特征图说起…

一、检测结果提取

在这里插入图片描述

ssd300得到以上六张特征图,它们的先验框数量依次为4,6,6,6,4,4。所有特征图上的总先验框数量为:
在这里插入图片描述

38x38x1024特征图为例,先验框数量为38x38x4,用3x3卷积改变其通道数,生成位置(4)与类别(20+1)预测特征图
在这里插入图片描述

将位置预测特征图reshape为[-1,4],将类别预测特征图reshape为(-1,21)
在这里插入图片描述
然后将不同尺寸的特征图按第一个维度进行拼接。
在这里插入图片描述
最终,
位置预测:[batch_szie,8732,4]
类别预测:[batch_size,8732,21]

二、正负样本的选取

正样本:
1.每个gt box的最大iou default box
2.与任意gt box iou大于0.5

负样本:
采用 hard negative mining,对负样本进行抽样,抽样时按照置信度误差(预测背景的置信度越小,误差越大)进行降序排列,选取误差较大的前一部分作为训练的负样本,以保证正负样本比例接近1:3

看段代码,neg_pos_ratio即为负样本比例
在这里插入图片描述
1.用上下文管理器强制不进行计算图的构建
2.在最后一个维度进行计算,即计算每个default box的分类概率,第一个维度是背景概率
3.用hard negative mining 和得到的置信度误差进行负样本抽样,得到box id,即mask
4.用mask取出负样本

hard negative mining
在这里插入图片描述
1.获取正样本掩码pos_mask
2.True转long,在dim=1,统计每个输入对应的正样本数
3.负样本数为正样本数三倍
4.正样本的置信度损失置为负无穷
5.两次sort(),在dim=1,即对每个输入对应的8732个default box按置信度损失降序排列,得到排序索引(向量中每个值对应的排序序号)
6.根据每个输入对应的正样本数获取负样本掩码掩码neg_mask
7.用|按位或运算合并正、负样本掩码

三、损失计算

1.分类损失

在这里插入图片描述
用筛选出的正负样本掩码mask,去除需要计算损失的box,预测类别特征图和标签都reshape为[-1,类别数+背景],计算交叉熵。

2.位置损失

只计算正样本的损失,使用smooth L1损失函数在这里插入图片描述

计算的实际是偏移量之间的损失
在GT中,为了限制偏移量的范围,便于预测,对x、y利用w、h进行了归一化,w、h进行了对数处理
因此,实际预测的也是偏移量

3.最终损失

分类损失和位置损失以权重系数α相加,除以该batch中的匹配到GT的box数N

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值