下面我们将从(1)数据输入(2)网络结构两方面,通过结合论文和代码对ST-GCN进行解析。 2. 数据输入 2.1 数据结构 基于骨架的动作识别方法的一般输入为时间连续的人体骨架关键点,如下图1所示。 这些关键点可以通过openpose进行姿态估计获取,也可以手动标注。其数据维度一般为(N, C, T, V, M ),其中(参考上述引用...
所谓ST-GCN的S和T就是空间和时间。为了模仿2D卷积,我们需要设置滑动窗口。在时间维度上其实这个操作相当简单,因为它是一个时序信息;在空间上稍复杂,因为它是一个图信息。因此我们分两步构建ST-GCN。先构建S-GCN: classSpatialGraphConvolution(nn.Module):def__init__(self,in_channels,out_channels,s_kernel_si...
gcn的主要过程是一个Conv2d和一个einsum,可以看forward函数。class ConvTemporalGraphical(nn.Module): ...
gcn的主要过程是一个Conv2d和一个einsum,可以看forward函数。class ConvTemporalGraphical(nn.Module): ...
(文件位置configs/recognition/st_gcn/dataset_example/train.yaml) 3.1我是用的是2D数据,所以in_channels是3,同时类别数是13 3.2data_dir是第二步准备数据集的时候,最好保存号的数据集目录,num_track是一帧中选取置信度最高的两个人的意思,num_keypoints是骨架的关键点数目,这个根据具体情况而定,我是按论文中...
3 ST-GCN图卷积的代码解读 有了以上的理论基础,解读ST-GCN的代码就简单得多了 以下代码在人体骨架上实现,如下图: 对于邻接矩阵的定义,主要分三块:获取边,得到邻接矩阵,对邻接矩阵进行正则化 class Graph():def __init__(self, max_hop=1, dilation=1):self.max_hop = max_hop ...
【研1基本功 (真的很简单)Diffusion Vision Transformer (DiT)】构建DiT核心代码 429 4 8:01:41 App 油管爆火!三维目标跟踪(含开源代码)|科研圈大佬亲讲【完整版3D点云】!——计算机视觉/人工智能 5.3万 61 26:10 App 【官方双语】直观解释注意力机制,Transformer的核心 | 【深度学习第6章】浏览...
导言:暑假老师叫我们做动作识别,在查阅了一些做Action Recognition的paper后发现18年AAAI上一篇St-gcn[Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition]的性能和表现都不错而且是利用了我之前接触过的openPose的,加之采用的是之前没有学过的gcn来进行建模的,所以准备花一些时间对其进行...
(x) x, A = self.gcn(x, A) x = self.tcn(x) + res return self.relu(x), A class STGCN_BackBone(nn.Layer): """ ST-GCN model from: `"Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition" <https://arxiv.org/abs/1801.07455>`_ Args: in_channels: int...
事实上,上述输入数据(N, C, T, V, M )在输入至ST-GCN网络之前需要进行标准化操作。 该标准化是在时间维度上进行的,具体来说,就是标准化某节点在所有T个关键帧的特征值。其具体实现代码如下: # data normalization N,C,T,V,M=x.size() x=x.permute(0,4,3,1,2).contiguous() ...