我已经更新到Tensorflow 1.9和最新的Object Detection API大师 . 当运行之前运行良好的培训/评估会话时(我认为版本1.6),培训似乎按预期进行,但我只获得一个图像的评估和指标(第一个) .
在Tensorboard中,图像标记为“Detections_Left_Groundtruth_Right” . 评估步骤本身也发生得非常快,这让我相信这不仅仅是一个Tensorboard问题 .
查看model_lib.py,我看到一些可疑代码(靠近第349行):
eval_images = (
features[fields.InputDataFields.original_image] if use_original_images
else features[fields.InputDataFields.image])
eval_dict = eval_util.result_dict_for_single_example(
eval_images[0:1],
features[inputs.HASH_KEY][0],
detections,
groundtruth,
class_agnostic=class_agnostic,
scale_to_absolute=True)
这对我来说就像评估者总是在第一张图像上运行一次评估 . 有没有人看到和/或修复过这个?如果改变上述工作,我会更新 .
2 回答
您是对的,对象检测仅支持批量大小为1进行评估 . 评估次数等于评估步骤的数量 . Eval指标在不同批次中累计 .
顺便说一句,在Tensorboard中查看更多eval图像的更改刚刚提交给master .
使用
model_main.py
模块时遇到同样的问题 . 但是,当使用可以在object_detection/legacy/
目录中找到的train.py和eval.py函数时,我可以在tensorboard中看到多个图像 .我没有足够的时间来完成代码以完全了解正在发生的事情 . 我认为这个eval函数不会调用你引用的代码部分,因为tensorboard中的图像是不同的 . 不是使左/右图像对显示预测/ ground_truth,而是仅显示预测的边界框 .