NeuS代码记录+nerf-W报错解决方法

记录一些容易忽略的问题

每天都想着早走,每天都没办法早走,真的是又气又烦,总有改不完的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'"

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值