AiOS:一站式富表现力人体姿态和形状估计
3国际数字经济研究院(IDEA),
4南洋理工大学S-Lab, 5上海人工智能实验室
AiOS以渐进方式执行人体定位和SMPL-X估计。 它由以下部分组成:(1)预测粗略人体位置的身体定位阶段; (2)优化身体特征并产生面部和手部位置的身体细化阶段; (3)优化全身特征并回归SMPL-X参数的全身细化阶段。
准备工作
文件结构应如下所示:
AiOS/
├── config/
└── data
├── body_models
| ├── smplx
| | ├──MANO_SMPLX_vertex_ids.pkl
| | ├──SMPL-X__FLAME_vertex_ids.npy
| | ├──SMPLX_NEUTRAL.pkl
| | ├──SMPLX_to_J14.pkl
| | ├──SMPLX_NEUTRAL.npz
| | ├──SMPLX_MALE.npz
| | └──SMPLX_FEMALE.npz
| └── smpl
| ├──SMPL_FEMALE.pkl
| ├──SMPL_MALE.pkl
| └──SMPL_NEUTRAL.pkl
├── preprocessed_npz
│ └── cache
| ├──agora_train_3840_w_occ_cache_2010.npz
| ├──bedlam_train_cache_080824.npz
| ├──...
| └──coco_train_cache_080824.npz
├── checkpoint
│ └── aios_checkpoint.pth
├── datasets
│ ├── agora
| │ └──3840x2160
│ │ ├──train
│ │ └──test
│ ├── bedlam
│ │ ├──train_images
│ │ └──test_images
│ ├── ARCTIC
│ │ ├──s01
│ │ ├──s02
│ │ ├──...
│ │ └──s10
│ ├── EgoBody
│ │ ├──egocentric_color
│ │ └──kinect_color
│ └── UBody
| └──images
└── checkpoint
├── edpose_r50_coco.pth
└── aios_checkpoint.pth
安装
# 创建一个conda虚拟环境并激活它。
conda create -n aios python=3.8 -y
conda activate aios
# 安装PyTorch和torchvision。
conda install pytorch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 cudatoolkit=11.3 -c pytorch -c conda-forge
# 安装Pytorch3D
git clone -b v0.6.1 https://github.com/facebookresearch/pytorch3d.git
cd pytorch3d
pip install -v -e .
cd ..
# 安装MMCV,从源代码构建
git clone -b v1.6.1 https://github.com/open-mmlab/mmcv.git
cd mmcv
export MMCV_WITH_OPS=1
export FORCE_MLU=1
pip install -v -e .
cd ..
# 安装其他依赖项
conda install -c conda-forge ffmpeg
pip install -r requirements.txt
# 构建可变形DETR
cd models/aios/ops
python setup.py build install
cd ../../..
推理
- 将用于推理的mp4视频放在
AiOS/demo/
下 - 在
AiOS/data/checkpoint
下准备用于推理的预训练模型 - 推理输出将保存在
AiOS/demo/{INPUT_VIDEO}_out
中
# CHECKPOINT: 检查点路径
# INPUT_VIDEO: 输入视频路径
# OUTPUT_DIR: 输出路径
# NUM_PERSON: 人数。此参数设置输入(图像或视频)中预期检测到的人数。
# 默认值为1,表示算法将尝试检测至少一个人。如果您知道同时可能出现的最大人数,
# 可以将此变量设置为该数值以优化检测过程(也建议降低阈值)。
# THRESHOLD: 分数阈值。此参数设置人物检测的分数阈值。默认值为0.5。
# 如果检测到的人的置信度分数低于此阈值,该检测将被丢弃。
# 调整此阈值可以帮助过滤掉误报或确保只考虑高置信度的检测结果。
# GPU_NUM: GPU数量。
sh scripts/inference.sh {CHECKPOINT} {INPUT_VIDEO} {OUTPUT_DIR} {NUM_PERSON} {THRESHOLD} {THRESHOLD}
# 对short_video.mp4进行推理,输出目录为demo/short_video_out
sh scripts/inference.sh data/checkpoint/aios_checkpoint.pth short_video.mp4 demo 2 0.1 8
测试
NMVE | NMJE | MVE | MPJPE | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
数据集 | FB | B | FB | B | FB | B | F | LH/RH | FB | B | F | LH/RH |
BEDLAM | 87.6 | 57.7 | 85.8 | 57.7 | 83.2 | 54.8 | 26.2 | 28.1/30.8 | 81.5 | 54.8 | 26.2 | 25.9/28.0 |
AGORA-测试 | 102.9 | 63.4 | 100.7 | 62.5 | 98.8 | 60.9 | 27.7 | 42.5/43.4 | 96.7 | 60.0 | 29.2 | 40.1/41.0 |
AGORA-验证 | 105.1 | 60.9 | 102.2 | 61.4 | 100.9 | 60.9 | 30.6 | 43.9/45.6 | 98.1 | 58.9 | 32.7 | 41.5/43.4 |
a. 创建test_result目录
mkdir test_result
b. AGORA验证
运行以下命令,它将生成一个'predictions/'结果文件夹,可以使用agora评估工具进行评估
sh scripts/test_agora_val.sh data/checkpoint/aios_checkpoint.pth agora_val
b. AGORA测试排行榜
运行以下命令,它将生成一个'predictions.zip',可以提交到AGORA排行榜
sh scripts/test_agora.sh data/checkpoint/aios_checkpoint.pth agora_test
c. BEDLAM
运行以下命令,它将生成一个'predictions.zip',可以提交到BEDLAM排行榜
sh scripts/test_bedlam.sh data/checkpoint/aios_checkpoint.pth bedlam_test