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

AssertionError: '' acceptable suffix is ['.pt'] (Before running train.py) #4948

Closed
XJTUXYC opened this issue Sep 27, 2021 · 13 comments · Fixed by #5192
Closed

AssertionError: '' acceptable suffix is ['.pt'] (Before running train.py) #4948

XJTUXYC opened this issue Sep 27, 2021 · 13 comments · Fixed by #5192
Labels
question Further information is requested

Comments

@XJTUXYC
Copy link

XJTUXYC commented Sep 27, 2021

❔Question

When I was editing configurations in configurations window, I wrote --weights '' in Parameters column to train a model without pre-training. Then, PyCharm returned me an AssertionError: '' acceptable suffix is ['.pt']. But, when I changed the default value of --weights from 'yolov5s.pt' to '', train.py worked successfully. What is the reason?

Additional context

@XJTUXYC XJTUXYC added the question Further information is requested label Sep 27, 2021
@github-actions
Copy link
Contributor

github-actions bot commented Sep 27, 2021

👋 Hello @XJTUXYC, 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.

@glenn-jocher
Copy link
Member

good news 😃! Your original issue may now be fixed ✅ in master. 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 🚀!

@beebrain
Copy link

Dear @glenn-jocher

I have the same problem. I would like to initial weight without any transfer weight parameters.
Follow the instruction, They told me if I don't want to use sample weight. I can put the argument with "--weights '' ".
This is my error message.
image

I got this message after I updated the yolo5 folder from github.

This is my command to train the coco dataset with yolov5s config.
image

@glenn-jocher
Copy link
Member

@beebrain @XJTUXYC your code is out of date, this issue has been resolved already in master a while back.

To update your code:

  • 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 🚀!

@glenn-jocher
Copy link
Member

@beebrain @XJTUXYC to verify I've added a python train.py --weights '' test to our CI testing in PR #4980 and all tests are passing.

@beebrain
Copy link

@glenn-jocher Thanks for your response. I already update my yolo5 folder and run the same command. I got the same error.

@glenn-jocher
Copy link
Member

glenn-jocher commented Sep 29, 2021

@beebrain 👋 hi, thanks for letting us know about this possible problem with YOLOv5 🚀. We've created a few short guidelines below to help users provide what we need in order to get started investigating a possible problem.

How to create a Minimal, Reproducible Example

When asking a question, people will be better able to provide help if you provide code that they can easily understand and use to reproduce the problem. This is referred to by community members as creating a minimum reproducible example. Your code that reproduces the problem should be:

  • Minimal – Use as little code as possible that still produces the same problem
  • Complete – Provide all parts someone else needs to reproduce your problem in the question itself
  • Reproducible – Test the code you're about to provide to make sure it reproduces the problem

In addition to the above requirements, for Ultralytics to provide assistance your code should be:

  • Current – Verify that your code is up-to-date with current GitHub master, and if necessary git pull or git clone a new copy to ensure your problem has not already been resolved by previous commits.
  • Unmodified – Your problem must be reproducible without any modifications to the codebase in this repository. Ultralytics does not provide support for custom code ⚠️.

If you believe your problem meets all of the above criteria, please close this issue and raise a new one using the 🐛 Bug Report template and providing a minimum reproducible example to help us better understand and diagnose your problem.

Thank you! 😃

@Karol-G
Copy link

Karol-G commented Oct 7, 2021

I still have this issue in the latest master branch.

Traceback (most recent call last):
  File "/home/k539i/Documents/projects/yolov5/train.py", line 620, in <module>
    main(opt)
  File "/home/k539i/Documents/projects/yolov5/train.py", line 517, in main
    train(opt.hyp, opt, device, callbacks)
  File "/home/k539i/Documents/projects/yolov5/train.py", line 111, in train
    check_suffix(weights, '.pt')  # check weights
  File "/home/k539i/Documents/projects/yolov5/utils/general.py", line 301, in check_suffix
    assert Path(f).suffix.lower() in suffix, f"{msg}{f} acceptable suffix is {suffix}"
AssertionError: '' acceptable suffix is ['.pt']

@glenn-jocher
Copy link
Member

glenn-jocher commented Oct 7, 2021

@Karol-G 👋 hi, thanks for letting us know about this possible problem with YOLOv5 🚀. We've created a few short guidelines below to help users provide what we need in order to get started investigating a possible problem.

How to create a Minimal, Reproducible Example

When asking a question, people will be better able to provide help if you provide code that they can easily understand and use to reproduce the problem. This is referred to by community members as creating a minimum reproducible example. Your code that reproduces the problem should be:

  • Minimal – Use as little code as possible that still produces the same problem
  • Complete – Provide all parts someone else needs to reproduce your problem in the question itself
  • Reproducible – Test the code you're about to provide to make sure it reproduces the problem

In addition to the above requirements, for Ultralytics to provide assistance your code should be:

  • Current – Verify that your code is up-to-date with current GitHub master, and if necessary git pull or git clone a new copy to ensure your problem has not already been resolved by previous commits.
  • Unmodified – Your problem must be reproducible without any modifications to the codebase in this repository. Ultralytics does not provide support for custom code ⚠️.

If you believe your problem meets all of the above criteria, please close this issue and raise a new one using the 🐛 Bug Report template and providing a minimum reproducible example to help us better understand and diagnose your problem.

Thank you! 😃

@Karol-G
Copy link

Karol-G commented Oct 8, 2021

Created a bug issue #5094.
This one can be closed.

@glenn-jocher
Copy link
Member

@XJTUXYC @beebrain @Karol-G good news 😃! Your original issue may now be fixed ✅ in PR #5192. This PR allows empty strings to pass through check_suffix() without error, which multiple windows users had reported was causing issues.

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 🚀!

@Ashritv
Copy link

Ashritv commented Feb 26, 2024

Traceback (most recent call last):
File "D:\Techgium\Model_parameters\yolov5\detect.py", line 317, in
main(opt)
File "D:\Techgium\Model_parameters\yolov5\detect.py", line 312, in main
run(**vars(opt))
File "C:\Users\Admin\miniconda3\Lib\site-packages\torch\utils_contextlib.py", line 115, in decorate_context
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "D:\Techgium\Model_parameters\yolov5\detect.py", line 120, in run
model = DetectMultiBackend(weights, device=device, dnn=dnn, data=data, fp16=half)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Techgium\Model_parameters\yolov5\models\common.py", line 425, in init
pt, jit, onnx, xml, engine, coreml, saved_model, pb, tflite, edgetpu, tfjs, paddle, triton = self._model_type(w)
^^^^^^^^^^^^^^^^^^^
File "D:\Techgium\Model_parameters\yolov5\models\common.py", line 715, in _model_type
check_suffix(p, sf) # checks
^^^^^^^^^^^^^^^^^^^
File "D:\Techgium\Model_parameters\yolov5\utils\general.py", line 474, in check_suffix
assert (s in suffix) or (len(s) == 0), f"{msg}{f} acceptable suffix is {suffix}"
^^^^^^^^^^^
AssertionError: ['D:\Techgium\Model_parameters\yolov5\best.pt'] acceptable suffix is ['.pt', '.torchscript', '.onnx', '_openvino_model', '.engine', '.mlmodel', '_saved_model', '.pb', '.tflite', '_edgetpu.tflite', '_web_model', '_paddle_model'] i have this issue wherein my weights file is already in .pt file still facing problem

@glenn-jocher
Copy link
Member

@Ashritv it appears that you've encountered an issue with specifying the weights file for detection. The error message you see is part of a check to ensure that the weights file or model file you are using has an acceptable file format suffix. Your path seems correct, but let's ensure everything else is in order too.

  1. Verify the File Exists: Double-check that the file D:\Techgium\Model_parameters\yolov5\best.pt does indeed exist and is not corrupted. Try opening it with a text editor to see if the file isn't empty or corrupted.

  2. Path Formats: Ensure there's no issue with the way the path is formatted. Sometimes, path format or special characters in the path can cause issues. Though your path looks fine, it's something to consider if everything else fails.

  3. Latest Code: Make sure you're using the latest version of the YOLOv5 repository. If you haven't already, pull the latest changes from GitHub. There might be updates or bug fixes addressing this very issue.

  4. Command Format: Ensure the command you're using to invoke the detection script is correctly formatted. An example command structure for running detection with a pretrained model looks like this (make sure to adjust paths according to your setup):

    python detect.py --weights D:\Techgium\Model_parameters\yolov5\best.pt --img 640 --conf 0.25 --source data/images
    

    Make sure there are no extra quotes or characters around the file path that might be interpreted incorrectly by the script.

  5. Script Modifications: If you've made any modifications to the detect.py script or any other scripts in the repository, consider reverting those changes or testing with an unmodified version of the YOLOv5 repository to rule out custom code as the source of the problem.

If after going through these steps, you still face the issue, it might be helpful to create a detailed bug report on the YOLOv5 GitHub page, including the exact command you're using, the full error message, and any additional context that might help diagnose the problem. This will allow the community to provide more targeted assistance.

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

Successfully merging a pull request may close this issue.

5 participants