Spatial Temporal Graph Convolutional Networks (ST-GCN) 代码调试,实现+论文阅读

仓库地址:https://github.com/yysijie/st-gcn
论文:Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition Sijie Yan, Yuanjun Xiong and Dahua Lin, AAAI 2018.
基于骨架的动作识别的时间空间图卷积网络

效果:
ST-GCN能够利用人类骨骼的局部模式和相关性。 下图显示了我们ST-GCN最后一层中每个节点的神经反应幅度。
Spatial Temporal Graph Convolutional Networks (ST-GCN) 代码调试,实现+论文阅读_第1张图片
上图第一行为NTU-RGB+D数据集,第二行为Kinetics-skeleton数据集。

代码调试过程中的问题
  1. 自己先编译安装caffe
    可能的问题:
    a) opencv的一些宏定义头文件没有include,这个时候可以在python终端下查看宏的值,在源码中将宏直接改为常数就行。
    b) 需要把opencv的路径添加到CPLUS_INCLUDE_PATH环境中。
    c) 编译caffe可以不使用opencv,这样会避免很多问题。
    d) 查找某个宏所在位置
find /proj_root_dir -name "*.hpp" -exec grep -in "MACRO_YOU_WANT"
find /usr/include/ -name *.h | xargs grep 'ORIG_EAX'

e) caffe.pb.h丢失问题,然后将生成的caffe.pb.h拷贝到~/caffe/include/caffe/proto路径下

~/caffe/src/caffe/proto$ protoc --cpp_out=/home/wuliwei/caffe/include/caffe/ caffe.proto

f) conda安装libprotobuf:conda install libprotobuf

  1. 运行demo.py遇到的问题
    a) 模型加载不正确
    预训练模型中有’num_batches_tracked’,但是自己定义的模型中没有这个参数,所以需要自己重写权值加载函数,如下所示。
def my_load_weights(self, model, weights):
    new_weights = OrderedDict()
    for key,value in weights.items():
        if 'num_batches_tracked' in key:
            pass
        else:
            new_weights[key] = value
    model.load_state_dict(new_weights)

论文解读:
行为识别:

你可能感兴趣的:(Pytorch学习,论文阅读笔记,ST-GCN,caffe,论文阅读)