Scene-Graph-Benchmark.pytorch
Scene-Graph-Benchmark.pytorch copied to clipboard
KeyError: 'Non-existent config key: TEST.CUSTUM_EVAL'
❓ Questions and Help
Thanks for Kaihua's great work! I have a question about testing custumed images. When I ran the code to generate the json file for custumed images, I met a bug. Is something wrong with my configuration or something else? If someone have met and solved the same problem, could you please tell me the possible solution? Thanks!
Here is my error:
Traceback (most recent call last):
File "tools/relation_test_net.py", line 119, in
KeyError: Non-existent config key...
我推测,此类问题都是由于作者使用的是自己修改的maskrcnn_benchmark,因为原始的maskrcnn_benchmark主要用于目标检测,不含有关系分类头和属性分类头,所以e2e_relation...等yaml文件中定义的key在原始的maskrcnn_benchmark中都不存在,自然cfg变量中也就不存在这些key,就会在File "tools/relation_test_net.py", line 62, in main cfg.merge_from_file(args.config_file) 中报错。
解决的办法其实很简单,首先是把环境中已有的maskrcnn_benchmark卸载(这个包可能大概率你是通过pip或者conda安装的),保证在执行bash scripts/test.sh 时报错:no module named maskrcnn_benchmark,说明环境中已有的maskrcnn_benchmark已经卸载干净。然后cd到PENET中,执行python setup.py build develop,安装作者修改的maskrcnn_benchmark,最后解决相关的依赖问题(比如from .cv2 import * ImportError: libGL.so.1,执行apt-install libgl1-mesa-dev),cfg.merge_from_file(args.config_file)就过了。
这个问题可能新手会碰到吧(比如我这样的),大佬一般不会遇到这个问题....
Translate by SparkDesk:
ERROR: KeyError: 'Non-existent config key...'
This type of issue is usually caused by the author modifying the maskrcnn_benchmark package, which is originally designed for object detection and does not contain relation and attribute classification heads. Therefore, the keys defined in the YAML files such as e2e_relation... do not exist in the original maskrcnn_benchmark package, and thus the corresponding keys in the cfg variable also do not exist, leading to the error in File "tools/relation_test_net.py", line 62, in main cfg.merge_from_file(args.config_file)
The solution is actually quite simple. First, uninstall the existing maskrcnn_benchmark package (which you probably installed through pip or conda), to ensure that when executing bash scripts/test.sh, it reports an error: no module named maskrcnn_benchmark, indicating that the existing maskrcnn_benchmark package has been uninstalled cleanly. Then cd to PENET and execute python setup.py build develop to install the modified maskrcnn_benchmark package developed by the author, and finally resolve any related dependencies (for example, from .cv2 import * ImportError: libGL.so.1, execute apt-install libgl1-mesa-dev). cfg.merge_from_file(args.config_file) will be passed.
This problem may be encountered by beginners (such as me), while experts generally won't encounter this type of issue.