[Record] 服务器使用记录3

服务器使用记录3

之前解决

1
sudo apt-get install libeigen3-dev ffmpeg

的问题,以及Github连接的问题之后,想配置ECON的环境就容易多了。

我们看一下他完整的环境的配置步骤:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
git clone git@github.com:YuliangXiu/ECON.git

sudo apt-get install libeigen3-dev ffmpeg

# install required packages
cd ECON
conda env create -f environment.yaml
conda activate econ
pip install -r requirements.txt

# the installation(incl. compilation) of PyTorch3D will take ~20min
pip install git+https://github.com/facebookresearch/pytorch3d.git@v0.7.1

# install libmesh & libvoxelize
cd lib/common/libmesh
python setup.py build_ext --inplace
cd ../libvoxelize
python setup.py build_ext --inplace

cd ECON
bash fetch_data.sh # requires username and password

同时要在SMPL, SMPL-X, PARE, SIMPLIFY, AGORA等网站注册。注意这里注册的账号密码要一样便于之后他代码里的统一模型下载,我就是一开始不一样然后报错了,修改的邮件一直发不出来,最后直接换了个邮箱用统一的密码注册了一遍。

这里

1
conda env create -f environment.yaml

会花非常长的时间(我等待了大约5h仍然没有反应,最后电脑挂了一晚上,早上醒来好了),不要因为没反应取消掉!后面的配置总体没有出现很大的问题,耐心就好。

配置完成之后可以运行他给的示例:

1
python -m apps.infer -cfg ./configs/econ.yaml -in_dir ./examples -out_dir ./results

这里会把example文件夹下有的图片进行处理(只会处理这个目录下的图片,如果example目录下有文件夹,文件夹里面有图片,不会进行处理),处理的结果会保存在results文件夹。

这里一开始我有奇怪的错误:

1
2
3
4
5
6
7
8
9
(econ) yujian@cbsr-215:~/files/ECON$ python -m apps.infer -cfg ./configs/econ.yaml -in_dir ./examples -out_dir ./results
Lightning automatically upgraded your loaded checkpoint from v1.7.4 to v2.0.6. To apply the upgrade to your files permanently, run `python -m pytorch_lightning.utilities.upgrade_checkpoint --file data/ckpt/normal.ckpt`
Resume Normal Estimator from ./data/ckpt/normal.ckpt
Complete with SMPL-X (Explicit)
SMPL-X estimate with PIXIE
Dataset Size: 2
0%| | 0/2 [00:00<?, ?it/s]INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
304e9c4798a8c3967de7c74c24ef2e38: 0%| | 0/2 [00:06<?, ?it/s]free(): invalid pointer
Aborted (core dumped)

观察,出现free(): invalid pointer,但是没有显示是在哪里出现了这个错误。通过设置断点发现在\lib\common\BNI.utils.py文件中的一条语句执行后出现了问题

1
B_mat = lambda_boundary_consistency * coo_matrix(B_full.get().T @ B_full.get())    #bug

(这个“#bug”不是我打上去的,而是作者文件里本来就有,是不是意味着本来这里就有可能出现问题呢?)

这句话的目的是将稀疏矩阵 B_full 转置后与自身的矩阵乘法结果表示为稀疏矩阵的形式,猜测是在乘的时候太大了,直接溢出了(乱猜的),然后我乱改,改成了直接coo_matrix乘的形式,似乎能跑了,但是感觉很奇怪。后来我把语句改回作者原来的,乘不动那小一点慢慢来可不可以呢?于是我每次只在目录里小心翼翼放一个图片,似乎就可以跑了。

然后多人什么的就同理了

1
python -m apps.infer -cfg ./configs/econ.yaml -in_dir ./examples -out_dir ./results -multi

如果要产生视频:

1
python -m apps.multi_render -n <file_name>

这里作者没有解释<file_name>是啥东东,但是观察源码可以知道只要输入你当时输入的那个图片的名字就可以,比如当时要处理的图片是Batman.png, 那这边<file_name>就输入Batman就行了。


[Record] 服务器使用记录3
http://jamil-yu.github.io/2023/07/27/服务器使用记录3/
Author
Jamil Yu
Posted on
July 27, 2023
Licensed under