单次多盒检测:在编码训练数据时使用方差

时间:2018-02-05 07:38:40

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

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

训练时,位置输入数据是相对于地面实况边界框坐标的默认框(锚框,前框)坐标(Δcx,Δcy,Δw,Δh)的三角编码坐标。
我不理解的部分是它编码0.1到Δcx和Δcy,以及0.2到Δw和Δh。

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

2 个答案:

答案 0 :(得分:1)

a thread在原始的caffe实现和我正在处理here的其中一个存储库中讨论过这个问题。
SSD论文的作者says

  

您可以将其视为近似用于调整前一个框的高斯分布。或者您可以将其视为缩放定位渐变。方差也用于原始MultiBox和Fast(呃)R-CNN。

我正在处理的回购的作者says

  

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

答案 1 :(得分:0)

我也想知道同样的问题,为什么需要总是用固定的方差进行除法和乘法?另外,如果我们只是在没有这个"编码"和#34;解码"一步,它会对培训产生多大影响吗?