记录一些容易忽略的问题
每天都想着早走,每天都没办法早走,真的是又气又烦,总有改不完的bug。啊啊啊啊我再偷懶不写全,我就去shi!!!!
NeuS环境配置
python版本必须是3.8以下(包括3.8)
TypeError: Descriptors cannot not be created directly.
pip install --upgrade protobuf
pip install --upgrade tensorboard
运行:由于neus使用的是旧版本的pytorch,我这里cuda和旧版本又不兼容,升级后就出现新的问题RuntimeError: indices should be either on cpu or on the same device as the indexed tensor (cpu)
python exp_runner.py --mode train --conf ./confs/wmask.conf --case bmvs_bear
修改内容如下:
Evaluation
评估chamfer distance:
1. training
先训练出ckpt来
# Training without mask
python exp_runner.py --mode train --conf ./confs/womask.conf --case dtu_scan65
# Training with mask
python exp_runner.py --mode train --conf ./confs/wmask.conf --case dtu_scan65
2. Extract surface from trained model 提取表面
这里默认使用最新的ckpt(NOTE:这里必须使用代码生成mesh,用它默认的每个epoch生成的mesh,测试倒角距离时会报错)
python exp_runner.py --mode validate_mesh --conf ./confs/wmask.conf --case dtu_scan65 --is_continue
此时,就获得了表面,之后把文件放到这个文件夹下做clean(这一步是当你使用womask训练出来使用的脚本
)
E:\Python\tensorflow\pythonProject\DTUeval-python-master\data\clean
3. 下载GT和chamfer distance代码
GT链接 和 Chamfer distance链接,下载后按照Github配置环境并组织文件夹。
python eval.py --data F:/code1/NeuS/exp/dtu_scan65/wmask/meshes/00300000.ply --scan 65 --mode mesh --dataset_dir E:/Python/tensorflow/pythonProject/DTUeval-python-master/data --vis_out_dir E:/Python/tensorflow/pythonProject/DTUeval-python-master/vis
以上就结束了,评估了一晚上,心好累==
训练自己的数据集
此前写过用colmap获得nerf数据集,这里接着上次的继续。先用colmap获得位姿,文件设置如下:
激活环境(这里就是neus的环境又缝缝补补了一两个包好像)
source activate neus-data
运行imgs2poses.py
生成sparse_points.ply和poses.npy(这里直接改--scenedir
参数并运行)
cd colmap_preprocess
python imgs2poses.py
用meshlab打开.ply文件,选取interest部分并保存为新的文件sparse_points_interest.ply
。
运行以下命令将pose.npy转为camera.npz
python gen_cameras.py ../public_data/human/images
记录
NeuS: 用来evaluation chamfer distance
NeuS-main: 加入uncertainty估计
GT和评估代码都保存在E:\Python\tensorflow\pythonProject\DTUeval-python-master
路径下
NeRF-W配置环境记录
它使用的pytorch又或是python版本太老旧,导致不兼容,报以下错误:
out += [func(freq*x)]
RuntimeError: CUDA error: no kernel image is available for execution on the device
解决方法:
pip install torch==1.10.1+cu111 torchvision==0.11.2+cu111 torchaudio==0.10.1 -f https://download.pytorch.org/whl/cu111/torch_stable.html
Multi-NeRF记录
感觉好难用啊,但是
安装
按照github上的安装步骤安装好之后应该就没问题了,但在运行以下命令测试时,需要保证内存、显存都充足,否则会报各种错误。之前安装过的multinerf
环境突然不能用了,也不知道原因,于是又重新安装了multinerf-new
环境
./scripts/run_all_unit_tests.sh
cuda11.2
pip install jaxlib==0.4.9+cuda11.cudnn86 -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
pip install chex==0.1.5
pip install flax==0.5
数据集
位姿用colmap生成,数据集的话需要改名字,并自己进行下采样
图像降采样的代码在reshape.py
中,路径:/media/yangtongyu/T9/code1/multinerf/reshape.py
代码
设置在哪一个gpu上跑
export CUDA_VISIBLE_DEVICES=1
# glossy场景 使用Ref-NeRF
python -m eval --logtostderr --gin_configs=configs/blender_refnerf.gin --gin_bindings="Config.data_dir = './data/helmet'" --gin_bindings="Config.checkpoint_dir = './logs/shinyblender/helmet/checkpoint_50000'" --gin_bindings="Config.batch_size = 128"
python -m train --gin_configs=configs/blender_refnerf.gin --gin_bindings="Config.data_dir = '${DATA_DIR}/${SCENE}'" --gin_bindings="Config.checkpoint_dir = '${CHECKPOINT_DIR}'" --logtostderr
Robust-NeRF
360_robustnerf.gin
configs.py
!!!!有一点非常重要,llffhold这个参数在训练时要设置为8,否则会报错
ValueError: high <= 0
由于lego数据集测试的时候总没有skip参数,所以我这里设置了 /4相当于nerf里的skip参数
无语死了,不知道是因为jax更新还是什么,隔一段时间运行这个就会报新的错误
# robustnerf
#lego
python -m train --gin_configs=configs/360_robustnerf.gin --gin_bindings="Config.data_dir = './data/lego'" --gin_bindings="Config.checkpoint_dir = './logs/shinyblender/lego'" --logtostderr
python -m eval --logtostderr --gin_configs=configs/360_robustnerf.gin --gin_bindings="Config.data_dir = './data/lego'" --gin_bindings="Config.checkpoint_dir = './logs/shinyblender/lego/checkpoint_1000000'"
# 新环境下不需要再指定具体目录
python -m eval --logtostderr --gin_configs=configs/360_robustnerf.gin --gin_bindings="Config.data_dir = './data/lego_blur'" --gin_bindings="Config.checkpoint_dir = './logs/shinyblender/lego_blur'"
#dtu(llff)
python -m train --gin_configs=configs/360_robustnerf.gin --gin_bindings="Config.data_dir = './data/dtu_scan118'" --gin_bindings="Config.checkpoint_dir = './logs/shinyblender/dtu_scan118'" --logtostderr
python -m eval --logtostderr --gin_configs=configs/360_robustnerf.gin --gin_bindings="Config.data_dir = './data/bmvs_sculpture'" --gin_bindings="Config.checkpoint_dir = './logs/shinyblender/bmvs_sculpture/checkpoint_500000'"