NVIDIAGameWorks / kaolin-wisp

NVIDIA Kaolin Wisp is a PyTorch library powered by NVIDIA Kaolin Core to work with neural fields (including NeRFs, NGLOD, instant-ngp and VQAD).
Other
1.45k stars 133 forks source link

IndexError: tensors used as indices must be long, byte or bool tensors #113

Open phongnhhn92 opened 1 year ago

phongnhhn92 commented 1 year ago

Hi,

I have been trying to run kaolin wisp on the lego synthetic data but I have this bug.


python app/nerf/main_nerf.py --dataset-path /media/phong/NEW_DATA/data/nerf_synthetic/hotdog/ --config app/nerf/configs/nerf_triplanar.yaml 
loading data: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 100/100 [00:01<00:00, 78.85it/s]
/home/phong/miniconda3/envs/wisp/lib/python3.9/site-packages/torch/functional.py:478: UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at  ../aten/src/ATen/native/TensorShape.cpp:2894.)
  return _VF.meshgrid(tensors, **kwargs)  # type: ignore[attr-defined]
2023-02-06 12:58:56,427|    INFO| Active LODs: [5, 6, 7, 8]
2023-02-06 12:58:56,434|    INFO| # Feature Vectors: 3168144
2023-02-06 12:58:56,459|    INFO| Info: 
```{ 'dataset': { 'bg_color': 'black',
               'dataloader_num_workers': 0,
               'dataset_num_workers': -1,
               'dataset_path': '/media/phong/NEW_DATA/data/nerf_synthetic/hotdog/',
               'mip': 2,
               'multiview_dataset_format': 'standard',
               'num_rays_sampled_per_img': 4096},
  'grid': { 'base_lod': 5,
            'blas_level': 7,
            'blas_type': 'octree',
            'codebook_bitwidth': 8,
            'feature_bias': 0.0,
            'feature_dim': 4,
            'feature_std': 0.01,
            'grid_type': 'TriplanarGrid',
            'interpolation_type': 'linear',
            'max_grid_res': 2048,
            'min_grid_res': 16,
            'multiscale_type': 'sum',
            'num_lods': 4,
            'prune_density_decay': 0.6,
            'prune_min_density': 2.956033378250884,
            'tree_type': 'geometric'},
  'logging': {'exp_name': 'test-nerf', 'log_level': 20, 'perf': False},
  'nef': { 'activation_type': 'relu',
           'hidden_dim': 64,
           'layer_type': 'none',
           'num_layers': 1,
           'pos_embedder': 'none',
           'pos_multires': 10,
           'position_input': False,
           'view_embedder': 'positional',
           'view_multires': 4},
  'optimizer': { 'eps': 1e-08,
                 'grid_lr_weight': 100.0,
                 'lr': 0.001,
                 'optimizer_type': 'rmsprop',
                 'rgb_loss': 1.0,
                 'weight_decay': 0},
  'optional arguments': { 'config': 'app/nerf/configs/nerf_triplanar.yaml',
                          'help': None,
                          'profile': False},
  'positional arguments': {},
  'renderer': { 'camera_clamp': [0, 10],
                'camera_fov': 30,
                'camera_lookat': [0, 0, 0],
                'camera_origin': [-3.0, 0.65, -3.0],
                'camera_proj': 'persp',
                'render_batch': 4000,
                'render_res': [1024, 1024]},
  'tracer': {'num_steps': 512, 'raymarch_type': 'voxel'},
  'trainer': { 'batch_size': 1,
               'epochs': 50,
               'grow_every': -1,
               'growth_strategy': 'increase',
               'log_dir': '_results/logs/runs/',
               'log_tb_every': 5,
               'model_format': 'full',
               'only_last': False,
               'pretrained': None,
               'prune_every': -1,
               'random_lod': False,
               'render_tb_every': -1,
               'resample': False,
               'resample_every': 1,
               'save_as_new': False,
               'save_every': -1,
               'valid_every': -1,
               'valid_only': False,
               'wandb_entity': None,
               'wandb_project': None,
               'wandb_run_name': None,
               'wandb_viz_nerf_angles': 20,
               'wandb_viz_nerf_distance': 3}}```
2023-02-06 12:58:56,460|    INFO| Training on /media/phong/NEW_DATA/data/nerf_synthetic/hotdog/
2023-02-06 12:58:56,460|    INFO| Total number of parameters: 1065095
2023-02-06 12:58:56,460|    INFO| Using NVIDIA GeForce RTX 2080 Ti with CUDA v11.3
2023-02-06 12:58:56,464|    INFO| No OpenGL_accelerate module loaded: No module named 'OpenGL_accelerate'
[i] Using PYGLFW_IMGUI (GL 2.1)
2023-02-06 12:58:57,224|    INFO| [i] Using PYGLFW_IMGUI (GL 2.1)
[i] Running at 60 frames/second
2023-02-06 12:58:57,236|    INFO| [i] Running at 60 frames/second
/home/phong/miniconda3/envs/wisp/lib/python3.9/site-packages/kaolin/render/spc/raytrace.py:121: UserWarning: mark_first_hit has been deprecated, please use mark_pack_boundaries instead
  warnings.warn("mark_first_hit has been deprecated, please use mark_pack_boundaries instead")
Traceback (most recent call last):
  File "/home/phong/data/Work/Code/kaolin-wisp/app/nerf/main_nerf.py", line 494, in <module>
    app.run()  # Run in interactive mode
  File "/home/phong/data/Work/Code/kaolin-wisp/wisp/renderer/app/wisp_app.py", line 243, in run
    app.run()   # App clock should always run as frequently as possible (background tasks should not be limited)
  File "/home/phong/miniconda3/envs/wisp/lib/python3.9/site-packages/glumpy/app/__init__.py", line 362, in run
    run(duration, framecount)
  File "/home/phong/miniconda3/envs/wisp/lib/python3.9/site-packages/glumpy/app/__init__.py", line 344, in run
    count = __backend__.process(dt)
  File "/home/phong/miniconda3/envs/wisp/lib/python3.9/site-packages/glumpy/app/window/backends/backend_glfw_imgui.py", line 448, in process
    window.dispatch_event('on_draw', dt)
  File "/home/phong/miniconda3/envs/wisp/lib/python3.9/site-packages/glumpy/app/window/event.py", line 396, in dispatch_event
    if getattr(self, event_type)(*args):
  File "/home/phong/data/Work/Code/kaolin-wisp/wisp/renderer/app/wisp_app.py", line 519, in on_draw
    self.render()     # Render objects uploaded to GPU
  File "/home/phong/miniconda3/envs/wisp/lib/python3.9/site-packages/torch/autograd/grad_mode.py", line 27, in decorate_context
    return func(*args, **kwargs)
  File "/home/phong/data/Work/Code/kaolin-wisp/wisp/renderer/app/wisp_app.py", line 487, in render
    img, depth_img = self.render_canvas(self.render_core, dt, self.canvas_dirty)
  File "/home/phong/data/Work/Code/kaolin-wisp/wisp/renderer/app/wisp_app.py", line 378, in render_canvas
    renderbuffer = render_core.render(time_delta, force_render)
  File "/home/phong/miniconda3/envs/wisp/lib/python3.9/site-packages/torch/autograd/grad_mode.py", line 27, in decorate_context
    return func(*args, **kwargs)
  File "/home/phong/data/Work/Code/kaolin-wisp/wisp/renderer/core/render_core.py", line 210, in render
    rb = self._render_payload(payload, force_render)
  File "/home/phong/data/Work/Code/kaolin-wisp/wisp/renderer/core/render_core.py", line 309, in _render_payload
    rb = renderer.render(in_rays)
  File "/home/phong/data/Work/Code/kaolin-wisp/wisp/renderer/core/renderers/radiance_pipeline_renderer.py", line 55, in render
    rb += self.tracer(self.nef,
  File "/home/phong/miniconda3/envs/wisp/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1130, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/phong/data/Work/Code/kaolin-wisp/wisp/tracers/base_tracer.py", line 154, in forward
    rb = self.trace(nef, rays, requested_channels, requested_extra_channels, **input_args)
  File "/home/phong/data/Work/Code/kaolin-wisp/wisp/tracers/packed_rf_tracer.py", line 125, in trace
    ridx_hit = ridx[boundary]
IndexError: tensors used as indices must be long, byte or bool tensors
orperel commented 1 year ago

Hi @phongnhhn92! Just noticed this as well. I just merged a fix with #114 , can you please pull & try again?