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

这篇具有很好参考价值的文章主要介绍了[配环境]GET3D: A Generative Model of High Quality 3D Textured Shapes Learned from Images (docker方法)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

代码地址: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
    

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

  • 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”
[配环境]GET3D: A Generative Model of High Quality 3D Textured Shapes Learned from Images (docker方法)

然后

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那行报了一个错说没有匹配的版本,
[配环境]GET3D: A Generative Model of High Quality 3D Textured Shapes Learned from Images (docker方法)

但全运行完之后,单独把这一行拿出来跑,又可以了:
[配环境]GET3D: A Generative Model of High Quality 3D Textured Shapes Learned from Images (docker方法)

运行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报错:
[配环境]GET3D: A Generative Model of High Quality 3D Textured Shapes Learned from Images (docker方法)
可以重装低于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中就会生成一些东西了。不需要完整跑完的话直接停下就行。
[配环境]GET3D: A Generative Model of High Quality 3D Textured Shapes Learned from Images (docker方法)

结果:

用meshlab查看

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

不显示纹理是这样的:
[配环境]GET3D: A Generative Model of High Quality 3D Textured Shapes Learned from Images (docker方法)
[配环境]GET3D: A Generative Model of High Quality 3D Textured Shapes Learned from Images (docker方法)
[配环境]GET3D: A Generative Model of High Quality 3D Textured Shapes Learned from Images (docker方法)

这是一张纹理贴图示例:
[配环境]GET3D: A Generative Model of High Quality 3D Textured Shapes Learned from Images (docker方法)

这是放大看的网格:
[配环境]GET3D: A Generative Model of High Quality 3D Textured Shapes Learned from Images (docker方法)

用blender查看

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

在blender中,file,export,选中对应的obj文件。然后点右上角这个小地球来显示纹理:
[配环境]GET3D: A Generative Model of High Quality 3D Textured Shapes Learned from Images (docker方法)

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

这样看着确实好一些:(把侧面转到对着光线)
[配环境]GET3D: A Generative Model of High Quality 3D Textured Shapes Learned from Images (docker方法)
不像blender会显示一些奇怪的线:
[配环境]GET3D: A Generative Model of High Quality 3D Textured Shapes Learned from Images (docker方法)

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
[配环境]GET3D: A Generative Model of High Quality 3D Textured Shapes Learned from Images (docker方法)

数据集生成

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

按照readme里面,下载blender,在blender中安装numpy。
然后我的数据集是shapenetv2而不是v1,需要相应的修改一下。
[配环境]GET3D: A Generative Model of High Quality 3D Textured Shapes Learned from Images (docker方法)
运行命令:
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:
[配环境]GET3D: A Generative Model of High Quality 3D Textured Shapes Learned from Images (docker方法)

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

完成之后记得删除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重定向的内容,里面不包含打印的时间和脚本。
[配环境]GET3D: A Generative Model of High Quality 3D Textured Shapes Learned from Images (docker方法)

个人需要的其他内容

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文章来源地址https://www.toymoban.com/news/detail-433034.html

到了这里,关于[配环境]GET3D: A Generative Model of High Quality 3D Textured Shapes Learned from Images (docker方法)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包