[骨架动作识别]STA-LSTM: Spatio-Temporal Attention Model for Human Action Recognition from Skeleton Data
An End-to-End Spatio-Temporal Attention Model for Human Action Recognition from Skeleton Data 这是来自微软亚洲研究院的一篇文章,兰翠玲老师组的,他们在骨架动作识别方面出过不少佳作,微软毕竟是kinect亲妈。只是代码不开源,略坑。
网络结构
网络(Main LSTM Network)用于对特征进行提取、时域相关性利用和最终的分类。时域注意力子网络 (Temporal Attention)用于给不同帧分配合适的重要性。空域注意力子网络(Spatial Attention)用于给不同关节点分配合适的重要性。
序列中的空域注意力和时域注意力具体为多大是没有参考的(不知道Groundtruth)。网络是以优化最终分类性能来自动习得注意力,以及加上一些正则项。
Spatial Attention with Joint-Selection Gates
就是普通的soft-attention 机制
Temporal Attention with Frame-Selection Gate
与空间注意力不同的是,这里用了relu作为**函数,没用softmax,而且是直接与lstm输出相乘。
至于为什么用relu文章说它收敛性好,至于没用softmax,原因不祥
最后的softmax层用于分类
训练过程
目标函数:
因为有两个子网络,序列中的空域注意力和时域注意力没有groundtruth,只靠类别的交叉熵损失函数来训练,力度是不够的。于是又加上了三项惩罚项。
第一个正则项,因为发现空间注意力模型很容易忽视一些重要的关节点,为了让它动态地focus在更多的空间点上。这个正则项等价于, K代表关节点的个数. 根据文章《show attend and tell 》中的解释,代表注意力平均的加在每一个位置,这一点是非常重要的,but,为什么还要除以一个T。
《show attend and tell 》中的损失函数
第二个正则项,给时域注意力加上l2正则化,避免梯度消失
第三个正则项,l1正则化为了避免过拟合,表示所有的连接矩阵
除了加regularization,训练过程也要下功夫
- 预训练时间注意力模型
空间S-LSTM都设置为1, 联合训练主网络和T-LSTM, 固定T-LSTM为1,只训练主网络 - 预训练空间注意力模型
- 训练主lstm网络
- 三个部分一起训练
实验结果
本实验在SBU NTU-RGBD数据集上进行了验证