首页 > 解决方案 > 触发 TF 对象检测 API 上的 eval.py 时出错

问题描述

我正在尝试使用以下命令评估我的模型:

python eval.py --logtostderr --pipeline_config_path=training/faster_rcnn_inception_v2_pets.config --checkpoint_dir=inference_graph --eval_dir=eval

我得到这个错误

我收到了这个错误:

回溯(最后一次调用):文件“eval.py”,第 142 行,在 tf.app.run() 文件“C:\Users\mosta\Anaconda3\envs\mat\lib\site-packages\tensorflow_core\python \platform\app.py”,第 40 行,运行中app.py”,第 299 行,运行 _run_main(main, args) 文件“C:\Users\mosta\Anaconda3\envs\mat\lib\site-packages\absl\app.py”,第 250 行,在 _run_main sys .exit(main(argv)) 文件“C:\Users\mosta\Anaconda3\envs\mat\lib\site-packages\tensorflow_core\python\util\deprecation.py”,第 324 行,在 new_func 返回 func(*args , **kwargs) 文件“eval.py”,第 138 行,在主 graph_hook_fn=graph_rewriter_fn) 文件“C:\Users\mosta\Anaconda3\envs\mat\lib\site-packages\object_detection-0.1-py3.5.egg\object_detection\legacy\evaluator.py”,第 274 行,在评估 evaluator_list = get_evaluators(eval_config, categories) 文件“C:\Users\mosta\Anaconda3\envs\mat\lib\site-packages\object_detection-0.1-py3 .5.egg\object_detection\legacy\evaluator.py”,第 166 行,在 get_evaluators EVAL_METRICS_CLASS_DICTeval_metric_fn_key) 文件“C:\Users\mosta\Anaconda3\envs\mat\lib\site-packages\object_detection-0.1-py3.5. egg\object_detection\utils\object_detection_evaluation.py",第 470 行,在\Users\mosta\Anaconda3\envs\mat\lib\site-packages\object_detection-0.1-py3.5.egg\object_detection\utils\object_detection_evaluation.py”,第 470 行,在\Users\mosta\Anaconda3\envs\mat\lib\site-packages\object_detection-0.1-py3.5.egg\object_detection\utils\object_detection_evaluation.py”,第 470 行,在init use_weighted_mean_ap=False) 文件“C:\Users\mosta\Anaconda3\envs\mat\lib\site-packages\object_detection-0.1-py3.5.egg\object_detection\utils\object_detection_evaluation.py”,第 194 行,在init self._build_metric_names() 文件“C:\Users\mosta\Anaconda3\envs\mat\lib\site-packages\object_detection-0.1-py3.5.egg\object_detection\utils\object_detection_evaluation.py”,第 213 行,在 _build_metric_names category_name = unicode(category_name, 'utf-8') NameError: name 'unicode' is not defined

标签: tensorflowobject-detectionobject-detection-api

解决方案


你好呀!


Python 3 将该unicode类型重命名为str,旧str类型已替换为bytes.

知道这一点是有道理的,因为 TF 对象检测 API 的一部分已被弃用(使用 Python 2.x 编写),所以我们遇到了错误

有关如何升级代码以与 Python 3 兼容的更多说明,请参见此处。


我希望这有帮助!


推荐阅读