[配环境]GET3D: A Generative Model of High Quality 3D Textured Shapes Learned from Images (docker方法)

文章详细介绍了如何配置Docker环境来运行GET3D项目,包括克隆项目、构建Docker镜像、设置GPU支持、安装SSH服务以便远程连接、配置conda和Python3、安装必要的软件如tmux,以及处理在运行代码过程中遇到的问题,如numpy版本、tensorboard安装等。
摘要由CSDN通过智能技术生成

代码地址:https://github.com/nv-tlabs/GET3D
本文使用了官方提供的docker镜像。

配置docker

新建docker容器

  • 克隆项目

    git clone git@github.com:nv-tlabs/GET3D.git
    git clone https://github.com/nv-tlabs/GET3D.git
    
  • Build Docker image

    cd docker
    chmod +x make_image.sh
    ./make_image.sh get3d:v1
    

    过程如下:
    在这里插入图片描述

  • Start an interactive docker container:

    docker run --gpus device=all -it --rm -v YOUR_LOCAL_FOLDER:MOUNT_FOLDER -it get3d:v1 bash
    

    个人修改如下:

docker run --privileged --gpus device=all --shm-size 125G -p XXXX:6006 -p XXXX:22 -it -d -v /home/yuqiao/docker_home:/home/yuqiao -w /home/yuqiao --name get3d get3d:v1 bash

需要有的是:

--previledged
--gpus all
--shm-size 125G
-v /home/yuqiao/docker_home:/home/yuqiao
-p XXXX:6006 -p XXXX:22
-w /home/yuqiao
--name NAMe
docker_image_name:v1 bash

安装并配置ssh(可选)

个人习惯用ssh直接连docker,如果没有这个需求可以跳过这一步。

passwd # 设置密码,用于ssh登录
apt-get install openssh-server # 安装ssh

配置ssh协议,允许密码登录root,允许X11转发:

vim /etc/ssh/sshd_config

修改里面的如下内容:

PermitRootLogin yes #允许root用户登录
PasswordAuthentication yes # 允许用密码登录
X11Forwarding yes # 允许X11转发
X11UseLocalhost no # 不要让它走localhost,可能导致转发失败(亲测没有这句不行)
#AddressFamily inet # 使用Ipv4,有的地方可能ipv6不行


修改好后,要重启ssh才能生效

/etc/init.d/ssh restart
service ssh restart

(可选)配置conda软链接

安装tmux

https://stackoverflow.com/questions/36594420/how-can-i-turn-off-scrolling-the-history-in-iterm2

(可选)配置python默认使用上面这个python3

先试运行一下

python

如果提示:

-bash: python: command not found

则需要这个步骤。如果没有提示就不用了。我是第一次配置的时候有这个提示;第二次就没有了。

首次配置的时候,发现这个docker里面的python路径如下:
/usr/bin/python3。
然而后面想换docker容器和宿主机绑定的端口号,重新配置的时候,发现又没有这个路径了。(又来一次好像又有了,而且也有conda,不需要配了)

vim ~/.bash_profile # 打开是空的,在里面增加这句话:

alias python=“/usr/bin/python3”
在这里插入图片描述

然后

source ~/.bash_profile #重新加载这个配置文件
python --version

安装需要的东西

(可选)如果没有pip 和conda

如果遇到conda: command not found (我只有首次配置的时候出现了这个问题,之后重新新建docker容器的时候就没有了了)
可以看看/opt路径下有没有conda文件夹,有的话就:
vim ~/.bashrc # 打开这个文本文件

export PATH=$PATH:/opt/conda/bin # 按i进入编辑模式,在最后添加这句话;然后按Esc退出编辑模式,:wq!保存并退出

source ~/.bashrc # 激活这个文本文件。

实在没有的话可以这样安装一下:
首次配置时似乎 没有pip和conda,先安装pip,我这里就先不用conda了,(再来一次发现有conda和pip,不知道为啥) :

sudo apt-get install python-pip #python2
sudo apt-get install python3-pip #python3sudo easy_install pip

安装python包

官方提供了install_get3d.sh可以直接运行,但是更推荐打开它一行一行运行。免得中途报错不知道啥情况。以下是我首次配置直接运行的情况。

bash install_get3d.sh

其中前两行conda命令报错说没有conda,后面正常运行。
torch那行报了一个错说没有匹配的版本,
在这里插入图片描述

但全运行完之后,单独把这一行拿出来跑,又可以了:
在这里插入图片描述

运行inference代码

首先把readme部分的inference代码中,预训练模型的路径改一下。原来给的路径是:

/content/GET3D/get3d_release/shapenet_car.pt

现在我们把下载的pt文件放在某地,对应修改路径,比如我放在了:
./pretrained_model/shapenet_car.pt
(亲测需要打开头那个点,不然找不到)
于是就变成:

python train_3d.py --outdir=save_inference_results/shapenet_car  --gpus=1 --batch=4 --gamma=40 --data_camera_mode shapenet_car  --dmtet_scale 1.0  --use_shapenet_split 1  --one_3d_generator 1  --fp32 0 --inference_vis 1 --resume_pretrain ./pretrained_model/shapenet_car.pt --inference_to_generate_textured_mesh 1

如果需要指定gpu的话,可以在train3d.py里面修改:
在import os下面加上
os.environ[“CUDA_VISIBLE_DEVICES”] = ‘0’

可能的numpy报错:
在这里插入图片描述
可以重装低于1.20的numpy试试,我这里还是修改代码了:
在/training/inference_utils.py", line 256, in save_textured_mesh_for_inference
mask = np.sum(img.astype(np.float), axis=-1, keepdims=True)
把np.float 改为 float。
改文件中还有几个np.float,全都改一下。

然后控制台停在这里,此时在save-inference_results中就会生成一些东西了。不需要完整跑完的话直接停下就行。
在这里插入图片描述

结果:

用meshlab查看

在这里插入图片描述
在这里插入图片描述

不显示纹理是这样的:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这是一张纹理贴图示例:
在这里插入图片描述

这是放大看的网格:
在这里插入图片描述

用blender查看

官方论文中是用blender作为渲染器的,那我们也用上看看会不会好一点。
这里用car的0000019作为例子。

在blender中,file,export,选中对应的obj文件。然后点右上角这个小地球来显示纹理:
在这里插入图片描述

在这里插入图片描述

这样看着确实好一些:(把侧面转到对着光线)
在这里插入图片描述
不像blender会显示一些奇怪的线:
在这里插入图片描述

training 代码运行

Ninja is required to load C++ extensions in Pycharm

直接在服务器上可以运行,如果用pycharm 的ssh连接就会报错:
Ninja is required to load C++ extensions in Pycharm
参考这一篇:
https://blog.csdn.net/qq_36721800/article/details/123602884
在这里插入图片描述

数据集生成

太长不看:使用shapenet1的话,直接按官方说明一步步操作即可。我这里用的sahpenet2,比shapenet1在每个shape id文件夹里面多了一个models文件夹,在相应的位置修改即可

按照readme里面,下载blender,在blender中安装numpy。
然后我的数据集是shapenetv2而不是v1,需要相应的修改一下。
在这里插入图片描述
运行命令:
python render_all.py --save_folder …/data/rendered_img --dataset_folder …/data/shapenetv2 --blender_root /home/yuqiao/download/blender/blender-2.90.0-linux64/blender

会报错,会很慢,但结果没问题,会生成image和camera:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

完成之后记得删除tmp.out

tensorboard报错

Skipping tfevents export: No module named ‘tensorboard’

我直接 pip install tensorboard 会报错:
AttributeError: module ‘distutils’ has no attribute ‘version’

根据此文:
https://zhuanlan.zhihu.com/p/556704117?utm_id=0,
执行了两个命令就解决了:
pip uninstall setuptools
pip install setuptools==58.0.4

其中后面这一部报了一个错是Error processing line 1 of …distutils-precedence.pth:

No module named ‘_distuils_hack’

但亲测不用管。

log结构:

这个根目录 log是命令行中指定的文件夹,每次运行都会给一个编号的文件夹,里面会有这些内容。其中log.txt是print重定向的内容,里面不包含打印的时间和脚本。
在这里插入图片描述

个人需要的其他内容

File “/home/yuqiao/GET3D/vtk_basic.py”, line 6, in
import vtk
File “/opt/conda/envs/get3d/lib/python3.8/site-packages/vtk.py”, line 5, in
from vtkmodules.vtkWebCore import *
ImportError: libXrender.so.1: cannot open shared object file: No such file or directory
(get3d) root@b3ad6dd933bf:/home/yuqiao/GET3D#

https://blog.csdn.net/weixin_41596463/article/details/105711172

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值