An Efficient PointLSTM for Point Clouds Based Gesture Recognition[CVPR2020]

An Efficient PointLSTM for Point Clouds Based Gesture Recognition[CVPR2020]_第1张图片[论文链接]
\qquad 本文提出了一种在保留空间结构的前提下实现信息从过去帧传播到未来帧的PointLSTM方法来对序列点云数据做手势识别和动作识别。PointLSTM通过权值共享的LSTM层,将过去帧邻近点的状态信息与当前特征相结合,更新当前状态。这种方法可以集成到许多其他的序列学习方法中。

\qquad 近年来RNN和LSTM在序列建模上取得了成功,利用LSTM可以从时空的一致性捕捉到运动和外观随时间的变化。论文中所使用的长短期记忆网络为一般的LSTM:
h ( t ) , c ( t ) = L S T M ( y ( t ) , h ( t − 1 ) , c ( t − 1 ) ) . \pmb{h}^{(t)},\pmb{c}^{(t)}=\mathbf{LSTM}(\pmb{y}^{(t)},\pmb{h}^{(t-1)},\pmb{c}^{(t-1)}). hhh(t),ccc(t)=LSTM(yyy(t),hhh(t1),ccc(t1)).
h ( t ) \qquad\pmb{h}^{(t)} hhh(t)为隐状态, c ( t ) \pmb{c}^{(t)} ccc(t)为细胞状态。
An Efficient PointLSTM for Point Clouds Based Gesture Recognition[CVPR2020]_第2张图片
\qquad 接下来,作者提出了使用LSTM处理点云序列的两种方式:

\qquad ( a ) (a) (a) Point-independent states:考虑序列中的每个点 ( p i ( t ) (p_i^{(t)} (pi(t)拥有独立的隐状态和细胞状态。由于输入的点云通常为无序的集合,因此邻近的两帧点云之间没有精确的对应关系。这里作者放松了限制,使用当前帧中点在先前帧中的邻近点来代替。首先将先前帧中的临近点的特征传递给下一阵,然后在统一进行处理。对每个点对 ( p i ( t ) , p j ( t − 1 ) ) (p_i^{(t)},p_j^{(t-1)}) (pi(t),pj(t1)) p j ( t − 1 ) ∈ N − 1 ( x i t ) p_j^{(t-1)}\in N_{-1}(\pmb{x}_i^t) pj(t1)N1(xxxit) 进行如下操作:
y i , j ( t ) = [ x i ( t ) − x j ( t − 1 ) ; f i ( t ) ] h ~ i , j ( t ) , c ~ i , j ( t ) = L S T M ( y i , j ( t ) , h j ( t − 1 ) , c j ( t − 1 ) ) \pmb{y}_{i,j}^{(t)}=[\pmb{x}_i^{(t)}-\pmb{x}_j^{(t-1)};\pmb{f}_i^{(t)}] \\ \tilde{\pmb{h}}_{i,j}^{(t)},\tilde{\pmb{c}}_{i,j}^{(t)}=\mathbf{LSTM}(\pmb{y}_{i,j}^{(t)},\pmb{h}_j^{(t-1)},\pmb{c}_j^{(t-1)}) yyyi,j(t)=[xxxi(t)xxxj(t1);fffi(t)]hhh~i,j(t),ccc~i,j(t)=LSTM(yyyi,j(t),hhhj(t1),cccj(t1))
h ~ i , j ( t ) , c ~ i , j ( t ) \qquad\tilde{\pmb{h}}_{i,j}^{(t)},\tilde{\pmb{c}}_{i,j}^{(t)} hhh~i,j(t),ccc~i,j(t)为点对 ( p i ( t ) , p j ( t − 1 ) ) (p_i^{(t)},p_j^{(t-1)}) (pi(t),pj(t1))的虚拟隐状态和细胞状态,最终点 p i ( t ) p_i^{(t)} pi(t)的状态更新为:
h i ( t ) = g ( h ~ i , 1 ( t ) , h ~ i , 2 ( t ) , . . . , h ~ i , n t − 1 ( t ) ) , c i ( t ) = g ( c ~ i , 1 ( t ) , c ~ i , 2 ( t ) , . . . , c ~ i , n t − 1 ( t ) ) . \pmb{h}_i^{(t)}=g(\tilde{\pmb{h}}_{i,1}^{(t)},\tilde{\pmb{h}}_{i,2}^{(t)},...,\tilde{\pmb{h}}_{i,n_{t-1}}^{(t)}),\\ \pmb{c}_i^{(t)}=g(\tilde{\pmb{c}}_{i,1}^{(t)},\tilde{\pmb{c}}_{i,2}^{(t)},...,\tilde{\pmb{c}}_{i,n_{t-1}}^{(t)}). hhhi(t)=g(hhh~i,1(t),hhh~i,2(t),...,hhh~i,nt1(t)),ccci(t)=g(ccc~i,1(t),ccc~i,2(t),...,ccc~i,nt1(t)).
\qquad ( b ) (b) (b) Point-shared states:考虑到每个点都独立会消耗巨大的计算量,为加速特征的更新过程,提出了一个简化版的PointLSTM:PointLSTM-PSS。这种情况下,相同帧中的点共享隐状态 h ( t ) \pmb{h}^{(t)} hhh(t)和细胞状态 c ( t ) \pmb{c}^{(t)} ccc(t):
y i ( t ) = [ x i ( t ) ; f i ( t ) ] h ~ i ( t ) , c ~ i ( t ) = L S T M ( y i ( t ) , h ( t − 1 ) , c ( t − 1 ) ) \pmb{y}_{i}^{(t)}=[\pmb{x}_i^{(t)};\pmb{f}_i^{(t)}] \\ \tilde{\pmb{h}}_i^{(t)},\tilde{\pmb{c}}_i^{(t)}=\mathbf{LSTM}(\pmb{y}_i^{(t)},\pmb{h}^{(t-1)},\pmb{c}^{(t-1)}) yyyi(t)=[xxxi(t);fffi(t)]hhh~i(t),ccc~i(t)=LSTM(yyyi(t),hhh(t1),ccc(t1))
h ~ i ( t ) , c ~ i ( t ) \qquad\tilde{\pmb{h}}_i^{(t)},\tilde{\pmb{c}}_i^{(t)} hhh~i(t),ccc~i(t)为点对 ( p i ( t ) , p j ( t − 1 ) ) (p_i^{(t)},p_j^{(t-1)}) (pi(t),pj(t1))的虚拟隐状态和细胞状态,点 p i ( t ) p_i^{(t)} pi(t)的状态更新为:
h ( t ) = g ( h ~ 1 ( t ) , h ~ 2 ( t ) , . . . , h ~ n t ( t ) ) , c ( t ) = g ( c ~ 1 ( t ) , c ~ 2 ( t ) , . . . , c ~ n t ( t ) ) . \pmb{h}^{(t)}=g(\tilde{\pmb{h}}_1^{(t)},\tilde{\pmb{h}}_2^{(t)},...,\tilde{\pmb{h}}_{n_t}^{(t)}),\\ \pmb{c}^{(t)}=g(\tilde{\pmb{c}}_1^{(t)},\tilde{\pmb{c}}_2^{(t)},...,\tilde{\pmb{c}}_{n_t}^{(t)}). hhh(t)=g(hhh~1(t),hhh~2(t),...,hhh~nt(t)),ccc(t)=g(ccc~1(t),ccc~2(t),...,ccc~nt(t)).
\qquad 对于邻近点的寻找方法,作者同样提出了两种思路:

( a ) \qquad(a) (a) Direct grouping:邻近点直接取当前点在先前帧中的k近邻。

( b ) \qquad(b) (b) Aligned grouping:通过对齐两个邻近点云的质心来对他们进行粗略的对齐:
∆ x ˉ ( t ) = 1 n t − 1 ∑ i = 1 n t − 1 x i ( t − 1 ) − 1 n t ∑ i = 1 n t x i ( t ) ∆ x i ( t ) ≈ ∆ x ˉ ( t ) , f o r   i = 1 , . . . , n t . ∆\bar{\pmb{x}}^{(t)}=\frac{1}{n_{t-1}}\sum_{i=1}^{n_{t-1}}\pmb{x}_i^{(t-1)}-\frac{1}{n_t}\sum_{i=1}^{n_t}\pmb{x}_i^{(t)} \\ ∆\pmb{x}_i^{(t)}\approx∆\bar{\pmb{x}}^{(t)},\mathbb{for}\ i=1,...,n_t. xxxˉ(t)=nt11i=1nt1xxxi(t1)nt1i=1ntxxxi(t)xxxi(t)xxxˉ(t),for i=1,...,nt.
\qquad 其中 ∆ x i ( t ) = x ~ i ( t − 1 ) − x i ( t ) ∆\pmb{x}_i^{(t)}=\tilde{\pmb{x}}_i^{(t-1)}-\pmb{x}_i^{(t)} xxxi(t)=xxx~i(t1)xxxi(t),利用 ∆ x i ( t ) ∆\pmb{x}_i^{(t)} xxxi(t)可以在先前帧中找到虚拟点,进而找到近邻,这样做也可以反应前面提出的方法对于小位移的鲁棒性。
An Efficient PointLSTM for Point Clouds Based Gesture Recognition[CVPR2020]_第3张图片
\qquad 网络的基本结构如上图所示,包括5个阶段:Stage-1使用空间分组学习帧内特征,Stage-2到Stage-4使用时空分组和基于密度的采样学习帧间特征,Stage-5提取逐点的特征,最后使用Max pool得到全局特征。

\qquad Density-based sampling layer 从深度视频提取到的点云点的数量是很大的,而且绝大部分包含相同的深度信息。为减少冗余的计算,文中使用了基于密度的采样方法。点的密度计算方法为:
ρ ( x i ( t ) ) = 1 n t r d ∑ j = 1 n t w ( x i ( t ) − x j ( t ) r ) \rho(x_i^{(t)})=\frac{1}{n_tr^d}\sum_{j=1}^{n_t}w(\frac{x_i^{(t)}-x_j^{(t)}}{r}) ρ(xi(t))=ntrd1j=1ntw(rxi(t)xj(t))
r \qquad r r p i ( t ) p_i^{(t)} pi(t)与其在 P ( t ) \mathbb{P}^{(t)} P(t)帧中k近邻的欧几里得距离, w w w是一个有界可积的权重函数。在每个采样层选取密度较低的点,因为这些点对应于点云的边界。

\qquad 为研究PointLSTM的有效性,作者通过用PointLSTM分别替换Stage-1,2,3,4得到了PointLSTM-raw以及PointLSTM-early,PointLSTM-middle和PointLSTM-late。
\qquad 具体实现的细节还需要等代码开源后再进行学习。

你可能感兴趣的:(Deep,Learning,for,point,cluod,深度学习,点云,手势识别)