0%

PSTNet

  • Fan H, Yu X, Ding Y, et al. PSTNet: Point spatio-temporal convolution on point cloud sequences[C]//International Conference on Learning Representations. 2020.
  • National University of Singapore

Introduction

点云可以准确捕捉场景的集合信息,同时对不同的光照条件有较强的鲁棒性。另外,可以通过附带RGB图像来作为3D点的附加特征,以增强点云的能力。

动态点云是不规则和无序的,为了建模点云的动力学,一种解决方案是将点云转换为3D体素序列,然后对体素序列应用4D卷积(Choy等人,2019)。然而,直接对体素序列执行卷积需要大量的计算。此外,在体素化过程中,量化误差是不可避免的,这可能会限制需要精确测量场景几何的应用。另一个解决方案MeteorNet (Liu et al., 2019e)是扩展静态点云方法PointNet++ (Qi et al., 2017b)来处理原始点云序列。

这篇文章的point spatio-temporal (PST) convolution用于直接处理点云序列。由于点云在空间上无序但在时间上有序,因此可以解耦空间和时间信息,来对点云序列进行建模。

点云序列在帧之间没有对应关系,因此PSTNet提出了一个 point tube 结构来保持时空上的局部结构。

主要工作:

  • 首次尝试解耦点云序列的空间和时间信息,提出PST卷积来编码点云序列。
  • PST transposed convolution,用于解码序列,完成point-level的预测任务

Point Spatio-Temporal Convolutional Net

DECOMPOSING SPACE AND TIME IN POINT CLOUD SEQUENCE MODELING

点云空间上无序,时间上有序,因此可以解耦这两个维度来减少空间的不规则对时间模型的影响。另外空间和时间的变化尺度一般不一样,不能在网络中将两者同等对待。通过解耦两者,不仅时空模型更好做了,捕获时间信息的能力上也有显著改善。PST 卷积为:

\[ \begin{aligned} \boldsymbol{F}_{t}^{\prime(x, y, z)}&=\sum_{k=-\lfloor l / 2\rfloor}^{\lfloor l / 2\rfloor} \sum_{\left\|\left(\delta_{x}, \delta_{y}, \delta_{z}\right)\right\| \leq r} \mathbf{W}^{\left(\delta_{x}, \delta_{y}, \delta_{z}\right)}_k \cdot \boldsymbol{F}_{t+k}^{\left(x+\delta_{x}, y+\delta_{y}, z+\delta_{z}\right)},\\ &=\sum_{k=-\lfloor l / 2\rfloor}^{\lfloor l / 2\rfloor} \sum_{\left\|\left(\delta_{x}, \delta_{y}, \delta_{z}\right)\right\| \leq r} \mathbf{T}_{k}^{\left(\delta_{x}, \delta_{y}, \delta_{z}\right)} \cdot\left(\mathbf{S}_{k}^{\left(\delta_{x}, \delta_{y}, \delta_{z}\right)} \cdot \boldsymbol{F}_{t+k}^{\left(x+\delta_{x}, y+\delta_{y}, z+\delta_{z}\right)}\right), \end{aligned} \]

\(\mathbf{W} \in \mathbb{R}^{C^{\prime} \times C \times l}\)为卷积算子,可分解为时间卷积\(\mathbf{T} \in \mathbb{R}^{C^{\prime} \times C_m \times l}\)和空间卷积\(\mathbf{S} \in \mathbb{R}^{C_m \times C }\),另外由于时间卷积核空间卷积的互相独立,公式可以进一步化为:

\[ \boldsymbol{F}_{t}^{\prime(x, y, z)}=\sum_{k=-\lfloor l / 2\rfloor}^{\lfloor l / 2\rfloor} \mathbf{T}_{k} \cdot \sum_{\left\|\left(\delta_{x}, \delta_{y}, \delta_{z}\right)\right\| \leq r} \mathbf{S}^{\left(\delta_{x}, \delta_{y}, \delta_{z}\right)} \cdot \boldsymbol{F}_{t+k}^{\left(x+\delta_{x}, y+\delta_{y}, z+\delta_{z}\right)}, \]

首先空间卷积就存在一个问题,怎么去定义卷积。因为不同的点的邻居的位置偏移完全不一样,我们不可能做一个巨大的卷积核,把所有的位置偏移量\(\theta_{x,y,z}\)都囊括在核里,因此可以把这个空间卷积转换为一个关于偏移的固定大小的函数\(f((\delta_{x}, \delta_{y}, \delta_{z};\theta) :\mathbb{R}^{1x3} \rightarrow \mathbb{R}^{C_m \times C}\),具体实现如下:

\[ f\left(\left(\delta_{x}, \delta_{y}, \delta_{z}\right) ; \boldsymbol{\theta}\right)=\boldsymbol{\theta}_{d} \cdot\left(\delta_{x}, \delta_{y}, \delta_{z}\right)^{T} \cdot 1 \odot \boldsymbol{\theta}_{s} \]

\(\boldsymbol{\theta}_{d} \in \mathbb{R}^{C_m \times 3}\)是displacement transform 核,用于捕捉位移的空间局部结构。 \(\boldsymbol{\theta}_{s} \in \mathbb{R}^{C_m \times C}\) 是sharing核,用于增加特征维度,增强特征表示能力。最终\(f\)即使用固定大小的子核,针对任意一个偏移\(\theta_{x,y,z}\)计算产生一个变换特征的矩阵。来替代原大小不定的卷积操作的权重变换。

Point Tube

Point tube

Point tube结构用于维护点云的时空局部结构,和体素不一样的是,体素是规则划分的,point tube 是基于输入序列动态生成的,即稠密区域有更多的tube。构造方式如下:

时间关键帧的选择:对于点云序列,需要采样出关键帧来作为tube的中心。这里和卷积窗口一样的思路,基于temporal kernel size (l), temporal stride (st) and temporal padding (p)来采样关键帧,左右两边即是tube两端。

空间关键点的选择:在关键帧中进行FPS采样

传播空间关键点:将关键帧中关键点的位置直接传播到邻域帧,也视为这些帧的关键点。

寻找空间邻居:搜寻r半径的邻域作为邻居

有了Point tube的邻域关系,就可以使用PST卷积进行时空局部邻域的卷积。

PST Transposed Convolution

得到了点云整体的特征,有时候对于point-wise的任务还需要将特征传播给所有点。因此PST转置卷积即输入编码信息,输出每个点的特征\([P_i;F_i]=F_i^{\prime\prime} \in \mathbb{R}^{C^{\prime\prime} \times N}\),具体操作如下:

首先解码时间:通过一个时间上的转置卷积,将特征恢复到原来的时间长度:

\[ \mathbf{T}^{\prime} \cdot \boldsymbol{F}_{t}^{\prime(x, y, z)}=\left[M_{t-\lfloor l / 2\rfloor}^{\prime(x, y, z)}, \cdots, M_{t+\lfloor l / 2\rfloor}^{\prime(x, y, z)}\right], \]

\(F_t\)为输入的tube特征,通过PST转置卷积\(\mathbf{T^\prime} \in \mathbb{R}^{l \times C_m^\prime \times C^\prime}\),得到\(M_t\):即解码时间后,每个帧的空间卷积结果。

然后解码空间:受PointNet++里的启发,在关键点和其余点之间根据距离权重进行插值传播特征:

\[ F_{t}^{\prime \prime(x, y, z)}=S^{\prime} \cdot \frac{\sum_{\left\|\left(\delta_{x}, \delta_{y}, \delta_{z}\right)\right\| \leq r} w\left(\delta_{x}, \delta_{y}, \delta_{z}\right) M_{t}^{\prime\left(x+\delta_{x}, y+\delta_{y}, z+\delta_{z}\right)}}{\sum_{\left\|\left(\delta_{x}, \delta_{y}, \delta_{z}\right)\right\| \leq r} w\left(\delta_{x}, \delta_{y}, \delta_{z}\right)}, w\left(\delta_{x}, \delta_{y}, \delta_{z}\right)=\frac{1}{\left\|\left(\delta_{x}, \delta_{y}, \delta_{z}\right)\right\|^{2}} \]

\(S^{\prime} \in \mathbb{R}^{C^{\prime \prime} \times C_{m}^{\prime}}\) 是一个共享核,用于增强特征的插值,并且将特征维度从\(C_m^\prime\)变换成\(C^{\prime\prime}\)

Experiment

MSR-Action3D 动作识别准确率
NTU 动作识别准确率
上为输入点云,颜色表示深度。下为PST卷积的输出。PST卷积最终得到了运动的主要部位