ashawkey / nerf2mesh

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

Stage 1 Saving #6

Open tsugg opened 1 year ago

tsugg commented 1 year ago

Hi,

I closed my Windows related question, since I found it easier to get up and running in WSL. I'm right near the end of getting out a colorized ply. Unfortunately, there's one tiny issue I'm hoping you can help me with.

I have the gui open, I'm at stage 1, everything looks good so I click on 'mesh'. The gui says that it saved the file called ngp_stage1_1.ply, I see the terminal and it says saved to a folder called mesh_stage0, but there's no ply file by the name given in the gui.

image

During stage 0, I got an exported uncolorized ply in the mesh_stage0/ folder, but now there's no stage1 ply to be found anywhere. I can see it in the gui though - a colorized mesh.

Here's the log:

[INFO] Trainer: ngp_stage1 | 2023-03-09_08-25-07 | cuda | fp16 | trial_syn_lego/ [INFO] #parameters: 18513142 Namespace(path='data/nerf_synthetic/lego/', O=True, workspace='trial_syn_lego/', seed=0, stage=1, ckpt='latest', fp16=True, test=False, test_no_video=False, test_no_mesh=False, camera_traj='', data_format='nerf', train_split='train', preload=True, random_image_batch=True, downscale=1, bound=1.0, scale=0.8, offset=[0, 0, 0], mesh='', enable_cam_near_far=False, enable_cam_center=False, min_near=0.05, enable_sparse_depth=False, enable_dense_depth=False, iters=30000, lr=0.01, lr_vert=0.0001, pos_gradient_boost=1, cuda_ray=True, max_steps=1024, update_extra_interval=16, max_ray_batch=4096, grid_size=128, mark_untrained=True, dt_gamma=0.0, density_thresh=10, diffuse_step=1000, background='random', enable_offset_nerf_grad=False, num_rays=4096, adaptive_num_rays=True, num_points=262144, lambda_density=0, lambda_entropy=0, lambda_tv=1e-08, lambda_depth=0.1, lambda_specular=1e-05, wo_smooth=False, lambda_lpips=0, lambda_offsets=0.1, lambda_lap=0.001, lambda_normal=0, lambda_edgelen=0, contract=False, patch_size=1, trainable_density_grid=False, color_space='srgb', ind_dim=0, ind_num=500, mcubes_reso=512, env_reso=256, decimate_target=300000.0, mesh_visibility_culling=True, visibility_mask_dilation=5, clean_min_f=8, clean_min_d=5, ssaa=2, texture_size=4096, refine=True, refine_steps_ratio=[0.1, 0.2, 0.3, 0.4, 0.5, 0.7], refine_size=0.01, refine_decimate_ratio=0.1, refine_remesh_size=0.02, vis_pose=False, gui=True, W=1000, H=1000, radius=5, fovy=50, max_spp=1, refine_steps=[3000, 6000, 9000, 12000, 15000, 21000]) NeRFNetwork( (encoder): GridEncoder: input_dim=3 num_levels=16 level_dim=1 resolution=16 -> 2048 per_level_scale=1.3819 params=(6119864, 1) gridtype=hash align_corners=False interpolation=smoothstep (encoder_color): GridEncoder: input_dim=3 num_levels=16 level_dim=2 resolution=16 -> 2048 per_level_scale=1.3819 params=(6119864, 2) gridtype=hash align_corners=False interpolation=linear (sigma_net): MLP( (net): ModuleList( (0): Linear(in_features=16, out_features=32, bias=False) (1): Linear(in_features=32, out_features=1, bias=False) ) ) (color_net): MLP( (net): ModuleList( (0): Linear(in_features=32, out_features=64, bias=False) (1): Linear(in_features=64, out_features=64, bias=False) (2): Linear(in_features=64, out_features=6, bias=False) ) ) (specular_net): MLP( (net): ModuleList( (0): Linear(in_features=6, out_features=32, bias=False) (1): Linear(in_features=32, out_features=3, bias=False) ) ) ) [INFO] Loading stage 0 model to init stage 1 ... [INFO] loaded model. [WARN] missing keys: ['vertices_offsets'] [INFO] Loading latest checkpoint ... [WARN] No checkpoint found, abort loading latest model. ==> Saving mesh to trial_syn_lego/mesh_stage0 ==> Finished saving mesh.

ashawkey commented 1 year ago

@tsugg Hi, the mesh button is actually from an old project, and I forget to remove it as it generates wrong results. You need to use the command line to train and save stage1 mesh, which will be in obj format.

tsugg commented 1 year ago

Ahhhh well it that case I might need some help here lol.

python main.py data/nerf_synthetic/lego/ --workspace trial_syn_lego/ -O --bound 1 --scale 0.8 --dt_gamma 0 --stage 0 --lambda_tv 1e-8

image

ashawkey commented 1 year ago

It seems to be related to OpenGL in WSL2, maybe you could check this?

garrisonz commented 1 year ago

Hi, I am fail to run with --gui option. Do you have any idea about the errors? I post errors at https://github.com/ashawkey/nerf2mesh/issues/82 . Thanks