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

Torch.hub.load() broken because of a recent commit #4973

Closed
chainyo opened this issue Sep 28, 2021 · 4 comments · Fixed by #4974 or #4978
Closed

Torch.hub.load() broken because of a recent commit #4973

chainyo opened this issue Sep 28, 2021 · 4 comments · Fixed by #4974 or #4978
Labels
bug Something isn't working

Comments

@chainyo
Copy link

chainyo commented Sep 28, 2021

🐛 Bug

Since this commit 5ed2860 we can't load a custom model via torch.hub.load() function, because the yolov5 repo is by default cached and isn't downloaded in the project repository.

These are the lines that changed in multiple files

- ROOT = ROOT.relative_to(Path.cwd()) if ROOT.is_relative_to(Path.cwd()) else ROOT # relative

+ ROOT = ROOT.relative_to(Path.cwd()) # relative

To Reproduce (REQUIRED)

Input:

import torch

model = torch.hub.load("ultralytics/yolov5", "custom", path="path/to/yolov5.pt", force_reload=True)

(I can't include my custom model because it's my company property, but any .pt will do the job!)

Output:

Downloading: "https://github.com/ultralytics/yolov5/archive/master.zip" to /home/Thomas.Chaigneau/.cache/torch/hub/master.zip
Traceback (most recent call last):
  File "/home/Thomas.Chaigneau/miniconda3/envs/project/lib/python3.8/site-packages/project/services/yolov5service.py", line 23, in __init__
    model = torch.hub.load(
  File "/home/Thomas.Chaigneau/.local/lib/python3.8/site-packages/torch/hub.py", line 364, in load
    model = _load_local(repo_or_dir, model, *args, **kwargs)
  File "/home/Thomas.Chaigneau/.local/lib/python3.8/site-packages/torch/hub.py", line 393, in _load_local
    model = entry(*args, **kwargs)
  File "/home/Thomas.Chaigneau/.cache/torch/hub/ultralytics_yolov5_master/hubconf.py", line 70, in custom
    return _create(path, autoshape=autoshape, verbose=verbose, device=device)
  File "/home/Thomas.Chaigneau/.cache/torch/hub/ultralytics_yolov5_master/hubconf.py", line 30, in _create
    from models.yolo import Model
  File "/home/Thomas.Chaigneau/.cache/torch/hub/ultralytics_yolov5_master/models/yolo.py", line 18, in <module>
    ROOT = ROOT.relative_to(Path.cwd())  # relative
  File "/home/Thomas.Chaigneau/miniconda3/envs/project/lib/python3.8/pathlib.py", line 908, in relative_to
    raise ValueError("{!r} does not start with {!r}"
ValueError: '/home/Thomas.Chaigneau/.cache/torch/hub/ultralytics_yolov5_master' does not start with '/home/Thomas.Chaigneau/code/project'

Expected behavior

This worked the day before.
I found a workaround here #4970 but it's only temporary :)

@chainyo chainyo added the bug Something isn't working label Sep 28, 2021
@github-actions
Copy link
Contributor

github-actions bot commented Sep 28, 2021

👋 Hello @chainyo, thank you for your interest in YOLOv5 🚀! Please visit our ⭐️ Tutorials to get started, where you can find quickstart guides for simple tasks like Custom Data Training all the way to advanced concepts like Hyperparameter Evolution.

If this is a 🐛 Bug Report, please provide screenshots and minimum viable code to reproduce your issue, otherwise we can not help you.

If this is a custom training ❓ Question, please provide as much information as possible, including dataset images, training logs, screenshots, and a public link to online W&B logging if available.

For business inquiries or professional support requests please visit https://ultralytics.com or email Glenn Jocher at glenn.jocher@ultralytics.com.

Requirements

Python>=3.6.0 with all requirements.txt installed including PyTorch>=1.7. To get started:

$ git clone https://github.com/ultralytics/yolov5
$ cd yolov5
$ pip install -r requirements.txt

Environments

YOLOv5 may be run in any of the following up-to-date verified environments (with all dependencies including CUDA/CUDNN, Python and PyTorch preinstalled):

Status

CI CPU testing

If this badge is green, all YOLOv5 GitHub Actions Continuous Integration (CI) tests are currently passing. CI tests verify correct operation of YOLOv5 training (train.py), validation (val.py), inference (detect.py) and export (export.py) on MacOS, Windows, and Ubuntu every 24 hours and on every commit.

@chainyo chainyo changed the title Torch.hub.load() impacted since recent commit Torch.hub.load() broken because of 5ed28603cf94185c28da02b3d8bb433118ac33d4 Sep 28, 2021
@chainyo chainyo changed the title Torch.hub.load() broken because of 5ed28603cf94185c28da02b3d8bb433118ac33d4 Torch.hub.load() broken because of a recent commit Sep 28, 2021
@glenn-jocher glenn-jocher linked a pull request Sep 28, 2021 that will close this issue
@glenn-jocher
Copy link
Member

@chainyo good news 😃! Your original issue may now be fixed ✅ in PR #4974. This PR comments out relative ROOT attempts in yolo.py and tf.py which may be imported by PyTorch Hub. We did not revert to using Path().is_relative() anymore because this was only introduced in python 3.8 and we want python >3.6 compatability.

To receive this update:

  • Gitgit pull from within your yolov5/ directory or git clone https://github.com/ultralytics/yolov5 again
  • PyTorch Hub – Force-reload with model = torch.hub.load('ultralytics/yolov5', 'yolov5s', force_reload=True)
  • Notebooks – View updated notebooks Open In Colab Open In Kaggle
  • Dockersudo docker pull ultralytics/yolov5:latest to update your image Docker Pulls

Thank you for spotting this issue and informing us of the problem. Please let us know if this update resolves the issue for you, and feel free to inform us of any other issues you discover or feature requests that come to mind. Happy trainings with YOLOv5 🚀!

@chainyo
Copy link
Author

chainyo commented Sep 28, 2021

Thank you for spotting this issue and informing us of the problem. Please let us know if this update resolves the issue for you, and feel free to inform us of any other issues you discover or feature requests that come to mind. Happy trainings with YOLOv5 rocket!

Yes problem fixed! Hope you will find a way to make it work without commenting the line you wanted to implement
Thanks for the fast answer, have a nice day ☀️ !

@glenn-jocher glenn-jocher linked a pull request Sep 28, 2021 that will close this issue
@glenn-jocher
Copy link
Member

@chainyo thanks for the confirmation!

Yes there is an alternate os.path-based solution that we can implement later. The only reason for updating ROOT to a relative path is to reduce screen printout on long paths, but these updates are not critical to functionality.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
2 participants