You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TensorFlow目标检测中len()返回检测对象数量错误如何解决?

问题原因

TensorFlow 官方目标检测模型默认固定返回100个检测候选结果,output_dict["detection_scores"] 存储的就是这100个候选对应的置信度得分,无论有效检测的实际数量多少,这个数组的长度都是固定值100。
你看到可视化结果里的框数量远少于100,是因为 visualize_boxes_and_labels_on_image_array 方法默认内置了0.5的置信度阈值,低于这个阈值的候选框不会被绘制,但这些低置信度的结果依然保留在输出数组中,所以直接取数组长度统计数量必然得到100的结果。

解决方案

你只需要增加置信度过滤逻辑,统计高于阈值的有效检测结果即可,和可视化默认阈值保持一致的话,统计的数量就会和页面上显示的框数量完全匹配,代码修改如下:

# 置信度阈值可根据业务需求自行调整,默认和可视化阈值对齐设为0.5
SCORE_THRESHOLD = 0.5
# 过滤后统计有效检测数
valid_obj_count = sum(score > SCORE_THRESHOLD for score in output_dict["detection_scores"])
print("Found %d objects." % valid_obj_count)

如果使用numpy写法性能更高:

import numpy as np
SCORE_THRESHOLD = 0.5
valid_obj_count = np.sum(output_dict["detection_scores"] > SCORE_THRESHOLD)
print("Found %d objects." % valid_obj_count)
可选调整(非必需)

如果需要修改模型默认返回的候选结果总数量,可以在模型训练的pipeline配置文件中修改 max_total_detections 参数,重新导出模型后即可生效,一般场景下不需要做这个调整,仅靠阈值过滤即可满足需求。

内容的提问来源于stack exchange,提问作者porschewitz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 18:45:05