本博客包含的项目包括以下文章(均已开源,可上github查找相应代码)
《Cross View Fusion for 3D Human Pose Estimation》(ICCV2019)
《Fusing Wearable IMUs with Multi-View Images for Human Pose Estimation: A Geometric Approach》(CVPR2020)
《AdaFuse: Adaptive Multiview Fusion for Accurate Human Pose Estimation in the Wild》(IJCV2021)
这三个项目均与微软亚研院合作,代码风格非常类似,配置一个环境即可跑通三个项目。
博主的环境为Ubuntu20.04+python3.7+pytorch1.2.0+torchvision0.4.0,其余的模块从这三个项目中选一个安装requirements.txt里的模块即可,如果在实际运行中显示缺什么模块pip install该模块即可。
下面说一下在运行三个项目的训练/测试代码时遇见的报错及解决方案:
1.第一次运行该代码出现quickload相关报错
例如:
FileNotFoundError: [Errno 2] No such file or directory: '/data6/liwh/TotalCapture/quickload/totalcapture_quickload_validation_cam_1357.pkl'
这是因为代码中没有写如果不存在quickload文件夹则自动创建该文件夹的代码。
解决方法:
在data\dataset\路径下创建一个空的名为quickload文件夹即可,这里的dataset泛指你需要训练或测试的数据集。文件夹的结构应该如下:
2.TypeError: load() missing 1 required positional argument: ‘Loader‘
这是由于Yaml 5.1版本后弃用了 yaml.load(file) 这个用法。
解决方法:
修改lib\core\config.py文件约178行左右的代码。
源代码
with open(config_file) as f:
exp_config = edict(yaml.load(f))
修改代码
with open(config_file) as f:
exp_config = edict(yaml.safe_load(f))
3.找不到某张图片报错
如下:
KeyError: "There is no item named 'images/s_09_act_02_subact_01_ca_01/s_09_act_02_subact_01_ca_01_000001.jpg' in the archive"
当时一头雾水,检查了好几遍,确保它说的这张图片我确实是已经放到data\dataset\images.zip里了,可是依然报错。
解决方案:
修改lib\utils\zipreader.py文件第32行和59行的代码。
这里要特别说明一下,这三个项目中涉及到mpii,h36m,totalcapture,unrealcv等数据集,只有训练或测试unrealcv数据集时这里是不用修改的,应该也不会报错,使用其他数据集均需要修改。
源代码
path_zip = path[0:pos_at]
path_img = path[pos_at + 2:]
修改代码
path_zip = path[0:pos_at]
path_img = path[pos_at + 9:]
简单来说就是unrealcv数据集这里不用改,其他数据集这里改为+9。
如果其他步骤都是按对应代码github上的步骤把相关文件和数据集下载好放在指定的路径下,那么此时你应该就能跑出结果来了,欢迎各位研究相关领域的同学和我多多交流,共勉。