写在前面

复现的是一篇关于人体高斯的论文,项目仓库 GitHub HUGS: Human Gaussian Splats,对应的paper在 arxiv:HUGS 实现的效果是利用相机拍摄的一段视频,把视频中的人和场景拆分出来,分别进行3D建模。对应实现的效果可以参考项目仓库的介绍。

复现条件

此次复现使用的是RTX3090的云算力,同时可能需要科学上网。

前期准备

代码

git clone git@github.com:apple/ml-hugs.git

使用上述指令实现项目的克隆,我是先把代码克隆到了本地,然后再上传到云主机上,当然也可以选择直接在云主机上执行对应指令(我本地是已经配好了git,所以比较方便。)

submodules

前面复现过 3DGS 的经典文章,在这个博客里面,我就提到,项目使用的submodules是没办法通过上述git方法下载的。果然在这个项目里面遇到了同样的问题,需要自己去对应的仓库进行下载。
在这里插入图片描述
但是这里又出现了一个问题,simple-knn的这个链接仓库是没办法转跳的,然后我就翻了issue,果然,大家也遇到了这个问题,下面这张图贴了一个仓库,可以给大家提供参考。我当时分析的是和 3DGS 这个项目用的一样的model,直接拿原来的文件给装上了,结果确实可以运行,文件后面自取。
在这里插入图片描述
把这两个model下载好之后,放在原项目对应的submodules文件夹中即可。

数据集

在数据集上,项目指出需要下载SMPL,NeuMan,AMASS数据集,在项目给出的默认训练中,看到用到了NeuMan,对应的下载链接如下:

  1. SMPL
    在这里插入图片描述
  2. NeuMan 这个链接直接下载,下载后解压即可;pretrained_models 这个是预训练的模型。
  3. AMASS
    在这里插入图片描述

pytorch3d

在项目复现中,存在一个困扰我很久的报错,就是 from pytorch3d import _C ImportError: libcudart.so.10.1: cannot open shared object file: No such file or directory。当时第一遍运行的时候,提示没有pytorch3d。我想着这不简单,直接 pip install 一个不就好了。结果反复尝试了好几次,最终发现还真不是那么简单,参考 这篇博客 的解释,是因为直接安装,会下载编译好的pytorch3d进行安装,而这些事先编译好的pytorch3d安装包,在编译的时候,对应环境和项目环境并不一样。参考 pytorch3d 这个链接里面的解释,我选择使用本地下载上传的方式解决。
在这里插入图片描述
所以我这里把他放在前期准备里面。

环境搭建

租用服务器

首先是租用云服务器,不多说了。这里参考scripts文件夹里面的conda_setup.sh,可以清楚的看到,需要:

python 3.8
pytorch 1.13.1
cuda 11.7

在这里插入图片描述
在租用服务器的时候,选初始镜像可以留意是否对应。

上传文件

环境解决之后,把所有的文件和数据集上传到云主机上,贴一张我对应的文件结构。其中output文件夹中如果没有训练,应该只有通过下载预训练模型解压后的pretrained_models。
在这里插入图片描述

安装依赖

这里在蓝耕云的实用工具里面提供了快捷的换源服务,感觉挺实用。
如果你的云服务器没有这个,可以自行搜索换源。
在这里插入图片描述

在项目的根目录创建终端

pip install -r requirements.txt

首先安装给出的基本的依赖。然后使用,

pip install submodules/diff-gaussian-rasterization/
pip install submodules/simple-knn/

安装下载好的两个submodule。

前面已经提到了,如果你给出提示找不到pytorch3d或者是报关于pytorch3d的错,你需要使用上述提到的官方给出的解决方案。下载并上传到服务器上后,使用

cd pytorch3d && pip install -e .

这个过程可能比较久,需要耐心等待。

运行

如果你全部完成上述工作,不出意外的话,就可以在根目录下进行训练了
在这里插入图片描述
来一张原项目的介绍

python main.py --cfg_file cfg_files/release/neuman/hugs_human_scene.yaml dataset.seq=lab
python main.py --cfg_file cfg_files/release/neuman/hugs_human.yaml dataset.seq=lab
python main.py --cfg_file cfg_files/release/neuman/hugs_scene.yaml dataset.seq=lab

三种可选,我目前跑了第二个human only,用的是默认的neuman数据集,对于一个object使用3090大概需要30-40min。
在这里插入图片描述
来一张训练时候的照片
在这里插入图片描述

结果

结果保存在output文件夹下面,可以使用xftp下载到本地。

附件

通过网盘分享的文件:submodules.rar
链接: https://pan.baidu.com/s/1zwZsTKqGe9UiSvrDugcqmg?pwd=96qq 提取码: 96qq
这个是我用到的submodules,希望对你有所帮助。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐