文章目录
- Patch-Based Deep Autoencoder for Point Cloud Geometry Compression
- 压缩流程
- 自编码架构
- 实验结果
Patch-Based Deep Autoencoder for Point Cloud Geometry Compression
https://arxiv.org/abs/2110.09109
这篇论文使用深度自编码器,提出了一种基于分块(patch)的有损点云几何压缩模型。与现有的点云压缩网络(在整个原始点云上应用特征提取和重建)不同,该模型通过采样和KNN操作将输入点云划分为多个小块并独立地压缩处理。最终的完整点云由解压缩后的各个小块组合得到。此外,作者使用分块的局部重建损失训练整个模型,以逼近最优的全局重建性能。使用分块来训练模型有两个优点:
- 首先,由于分块已经是点云的局部区域,因此网络模型不需要使用多个集合抽象层堆栈来捕获局部细节,从而降低了训练模型的复杂性。
- 其次,将点云划分成块增强了训练数据,这可以避免过拟合问题,提高模型预测精度。
在点云压缩任务中,该模型可以保证重建的点云与输入点云的点数相同,有很好的率失真性能(尤其是在低比特率下)。此外,还可以通过调整重建点云的点数将该模型应用于其他点云重建任务,例如点云上采样。
压缩流程
首先原始点云被分为两部分:独立的分块和作为分块的辅助信息的采样点坐标。该过程描述如下:
-
对于 N N N个点的原始点云,使用FPS采集 S S S个点 { p 1 , p 2 , . . . , p S } \{p_1,p_2,...,p_S\} {p1,p2,...,pS},作为各个分块的辅助信息。
-
对于每个采样点,使用KNN得到 K K K个最近邻点 { p i 1 , p i 2 , . . . , p i K } \{p_i^1,p_i^2,...,p_i^K\} {pi1,pi2,...,piK}。然后计算每个最近邻点相对于采样点的坐标,即 { p i 1 − p i , p i 2 − p i , . . . , p i K − p i } \{p_i^1-p_i,p_i^2-p_i,...,p_i^K-p_i\} {pi1−pi,pi2−pi,...,piK−pi},作为网络模型的输入。
即使使所有分块的总点数等于输入点云的总点数,也不足以覆盖整个点云。因此,作者令 S × K = α N ( α > 1 ) S×K=αN(α>1) S×K=αN(α>1)来避免某些点无法被捕获。
在编码过程中,每个分块被传递给自编码器的编码器,然后生成一组潜在表示。使用量化器对这些表示进行量化,然后将其与采样点的坐标信息相结合,以形成整个点云的最终潜在表示。
最后,最终的潜在表示被熵编码成比特流并传输到解码器。
解码过程与编码过程基本相反。在获得点云的表示之后,作者从中分离出各个分块的潜在表示,并将这些表示分别传递给自编码器的解码器得到各个重建分块。
然后,作者将解码器输出与辅助坐标信息(采样点坐标 𝑝 𝑖 𝑝_𝑖 pi)相加,以形成最终的重建结果。每个独立预测结果的合并是最终的点云重建结果。为了获得与输入点云相同的分辨率,作者设置络预测点云分块的点数 k = N / S k=N/S k=N/S。
自编码架构
自编码器基于PointNet实现分块的变换和压缩。它包括分析变换(analysis transform)
f
a
f_a
fa、量化函数(quantization function)
Q
Q
Q和合成变换(synthesis transform)
f
s
f_s
fs。
-
分析变换 f a f_a fa: 分析变换用于提取分块的特征表示。在分析转换中,作者首先使用PointNet++的集合抽象(SA)层中的分组层和PointNet层来提取每个点的小尺度局部特征( D D D维),然后使用PointNet提取更高级别的全局特征( d d d维)。
-
量化函数 Q Q Q: 量化函数用于量化隐特征表示以进一步压缩。在训练过程中作者向 ( 1 , d ) (1,d) (1,d)维隐藏特征添加[-0.5, 0.5]的均匀噪声近似量化,这可以使量化过程可微,因此允许在随机梯度下降优化期间进行反向传播。在测试中,作者对隐藏层特征使用舍入运算,以实现后续的熵编码。
-
合成变换 f s f_s fs: 合成变换用于将量化特征重建为输入形状。使用几个全连接层将量化特征变换到 k × 3 k×3 k×3维,然后重塑为 ( k , 3 ) (k,3) (k,3)得到一个分块的重建结果。
重建结果和输入之间的误差(失真)用Chamfer distance计算:
其中 P P P为训练过程一个batch的总分块数。 x x x表示原始点云的分块 S i S_i Si的一个点。 y y y表示预测分块 S i ′ S'_i Si′的一个点。
最终损失函数设置为
L
=
D
C
D
+
λ
R
L=D_{CD}+λR
L=DCD+λR,其中
R
R
R是由隐藏层特征的概率分布估计的比特率。比特率估计表达式如下所示:
其中
z
~
i
\tilde{z}_i
z~i是在为分块
S
i
S_i
Si添加均匀噪声之后的表示。
q
(
z
~
i
∣
S
i
)
q(\tilde{z}_i|S_i)
q(z~i∣Si)表示
z
~
i
\tilde{z}_i
z~i的实际边缘分布。
p
z
~
i
(
z
~
i
)
p_{\tilde{z}_i}(\tilde{z}_i)
pz~i(z~i)是
z
~
i
\tilde{z}_i
z~i的熵模型,使用[https://arxiv.org/abs/1802.01436]中的UNIVARIATE NON-PARAMETRIC DENSITY MODEL估计。需要解释的是,
λ
λ
λ对压缩率的影响并不显著,作者主要依靠改变瓶颈层中
d
d
d的大小来调整压缩率。
自编码器的具体网络参数为:
其中:
-
集合抽象层:SA(分块中的点数,每个分组中的点数,共享参数的MLP层每个层的大小)
-
PointNet:PN(共享参数的MLP层每个层的大小)
-
全连接层:FC(输入特征大小,输出特征大小)
实验结果
Visualization of Training Process
Compression Performance Comparison
Influence of Patch Count on Compression Performance
Application to Point Cloud Upsampling