【问题标题】:Single-shot Multibox Detection: usage of variance when encoding data for trainingSingle-shot Multibox Detection:在为训练编码数据时使用方差
【发布时间】:2018-07-15 00:37:20
【问题描述】:

在代码中实现Single-shot multibox detector 时,我无法理解“方差”的概念。
我正在阅读 thisthis 存储库。

在训练时,位置输入数据是默认框(锚框、先前框)坐标(Δcx、Δcy、Δw、Δh)相对于真实边界框坐标的增量编码坐标。
我不明白的部分是它何时将 0.1 编码为 Δcx 和 Δcy,将 0.2 编码为 Δw 和 Δh。

为什么这是必要的?或者我应该问,这会对培训结果产生什么影响?
我还研究了原始的 caffe 实现,但在那里找不到太多解释,而不是它们在训练时被编码并被重新用于解码以进行推理。
我没有太多数学背景,但欢迎对数学理论链接等提出任何建议。
提前致谢!

【问题讨论】:

  • 您希望 logits 和回归量在相同的值范围内。 logits 约为 [-10, 10],回归量(缩放前)约为 [-1, 1]。因此缩放比例约为 10。

标签: python tensorflow deep-learning keras object-detection


【解决方案1】:

a thread 在最初的 caffe 实现和我正在处理的存储库之一 here 中讨论了这个问题。
SSD论文作者says

您可以将其视为用于调整先验框的近似高斯分布。或者您可以将其视为缩放定位梯度。方差也用于原始 MultiBox 和 Fast(er) R-CNN。

我正在处理的 repo 的作者says

命名可能源于这样的想法,即ground truth边界框并不总是精确的,换句话说,它们可能因图像与图像的不同而不同,可能是因为人类标注者不能理想地重复自己.因此,编码值是一些随机值,我们希望它们具有单位方差,这就是我们除以某个值的原因。为什么将它们初始化为代码中使用的值 - 我不知道,可能是作者的一些经验估计。

【讨论】:

    【解决方案2】:

    我也想知道同样的问题,为什么总是需要以固定的方差进行除法和乘法?另外,如果我们只是在没有这个“编码”和“解码”步骤的情况下进行回归,它会对训练产生那么大的影响吗?

    【讨论】:

    • 这与通过减去均值并除以标准差来标准化图像相同。在大多数情况下,唯一的区别是您对输入数据进行了归一化,而在这里您对地面实况数据进行了归一化。基本上你只是让 NN 的任务更简单。我还将在下个月开设有关对象检测的实用课程。因此,如果有人对此感兴趣,请点击链接upscri.be/vg7ilp
    猜你喜欢
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    • 2018-07-28
    • 2017-12-20
    • 2019-06-17
    • 1970-01-01
    • 2018-08-08
    相关资源
    最近更新 更多