VIBE:3D人体姿态预测项目复现笔记

VIBE是一个的3D人体姿态预测开源项目,需要基于该项目作一些开发,首先需要能够搭建和是的环境成功复现它。

不过,这个项目的复现的,真的不是一星半点的艰难。

1、系统选择

之前一直用的Windows,最开始想在windows上复现它,经过一周的折腾,我放弃了。

接着尝试了Docker,由于GPU的问题放弃了。

接着尝试了WSL,虽然基本解决了GPU加速问题,但其中的某些方法还是只能使用CPU,导致速度异常慢,在最后的渲染阶段也是不能正常渲染的,最终也放弃了。

一不做二不休,把自己的电脑整个重装系统,变成一台Ubuntu电脑。

所以,如果你也想验证该项目,那么就不要在Windows上纠缠了,也不要去考虑虚拟机什么的,直接换系统吧。

2、硬件

官方是在2080Ti显卡上测试,宣称可达到30FPS,所以这个玩意是真的吃性能的,1060会报显存不够的错误的。

本人做测试时,电脑信息如下

VIBE:3D人体姿态预测项目复现笔记_第1张图片

3、准备阶段

  • 显卡驱动、在ubuntu上安装Nvidia的驱动,简直是一件%#@%@¥%¥#%,为此重装了三遍系统。。。
  • 安装Anaconda、VSCode(在ubuntu上不推荐pycharm,pycharm的坑有点多)、以及科学上网工具(如果有能力)

4、克隆项目

git clone https://github.com/mkocabas/VIBE.git

5、开始安装

官方提供了两种安装方式,pip和conda,因为其安装过程是需要创建虚拟环境的,个人习惯使用conda,

所以使用conda的安装:

cd VIBE
# pip
# source scripts/install_pip.sh
# conda
source scripts/install_conda.sh

打住!还是打开该文件,对照着内容一步一步手动来吧

VIBE:3D人体姿态预测项目复现笔记_第2张图片

首先创建 名为 vibe-env python=3.7的虚拟环境,接着激活该环境

接着手动使用pip安装numpy==1.17.5 torch==1.4.0 torchvision==0.5.0,(为了避免后面其他坑,这里就按照指定版本安装)

如果torch和torchvision提示找不到对应的版本,可以去pip官方源下载对应的whl文件后手动安装

“pip install git+https:……pytube.git --upgrade”是安装一个下载youtobe视频的开源项目,这个可以跳过。

其次如果需要安装,查看pytube项目主页,可以直接使用“pip install pytube”来安装。

最后就是根据“requirement.txt”来安装依赖项。

pip install -r requirements.txt

(本人在上面这一步折腾了很久,,,有很多坑的,但是由于其中一些项目的更新,已经VIBE项目作者在19天前也对该文件做了更新,目前亲测可以一次成功)

如果不成功,按照文件内所列依赖项逐个手动安装,并逐一解决问题即可。

6、测试

模型与示例视频准备:

source scripts/prepare_data.sh

当然参考该文件内容,要下在vibe_data.zip文件,我上传到了csdn,可以手动下载:https://download.csdn.net/download/Raink_LH/12692105

VIBE:3D人体姿态预测项目复现笔记_第3张图片

其他步骤参可照上图中的注释进行操作即可。

最后运行demo.py文件

编译器运行需要配置一定的参数,参照官方示例:

# Run on a local video
python demo.py --vid_file sample_video.mp4 --output_folder output/ --display

7、效果

我下载了B站上的舞蹈视频来作测试

该Demo中对3D-pose的预测分三个步骤:

  1. 首先是使用了ffmpeg将视频解析成一帧一帧的图片,在对每张图片使用Yolo进行人物检测,记录检测到人物及区域(框)的信息。
  2. 按照检测结果进行裁减图像,喂入VIBE pose检测模型进行检测,并记录每一帧所对应的结果(包括预测的虚拟相机位置、关节点、人物三角网格数据等)。
  3. 针对每一帧的预测结果,使用pyrender进行渲染,并将渲染结果合并成一个视频。

对与第一个阶段,GPU基本在70%左右,CPU在60%左右,第二阶段CPU和GPU都在很低和100%直接波动,应该是逐帧检测时,每一帧都比较消耗资源的。第三阶段渲染时,GPU使用一般,但CPU持续在95%以上。

我使用的视频是720P的,人物检测才40FPS,3D-pose检测在25FPS

运行输出如下

VIBE:3D人体姿态预测项目复现笔记_第4张图片

输出的结果视频,截取了一点,下过如下

总体来说,效果可以,人物在侧向、多人物重叠时效果不佳。

8、补充说明

vibe模型是基于pytorch的,输出的数据包含多个类别。3D-pose结果使用了smplx

结果展示使用的是pyrender,

上文中展示的是使用了输出结果中的三角人物网格数据(verts)。

更为简单直观的可以使用关节点数据(kp_3d),是归一化后的三位坐标,每个人物包含49个关节坐标。


 

你可能感兴趣的:(「图像处理」,Python)