在代码中实现Single-shot multibox detector时,我无法理解“方差”的概念 我正在阅读this和this个存储库。
训练时,位置输入数据是相对于地面实况边界框坐标的默认框(锚框,前框)坐标(Δcx,Δcy,Δw,Δh)的三角编码坐标。
我不理解的部分是它编码0.1到Δcx和Δcy,以及0.2到Δw和Δh。
为什么这有必要?或者我应该问一下,这会对训练结果产生什么影响?
我也研究了原始的caffe实现,但我找不到太多的解释,而不是它们在训练时被编码并重新用于解码以进行推理。
我没有太多的数学背景,但欢迎任何关于数学理论联系等的建议
提前谢谢!
答案 0 :(得分:1)
有a thread在原始的caffe实现和我正在处理here的其中一个存储库中讨论过这个问题。
SSD论文的作者says:
您可以将其视为近似用于调整前一个框的高斯分布。或者您可以将其视为缩放定位渐变。方差也用于原始MultiBox和Fast(呃)R-CNN。
我正在处理的回购的作者says:
可能这个命名来自于这个想法,即地面真实边界框并不总是精确的,换句话说,它们可能因同一个对象在同一位置的图像而异,因为人类贴标签者不能理想地重复自己。因此,编码值是一些随机值,我们希望它们具有单位方差,这就是我们除以某个值的原因。为什么将它们初始化为代码中使用的值 - 我不知道,可能是作者的一些经验估计。
答案 1 :(得分:0)
我也想知道同样的问题,为什么需要总是用固定的方差进行除法和乘法?另外,如果我们只是在没有这个"编码"和#34;解码"一步,它会对培训产生多大影响吗?