facebookresearch / Detectron

FAIR's research platform for object detection research, implementing popular algorithms like Mask R-CNN and RetinaNet.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Latest pyyaml expecting class but getting function

squeakus opened this issue · comments

Hi,
I am not sure if the issue is with you or pyyaml but I just completed a clean build and get the following error when running infer_simple.py example with pyyaml version 5.1

yaml.constructor.ConstructorError: while constructing a Python instance expected a class, but found <class 'builtin_function_or_method'> in "<unicode string>", line 3, column 20: BBOX_XFORM_CLIP: !!python/object/apply:numpy.core ...

I rolled the version back to 4.2 and it works fine:
pip install pyyaml==4.2b2

System information

  • Operating system: 18.04
  • Compiler version: 3.6
  • CUDA version: 10
  • cuDNN version: 9
  • NVIDIA driver version: 415
  • GPU models (for all devices if they are not all the same): 1080ti
  • PYTHONPATH environment variable: NA
  • python --version output: 3.6.7
  • Anything else that seems relevant: ?

I encountered the same error and solved the problem by changing
yaml_load = yaml.load
to
yaml_load = lambda x: yaml.load(x, Loader=yaml.Loader)
in detectron/utils/env.py
Not sure if this is a valid solution in every case, because yaml.load might be used elsewhere in the codebase. However, in my case this was a good workaround.

@matthhan solved it for me. Thanks!

I encountered the same error and solved the problem by changing
yaml_load = yaml.load
to
yaml_load = lambda x: yaml.load(x, Loader=yaml.Loader)
in detectron/utils/env.py
Not sure if this is a valid solution in every case, because yaml.load might be used elsewhere in the codebase. However, in my case this was a good workaround.

It really works!! Thx ~

Another workaround is to roll back the pyyaml to 3.12 version, since the detectron seems built on that version initially. A similar problem is in facebookresearch/DensePose#216

I get the same error but my pyyaml=3.12 , i need help.

System information
Operating system: 16.04
Compiler version: 2.7
CUDA version: 9

Hi,
I am not sure if the issue is with you or pyyaml but I just completed a clean build and get the following error when running infer_simple.py example with pyyaml version 5.1

yaml.constructor.ConstructorError: while constructing a Python instance expected a class, but found <class 'builtin_function_or_method'> in "<unicode string>", line 3, column 20: BBOX_XFORM_CLIP: !!python/object/apply:numpy.core ...

I rolled the version back to 4.2 and it works fine:
pip install pyyaml==4.2b2

System information

  • Operating system: 18.04
  • Compiler version: 3.6
  • CUDA version: 10
  • cuDNN version: 9
  • NVIDIA driver version: 415
  • GPU models (for all devices if they are not all the same): 1080ti
  • PYTHONPATH environment variable: NA
  • python --version output: 3.6.7
  • Anything else that seems relevant: ?

hello ,I want to know how do you compile your caffe2 with cuda10. Looking forward to your reply.

I am sharing my experience in case it helps someone: I had the same issue on a computer with Ubuntu 16.04, Cuda 9.0, Python 3.7. We tried the suggestions from the first two posts, and tried forcing installation of PyYAML 3.12, to no avail. On checking the lines from config.py where the error occurred, we realized that the config.py in the docker container was an older version than the one downloaded using git clone (!?!). On copying the latest version to the docker container, along with the changes in env.py in @matthhan 's post, we were able to get it to run.