Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition

本文深入解析了一种使用图卷积网络(ST-GCN)处理骨架序列数据的方法。通过三维骨架数据的构建与图卷积的学习过程,实现了高效的行为识别。特别强调了输入数据的维度与卷积核的设计细节。

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

这篇文章可以说很晦涩了,作者用图卷积学习骨架数据,大概看一遍文章就知道作者建立了3-D Graph,然后用图卷积来学习所建立的图数据特征,然后再识别行为。但是这不是晦涩的地方,毕竟一个图,就看明白了,晦涩的地方是文章中的数据是的维度以及这个维度计算是怎么在图卷积中流动的。不类比传统卷积还好,偏偏现在大多都是拿传统卷积来讲图卷积,然后,会不自觉的用二维欧几里德图形里的传统卷积来考虑图卷积,这就开始蛋疼了。
废话不多说,直接上图:
这里写图片描述
对,输入视频帧,提取骨架序列,然后时空图卷积即ST-GCN用来学习构建的3-D骨架数据,最后分类。是不是很简单,是不是,是不是?性能很有效。为什么,因为,因为作者牛X啊。
下面这部分我把文章快瞅瞎了才理解文章里怎么做的,可能是理解水平不行,但确实对我来说难理解,不信?不信别看博客直接去看原文啊,当你看的头开始炸裂的时候,回来看我的博客,再次看到这就不会骂我了。
首先,输入数据的大小我被传统卷积误导了,深度学习中的经典的二维图像分类,输入图像的大小是N*C*H*W,N是图像数目,C是样本通道数,H是图像的高度,W是图像的宽度,然而,对于骨架序列,文章中就一句话,骨架中的每个结点是二位坐标或者三维坐标位置,对于一帧视频序列,里面的目标如果有18个节点,那么输入数据就是一个18维的数组,每个数组元素是一个元祖(X,Y,C),C是置信度,如果图像里有两个目标,那么数据维度(3,T,18,2),然后文章通篇都在直接提通道数,还时不时的和二维图像分类里做类比,我就一度迷惑这个输入通道是把什么当通道,这根本看不懂啊,是把18个节点当通道,组成18个通道的多位数组?还是把时间T当通道。更让我理解不了的是,坐标里有个C,传统图像里的卷积也用C表示通道。不管那种方式误导你了,那么在接下来的几个星期里,你使劲看吧,你怎么看都看不明白,所有公式和解释你都是大概感觉是这个意思,但就是有个模糊区域你理解不了不了,哈哈哈哈,我的理解能力太差。你巴拉巴拉原文看看是不是这样。
好了,现在直接说理解,考虑每个骨架序列就一个实例目标,作者输入数据维度是N*C*T*V,N是样本数据,C是依旧是通道数,T是每个视频的长度,V每一帧骨架数据里的节点个数(18),好了还是不知道C到底是个什么东西。揭开谜底,C就是坐标,3维的是吧,C就等于3,也就是把每一个节点的位置按照通道进行排列,这也是这篇文章最晦涩,也是要彻底理解数据怎么流通的就必须要知道的东西。那么我们的涂卷积神经网络的权重参数W是个什么大小的呢,偏偏作者这里有提到二维卷积的每个卷积核大小是C*K*K,C是通道数,K是卷积核的宽和高,哈哈哈,然后,图卷积与之相似,妥了,又掉进坑里去了,一直在考虑,这空间咋能是二维的呢,节点就是一个特征啊,哈哈哈,能转出来我服你,反正我理解能力差。说是C*K,思考半天,明白了,对于空间节点,把他当成一个一维的,时间节点当成另一维度,不就是每个卷积核为C*T1*K1么,唉,然后输出就是N*C1*T1*V。哈哈哈,牛逼不,能理解我服你啊。

行了,剩下的,去看文章吧。

### Skeleton-Based Action Recognition Research and Techniques In the field of skeleton-based action recognition, researchers have developed various methods to interpret human actions from skeletal data. These approaches leverage deep learning models that can effectively capture spatial-temporal features inherent in sequences of joint positions over time. One prominent technique involves utilizing recurrent neural networks (RNNs), particularly long short-term memory (LSTM) units or gated recurrent units (GRUs). Such architectures are adept at handling sequential information due to their ability to maintain a form of memory across timesteps[^1]. This characteristic makes them suitable for modeling temporal dependencies present within motion capture datasets. Convolutional Neural Networks (CNNs) also play an essential role when applied on graphs representing skeletons as nodes connected by edges denoting limb segments between joints. Graph Convolutional Networks (GCNs) extend traditional CNN operations onto non-Euclidean domains like point clouds or meshes formed around articulated bodies during movement execution phases[^2]. Furthermore, some studies integrate both RNN variants with GCN layers into hybrid frameworks designed specifically for this task domain; these combined structures aim to simultaneously exploit local appearance cues alongside global structural patterns exhibited throughout entire pose configurations captured frame-by-frame via sensors such as Microsoft Kinect devices or other depth cameras capable of tracking multiple individuals performing diverse activities indoors under varying lighting conditions without requiring any wearable markers attached directly onto participants' limbs/skin surfaces. ```python import torch.nn.functional as F from torch_geometric.nn import GCNConv class ST_GCN(torch.nn.Module): def __init__(self, num_features, hidden_channels, class_num): super(ST_GCN, self).__init__() self.conv1 = GCNConv(num_features, hidden_channels) self.fc1 = Linear(hidden_channels, class_num) def forward(self, x, edge_index): h = self.conv1(x, edge_index) h = F.relu(h) h = F.dropout(h, training=self.training) z = self.fc1(h) return F.log_softmax(z, dim=1) ```
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值