ST-GCN 实现人体姿态行为分类

作者 | 李秋键
出品 |?AI科技大本营(ID:rgznai100)
引用

1、ST-GCN 介绍

1.1 模型通道



1.2 骨骼图结构



1.3 时空模型

2、模型实验

2.1 环境搭建

1、首先下载好完整无误配置好的代码(包括模型等等,见文末)。
2、搭建最新版的openpose环境,并使用cmake编译。

3、配置好python的cuda环境,以及opencv等基础环境。
4、使用命令
“python main.py demo --openpose E:/cmake/environment/x64/Release --video 2.mp4”进行测试生成结果。
其中“E:/cmake/environment/x64/Release”需要改成自己的openpose环境。

2.2 主函数调用

其中主函数通过使用processors管理的设定好的分类识别、输入输出管理等程序内部函数进行整个程序的布置。
代码如下:
import argparseimport sysimport torchlightfrom torchlight import import_classif __name__ == '__main__':parser = argparse.ArgumentParser(description='Processor collection')processors = dict()processors['recognition'] = import_class('processor.recognition.REC_Processor')processors['demo'] = import_class('processor.demo.Demo')subparsers = parser.add_subparsers(dest='processor')for k, p in processors.items():subparsers.add_parser(k, parents=[p.get_parser()])arg = parser.parse_args()Processor = processors[arg.processor]p = Processor(sys.argv[2:])p.start()


2.3 模型网络

def __init__(self, in_channels, num_class, graph_args,edge_importance_weighting, **kwargs):super().__init__()self.graph = Graph(**graph_args)A = torch.tensor(self.graph.A, dtype=torch.float32, requires_grad=False)self.register_buffer('A', A)spatial_kernel_size = A.size(0)temporal_kernel_size = 9kernel_size = (temporal_kernel_size, spatial_kernel_size)self.data_bn = nn.BatchNorm1d(in_channels * A.size(1))kwargs0 = {k: v for k, v in kwargs.items() if k != 'dropout'}self.st_gcn_networks = nn.ModuleList((st_gcn(in_channels, 64, kernel_size, 1, residual=False, **kwargs0),st_gcn(64, 64, kernel_size, 1, **kwargs),st_gcn(64, 64, kernel_size, 1, **kwargs),st_gcn(64, 64, kernel_size, 1, **kwargs),st_gcn(64, 128, kernel_size, 2, **kwargs),st_gcn(128, 128, kernel_size, 1, **kwargs),st_gcn(128, 128, kernel_size, 1, **kwargs),st_gcn(128, 256, kernel_size, 2, **kwargs),st_gcn(256, 256, kernel_size, 1, **kwargs),st_gcn(256, 256, kernel_size, 1, **kwargs),))


2.4 ST-GCN网络建立

def __init__(self,in_channels,out_channels,kernel_size,stride=1,dropout=0,residual=True):super().__init__()assert len(kernel_size) == 2assert kernel_size[0] % 2 == 1padding = ((kernel_size[0] - 1) // 2, 0)self.gcn = ConvTemporalGraphical(in_channels, out_channels,kernel_size[1])self.tcn = nn.Sequential(nn.BatchNorm2d(out_channels),nn.ReLU(inplace=True),nn.Conv2d(out_channels,out_channels,(kernel_size[0], 1),(stride, 1),padding,),nn.BatchNorm2d(out_channels),nn.Dropout(dropout, inplace=True),)if not residual:self.residual = lambda x: 0elif (in_channels == out_channels) and (stride == 1):self.residual = lambda x: x


李秋键,CSDN博客专家,CSDN达人课作者。硕士在读于中国矿业大学,开发有taptap竞赛获奖等。



分享

点收藏

点点赞

点在看
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注网络尖刀微信公众号随时掌握互联网精彩
赞助链接
排名
热点
搜索指数
- 1 总书记带领我们“办好自己的事” 7904766
- 2 金正恩单膝跪地吊唁俄驻朝大使 7808406
- 3 再次提醒:中国公民近期避免前往日本 7712249
- 4 近15万亿新增贷款去哪了 7619091
- 5 华为重夺中国手机市场份额第一 7521867
- 6 蜜雪冰城开始卖早餐了 7426757
- 7 网警:男子AI生成车展低俗视频被拘 7333735
- 8 “九天”无人机成功首飞 7237783
- 9 狂甩45次 无汞体温计才降到36℃ 7142463
- 10 立冬以来最大规模雨雪上线 7040946

![我是秘密吖小熊真是可爱至极。[太阳]2杭州 ](https://imgs.knowsafe.com:8087/img/aideep/2021/12/7/56504028509a0e79294477f2e1882184.jpg?w=250)





AI100
