基于 PaddleVideo 的骨骼行为识别模型 AGCN_官方 baseline 讲解

应该再从哪个方面进行改进呢?
不如去看看官方 baseline 讲解吧。

数据处理与分析

数据集下载

在 FSD-10 中,所有的视频素材从2017 到2018 年的花样滑冰锦标赛中采集。源视频素材中视频的帧率被统一标准化至每秒30帧,并且图像大小是1080 * 720 来保证数据集的相对一致性。之后我们通过 2D 姿态估计算法 Open Pose 对视频进行逐帧骨骼点提取,最后以 .npy 格式保存数据集。

训练数据集与测试数据集的目录结构如下所示:

train_data.npy
train_label.npy
test_A_data.npy

数据载入

其中 train_label.npy 通过 np.load() 读取后会得到一个一维张量,每一个元素为一个值在0-9之间的整形变量代表动作的标签;data.npy 文件通过 np.load()读取后,会得到一个形状为 N×C×T×V×M 的五维张量,每个维度的具体含义如下:

基于 PaddleVideo 的骨骼行为识别模型 AGCN_官方 baseline 讲解_第1张图片

数据预处理

文件路径:PaddleVideo/configs/recognition/agcn/agcn_fsd.yaml。

PIPELINE: #PIPELINE field
   train: #Mandotary, indicate the pipeline to deal with the training data
       sample:
           name: "AutoPadding"
           window_size: 350
       transform: #Mandotary, image transfrom operator
           - SkeletonNorm:
   test: #Mandatory, indicate the pipeline to deal with the validing data. 
       sample:
           name: "AutoPadding"
           window_size: 350
       transform: #Mandotary, image transfrom operator
           - SkeletonNorm:

AutoPadding

设置一个参数 window_size (模型使用帧数):350。

  • 实际帧数 = 350:取所有帧
  • 实际帧数 < 350:填充0至350帧
  • 实际帧数 > 350:采样350帧即可

SkeletonNorm

中心化(数据分布稳定):将所有关节点的坐标减去第8个关节点(中心位置)的坐标,返回的是一个 [N, C, T, V, M] 的五维张量。

基线模型讲解

基于 PaddleVideo 的骨骼行为识别模型 AGCN_官方 baseline 讲解_第2张图片

ST-GCN模型

基于 PaddleVideo 的骨骼行为识别模型 AGCN_官方 baseline 讲解_第3张图片

基于 PaddleVideo 的骨骼行为识别模型 AGCN_官方 baseline 讲解_第4张图片

GCN模块

基于 PaddleVideo 的骨骼行为识别模型 AGCN_官方 baseline 讲解_第5张图片

基于 PaddleVideo 的骨骼行为识别模型 AGCN_官方 baseline 讲解_第6张图片

基于 PaddleVideo 的骨骼行为识别模型 AGCN_官方 baseline 讲解_第7张图片

先计算人体重心位置,即右图中黑色 × 位置。

相对于绿色节点来说:

  • 蓝色节点到重心的距离更小,那蓝色节点就是向心点;
  • 橙色节点到重心的距离更大,那橙色节点就是离心点;
  • 而绿色节点本身就是一个静止的点。

TCN模块

基于 PaddleVideo 的骨骼行为识别模型 AGCN_官方 baseline 讲解_第8张图片

Attention 模块和 Head 模块

基于 PaddleVideo 的骨骼行为识别模型 AGCN_官方 baseline 讲解_第9张图片

paddle.multiply(self.A, importance) 将矩阵 A 和一个和它恒等大小的注意力矩阵 importance 做点乘。

上分思路

模型结构优化

基线中的 ST-GCN 模型中,关节点之间的连接是预先定义的,没有办法学习新的连接。但是实际过程中,比如攀爬动作,两只手是相关的,但是图中两只手的关节点很远,所以很难联系起来。

  • 2S-AGCN 中,作者提出添加可以学习的邻接矩阵 B,这样,模型就可以学习到新的连接。
  • MS-AGCN 中,作者完全抛弃了原来的邻接矩阵 A ,使用了完全可学习的邻接矩阵 B

基于 PaddleVideo 的骨骼行为识别模型 AGCN_官方 baseline 讲解_第10张图片

Tricks

  • 训练策略:Learning rate warmup
  • 数据增强:Mix-up(将两个视频的对应两帧做一个混合,以增加样本)

基于 PaddleVideo 的骨骼行为识别模型 AGCN_官方 baseline 讲解_第11张图片

  • 正则化:Label-smooth

基于 PaddleVideo 的骨骼行为识别模型 AGCN_官方 baseline 讲解_第12张图片
将硬标签(0就是0,1就是1)转化成软标签,如上图所示,相当于加了一个正则化,可以增加网络对特征的拟合能力。

  • 计算精确的数据分布:preciseBN

常用的 BN 层,在测试阶段会使用训练时累计的均值和方差,训练时累计的均值和方差通常是滑动均值和滑动方差,这其实是不够精确的,preciseBN 计算的是精确的均值和方差。

PaddleVideo

AGCN 模型(简化版的 MS-AGCN 模型)

基于 PaddleVideo 的骨骼行为识别模型 AGCN_官方 baseline 讲解_第13张图片
相比于 MS-AGCN 模型核函数,AGCN 只使用了 B 矩阵,而没有使用 C 矩阵。像 warmup、Mix-up、Label-smooth 这些操作都是很容易实现的,只要在 agcn_fsd.yaml 配置文件中修改相应字段即可。

你可能感兴趣的:(#,花样滑冰骨骼点识别,人工智能,python,深度学习,paddlepaddle)