Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New ‘ModuleNotFoundError’ #270

Open
WorldofDepth opened this issue Mar 26, 2024 · 1 comment
Open

New ‘ModuleNotFoundError’ #270

WorldofDepth opened this issue Mar 26, 2024 · 1 comment

Comments

@WorldofDepth
Copy link

WorldofDepth commented Mar 26, 2024

Hi, until recently I could run this via a Google Colab notebook (with timm 0.6.13 and torch 2.0.1 to avoid other errors), but today running the following cell:

%cd /content/MiDaS/
!python run.py --model_type dpt_beit_large_512 --input_path input --output_path output

Produces the error output below:

/content/MiDaS
Traceback (most recent call last):
  File "/content/MiDaS/run.py", line 14, in <module>
    from midas.model_loader import default_models, load_model
  File "/content/MiDaS/midas/model_loader.py", line 4, in <module>
    from midas.dpt_depth import DPTDepthModel
  File "/content/MiDaS/midas/dpt_depth.py", line 5, in <module>
    from .blocks import (
  File "/content/MiDaS/midas/blocks.py", line 4, in <module>
    from .backbones.beit import (
  File "/content/MiDaS/midas/backbones/beit.py", line 1, in <module>
    import timm
  File "/usr/local/lib/python3.10/dist-packages/timm/__init__.py", line 2, in <module>
    from .models import create_model, list_models, is_model, list_modules, model_entrypoint, \
  File "/usr/local/lib/python3.10/dist-packages/timm/models/__init__.py", line 1, in <module>
    from .beit import *
  File "/usr/local/lib/python3.10/dist-packages/timm/models/beit.py", line 49, in <module>
    from timm.data import IMAGENET_DEFAULT_MEAN, IMAGENET_DEFAULT_STD
  File "/usr/local/lib/python3.10/dist-packages/timm/data/__init__.py", line 5, in <module>
    from .dataset import ImageDataset, IterableImageDataset, AugMixDataset
  File "/usr/local/lib/python3.10/dist-packages/timm/data/dataset.py", line 12, in <module>
    from .parsers import create_parser
  File "/usr/local/lib/python3.10/dist-packages/timm/data/parsers/__init__.py", line 1, in <module>
    from .parser_factory import create_parser
  File "/usr/local/lib/python3.10/dist-packages/timm/data/parsers/parser_factory.py", line 3, in <module>
    from .parser_image_folder import ParserImageFolder
  File "/usr/local/lib/python3.10/dist-packages/timm/data/parsers/parser_image_folder.py", line 11, in <module>
    from timm.utils.misc import natural_key
  File "/usr/local/lib/python3.10/dist-packages/timm/utils/__init__.py", line 2, in <module>
    from .checkpoint_saver import CheckpointSaver
  File "/usr/local/lib/python3.10/dist-packages/timm/utils/checkpoint_saver.py", line 15, in <module>
    from .model import unwrap_model, get_state_dict
  File "/usr/local/lib/python3.10/dist-packages/timm/utils/model.py", line 8, in <module>
    from torchvision.ops.misc import FrozenBatchNorm2d
  File "/usr/local/lib/python3.10/dist-packages/torchvision/__init__.py", line 6, in <module>
    from torchvision import _meta_registrations, datasets, io, models, ops, transforms, utils
  File "/usr/local/lib/python3.10/dist-packages/torchvision/_meta_registrations.py", line 4, in <module>
    import torch._custom_ops
ModuleNotFoundError: No module named 'torch._custom_ops'

Through experimentation, I find that deleting references to ‘torch._custom_ops' in the _meta_registrations.py file allows MiDaS to run, but obviously this is not the most correct fix. Any advice for a better solution? Thank you!

@heyoeyo
Copy link

heyoeyo commented Mar 30, 2024

It's hard to say for sure, but I would guess this has to do with the libraries being updated, possibly by some other project. Based on the pathing of the libraries in the error message (e.g. /usr/local/lib/python3.10/dist-packages/...) all of the libraries are installed in the base system copy of python, which means they can get modified by system updates (since the operating system also uses this copy of python) and potentially other projects which try to use the same python.

The general solution for this is to use virtual environments, either through python itself (using venv) or something like conda. These act like dedicated sandboxes where you'd install all of the libraries for a single project in one place, which only gets used by that one project, and therefore won't be affected by updates to other projects (which should have their own separate environments).

(unrelated) Also, since you're using beit, I figured I'd mention that there there are improved models available that might be worth checking out. One is called Depth-Anything (specifically the vit-large model) and another much higher quality (but very slow to run) model called Marigold.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants