google / hypernerf

Code for "HyperNeRF: A Higher-Dimensional Representation for Topologically Varying Neural Radiance Fields".
https://hypernerf.github.io
Apache License 2.0
896 stars 105 forks source link

ValueError: Configurable 'ExperimentConfig' doesn't have a parameter named 'datasource_spec'. #10

Open hududed opened 2 years ago

hududed commented 2 years ago

Just following along the colab notebooks.

Processed the video, trained the model with dataset saved to /content/gdrive/My Drive/nerfies/captures/capture1 and config.gin and checkpoints saved to /content/gdrive/My Drive/nerfies/experiments/capture1/exp1.

For Model and dataset configuration during rendering, the following error occurs:

Loading config from /content/gdrive/My Drive/nerfies/experiments/capture1/exp1/config.gin
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-13-573aff68880d> in <module>()
     27   logging.info('Loading config from %s', config_path)
     28   config_str = f.read()
---> 29 gin.parse_config(config_str)
     30 
     31 config_path = Path(train_dir, 'config.gin')

7 frames
/usr/local/lib/python3.7/dist-packages/gin/config.py in parse(cls, binding_key)
    917     if not _might_have_parameter(configurable_.wrapper, arg_name):
    918       err_str = "Configurable '{}' doesn't have a parameter named '{}'."
--> 919       raise ValueError(err_str.format(selector, arg_name))
    920 
    921     if configurable_.allowlist and arg_name not in configurable_.allowlist:

ValueError: Configurable 'ExperimentConfig' doesn't have a parameter named 'datasource_spec'.
  In bindings string line 3
    ExperimentConfig.datasource_spec = {

I checked config.gin file and ExperimentConfig.datasource_spec is there. I check configs.py and I see datasource_cls instead of datasource_spec - should this be changed?

hududed commented 2 years ago

Similarly, ModelConfig in the colab should be changed to NerfModel?

and I've commented out the following in the generated config.gin as these are not available in configs.py

# NerfModel.use_appearance_metadata = 1
# NerfModel.warp_field_type = 'se3'
# NerfModel.num_warp_freqs = 8

Are you going to update how config.gin is setup in the colab notebook so that gin.parse_config(config_str) works smoothly?

addictedtolearning commented 2 years ago

I think that I've found a workaround for this issue.

I was mistakenly running the Nerfies training colab notebook, because this was linked in the "Process a video into a dataset" colab linked from the README. This creates this file: /content/gdrive/My Drive/nerfies/experiments/capture1/exp1/config.gin This config.bin file is not compatible with HyperNeRF_Render_Video.ipynb. For example, it includes ExperimentConfig.datasource_spec, and generally looks very different.

Instead, I tried running the HyperNeRF training colab notebook, which creates the hypernerf_experiments folder. The corresponding config.gin file is compatible with the HyperNeRF_Render_Video.ipynb.