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):
- Google Colab and Kaggle notebooks with free GPU:
- Google Cloud Deep Learning VM. See GCP Quickstart Guide
- Amazon Deep Learning AMI. See AWS Quickstart Guide
- Docker Image. See Docker Quickstart Guide
Status
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:
- Downgrade the protobuf package to 3.20.x or lower.
- 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:
- Downgrade the protobuf package to 3.20.x or lower.
- 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 youryolov5/
directory orgit 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
- Docker โ
sudo docker pull ultralytics/yolov5:latest
to update your image
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 youryolov5/
directory orgit 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
- Docker โ
sudo docker pull ultralytics/yolov5:latest
to update your image
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):
- Google Colab and Kaggle notebooks with free GPU:
- Google Cloud Deep Learning VM. See GCP Quickstart Guide
- Amazon Deep Learning AMI. See AWS Quickstart Guide
- Docker Image. See Docker Quickstart Guide