SamsungLabs / DINAR

Inference code for "DINAR: Diffusion Inpainting of Neural Textures for One-Shot Human Avatars"
Other
98 stars 6 forks source link

OSError Failed to interpret file as a pickle #11

Open westbalon opened 8 months ago

westbalon commented 8 months ago

Hello, I'm trying to run inference with example data

python inference.py --ckpt_path checkpoint/ddpm-epoch=24.ckpt --log_dir logs --data_root=data

and get this error, have no idea how to fix, can you help? Pickle file downloaded from link in readme

LatentDiffusion: Running in eps-prediction mode
Working with z of shape (1, 6, 64, 64) = 24576 dimensions.
Keeping EMAs of 422.
Restored from checkpoint/ddpm-epoch=24.ckpt with 0 missing and 0 unexpected keys
Traceback (most recent call last):
  File "/home/user/miniconda/envs/gent_docker/lib/python3.7/site-packages/numpy/lib/npyio.py", line 448, in load
    return pickle.load(fid, **pickle_kwargs)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc8 in position 0: ordinal not in range(128)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "inference.py", line 66, in <module>
    data_dict_folder = main.main(argv)
  File "/mounted/data/n.firsakov/dinar/main.py", line 165, in main
    create_test_dataloader=not opt.finetune,
  File "/mounted/data/n.firsakov/dinar/main.py", line 91, in create_dataloaders
    test_dataset = instantiate_from_config(config.test_dataloader)
  File "/mounted/data/n.firsakov/dinar/utils/general_utils.py", line 36, in instantiate_from_config
    return get_obj_from_str(config["target"])(**config.get("params", dict()))
  File "/mounted/data/n.firsakov/dinar/dataloaders/from_folder.py", line 68, in __init__
    self.smplx_model_dict = build_smplx_model_dict(smplx_path, device='cpu')
  File "/mounted/data/n.firsakov/dinar/utils/smplx_model.py", line 25, in build_smplx_model_dict
    ).to(device) for (k, v) in gender2path.items()}
  File "/mounted/data/n.firsakov/dinar/utils/smplx_model.py", line 25, in <dictcomp>
    ).to(device) for (k, v) in gender2path.items()}
  File "/mounted/data/n.firsakov/dinar/utils/smplx_flame.py", line 715, in __init__
    model_data = np.load(smplx_path, allow_pickle=True)
  File "/home/user/miniconda/envs/gent_docker/lib/python3.7/site-packages/numpy/lib/npyio.py", line 451, in load
    "Failed to interpret file %s as a pickle" % repr(file)) from e
OSError: Failed to interpret file './smplx_data/smplx_models/SMPLX_NEUTRAL.pkl' as a pickle

i changed line 655 in smplx_flame.py to ext: str = 'pkl' and now I am getting this

LatentDiffusion: Running in eps-prediction mode
Working with z of shape (1, 6, 64, 64) = 24576 dimensions.
Keeping EMAs of 422.
Restored from checkpoint/ddpm-epoch=24.ckpt with 0 missing and 0 unexpected keys
/mounted/data/n.firsakov/dinar/utils/smplx_flame.py:748: UserWarning: Creating a tensor from a list of numpy.ndarrays is extremely slow. Please consider converting the list to a single numpy.ndarray with numpy.array() before converting to a tensor. (Triggered internally at  /opt/conda/conda-bld/pytorch_1634272168290/work/torch/csrc/utils/tensor_new.cpp:201.)
  dynamic_lmk_bary_coords, dtype=dtype)
GPU available: True, used: True
TPU available: False, using: 0 TPU cores
IPU available: False, using: 0 IPUs
/home/user/miniconda/envs/gent_docker/lib/python3.7/site-packages/pytorch_lightning/trainer/configuration_validator.py:292: LightningDeprecationWarning: Base `Callback.on_train_batch_end` hook signature has changed in v1.5. The `dataloader_idx` argument will be removed in v1.7.
  f"Base `Callback.{hook}` hook signature has changed in v1.5."
LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]
Missing logger folder: logs/eval/run_2023_11-20_21-08_test/default
Traceback (most recent call last):
  File "inference.py", line 65, in <module>
    data_dict_folder = main.main(argv)
  File "/mounted/data/n.firsakov/dinar/main.py", line 186, in main
    trainer.test(runner, test_dataloader)
  File "/home/user/miniconda/envs/gent_docker/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py", line 911, in test
    return self._call_and_handle_interrupt(self._test_impl, model, dataloaders, ckpt_path, verbose, datamodule)
  File "/home/user/miniconda/envs/gent_docker/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py", line 685, in _call_and_handle_interrupt
    return trainer_fn(*args, **kwargs)
  File "/home/user/miniconda/envs/gent_docker/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py", line 954, in _test_impl
    results = self._run(model, ckpt_path=self.tested_ckpt_path)
  File "/home/user/miniconda/envs/gent_docker/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py", line 1199, in _run
    self._dispatch()
  File "/home/user/miniconda/envs/gent_docker/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py", line 1275, in _dispatch
    self.training_type_plugin.start_evaluating(self)
  File "/home/user/miniconda/envs/gent_docker/lib/python3.7/site-packages/pytorch_lightning/plugins/training_type/training_type_plugin.py", line 206, in start_evaluating
    self._results = trainer.run_stage()
  File "/home/user/miniconda/envs/gent_docker/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py", line 1286, in run_stage
    return self._run_evaluate()
  File "/home/user/miniconda/envs/gent_docker/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py", line 1328, in _run_evaluate
    self._evaluation_loop._reload_evaluation_dataloaders()
  File "/home/user/miniconda/envs/gent_docker/lib/python3.7/site-packages/pytorch_lightning/loops/dataloader/evaluation_loop.py", line 168, in _reload_evaluation_dataloaders
    self.trainer.reset_test_dataloader()
  File "/home/user/miniconda/envs/gent_docker/lib/python3.7/site-packages/pytorch_lightning/trainer/data_loading.py", line 569, in reset_test_dataloader
    RunningStage.TESTING, model=pl_module
  File "/home/user/miniconda/envs/gent_docker/lib/python3.7/site-packages/pytorch_lightning/trainer/data_loading.py", line 508, in _reset_eval_dataloader
    if has_len_all_ranks(dataloader, self.training_type_plugin, module)
  File "/home/user/miniconda/envs/gent_docker/lib/python3.7/site-packages/pytorch_lightning/utilities/data.py", line 119, in has_len_all_ranks
    "Total length of `Dataloader` across ranks is zero. Please make sure that it returns at least 1 batch."
pytorch_lightning.utilities.exceptions.MisconfigurationException: Total length of `Dataloader` across ranks is zero. Please make sure that it returns at least 1 batch.

and now I am also getting this, tried to install from https://github.com/rmbashirov/minimal_pytorch_rasterizer but it doesn't work

LatentDiffusion: Running in eps-prediction mode
Traceback (most recent call last):
  File "inference.py", line 65, in <module>
    data_dict_folder = main.main(argv)
  File "/mounted/data/n.firsakov/dinar/main.py", line 151, in main
    runner = instantiate_from_config(config.runner)
  File "/mounted/data/n.firsakov/dinar/utils/general_utils.py", line 36, in instantiate_from_config
    return get_obj_from_str(config["target"])(**config.get("params", dict()))
  File "/mounted/data/n.firsakov/dinar/inpainting/ddpm.py", line 243, in __init__
    super().__init__(*args, **kwargs)
  File "/mounted/data/n.firsakov/dinar/inpainting/ddpm.py", line 60, in __init__
    self.first_stage = instantiate_from_config(first_stage_config)
  File "/mounted/data/n.firsakov/dinar/utils/general_utils.py", line 36, in instantiate_from_config
    return get_obj_from_str(config["target"])(**config.get("params", dict()))
  File "/mounted/data/n.firsakov/dinar/utils/general_utils.py", line 24, in get_obj_from_str
    return getattr(importlib.import_module(module, package=None), cls)
  File "/home/user/miniconda/envs/gent_docker/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/mounted/data/n.firsakov/dinar/inpainting/first_stage.py", line 8, in <module>
    from rasterizers.color_rasterizer import ColorsRasterizer
  File "/mounted/data/n.firsakov/dinar/rasterizers/color_rasterizer.py", line 5, in <module>
    import minimal_pytorch_rasterizer
david-svitov commented 7 months ago

Hello! Finally found the time to reproduce your problem. Yes, your fix really works. Thank you. Regarding the second error - apparently there is simply something wrong with the data folder. I checked on the data that comes with the repository. Works for them. Here you can find the sequence of steps that I used to run the code: https://docs.google.com/document/d/1LTua0D7XDpVJ9Jrk7s1WSjXIYIHBN89txCUXl1wCsvk/edit?usp=sharing