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

Cant start training: TypeError: Descriptors cannot not be created directly. #8012

Closed
2 tasks done
UnglvKitDe opened this issue May 28, 2022 · 13 comments · Fixed by #8017 or #8742
Closed
2 tasks done

Cant start training: TypeError: Descriptors cannot not be created directly. #8012

UnglvKitDe opened this issue May 28, 2022 · 13 comments · Fixed by #8017 or #8742
Labels
bug Something isn't working

Comments

@UnglvKitDe
Copy link
Contributor

Search before asking

  • I have searched the YOLOv5 issues and found no similar bug report.

YOLOv5 Component

No response

Bug

Hi,
first of all: Thx for your great work! This repo looks really interesting. But unfortunately I can not start the training.
I use RedHat 4 with conda. I created the conda env and then installed the packages with pip install -r requirements.txt.
python3 train.py --img 640 --batch 16 --data coco128.yaml --weights yolov5m6.pt

Traceback (most recent call last):
  File "train.py", line 52, in <module>
    from utils.loggers import Loggers
  File "[...]/yolov5/utils/loggers/__init__.py", line 11, in <module>
    from torch.utils.tensorboard import SummaryWriter
  File "[...]/yolov5/lib/python3.8/site-packages/torch/utils/tensorboard/__init__.py", line 10, in <module>
    from .writer import FileWriter, SummaryWriter  # noqa: F401
  File "[...]/yolov5/lib/python3.8/site-packages/torch/utils/tensorboard/writer.py", line 9, in <module>
    from tensorboard.compat.proto.event_pb2 import SessionLog
  File "[...]/yolov5/lib/python3.8/site-packages/tensorboard/compat/proto/event_pb2.py", line 17, in <module>
    from tensorboard.compat.proto import summary_pb2 as tensorboard_dot_compat_dot_proto_dot_summary__pb2
  File "[...]/yolov5/lib/python3.8/site-packages/tensorboard/compat/proto/summary_pb2.py", line 17, in <module>
    from tensorboard.compat.proto import tensor_pb2 as tensorboard_dot_compat_dot_proto_dot_tensor__pb2
  File "[...]/yolov5/lib/python3.8/site-packages/tensorboard/compat/proto/tensor_pb2.py", line 16, in <module>
    from tensorboard.compat.proto import resource_handle_pb2 as tensorboard_dot_compat_dot_proto_dot_resource__handle__pb2
  File "[...]/yolov5/lib/python3.8/site-packages/tensorboard/compat/proto/resource_handle_pb2.py", line 16, in <module>
    from tensorboard.compat.proto import tensor_shape_pb2 as tensorboard_dot_compat_dot_proto_dot_tensor__shape__pb2
  File "[...]/yolov5/lib/python3.8/site-packages/tensorboard/compat/proto/tensor_shape_pb2.py", line 36, in <module>
    _descriptor.FieldDescriptor(
  File "[...]/yolov5/lib/python3.8/site-packages/google/protobuf/descriptor.py", line 560, in __new__
    _message.Message._CheckCalledFromGeneratedFile()
TypeError: Descriptors cannot not be created directly.
If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
If you cannot immediately regenerate your protos, some other possible workarounds are:
 1. Downgrade the protobuf package to 3.20.x or lower.
 2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).

More information: https://developers.google.com/protocol-buffers/docs/news/2022-05-06#python-updates

Environment

YOLOv5 + pytorch 1.11 cuda 11.6
OS: Red Hat 4
python 3.8

Minimal Reproducible Example

python3 train.py --img 640 --batch 16 --data coco128.yaml --weights yolov5m6.pt

Additional

No response

Are you willing to submit a PR?

  • Yes I'd like to help by submitting a PR!
@UnglvKitDe UnglvKitDe added the bug Something isn't working label May 28, 2022
@github-actions
Copy link
Contributor

github-actions bot commented May 28, 2022

👋 Hello @UnglvKitDe, 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 support@ultralytics.com.

Requirements

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

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

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.

@jcluo1994
Copy link

hello, thanks for great work.but, i try to train my code,there some error is coming,
TypeError: Descriptors cannot not be created directly.
If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
If you cannot immediately regenerate your protos, some other possible workarounds are:

  1. Downgrade the protobuf package to 3.20.x or lower.
  2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).
    the env is following the repo.pip -r install requirment.txt

@ar2di2-75
Copy link

ar2di2-75 commented May 28, 2022

Hi, i have same problem like [yichanshiwoa]. Detection is working but train not.

I'am using Windows 10.
YOLOv5 2022-5-27 Python-3.10.4 torch-1.11.0+cu113 CUDA:0 (NVIDIA RTX A5000, 24563MiB)

Same error when start
!cd yolov5 && python train.py --img 640 --batch 16 --epochs 5 --data dataset.yml --weights yolov5s.pt
or
!cd yolov5 && python train.py (i want to show me other error but always the same error)

Traceback (most recent call last):
File "train.py", line 52, in
from utils.loggers import Loggers
File "init.py", line 11, in
from torch.utils.tensorboard import SummaryWriter

ypeError: Descriptors cannot not be created directly.
If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
If you cannot immediately regenerate your protos, some other possible workarounds are:

  1. Downgrade the protobuf package to 3.20.x or lower.
  2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).
    More information: https://developers.google.com/protocol-buffers/docs/news/2022-05-06#python-updates

@glenn-jocher
Copy link
Member

glenn-jocher commented May 28, 2022

@UnglvKitDe @ar2di2-75 @yichanshiwoa good news 😃! Your original issue may now be fixed ✅ in PR #8017. To receive this update:

  • Gitgit pull from within your yolov5/ directory or git clone https://github.com/ultralytics/yolov5 again
  • PyTorch Hub – Force-reload 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 glenn-jocher changed the title Cant start training Cant start training: TypeError: Descriptors cannot not be created directly. May 28, 2022
@ar2di2-75
Copy link

Thanks @glenn-jocher, now is working.

@jcluo1994
Copy link

i have solve this problem by using following way:
pip uninstall protobuf
pip install protobuf==3.20.1

@jcluo1994
Copy link

Thanks @glenn-jocher, now is working.

pip uninstall protobuf
pip install protobuf==3.20.1
the way can work.

@kwassholm
Copy link

Seems like this is broken again due to the dependabot updating protobuf's version in #8346

@glenn-jocher
Copy link
Member

@kwassholm thanks for confirming, I was wondering about this. Looks like we need to revert the dependabot PR #8346

@The-Quantum
Copy link

Thanks @glenn-jocher,
I work on Ubuntu 20.04.4 LTS Oracle virtual machine, and i got the same issue as @UnglvKitDe

pip uninstall protobuf
pip install protobuf==3.20.1

Everything work well

glenn-jocher added a commit that referenced this issue Jul 27, 2022
glenn-jocher added a commit that referenced this issue Jul 27, 2022
@glenn-jocher
Copy link
Member

@kwassholm @The-Quantum good news 😃! Your original issue may now be fixed ✅ in PR #8741. This update reverts dependabot changes and sets protobuf<=3.20.1 in requirements.txt.

To receive this update:

  • Gitgit pull from within your yolov5/ directory or git clone https://github.com/ultralytics/yolov5 again
  • PyTorch Hub – Force-reload 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 🚀!

@vishwakaria
Copy link

I am still running into this issue even with protobuf version 3.20.1.

Verified that I have the latest code pulled from the repo.

@glenn-jocher
Copy link
Member

glenn-jocher commented Aug 9, 2022

@vishwakaria can you send us your pip list output? You can always use our Docker image also to train in a verified environment while utilizing local hardware.

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):

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
7 participants