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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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