aae错误

问题:

Traceback (most recent call last):
File "/home/robot/miniconda3/envs/aae_py37_tf26/bin/ae_eval", line 8, in
sys.exit(main())
File "/home/robot/miniconda3/envs/aae_py37_tf26/lib/python3.7/site-packages/auto_pose/eval/ae_eval.py", line 253, in main
eval_loc.match_and_eval_performance_scores(eval_args, eval_dir)
File "/home/robot/miniconda3/envs/aae_py37_tf26/lib/python3.7/site-packages/sixd_toolkit/tools/eval_loc.py", line 358, in match_and_eval_performance_scores
scores = calc_scores(scene_ids, obj_ids, matches, n_top)
File "/home/robot/miniconda3/envs/aae_py37_tf26/lib/python3.7/site-packages/sixd_toolkit/tools/eval_loc.py", line 133, in calc_scores
mean_obj_recall = float(np.mean(obj_recalls.values()).squeeze())
File "<array_function internals>", line 6, in mean
File "/home/robot/miniconda3/envs/aae_py37_tf26/lib/python3.7/site-packages/numpy/core/fromnumeric.py", line 3373, in mean
out=out, **kwargs)
File "/home/robot/miniconda3/envs/aae_py37_tf26/lib/python3.7/site-packages/numpy/core/_methods.py", line 172, in _mean
ret = ret / rcount
TypeError: unsupported operand type(s) for /: 'dict_values' and 'int'

解决办法:
原因:在python中dict_values返回一个dict_values对象,而不是列表list或者元组tuple。
强制转换为list即可。
mean_obj_recall = float(np.mean(obj_recalls.values()).squeeze())改为mean_obj_recall = float(np.mean(list(obj_recalls.values())).squeeze())

Traceback (most recent call last):
File "/home/robot/miniconda3/envs/aae_py37_tf26/bin/ae_eval", line 8, in
sys.exit(main())
File "/home/robot/miniconda3/envs/aae_py37_tf26/lib/python3.7/site-packages/auto_pose/eval/ae_eval.py", line 253, in main
eval_loc.match_and_eval_performance_scores(eval_args, eval_dir)
File "/home/robot/miniconda3/envs/aae_py37_tf26/lib/python3.7/site-packages/sixd_toolkit/tools/eval_loc.py", line 358, in match_and_eval_performance_scores
scores = calc_scores(scene_ids, obj_ids, matches, n_top)
File "/home/robot/miniconda3/envs/aae_py37_tf26/lib/python3.7/site-packages/sixd_toolkit/tools/eval_loc.py", line 139, in calc_scores
mean_scene_recall = float(np.mean(scene_recalls.values()).squeeze())
File "<array_function internals>", line 6, in mean
File "/home/robot/miniconda3/envs/aae_py37_tf26/lib/python3.7/site-packages/numpy/core/fromnumeric.py", line 3373, in mean
out=out, **kwargs)
File "/home/robot/miniconda3/envs/aae_py37_tf26/lib/python3.7/site-packages/numpy/core/_methods.py", line 172, in _mean
ret = ret / rcount
TypeError: unsupported operand type(s) for /: 'dict_values' and 'int'
解决办法:
mean_scene_recall = float(np.mean(scene_recalls.values()).squeeze())改为mean_scene_recall = float(np.mean(list(scene_recalls.values())).squeeze())

posted @ 2022-03-13 15:20  木芯子  阅读(100)  评论(0编辑  收藏  举报