ultralytics/yolov5

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

UnglvKitDe opened this issue ยท 13 comments

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!

๐Ÿ‘‹ 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.

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

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

@UnglvKitDe @ar2di2-75 @yichanshiwoa good news ๐Ÿ˜ƒ! Your original issue may now be fixed โœ… in PR #8017. To receive this update:

  • Git โ€“ git 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
  • Docker โ€“ sudo 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 ๐Ÿš€!

Thanks @glenn-jocher, now is working.

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

Thanks @glenn-jocher, now is working.

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

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

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

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

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

  • Git โ€“ git 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
  • Docker โ€“ sudo 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 ๐Ÿš€!

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.

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