基于骨架图卷积时空特征表示的AQA

长视频下的AQA花样滑冰。

论文

源码

代码结构:

AQAForFS/
├── requirements.txt # 项目依赖的库和版本
├── main.py # 入口
├── visualization.py # 可视化
├── config/ # 参数配置文件
├── test.yaml
└── train.taml
├── data/ # 训练数据
├── feeder/ # 数据喂养器
├── models/ # 各种数据模型?
├── net/ # 网络模型
├── __init__.py
├── graph.py # 图卷积定义
└── st_gcn.py # 主要模块
├── utils/ # 辅助模块
├── src/ # 源代码目录
├── src/ # 源代码目录
├── __init__.py
├── main.py # 源代码目录
├── model/
│ ├── __init__.py # 源代码目录
│ ├── model.py
│ └── layers.py
├── utils/
│ ├── __init__.py
│ ├── data_loader.py
│ └── metrics.py
└── config.py
graph TD


    %%main.p.get_parser--> ASESS_processor.load_arg         -->
    main.p--> Processor.__init__ --> Processor.load_arg --> ASESS_processor.get_parser --> Processor.get_parser --> Processor.init_environment --> ASESS_processor.load_model-->Processor.load_data-->ASESS_processor.load_optimizer-->main.p.start-->Processor.start
    Processor.start--trian-->ASESS_processor.train-->ASESS_processor.adjust_lr
    Processor.start--test-->ASESS_processor.test

    %%程序入口
    subgraph main.py

    subgraph main
      main.p.get_parser["p.get_parser()"]-.-main.p["p = Processor(sys.argv[2:])"]-.-main.p.start["p.start()"]

    end
    end

    %%评估类
    subgraph ASESS_processor.py

    subgraph class_ASESS_processor["class ASESS_processor"]

         ASESS_processor.get_parser["get_parser()"]-.-ASESS_processor.load_model["load_model(self)"]-.-ASESS_processor.load_optimizer["load_optimizer(self)"]-.-ASESS_processor.show_src["show_src(self, totalpred)"]
         ASESS_processor.adjust_lr["adjust_lr(self)"]
         ASESS_processor.test["test(self, evaluation=True)"]
         ASESS_processor.train["train(self)"]


    end
    end


       %%处理器类
       subgraph Processor.py

    subgraph class_Processor["class Processor"]

      Processor.__init__["__init__"]
      Processor.load_arg["load_arg"]-.-Processor.get_parser["get_parser(add_help=False)"]
      Processor.init_environment["init_environment"]-.-Processor.load_data["load_data"]-.-Processor.start{"start判断"}


    end
    end

命令

训练

```shell

python main.py assess —config config/train.yaml

```

测试

```shell

python main.py assess —config config/test.yaml

```

net

st_gcn.py

数据格式

数据采样300帧。

datainfo/MIT.npy

数据预览

字典类型
dict_keys(['test_sample_name', 'video_num', 'test_video_num', 'test_index', 'video_label'])

test_sample_name:
<class 'list'>
['59_7.json', '106_1.json', '106_10.json', '106_11.json', '106_12.json']

video_num: <class 'int'> 171

test_video_num: <class 'int'> 71

test_index: <class 'list'>
[5, 7, 13, 16, 17]

应该是分数
video_label: <class 'list'>
[49.74, 41.94, 43.84, 36.1, 52.16]



datainfo/tes/train_data.npy

type: <class 'numpy.ndarray'>
shape: (5710, 3, 300, 18, 2)
# N: 批量大小 (batch size)
# C: 通道数 (channels)
# T: 帧
# V: 节点数 (vertices)
# M: 一帧中的实例, 人体骨架数量 (可能存在多个人体骨架)

datainfo/tes/train_label.pkl

是一个元组,有两个list元素
info: <class 'tuple'>
Element 0: Type: <class 'list'>, value: ['1_1.json', '1_10.json']
Element 1: Type: <class 'list'>, value: [28.71, 28.71]