[骨架动作识别]STA-LSTM: Spatio-Temporal Attention Model for Human Action Recognition from Skeleton Data

本文介绍了微软亚洲研究院的研究成果——STA-LSTM,一种针对骨架数据的人体动作识别的时空注意力模型。网络包含空间和时间注意力子网络,通过优化分类性能自动学习注意力,并使用正则项增强模型训练。实验在SBU NTU-RGBD数据集上取得良好效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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输出

### STA-LSTM 的定义与背景 STA-LSTM 是一种专门设计用于时间序列分析的模型,全称为 Spatio-Temporal Attention Long Short-Term Memory Network(时空注意力长短时记忆网络)。它结合了 LSTM 和注意力机制来捕捉时间和空间上的特征依赖关系。这种架构特别适用于处理具有复杂动态特性和长期依赖的时间序列数据。 在时间序列建模中,LSTM 已经被广泛应用于捕获时间维度上的隐藏状态变化[^2]。然而,在许多实际场景下,仅考虑时间特性可能不足以描述完整的模式。因此,STA-LSTM 引入了额外的空间注意模块,使得模型能够更有效地关注重要的输入变量及其相互作用。 以下是关于如何实现和使用 STA-LSTM 进行时间序列分析的具体说明: --- ### 实现细节 #### 1. **核心组件** STA-LSTM 主要由以下几个部分组成: - **Temporal Encoder**: 使用标准 LSTM 单元提取时间序列中的时间特征。 - **Spatial Attention Mechanism**: 应用自注意力机制计算不同位置之间的关联权重,从而增强对重要信号的关注度。 - **Fusion Layer**: 将来自 Temporal Encoder 和 Spatial Attention Module 的输出融合起来形成最终表示向量。 这些组成部分共同协作以提高预测精度并减少过拟合风险。 ```python import tensorflow as tf from tensorflow.keras.layers import Input, Dense, LSTM, AdditiveAttention, Concatenate from tensorflow.keras.models import Model def build_sta_lstm(input_shape): inputs = Input(shape=input_shape) # Time encoder with LSTM layer lstm_output = LSTM(64, return_sequences=True)(inputs) # Apply spatial attention mechanism over last hidden states from all timesteps query_value_attention_seq = AdditiveAttention()([lstm_output]*2) concat_layer = Concatenate(axis=-1)([query_value_attention_seq,lstm_output]) dense_out = Dense(units=32, activation='relu')(concat_layer[:,-1,:]) output = Dense(1)(dense_out) model = Model(inputs=[inputs], outputs=output) return model ``` 此代码片段展示了一个简单的 STA-LSTM 架构构建过程。其中 `AdditiveAttention` 被用来实施空间层面的关注操作;而常规的 LSTM 则负责管理顺序信息流。 #### 2. **训练流程** 为了优化该神经网络参数集合 {W}, 可采用梯度下降法最小化损失函数 L(y_hat,y),这里 y 表示真实标签值,y_hat 对应于我们的估计结果。通常情况下会选择均方误差(MSE)作为回归任务的目标衡量指标: \[ \text{MSE}=\frac{\sum_{i}(y_i-\hat{y}_i)^2}{n}\] 另外还可以加入正则项防止过度拟合现象发生. --- ### 使用案例 假设我们现在有一组传感器记录下来的温度读数构成的数据集 D={X,Y}. X=(x_0,...,x_T), Y=y_T+1 。我们可以按照如下方式调用上面定义好的函数完成整个实验设置 : ```python # Example Usage of STA_LSTM for Temperature Prediction Task. model = build_sta_lstm((sequence_length,num_features)) model.compile(optimizer="adam", loss="mse") history=model.fit(train_data_x, train_labels_y , epochs=num_epochs, batch_size=batch_sz, validation_split=val_ratio) ``` 在这里 , 我们指定 Adam optimizer 来更新权值 w 并且 MSE 成为我们评估好坏的标准 . 同样也可以通过调整其他超参比如 epoch 数目或者批量大小进一步提升效果 . --- ### 结论 综上所述 ,STA-LSTM 提供了一种强大的工具去解决那些既存在明显时间演变规律又涉及多个相关联因素影响下的预测难题 。 它巧妙地把传统 RNN 扩展到了更高维数域内同时保留其原有优点即擅长刻画长时间跨度内的因果联系特点 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值