【CVPR 2018】PU-Net: Point Cloud Upsampling Network

104 阅读2分钟

PU-Net: Point Cloud Upsampling Network

网络架构

PU-Net有四个组件:patch extraction, point feature embedding, feature expansion和coordinate reconstruct。

patch extraction:从给定的一组先验3D模型中提取不同比例和分布的点块。

point feature embedding:通过分层特征学习和多层次特征聚合将原始3D坐标映射到特征空间。

feature expansion:扩展特征数量。

coordinate reconstruct:用一系列全连接层重建输出点云的三维坐标。

训练数据生成

为了学习点云中的局部几何图形,作者采取基于分块的方法来训练网络。首先,在这些对象点云的表面上随机选择MM个点。然后从每个选定的点开始,在对象上生长出一个曲面分块,使得分块上的任何点都在曲面上与选定点的特定的测地线距离dd)内。最后,使用Poisson disk采样在每个面片上随机生成N^\hat{N}个点,作为分块上的参考真实点云,而输入点在每个训练时期以rr的下采样率从真实点集合随机采样。

点特征嵌入

分层特征学习:

Pu-Net采用PointNet++中提出的分层特征学习机制作为网络的开端,逐步捕获层次结构中不断增长的尺度特征。

多级特征聚合

Pu-Net首先通过PointNet++中的插值方法从下采样的点特征中恢复所有原始点的特征,等级为ll的插值点xx的特征计算为:

其中wi(x)1/d(x,xi)w_i(x)1/d(x,x_i)为逆距离权重,x1,x2,x3x_1,x_2,x_3xx的三个最近邻点。然后使用1x1的卷积减少不同级别的内插特征到相同维度CC。最后将各个级别的特征连接,得到最终的点特征ff

Feature Expansion

假使ff的维度为N×C~N\times\tilde{C}NN为输入点数,C~\tilde{C}为连接的点特征的维度。特征扩展层将输出rN×C~2rN\times\tilde{C}_2的特诊ff',其中rr为上采样率.

基于sub-pixel convolution layer,PU-Net的上采样表示为:

其中Ci1()\mathcal{C}_i^1(\cdot)(每个特征集共享参数)和Ci2()\mathcal{C}_i^2(\cdot)(每个特征集参数不同)表示对ff进行的两次1x1卷积。RS()\mathcal{RS}(\cdot)N×rC~2N\times r\tilde{C}_2的张量reshape为rN×C~2rN\times \tilde{C}_2

Cfoordinate Reconstruction

使用全连接网络将N×C~2N\times \tilde{C}_2的扩展特征变换为N×3N\times3

端到端训练

Joint Loss Function

重建损失使用Earth Mover’s distance(EMD):

其中SpS_{p}为predicted point cloud;SgtS_{gt}为参考点云。ϕ:SpSgt\phi:S_p\rightarrow S_{gt}为双射映射

尽管具有重建损失的训练可以在基础对象表面上生成点,但生成的点往往位于原始点附近。为了更均匀地分布所生成的点,Pu-Net还包含一个排斥损失,表示为:

其中N^=rN\hat{N}=rN为输出点的数目,KiK_{i}xix_ik个最近邻点的索引。||\cdot||为L2范数。递减函数η(r)=r\eta(r)=-r作为排斥项(距离越小值越大),避免xix_i离其他点KiK_{i}太近。w(r)=er2/h2w(r)=e^{-r^2/h^2}为权重因子。

最终的端到端训练损失函数:

其中θ\bold{\theta}为网络参数,α\alphaβ\beta为权重。