OPEN-AIR-SUN/mars

Why do we need a separately stored `car_nerf_state_dict`?

Closed this issue · 2 comments

Dear MARS team, thank you for opensourcing this awesome work! I'm trying to understand the codes but encountered some problems:

It seems mandatory to properly fill the car_nerf_state_dict_path from cicai_config.py in order to start a regular training. But is this car_nerf_state_dict_path really necessary? Here's my confusion:

It looks like the car_nerf_state_dict_path was only used in line 82-83 from car_nerf.py to initialize the self.fields of a CarNeRF class. However, since CarNeRF is a subclass of nn.Module, self.fields will be automatically discovered by PyTorch and saved into a training checkpoint under the nerfstudio training framework. This would mean the weights loaded from car_nerf_state_dict_path will be later overwritten by the weights from the training checkpoint file outputted by nerfstudio, during its trainer.setup() method.

Since the weights from car_nerf_state_dict_path would be overwritten anyway, it seems the separately stored car_nerf_state_dict doesn't serve any purpose. Can you help me with this confusion?

I am working on the master branch (commit ID: 5d75675).

Thank you!

Hi, I would recommend you referring to the CarNeRF paper. We use the pretrained carnerf to initialize, that is the reason why we need to load a checkpoint separately.

Thanks for the reference!