MMAction2 学习笔记 (一)——骨骼动作识别模型相关内容
0- 写在前面
好久不用CSDN发东西了,近期研究可以说有进展却又没什么进展,达到方向切换到了动作识别,目前正在实习,具体的内容方向是基于骨骼关键点的动作识别(skeleton based action recognition)。 在经过了多多的调研之后,觉得目前还是mmaction2平台最香,因此希望后续工作(包括效果的验证、实验、对比等等)包括前期的端到端工作都在mmaction2工具箱上展开。
学习mmaction2的目的是能够借助该平台对数据集、算法、演示、流程、搭建等等环节都能够理解的更加清晰和透彻(毕竟目前是一个小白),为后续自己的真正实际问题解决做准备。
本篇文章主要是基于mmaction2的中文教程(链接见文末),此外还有一些参考的文章以及github库中的注释性教程。
1- MMAction2 简介
mmaction2是商汤和港中文联合研发的一个基于pytorch框架的人体动作识别的深度学习开源工具库,可以提供包括行为识别(分类)、时序动作检测、时空动作检测、骨骼动作识别(分类)等等多种子类问题的算法框架,包括数据集等等,可以非常方便的使用。
mmaction2 和广为人知的检测工具库mmdetection 一样,都属于open-mmlab 工具箱下属的一个模块,目前仍在不断更新与拓展功能及算法,可以预见的是,其在人体行为识别方面将被更多人使用。
2-骨骼关键点识别部分
目前在骨骼动作识别方面,mmaction2 已集成的算法有两个:
ST-GCN: 2018年发布,是使用图卷积做骨骼关键点识别的开山之作,给出了经典的骨骼关键点拓扑表示方法
Pose-C3D: 2020年发布,简单粗暴,是使用3DCNN做骨骼关键点的一枝独秀(文章进行了大量的实验,会让人觉得是穷近期极的天花板的存在),同时也是近3年为数不多的使用3DCNN解决骨骼关键点且有较好性能表现的文章。
网络模块的基本形式
mmaction2在骨骼点识别算法中内置了上述的ST-GCN与 Pose-C3D 两种网络模型,其具体的介绍以及内容存储在mmaction2/configs/skeleton/
中。 对于每个模型来说,官方的指南基本上从以下几个方面展开:
Introduction :介绍模型及其所属文章的基本信息
Model Zoo :给出一些已经训练好的模型参数、性能、模型文件以及其他信息
Train : 训练的步骤以及命令行,通常会附一个实例展示具体用法
Test :测试的步骤以及命令行,通常会附一个实例展示具体用法
ST-GCN
》github链接《
ST-GCN介绍的比较草率,唯一的亮点是使用3D-SKELETON数据进行训练时,得到了比原论文还要高的识别准确率(84.61),而使用自生成的2D-SKELETON作为训练与测试样本的时候得到了更高的,这一点在PoseC3D 的文章中有提到,作者认为原因是3D数据集的质量本身不够高,感兴趣的可以去看原文。
具体内容:
- 模型库中在NTU RGB+D数据集上进行了训练(X-Sub) 分别为2D版本和3D版本;
- 提供了模型训练的脚本
- 提供了模型测试的脚本
PoseC3D
相比之下,PoseC3D的介绍要更加详细且全面:
- 在 数据集方面,PoseC3D不光做了动作的可视化(因为文章是将关键点变成heatmap而不是拓扑图,感兴趣可以看原文),而且进行了多个数据集的尝试:FineGYM、NTU60_XSub、NTU120_XSub、UCF101、HMDB51,并且提供看了配置文件。
- 在训练与测试方面,同样给出了训练、测试的脚本以及数据。
- 在model-zoo中,作者给出了两条注释:
- GP