Detectron: 클래슀λ₯Ό κΈ°λŒ€ν•˜μ§€λ§Œ κΈ°λŠ₯을 μ–»λŠ” μ΅œμ‹  pyyaml

에 λ§Œλ“  2019λ…„ 03μ›” 16일  Β·  7μ½”λ©˜νŠΈ  Β·  좜처: facebookresearch/Detectron

μ•ˆλ…•,
λ¬Έμ œκ°€ κ·€ν•˜ λ˜λŠ” pyyaml에 μžˆλŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•Šμ§€λ§Œ pyyaml ​​버전 5.1둜 infer_simple.py 예제λ₯Ό μ‹€ν–‰ν•  λ•Œ 방금 클린 λΉŒλ“œλ₯Ό μ™„λ£Œν•˜κ³  λ‹€μŒ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

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

버전을 4.2둜 λ‘€λ°±ν–ˆλŠ”λ° μ œλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€.
핍 μ„€μΉ˜ pyyaml==4.2b2

μ‹œμŠ€ν…œ 정보

  • 운영 체제: 18.04
  • 컴파일러 버전: 3.6
  • μΏ λ‹€ 버전: 10
  • cuDNN 버전: 9
  • NVIDIA λ“œλΌμ΄λ²„ 버전: 415
  • GPU λͺ¨λΈ(λͺ¨λ“  κΈ°κΈ°κ°€ λ™μΌν•˜μ§€ μ•Šμ€ 경우): 1080ti
  • PYTHONPATH ν™˜κ²½ λ³€μˆ˜: ν•΄λ‹Ή 사항 μ—†μŒ
  • python --version 좜λ ₯: 3.6.7
  • 관련성이 μžˆλŠ” κ²ƒμœΌλ‘œ λ³΄μ΄λŠ” 기타 사항: ?

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

λ‚˜λŠ” 같은 였λ₯˜κ°€ λ°œμƒν•˜μ—¬ λ³€κ²½ν•˜μ—¬ 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.
yaml_load = yaml.load
μ—κ²Œ
yaml_load = lambda x: yaml.load(x, Loader=yaml.Loader)
detectron/utils/env.py
yaml.loadκ°€ μ½”λ“œλ² μ΄μŠ€μ˜ λ‹€λ₯Έ κ³³μ—μ„œ μ‚¬μš©λ  수 있기 λ•Œλ¬Έμ— 이것이 λͺ¨λ“  κ²½μš°μ— μœ νš¨ν•œ μ†”λ£¨μ…˜μΈμ§€ ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 제 κ²½μš°μ—λŠ” 이것이 쒋은 ν•΄κ²° λ°©λ²•μ΄μ—ˆμŠ΅λ‹ˆλ‹€.

λͺ¨λ“  7 λŒ“κΈ€

λ‚˜λŠ” 같은 였λ₯˜κ°€ λ°œμƒν•˜μ—¬ λ³€κ²½ν•˜μ—¬ 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.
yaml_load = yaml.load
μ—κ²Œ
yaml_load = lambda x: yaml.load(x, Loader=yaml.Loader)
detectron/utils/env.py
yaml.loadκ°€ μ½”λ“œλ² μ΄μŠ€μ˜ λ‹€λ₯Έ κ³³μ—μ„œ μ‚¬μš©λ  수 있기 λ•Œλ¬Έμ— 이것이 λͺ¨λ“  κ²½μš°μ— μœ νš¨ν•œ μ†”λ£¨μ…˜μΈμ§€ ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 제 κ²½μš°μ—λŠ” 이것이 쒋은 ν•΄κ²° λ°©λ²•μ΄μ—ˆμŠ΅λ‹ˆλ‹€.

@matthhan 이 λ‚˜λ₯Ό μœ„ν•΄ ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€. 감사 ν•΄μš”!

λ‚˜λŠ” 같은 였λ₯˜κ°€ λ°œμƒν•˜μ—¬ λ³€κ²½ν•˜μ—¬ 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.
yaml_load = yaml.load
μ—κ²Œ
yaml_load = lambda x: yaml.load(x, Loader=yaml.Loader)
detectron/utils/env.py
yaml.loadκ°€ μ½”λ“œλ² μ΄μŠ€μ˜ λ‹€λ₯Έ κ³³μ—μ„œ μ‚¬μš©λ  수 있기 λ•Œλ¬Έμ— 이것이 λͺ¨λ“  κ²½μš°μ— μœ νš¨ν•œ μ†”λ£¨μ…˜μΈμ§€ ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 제 κ²½μš°μ—λŠ” 이것이 쒋은 ν•΄κ²° λ°©λ²•μ΄μ—ˆμŠ΅λ‹ˆλ‹€.

μ‹€μ œλ‘œ μž‘λ™ν•œλ‹€!! ~

또 λ‹€λ₯Έ ν•΄κ²° 방법은 pyyaml을 3.12 λ²„μ „μœΌλ‘œ λ‘€λ°±ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. μ²˜μŒμ—λŠ” 감지기가 ν•΄λ‹Ή 버전에 κ΅¬μΆ•λœ 것 κ°™κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. λΉ„μŠ·ν•œ λ¬Έμ œκ°€ https://github.com/facebookresearch/DensePose/issues/216 에

같은 였λ₯˜κ°€ λ°œμƒν•˜μ§€λ§Œ λ‚΄ pyyaml=3.12 , 도움이 ν•„μš”ν•©λ‹ˆλ‹€.

μ‹œμŠ€ν…œ 정보
운영 체제: 16.04
컴파일러 버전: 2.7
μΏ λ‹€ 버전: 9

μ•ˆλ…•,
λ¬Έμ œκ°€ κ·€ν•˜ λ˜λŠ” pyyaml에 μžˆλŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•Šμ§€λ§Œ pyyaml ​​버전 5.1둜 infer_simple.py 예제λ₯Ό μ‹€ν–‰ν•  λ•Œ 방금 클린 λΉŒλ“œλ₯Ό μ™„λ£Œν•˜κ³  λ‹€μŒ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

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

버전을 4.2둜 λ‘€λ°±ν–ˆλŠ”λ° μ œλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€.
핍 μ„€μΉ˜ pyyaml==4.2b2

μ‹œμŠ€ν…œ 정보

  • 운영 체제: 18.04
  • 컴파일러 버전: 3.6
  • μΏ λ‹€ 버전: 10
  • cuDNN 버전: 9
  • NVIDIA λ“œλΌμ΄λ²„ 버전: 415
  • GPU λͺ¨λΈ(λͺ¨λ“  κΈ°κΈ°κ°€ λ™μΌν•˜μ§€ μ•Šμ€ 경우): 1080ti
  • PYTHONPATH ν™˜κ²½ λ³€μˆ˜: ν•΄λ‹Ή 사항 μ—†μŒ
  • python --version 좜λ ₯: 3.6.7
  • 관련성이 μžˆλŠ” κ²ƒμœΌλ‘œ λ³΄μ΄λŠ” 기타 사항: ?

μ•ˆλ…•ν•˜μ„Έμš”, cuda10으둜 caffe2λ₯Ό μ»΄νŒŒμΌν•˜λŠ” 방법을 μ•Œκ³  μ‹ΆμŠ΅λ‹ˆλ‹€. κ·€ν•˜μ˜ νšŒμ‹ μ„ κΈ°λŒ€ν•˜κ² μŠ΅λ‹ˆλ‹€.

λˆ„κ΅°κ°€μ—κ²Œ 도움이 λ˜λŠ” 경우λ₯Ό λŒ€λΉ„ν•˜μ—¬ λ‚΄ κ²½ν—˜μ„ κ³΅μœ ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. Ubuntu 16.04, Cuda 9.0, Python 3.7이 μ„€μΉ˜λœ μ»΄ν“¨ν„°μ—μ„œ λ™μΌν•œ λ¬Έμ œκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. μš°λ¦¬λŠ” 처음 두 κ²Œμ‹œλ¬Όμ˜ μ œμ•ˆμ„ μ‹œλ„ν–ˆκ³  PyYAML 3.12λ₯Ό κ°•μ œλ‘œ μ„€μΉ˜ν•˜λ €κ³  μ‹œλ„ν–ˆμ§€λ§Œ μ†Œμš©μ΄ μ—†μ—ˆμŠ΅λ‹ˆλ‹€. config.pyμ—μ„œ 였λ₯˜κ°€ λ°œμƒν•œ 행을 ν™•μΈν•˜λ©΄μ„œ 도컀 μ»¨ν…Œμ΄λ„ˆμ˜ config.pyκ°€ git clone(!?!)을 μ‚¬μš©ν•˜μ—¬ λ‹€μš΄λ‘œλ“œν•œ 것보닀 이전 λ²„μ „μž„μ„ κΉ¨λ‹¬μ•˜μŠ΅λ‹ˆλ‹€. @matthhan 의 κ²Œμ‹œλ¬Όμ—μ„œ

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰