nerfstudio-project / nerfstudio

A collaboration friendly studio for NeRFs
https://docs.nerf.studio
Apache License 2.0
9.48k stars 1.29k forks source link

Docker image: ns-process-data images error #3456

Open ahfabi opened 1 month ago

ahfabi commented 1 month ago

Describe the bug ns-process-data images does not work anymore in docker image ghcr.io/nerfstudio-project/nerfstudio:latest it creates /processed/001/colmap /processed/001/images /processed/001/images_2 /processed/001/images_4 /processed/001/images_8 in the target directory but there is an error and consecutive ns-train nerfacto --data /workspace/processed/001/ fails.

I have no name!@224b575af291://$ ns-process-data images --data /workspace/input/ --output-dir /workspace/processed/001/
Matplotlib created a temporary cache directory at /tmp/matplotlib-ox6qfncq because the default path (/.config/matplotlib) is not a writable directory; it is highly recommended to set the MPLCONFIGDIR environment variable to a writable directory, in particular to speed up the import of Matplotlib and to better support multiprocessing.
[12:14:17] 🎉 Done copying images with prefix 'frame_'.                                        process_data_utils.py:340
           🎉 Done extracting COLMAP features.                                                       colmap_utils.py:137
Traceback (most recent call last):
  File "/usr/lib/python3.10/pathlib.py", line 1175, in mkdir
    self._accessor.mkdir(self, mode)
FileNotFoundError: [Errno 2] No such file or directory: '/.local/share/nerfstudio'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.10/pathlib.py", line 1175, in mkdir
    self._accessor.mkdir(self, mode)
FileNotFoundError: [Errno 2] No such file or directory: '/.local/share'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/ns-process-data", line 8, in <module>
    sys.exit(entrypoint())
  File "/usr/local/lib/python3.10/dist-packages/nerfstudio/scripts/process_data.py", line 551, in entrypoint
    tyro.cli(Commands).main()
  File "/usr/local/lib/python3.10/dist-packages/nerfstudio/process_data/images_to_nerfstudio_dataset.py", line 114, in main
    self._run_colmap()
  File "/usr/local/lib/python3.10/dist-packages/nerfstudio/process_data/colmap_converter_to_nerfstudio_dataset.py", line 214, in _run_colmap
    colmap_utils.run_colmap(
  File "/usr/local/lib/python3.10/dist-packages/nerfstudio/process_data/colmap_utils.py", line 146, in run_colmap
    vocab_tree_filename = get_vocab_tree()
  File "/usr/local/lib/python3.10/dist-packages/nerfstudio/process_data/colmap_utils.py", line 77, in get_vocab_tree
    vocab_tree_filename.parent.mkdir(parents=True, exist_ok=True)
  File "/usr/lib/python3.10/pathlib.py", line 1179, in mkdir
    self.parent.mkdir(parents=True, exist_ok=True)
  File "/usr/lib/python3.10/pathlib.py", line 1179, in mkdir
    self.parent.mkdir(parents=True, exist_ok=True)
  File "/usr/lib/python3.10/pathlib.py", line 1175, in mkdir
    self._accessor.mkdir(self, mode)
PermissionError: [Errno 13] Permission denied: '/.local'

To Reproduce Steps to reproduce the behavior: run ns-process-data images --data /workspace/input/ --output-dir /workspace/processed/001/

Expected behavior Processing without error

jkulhanek commented 1 week ago

Looks like the vocab tree is being built in the current working directory. Can you mount a random temp dir to docker and cd to the mounted path before running the command?