ashawkey / nerf2mesh

[ICCV2023] Delicate Textured Mesh Recovery from NeRF via Adaptive Surface Refinement
https://me.kiui.moe/nerf2mesh/
MIT License
898 stars 88 forks source link

AssertionError: If capturable=True, params and state_steps must be CUDA tensors #77

Open anonymouslosty opened 1 year ago

anonymouslosty commented 1 year ago

Hi! I encontered some problems when i try to run the script with arguments below. python main.py data/nerf_synthetic/data--workspace trial_data -O --data_format colmap --bound 16 --enable_cam_near_far --stage 0 --lambda_entropy 1e-3 --clean_min_f 16 --clean_min_d 10 --lambda_tv 2e-8 --visibility_mask_dilation 50.

Firstly, I met the problem of "Segmentation Error (Core dumped)" which was caused by OpenGL. I changed all the "RasterizeGLContext(output_db=False)" into "RasterizeCudaContext()" as previous issues said. It worked for now.

After that, I met the problem below.

File "/home/dev05/.conda/envs/nerf2mesh/lib/python3.10/site-packages/torch/optim/adam.py", line 253, in _single_tensor_adam assert param.is_cuda and step_t.is_cuda, "If capturable=True, params and state_steps must be CUDA tensors." AssertionError: If capturable=True, params and state_steps must be CUDA tensors

It seems that there is something wrong with my environments,prossibly the version of torch. After i googled. I installed the packages below when the default environment( torch 1.12.0+cu116) went wrong, torch 1.12.1+cu116 torch-ema 0.3 torch-scatter 2.1.1 torchaudio 0.12.1+cu116 torchmetrics 1.0.1 torchvision 0.13.1+cu116

BUT the AssertionError still appears. Can you give me some guidence? Thank you!

jiekexiongda commented 1 year ago

Did you solve it? I have the same problem image

anonymouslosty commented 1 year ago

@jiekexiongda Yes. But the method can't be the final solution. That was casused by OpenGL. I change all the "RasterizeGLContext(output_db=False)" into "RasterizeCudaContext()" in renderer.py as I said above. You may refer to some previous issues which encountered the same problem.