单阶多层检测器SSD(二)难点理解更新

本文探讨SSD(Single Shot MultiBox Detector)的难点,问题一涉及SSD的预测框生成,解释预测框是通过offset调整prior box得到,并非直接回归GT。在训练中,通过loss函数指导学习,使prior box接近ground truth。问题二讨论反向传播loss的作用,它在训练中降低以优化网络。
摘要由CSDN通过智能技术生成

现在难点在于:

问题一

1.SSD最后的预测结果是怎么画到图上的,回归的时候是让prior box和gt做损失得到prior
box就是检测结果吗?如果不是从已有的anchor中得到检测结果的话,是重新得到了一个box吗?

(1)这个问题来源于深度学习笔记(七)SSD 论文阅读笔记简化

作者回复:回归目标不是 GT, 而是
GT - prior box,这么理解吧:(预测的 box + prior box) = 检测框

并没有理解作者的意思,还需要进一步学习。

参考目标检测|SSD原理与实现

其中作者提到,真实预测值其实只是边界框相对于先验框的转换值。如下图所示,从这篇文章中可以得出,先验框指的应该是prior box,预测框是一个prior box有offset的框。那么,为什么要设置prior,这个offset又是如何预测出来的?这里具体参考的应该是code\SSD_pytorch-master\layers\functions\detection.py

在这里插入图片描述

(2)参考书中写明的是SSD是在一阶网络的基础上使用固定框进行区域生成,在Faster rcnn中我理解的区域生成是先生成区域,然后再在ROI中画框去回归。那么ssd的固定框就是最后目标的检测框吗?还是也是以此为范围二次画框呢?

这里纠结的点属于SSD的预测过程。也就是detection部分在这里插入图片描述
在预测部分,参考目标检测|SSD原理与实现
预测过程比较简单,1.对于每个预测框,首先根据类别置信度确定其类别(置信度最大者)与置信度值,并过滤掉属于背景的预测框。然后根据置信度阈值(如thresh=0.5)过滤掉阈值较低的预测框。对于留下的预测框进行解码(decode),根据先验框(感觉这里的先验框是指的gt)得到其真实的位置参数(解码后一般还需要做clip,防止预测框位置超出图片)。解码之后,一般需要根据置信度进行降序排列,然后仅保留top-k(如400)个预测框。最后就是进行NMS算法,过滤掉那些重叠度较大的预测框。最后剩余的预测框就是检测结果了

问题二

2.反向传播loss的意义在哪里,为什么loss会在训练中降低呢?

也是上面那篇文章,作者提到了在训练过程中的 prior boxes 和 ground truth boxes 的匹配,基本思路是:让每一个 prior box
回归并且到 ground truth box,这个过程的调控我们需要损失层的帮助,他会计算真实值和预测值之间的误差,从而指导学习的走向。

目前对问题一的理解
SSD中使用anchor是一个先验,对每个anchor赋予一个类别标签和偏移值(相对于gt的),然后通过loss去更正,得到anchor预测标签和预测偏移量,最后在这些anchor中用NMS选择
文章anchor与anchor box理解写的很好,问题一的存在主要还是对anchor理解的不深刻。
在所有的目标检测算法中,检测图片时如何在图片上画框还是要仔细学习。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值