
#优质创作者# 【AAAI'22】基于八叉树的点云压缩大范围上下文模型 原创
【本文正在参加优质创作者激励计划】
@[toc]
【AAAI 2022】OctAttention: Octree-based Large-scale Contexts Model for Point Cloud Compression
https://arxiv.org/pdf/2202.06028v2.pdf
OctAttention采用八叉树对点云进行编码,并利用八叉树中兄弟节点和祖先节点(大范围)的信息,通过自注意力模型(Transformer那一套东西)对八叉树各个节点进行概率建模以进行进一步的熵编码。
方法
模型架构
OctAttention的架构如图:
图中的八叉树有$K=4$个级别,各个节点中的数字为占用码(十进制),叶节点标记为红色,其他三层祖先节点标记为绿色。
模型流程:
首先,将点云编码为八叉树,其中八叉树节点由其占用码(Occupancy)、级别(Level)和卦限(Octant)表示。
然后,将当前节点($1$个)及其祖先节点($K-1$个)和兄弟节点($N-1$个)及其祖先节点($(N-1)\times(K-1)$个)的占用码、级别和卦限分别嵌入到128,6,4维的特征向量中。得到$(N,K,128+6+4)$的上下文嵌入表示。
最后,使用由上下文嵌入表示估计的概率分布将串行化的占用码编码通过熵编码器得到压缩的比特流。
Octree Structure
八叉树表示点云效果图:
给定点云$P$,首先将点坐标减去其相对于$(0,0,0)$的偏移量$\text{offset}=(\min(P_x),\min(P_y),\min(P_z))$,然后通过量化步长$\text{qs}$进行量化:
如果$\text{qs}$取等号,则$P_Q$的坐标值属于${0,1,…,2^L-1}$
八叉树沿着$P_Q$边界框的最大边长将立方体空间递归地划分为的8个相同大小的卦限(子立方体),其中每个子立方体的占用状态构成8位二进制占用码。只有非空的立方体将标记为1并进一步划分;其他未占用的立方体将标记为0,不再进一步划分。空间划分将在给定的深度$L$处停止。
在叶节点处,8位占用码表示边长等于量化步长$\text{qs}$的8个立方体(整个立方被划分为多个边长为量化步长的小立方体)。
构建Octree时,原始点云$P$中的点并入与其最近的立方体得到$P_Q$。重建点云通过$P_Q$逆量化得到:$\hat{P}=P_Q*\text{qs}+\text{offset}$。重建点云$\hat{P}$与原始点云原始点云$P$的重建误差将控制在:
OctAttention的几何压缩误差仅来自量化误差,且可以通过增加八叉树深度$L$以达到任意所需的精度。
Context Model
根据香农信源编码定理,给定一个由八叉树广度优先搜索得到的序列:$x = {x_1,…, x_i,…}$,其比特率以其信息熵下界。各个节点的真实概率分布$P(x)$是高维且未知的,但我们可以通过具有先验信息的网络估计概率$Q(x)$,以指导熵编码器。
OctAttention首先以广度优先顺序遍历八叉树。然后,对于序列中的每个当前编码节点$n_i$,构建长度为$N$(图中为8)的上下文窗口${n_{i−N+1},…,n_k,…,n_{i−1},n_i }$:
其中当前编码节点位于窗口的末尾,窗口随着节点顺序向前滑动。
具有相似祖先和兄弟节点的节点倾向于服从相似的分布。因此,OctAttention的上下文模型利用了各个节点的兄弟节点及其祖先节点的特征进行概率分布推断。OctAttention集成了$N\times K$个相关节点($N$个同级节点都有对应的$K-1$个祖先节点,总共有$N\cdot(K-1)$个祖先节点,包括其自身则有$N\cdot(K-1)+N=N\times K$个节点),大大扩展了上下文。也就是说,OctAttention将分布$Q(x)$分解为每个占用码$x_i$的条件概率的乘积:
其中$x_i\in{1,2,…,255}$为当前编码节点$n_i$的占用码。$\boldsymbol{f}k=\left[\boldsymbol{h}{k}^{(0)}, \boldsymbol{h}{k}^{(1)}, \boldsymbol{h}{k}^{(2)}, \ldots, \boldsymbol{h}_{k}^{(K-1)}\right]$表示节点$n_k$的嵌入特征与其$K−1$个祖先节点的特征的拼接,节点的特征定义为其占用率、深度和卦限的嵌入。$\mathbf{w}$表示上下文模型的参数。
Tree-structured Attention
【推荐阅读:注意力足矣(Attention Is All You Need)https://binaryai.blog.csdn.net/article/details/125106066】
基于体素的方法自然地利用了体素表示所保留的低级几何特征。在八叉树中,这些低级特征则隐藏在节点中。OctAttention首先将上下文窗口中的每个节点的节点信息(包括one-hot编码的占用率$S_k$,级别索引$L_k$,卦限索引$O_k$)分别通过变换矩阵$W_1,W_2,W_3$嵌入到固定长度的特征向量中并拼接为$\boldsymbol{h}_k=[S_kW_1,L_kW_2,O_kW_3]$。
然后,上下文窗口(红色)中$(N,K,128+6+4)$的上下文随后被馈送到多头注意力模块(右)中,并最终通过多层感知器(MLP)用于对占用码分布进行建模:
现有的方法不考虑兄弟节点,而只利用了祖先节点的信息。因此,它们可以轻易地对同级的节点并行编码和解码,从而减少编码时间。如果同时考虑了兄弟节点和祖先节点,在一次传播中对最后一个节点进行编码(如图3(a)所示,利用滑动窗口中前$N−1$个兄弟节点对上下文窗口中的最后一个节点进行预测),则很难实现并行化。
为了减少编码时间,OctAttention引入了掩码操作,该操作为每个节点分配了可变长度的感受野,每个节点都被限制为只能访问上下文窗口中的先前节点。如图3(b)所示,通过这种方式可以并行化计算最后$N_0$个节点的概率分布。与图3(a)中最大感受野的方式相比,平均每个节点的感受野从$N$缩小到$(2N−N_0 + 1)/2$,编码时间减少了$N_0$倍。虽然感受野变小,但作者发现在训练过程中由于掩码操作而导致的性能损失可以忽略不计。
Learning
损失函数:
其中$q_i(x_i| \boldsymbol{f};\mathbf{w})$为节点$n_i$占用码$x_i$的预测概率。
结果
Results for Static LiDAR Compression
Results for Object Point Cloud Compression
消融实验
Context Window Length
Effectiveness of Attention and Sibling Context
Robustness to Varying Point Densities
Runtime
