VoteNet 的 Hough voting 是怎么产生的

前言

VoteNet 是一个3D 点云目标检测的一个模型,其中涉及Hough voting的概念,困惑了我好久,这里记录下我的理解。

如有错误,欢迎指正。

在VoteNet的源码中,涉及Hough voting的计算有两处:

  1. 在点云数据的label产生中,计算Hough voting的真实值
  2. 在网络的正向传播过程中,计算Hough voting的预测值

以下将通过这两个部分讲解Hough voting。

一、Hough voting真实值的计算

其源代码在votenet/sunrgbd/sunrgbd_data.py 中。

以下我利用2D 图像的例子描述。

如下图所示,黑色方格代表像素,红色框、绿色框、蓝色框是三个ground truth框。

先取红色的框,计算框内每个点到框中心点的向量,这就是红色框的vote。然后继续计算绿色框,蓝色框的vote。

--> --> 

将图中的向量用数值表示出来,就是:

可以发现框内每个像素点拥有的vote的个数不同,有些有一个,有些有两个,有些有三个。

为了方便程序处理,设置每个像素点拥有三个vote值。当不满三个vote时,用第一个vote填充剩下的值。

在ground truth框外的像素点的vote值为[(0, 0), (0, 0), (0, 0)],这里没有在图中画出。

如下图所示,这样就是这副图像的Hough voting的结果了。

理解了2D图像的Hough voting,3D 点云的Hough voting可以看做vote向量由二维变成了三维。

VoteNet源码中Hough voting向量是由3D 框的中心点指向3D 框内的其他点,方向跟本文图例相反。

二、Hough voting预测值的计算

其源代码在votenet/models/voting_module.py 中。

... 待更新 ...

猜你喜欢

转载自blog.csdn.net/Jeff_zjf/article/details/106995206