目录
- 1. 基于原始点云的方法
- 1.1 PSTNET
- 时空点云卷积:
- 时间卷积
- 1.2 PointRNN
- 1.3 MoNet
- Content encoder
- Motion encoder
- 1.4 MeteorNet
- 1.5 Point Spatial-Temporal Transformer( P S T 2 PST^2 PST2)
- Resolution Embedding(RE)
- Spatio-Temporal Self-Attention(STSA)
对于连续的点云序列,点云在空间上是无序的,但在时间上是有序的。由于空间上的无序性,传统卷积无法直接应用于原始点云,因此时序点云特征提取方法可以分为
- 基于体素分割的方法
- 基于原始点云的方法
基于体素的方法通常是将每一帧的点云划分为多个有序区域,在每个区域内部提取特征后经过pooling操作将无序点云转换为有序点云,之后就可以使用传统卷积的方法进一步进行特征编码。
基于原始点云的方法通常首先进行点云的下采样,之后对每个采样点提取局部特征。
本文对一些论文中点云时空特征提取方法做出一些总结。
1. 基于原始点云的方法
1.1 PSTNET
标题:PSTNET: POINT SPATIO-TEMPORAL CONVOLUTION ON POINT CLOUD SEQUENCES
作者:Hehe Fan, Xin Yu, Yuhang Ding, Yi Yang & Mohan Kankanhalli
代码:https://github.com/hehefan/Point-Spatio-Temporal-Convolution
仿照传统3D卷积的概念提出了适用于连续点云的时空4D卷积。在空间上为通过相对坐标产生卷积核。输入tensor: ,输出tensor:,其中 为序列长度,
对于t时刻的点 ,可以通过3D卷积来提取时空局部特征,过程可以用下式描述
传统3D卷积:输入tensor:,输出tensor:。
PSTNET的方法:
图1
如上图,有5帧连续点云。首先根据时间滑动步长 ,选择出第1,2,3帧点云作为采样帧。其次在每个采样帧中采样 个点(anchor points)。根据时间卷积核的大小 ,将每个采样点转换到前后相邻帧中。为每个采样点在本帧以及前后相邻帧中以 为半径搜索邻域点,构造出“point tube”。之后通过空间卷积提取每个采样点的空间局部特征 。之后时间卷积将每个滑动串口内的 帧的空间特征编码成时间特征 。
参数:
- :时间卷积核大小
- :时间卷积滑动步长
- :空间邻域半径
时空点云卷积:
由于点云在空间上是无序而不规则的,且空间和时间维度是正交的。因此可以将时间和空间解耦,先在空间上卷积,再在时间上卷积。
空间卷积
空间上的不规则性导致我们无法直接定义空间卷积核,因此PSTNET通过相对坐标来产生卷积核。
其中 ,,
时间卷积
缺点:除非增大邻域搜索半径,否则无法通过堆叠更多的层获得空间上更大的感受野。
1.2 PointRNN
标题:PointRNN: Point Recurrent Neural Network for Moving Point Cloud Processing
作者:Hehe Fan, Yi Yang
代码:https://github.com/hehefan/PointRNN
传统的RNN通过将此时刻的输入和上一时刻的状态concat在一起来融合之前时间步的信息。但是无法直接用于点云。point-rnn的目标就是根据点的坐标融合过去和现在的点云特征。即给定点云坐标及特征 和 。对于 中的第i个点 ,首先找到该点在前一帧点云 的k个近邻。设 是其中一个邻居点。将第i个点的特征 、邻居点上个时间的状态 、邻居点到第i个点的位移向量 concatenate在一起,通过FC层融合。之后通过在k这个维度pooling,得到一个单独的特征表示,为第t个时间步的状态 。
因此,PointRNN中,在第 个时间步的状态更新由下式描述:
1.3 MoNet
标题:MoNet: Motion-based Point Cloud Prediction Network
作者:Fan Lu, Guang Chen, Yinlong Liu Zhijun Li, Sanqing Qu, Tianpei Zou
MoNet用于点云预测,主要分为两部分:Embedding和Inference。其中Embedding用于提取特征,分为 Content encoder和 Motion encoder。分别提取点云帧内容特征和点云帧间运动特征。
图2
图3
Content encoder
给定时刻t、第 层的点云坐标 和特征 ,首先使用 Furthest Point Sampling(FPS)从 采样出 个点 。对于 中的每一点 ,在 中使用KNN方法找出它的k个邻居点 ,相对坐标 以及相对距离 。将以上三种特征和这k个点的内容特征 concat在一起产生一个点的空间局部融合特征。之后将所有点的空间局部融合特征输入到MLP中,pooling得到第 层的内容特征 。
Motion encoder
用于提取连续两帧点云的运动信息。输入为 ,。对于 中的每一点 ,在 中使用KNN方法找出它的k个邻居点 。使用与Content encoder相似的策略来提取两帧之间的运动特征。之后输入到MLP中,pooling得到第 层的运动特征 。
1.4 MeteorNet
标题:MeteorNet: Deep Learning on Dynamic 3D Point Cloud Sequences
作者:Xingyu Liu, Mengyuan Yan, Jeannette Bohg
文章中关键模块是Meteor Module,输入是序列点云 ,输出是S中每个点 的特征向量 。第一步是找到点 在第t帧和附近帧的邻居点来构成一个时空局部区域 。假设 是其中一个邻居,点
- 当帧之间对应关系比较重要时,将两个点的特征、两个点时空位置的差异concat之后输入进MLP 。
- 当帧之间对应关系不重要时(如语义分割),将点 、两个点时空位置的差异concat之后输入进MLP 。
对于局部区域
- Direct grouping
直接使用半径 来构建邻域,半径 随帧的差异 - Chained-flow grouping
通过scene flow的方法估计出第t帧的点 在第t-1, t-2, … 帧的位置 ,分别以每帧的估计位置为中心以半径
1.5 Point Spatial-Temporal Transformer()
标题:Spatial-Temporal Transformer for 3D Point Cloud Sequences
作者:Yimin Wei, Hao Liu, Tingting Xie, Qiuhong Ke, Yulan Guo
代码:无
- Spatio-Temporal Self-Attention(STAT)
- Resolution Embedding(RE)
采用了encoder-decoder的结构。encoder包含了一个backbone、一个RE模块和一个STSA模块。decoder包含了多个Feature Propagation(PointNet++)层。
输入为点云序列 ,首先使用FPS在 中采样m个种子点。在 上用一定半径 搜索这m个种子点的邻居点。之后使用两个 Set Abstraction(PointNet++)层来提取局部特征 。
Resolution Embedding(RE)
RE模块用于提高每帧中点的分辨率,主要包含一个feature block和一个resolution block。feature block用于进一步提取语义特征,resolution block用于进一步提取空间邻域信息。
- Feature block
对 再用一个Set Abstraction 层得到 。 - Resolution block
将 在空间维度上分为 和 ,再将它们再特征维度上concat得到 。之后通过MLP进一步提取特征
Feature block 和 Resolution block 的结果通过MLP和softmax产生注意力权重 ,最终特征为二者加权和 。
Spatio-Temporal Self-Attention(STSA)
STSA模块用于融合帧间特征并且捕获时空邻域信息。将第i帧的空间特征
未完待续。。。