代碼地址: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 # 設(shè)置密碼,用于ssh登錄
apt-get install openssh-server # 安裝ssh
配置ssh協(xié)議,允許密碼登錄root,允許X11轉(zhuǎn)發(fā):
vim /etc/ssh/sshd_config
修改里面的如下內(nèi)容:
PermitRootLogin yes #允許root用戶登錄
PasswordAuthentication yes # 允許用密碼登錄
X11Forwarding yes # 允許X11轉(zhuǎn)發(fā)
X11UseLocalhost no # 不要讓它走localhost,可能導(dǎo)致轉(zhuǎn)發(fā)失?。ㄓH測沒有這句不行)
#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
則需要這個步驟。如果沒有提示就不用了。我是第一次配置的時候有這個提示;第二次就沒有了。
首次配置的時候,發(fā)現(xiàn)這個docker里面的python路徑如下:
/usr/bin/python3。
然而后面想換docker容器和宿主機綁定的端口號,重新配置的時候,發(fā)現(xiàn)又沒有這個路徑了。(又來一次好像又有了,而且也有conda,不需要配了)
vim ~/.bash_profile # 打開是空的,在里面增加這句話:
alias python=“/usr/bin/python3”
然后
source ~/.bash_profile #重新加載這個配置文件
python --version
安裝需要的東西
(可選)如果沒有pip 和conda
如果遇到conda: command not found (我只有首次配置的時候出現(xiàn)了這個問題,之后重新新建docker容器的時候就沒有了了)
可以看看/opt路徑下有沒有conda文件夾,有的話就:
vim ~/.bashrc # 打開這個文本文件
export PATH=$PATH:/opt/conda/bin # 按i進入編輯模式,在最后添加這句話;然后按Esc退出編輯模式,:wq!保存并退出
source ~/.bashrc # 激活這個文本文件。
實在沒有的話可以這樣安裝一下:
首次配置時似乎 沒有pip和conda,先安裝pip,我這里就先不用conda了,(再來一次發(fā)現(xiàn)有conda和pip,不知道為啥) :
sudo apt-get install python-pip #python2
sudo apt-get install python3-pip #python3
或
sudo easy_install pip
安裝python包
官方提供了install_get3d.sh可以直接運行,但是更推薦打開它一行一行運行。免得中途報錯不知道啥情況。以下是我首次配置直接運行的情況。
bash install_get3d.sh
其中前兩行conda命令報錯說沒有conda,后面正常運行。
torch那行報了一個錯說沒有匹配的版本,
但全運行完之后,單獨把這一行拿出來跑,又可以了:
運行inference代碼
首先把readme部分的inference代碼中,預(yù)訓(xùn)練模型的路徑改一下。原來給的路徑是:
/content/GET3D/get3d_release/shapenet_car.pt
現(xiàn)在我們把下載的pt文件放在某地,對應(yīng)修改路徑,比如我放在了:
./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中就會生成一些東西了。不需要完整跑完的話直接停下就行。
結(jié)果:
用meshlab查看
不顯示紋理是這樣的:
這是一張紋理貼圖示例:
這是放大看的網(wǎng)格:
用blender查看
官方論文中是用blender作為渲染器的,那我們也用上看看會不會好一點。
這里用car的0000019作為例子。
在blender中,file,export,選中對應(yīng)的obj文件。然后點右上角這個小地球來顯示紋理:
這樣看著確實好一些:(把側(cè)面轉(zhuǎn)到對著光線)
不像blender會顯示一些奇怪的線:
training 代碼運行
Ninja is required to load C++ extensions in Pycharm
直接在服務(wù)器上可以運行,如果用pycharm 的ssh連接就會報錯:
Ninja is required to load C++ extensions in Pycharm
參考這一篇:
https://blog.csdn.net/qq_36721800/article/details/123602884
數(shù)據(jù)集生成
太長不看:使用shapenet1的話,直接按官方說明一步步操作即可。我這里用的sahpenet2,比shapenet1在每個shape id文件夾里面多了一個models文件夾,在相應(yīng)的位置修改即可
按照readme里面,下載blender,在blender中安裝numpy。
然后我的數(shù)據(jù)集是shapenetv2而不是v1,需要相應(yīng)的修改一下。
運行命令:
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
會報錯,會很慢,但結(jié)果沒問題,會生成image和camera:
完成之后記得刪除tmp.out
tensorboard報錯
Skipping tfevents export: No module named ‘tensorboard’
我直接 pip install tensorboard 會報錯:
AttributeError: module ‘distutils’ has no attribute ‘version’
根據(jù)此文:
https://zhuanlan.zhihu.com/p/556704117?utm_id=0,
執(zhí)行了兩個命令就解決了:
pip uninstall setuptools
pip install setuptools==58.0.4
其中后面這一部報了一個錯是Error processing line 1 of …distutils-precedence.pth:
…
No module named ‘_distuils_hack’
但親測不用管。
log結(jié)構(gòu):
這個根目錄 log是命令行中指定的文件夾,每次運行都會給一個編號的文件夾,里面會有這些內(nèi)容。其中l(wèi)og.txt是print重定向的內(nèi)容,里面不包含打印的時間和腳本。
個人需要的其他內(nèi)容
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#文章來源:http://www.zghlxwxcb.cn/news/detail-433034.html
https://blog.csdn.net/weixin_41596463/article/details/105711172文章來源地址http://www.zghlxwxcb.cn/news/detail-433034.html
到了這里,關(guān)于[配環(huán)境]GET3D: A Generative Model of High Quality 3D Textured Shapes Learned from Images (docker方法)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!