PoseFix项目介绍
项目概述
PoseFix是一种通用的人体姿态优化网络,旨在不依赖于模型地从单一RGB图像中改进人体姿态估计结果。通过PoseFix,无论基础姿态估计方法如何,都可以对输出进行优化,只需从一个".json"文件中读取即可,使得任何方法的姿态结果变得更好。官方提供了基于TensorFlow的实现版本,适用于公共的2D多人姿态估计数据集,包括MPII、PoseTrack 2018和MS COCO 2017。
项目的特点
- 模型无关性:可以优化来自任何姿态估计方法的结果。
- 简便的代码:灵活且易于理解的代码结构。
- 兼容性:支持多个常用姿态估计数据集,并提供可视化的代码。
- 数据可视化:提供从Detectron修改而来的人体姿态估计可视化代码。
所需依赖
为了运行PoseFix,用户需要以下依赖:
- TensorFlow
- CUDA和cuDNN
- Anaconda以及COCO API
该代码在Ubuntu 16.04、CUDA 9.0和cuDNN 7.1环境下,使用两个NVIDIA 1080Ti GPU进行了测试。开发环境中使用了Python 3.6.5和Anaconda 3。
目录结构
项目根目录${POSE_ROOT}
的组织结构如下:
data
:包含数据加载代码和图像及标注的软链接。lib
:核心代码,用于2D多人姿态估计。main
:用于训练或测试网络的高级代码。tool
:数据集转换工具。output
:保存日志、训练模型、可视化输出和测试结果。
数据和输出文件夹有特定的需要遵循的结构,以确保项目的正常运行。
使用PoseFix
用户需要安装必要的模块并构建NMS模块,然后在main/config.py
中,根据需要调整模型的设置,包括数据集、网络骨干和输入大小等。
训练
开始训练前,应准备好input_pose/test_on_trainset/result.json
文件,这是在训练集上的测试结果,包含与地面实况框(groundtruth bbox)结合的位置估计。
在main
文件夹中,用户可以通过命令运行训练:
python train.py --gpu 0-1
其中--gpu 0,1
表示指定使用的GPU。可以使用--continue
参数继续之前的实验。
测试
测试时需要将其他方法的姿态估计结果命名为input_pose/name_of_input_pose.json
,并放置在适当的位置。
执行以下命令可以进行测试:
python test.py --gpu 0-1 --test_epoch 140
这将使用第140次迭代训练的模型在指定GPU上进行测试。
项目成果
PoseFix在一些数据集上取得了优异的成果。用户可以下载预训练模型,并使用COCOAPI或poseval工具对输出进行评估。
MSCOCO 2017数据集检验结果
在MSCOCO 2017数据集上,PoseFix与HRNet结合后,性能有显著提升。
PoseTrack 2018数据集结果
类似地,在PoseTrack 2018数据集上,应用了PoseFix的结果同样优异。
常见问题
项目使用过程中可能遇到一些问题,文档中提供了可能的解决方案,帮助用户排忧解难。
致谢
项目代码在一定程度上修改自TensorFlow repo of CPN和PyTorch repo of Simple。
通过阅读以上信息,相信用户对PoseFix项目已经有了一个详细的了解,可以更好地实施和应用此工具来进行姿态估计优化。