使用Transformer提取连续帧点云的时空特征:P4Transformer算法理解

目录

  • 1. Point 4D Convolution
  • 2. Transformer
    • 2.1 4D Coordinate and Local Feature Embedding
    • 2.2 Self-Attention
  • 3. 3D Action Recognition
  • 4. 4D Semantic Segmentation

论文:Point 4D Transformer Networks for Spatio-Temporal Modeling in Point Cloud Videos

作者:Hehe Fan,Yi Yang,Mohan Kankanhalli

提出了一种使用transformer对直接对原始点云进行时空(Spatio-Temporal)建模的网络:P4Transformer 。网络整体结构如下图所示。

使用Transformer提取连续帧点云的时空特征:P4Transformer算法理解_第1张图片

图1

整体上首先从点云序列中选定特定帧,通过 Point 4D Convolution 融合前后相邻帧的局部特征,提取该特定帧的时空局部特征,之后将时空局部特征和点的4D坐标concatenate在一起,作为Transformer的输入。Transformer中包含了m个Multi-head Self Attention (LayerNorm, RELUs, residual connections)。之后对于不同的任务,经过不同的网络头得到结果。

1. Point 4D Convolution

比如现在有 t 1 t_1 t1 t 5 t_5 t5,5帧点云,每帧点云有 N N N 个点。首先以 s t s_t st 为步长选取特定帧(上图 t 2 t_2 t2 t 4 t_4 t4 )。在这些特定帧点云上使用 Farthest Point Sampling (FPS) 采样出 N s N_s Ns 个点(如上图中点a, b, c, d ,e)。之后将这些采样的点转换到附近的 r t r_t rt 个相邻帧上。之后,以每个转换得到的点为圆心, r s r_s rs 为半径,选定一个局部区域。之后4D卷积就可以如下式计算得到:

使用Transformer提取连续帧点云的时空特征:P4Transformer算法理解_第2张图片
其中
ζ ( δ x , δ y , δ z , δ t ) ⋅ f = ( W d ⋅ ( δ x , δ y , δ z , δ t ) T ) ⊙ ( W f ⋅ f ) \zeta(\delta_x,\delta_y,\delta_z,\delta_t)\cdot f = (W_d\cdot(\delta_x,\delta_y,\delta_z,\delta_t)^T)\odot(W_f\cdot f) ζ(δx,δy,δz,δt)f=(Wd(δx,δy,δz,δt)T)(Wff)

f = F t + δ t x + δ x , y + δ y , z + δ z f=F^{x+\delta_x,y+\delta_y,z+\delta_z}_{t+\delta_t} f=Ft+δtx+δx,y+δy,z+δz

G表示时空上的一个局部区域,由于时空的正交性,可以分成使用 r s r_s rs r t r_t rt 表示的多个空间局部区域的序列(如图1中点云序列中多个圆形区域)。


理解:这里实际上就是在多个相邻帧上提取局部特征。如图2所示,对于中间这个特定帧的局部区域上的一个点 p ( x , y , z , t ) p(x,y,z,t) p(x,y,z,t),为两个相邻帧中及本帧的局部区域的所有点计算到该点的位移向量 ( δ x , δ y , δ z , δ t ) T (\delta_x,\delta_y,\delta_z,\delta_t)^T (δx,δy,δz,δt)T,假设一共有k个点,就可以得到局部位移特征 d i s p ( x , y , z , t ) ∈ R 4 × k disp^{(x,y,z,t)}\in \mathbb{R}^{4\times k} disp(x,y,z,t)R4×k。这k个点的原始特征为 f t ( x , y , z ) ∈ R C × k f^{(x,y,z)}_t\in \mathbb{R}^{ C\times k} ft(x,y,z)RC×k。之后分别通过 W d W_d Wd W f W_f Wf 对特征维度进行变换之后相加,就得到了 F t ′ ′ ( x , y , z ) ∈ R C ′ × k F^{''(x,y,z)}_t \in \mathbb{R}^{C'\times k} Ft′′(x,y,z)RC×k,之后sum pooling得到点 p ( x , y , z , t ) p(x,y,z,t) p(x,y,z,t)时空局部特征 F t ′ ( x , y , z ) ∈ R C ′ × 1 F^{'(x,y,z)}_t\in \mathbb{R}^{ C'\times 1} Ft(x,y,z)RC×1,如图2中的a、b、c、d、e、f。以上这个过程可以用矩阵运算表示:将disp和f通过concatenation得到特征矩阵 f t ′ ( x , y , z ) ∈ R ( 4 + C ) × k f^{'(x,y,z)}_t\in \mathbb{R}^{ (4+C) \times k} ft(x,y,z)R(4+C)×k。则
F t ′ ′ ( x , y , z ) = [ W d W f ] f ′ F^{''(x,y,z)}_t ={\left[ {\begin{array}{c} {{W_d}}&{{W_f}} \end{array}} \right]}{f'} Ft′′(x,y,z)=[WdWf]f

其中 W d ∈ R C ′ × 4 W_d\in \mathbb{R}^{C'\times 4} WdRC×4 W f ∈ R C ′ × C W_f\in \mathbb{R}^{C'\times C} WfRC×C

以上这个操作也可以如PSTNet中一样看成是由相对位置坐标来生成卷积核,因此论文中叫做4D卷积。


使用Transformer提取连续帧点云的时空特征:P4Transformer算法理解_第3张图片

图2

2. Transformer

2.1 4D Coordinate and Local Feature Embedding

这一部分就类似于传统transformer中的Positional Encoding。通过Point 4D Convolution得到了多个帧的时空局部特征。对于点 p ( x , y , z , t ) p^{(x,y,z,t)} p(x,y,z,t) ,提取到的时空局部特征为 F t ′ ( x , y , z ) ∈ R C ′ × 1 F^{'(x,y,z)}_t \in \mathbb{R}^{ C'\times 1} Ft(x,y,z)RC×1 。则encoding的过程可以由下式表达:
I ( x , y , z , t ) = W i ⋅ ( x , y , z , t ) T + F t ′ ( x , y , z ) I^{(x,y,z,t)}=W_i\cdot(x,y,z,t)^T+F^{'(x,y,z)}_t I(x,y,z,t)=Wi(x,y,z,t)T+Ft(x,y,z)
其中 W i ∈ R C ′ × 4 W_i \in \mathbb R^{C' \times 4} WiRC×4 。综合所有点, I ∈ R C ′ × L ′ N ′ I \in \mathbb R^{C'\times L'N'} IRC×LN就作为Transformer的输入。, L ′ L' L 为选取的特定帧的数量, N ′ N' N为每帧采样的点数。

2.2 Self-Attention

这一部分与传统Transformer一样,通过输入 I ∈ R C ′ × L ′ N ′ I \in \mathbb R^{C'\times L'N'} IRC×LN ,得到queries Q Q Q、keys K K K 和 values V V V
Q = W q ⋅ I K = W k ⋅ I V = W v ⋅ I Q=W_q \cdot I\\ K=W_k \cdot I\\ V=W_v \cdot I Q=WqIK=WkIV=WvI
其中 W q ∈ R C k × C ′ W_q \in \mathbb R^{C^k \times C'} WqRCk×C, W k ∈ R C k × C ′ W_k \in \mathbb R^{C^k \times C'} WkRCk×C, W v ∈ R C v × C ′ W_v \in \mathbb R^{C^v \times C'} WvRCv×C
a t t e n t i o n ( Q , K ) = s o f t m a x ( Q T ⋅ K ( C k ) ) O = V ⋅ a t t e n t i o n ( Q , K ) attention(Q,K)=softmax(\frac{Q^T\cdot K}{\sqrt{(C^k)})}\\ O=V \cdot attention(Q,K) attention(Q,K)=softmax((Ck) )QTKO=Vattention(Q,K)
其中 a t t e n t i o n ( Q , K ) ∈ R L ′ N ′ × L ′ N ′ attention(Q,K)\in \mathbb R^{L'N'\times L'N'} attention(Q,K)RLN×LN,表示L’N’个采样点的时空局部特征之间的相关性。 O ∈ R C v × L ′ N ′ O\in \mathbb R^{C^v\times L'N'} ORCv×LN

为了增强Transformer的学习能力,使用 Multi-Head Self Attention

3. 3D Action Recognition

如图1所示,在Transformer后使用max pooling将Transformer输出的局部特征融合成一个单独的全局特征。之后使用MLP将全局特征转换成为动作预测。

4. 4D Semantic Segmentation

语义分割需要的是 point-wise feature,Transformer的复杂度是 O ( n 2 ) O(n^2) O(n2),因此对原始点云使用多个 point 4D convolution层来减少Transformer处理的点的数量。在Transformer之后,使用PointNet++里的feature propagation对点云特征进行插值。

插值方法(inverse distance weighted average):对于插值点p ( x , y , z , t ) (x,y,z,t) (x,y,z,t),找局部特征里距离点p最近的 k k k 个点(文章里 k = 3 k=3 k=3),点p的特征就由这k个临近点特征加权线性组合。**每个点的权重为点p到该点的距离和点p到这k个点的距离之和的比。**因此于点p距离越近的点对点p的特征贡献度越大。以上过程由公式表达即为
F ′ ′ ( x , y , z ) = ∑ i = 1 k ω ( δ x , δ y , δ z ) O ( x + δ x , y + δ y , z + δ z , t ) ∑ i = 1 k ω ( δ x , δ y , δ z ) F^{''(x,y,z)}=\frac{\sum_{i=1}^{k}\omega(\delta_x,\delta_y,\delta_z)O^{(x+\delta_x,y+\delta_y,z+\delta_z,t)}}{\sum_{i=1}^k\omega(\delta_x,\delta_y,\delta_z)} F′′(x,y,z)=i=1kω(δx,δy,δz)i=1kω(δx,δy,δz)O(x+δx,y+δy,z+δz,t)

其中 ω ( δ x , δ y , δ z ) = 1 ∣ ∣ ( δ x , δ y , δ z ) ∣ ∣ 2 \omega(\delta_x,\delta_y,\delta_z)=\frac1{||(\delta_x,\delta_y,\delta_z)||^2} ω(δx,δy,δz)=∣∣(δx,δy,δz)21

你可能感兴趣的:(深度学习,点云处理,transformer,深度学习,人工智能,自动驾驶)