SuperMHP/GUPNet

有两个问题,麻烦解答一下~

Closed this issue · 9 comments

  1. 为什么用2d bbox来算深度,而不是用2d keypoints的检测来算深度
    根据小孔成像原理,深度 = 物体的实际高度* f /物体的pixel高度,但是论文中却用的是物体的2d bbox来代替物体的pixel高度,这样不会导致误差吗?所以论文中对于深度的计算结果加了一个offset,是这样的吗?为什么不直接用keypoints的检测,然后利用keypoints算出pixel的高度,再来算深度呢?按照GUPnet这样的计算相比于利用keypoints检测的方法有什么优势?

  2. 论文中提到的三种提升(GeP, UnC, GeU)中的GeP到底是指什么?
    UnC很好理解,就是用uncertainty来作confidence,和heatmap的confidence结合起来算物体的置信度,GeU可以说是整篇文章结合到一起就是GeU吧(利用了uncerttainty 计算的几何投影),但是GeP是指什么没明白。因为你的Paper里并不像MonoFlex或MonoCon那样有直接预测深度的分支,那就必须靠投影,所以GeP难道不是必须的吗?为什么Ablation study里面还专门列了一项GeP对该方法的提升?

麻烦解答,多谢~

可不可以理解为GeP就是只有投影+uncertainty,然后没有加上bias以及bias的uncertainty
然后GeU就是投影+bias以及二者结合的uncertainty都有的一种情况
但是第一个问题还是没有理解

好像有点明白了:
keypoints计算的深度只是车头/车尾的深度,但是2d bbox计算的深度可以理解为是车3d中心点的深度?是这样吗
但是怎么证明车的2d bbox算出的深度就是车的3d 中心点处的深度呢?
还有就是为什么加offset是有效的,怎么理解这一点呢,其理论依据在哪?是因为2d bbox计算的深度有可能不是真实的3d中心点深度?

还是不对,以下面这个图以例,计算中心点的深度,应该是计算红线的pixel heigt,而不是2d bbox的height,麻烦解答一下吧
image

Q1: 用2d object height(红线)算的话,效果会比较差,这一点原因未知,我在GUPNET++研究的时候试了也是这个结论,目前只是一个实验性质的结论。那么使用box 2d height的话,从成像原理上,box_2dheight>=object_2dheight,因此会使得投影的depth偏小,因此需要加一个>0的修正项,所以模型预测了一个大于0的bias(大于0这一点通过exp保证)

Q2: GeP是指单独的几何投影算depth。GeP不加GeU的话相当于depth用投影算,但是depth uncertainty是直接由neural network预测的,以进行uncertainty loss训练,之后也仍然可以用该uncertainty算score。

@SuperMHP ,我有些明白了,多谢您的解答,但我还有两个问题:

  1. GeP有没有加上bias呢?
  2. 下图中的 a) b) c) 三行中没有用GeP, 深度是怎么来的呢
    image
  1. 加了 2. 没有GeP则直接用nn预测depth,可以理解成直接拿depth bias stream的输出做depth value和depth uncertainty的计算

@SuperMHP 明白了,非常感谢!