TensorFlow 对象检测 API 将图像中检测到的对象打印到控制台

我正在尝试使用 TF 对象检测 API 返回图像中已检测到的对象列表。

为此,我使用 print([category_index.get(i) for i in classes[0]]) 来打印已检测到的对象列表,或者使用 print(num_detections) 来显示检测到的对象数量,但在两种情况下,它都返回一个包含 300 个值的列表,或者相应地返回值 [300.]

如何仅返回图像上实际存在的对象?或者如果有错误,请帮助找出问题所在。

我在训练时使用了 Faster RCNN 模型的配置文件和检查点。可以确定它确实能检测到图像中的几个对象,下面是检测结果:

enter image description here

我的代码如下:

...

这会产生以下结果:

...

非常感谢您提供的任何信息!

更新:

非常感谢所有帮助解决此问题的朋友。以下代码行正是我所需要的,它为我提供了一个包含已检测对象的列表,这样我就可以对它们进行其他操作。

print [category_index.get(value) for index,value in enumerate(classes[0]) if scores[0,index] > 0.5]

回答:

据我所知,您有 300 个检测结果。visualize_boxes_and_labels_on_image_array 只显示其中很少一部分,因为 min_score_thresh=.5(这是默认值)对于大多数检测结果来说太高了。

如果您想在输出中添加这样的过滤,可以编写如下代码:

min_score_thresh = 0.5print([category_index.get(i) for i in classes[0] if scores[0, i] > min_score_thresh)

您可以更改 min_score_thresh 来选择所需的阈值。打印类别名称和分数值可能会很有用。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注