You need to enable JavaScript to run this app. Tensorflow Object Detection API 如何将检测到的类别输出到终端
优惠活动
大模型
产品
解决方案
定价
更多

Tensorflow Object Detection API 如何将检测到的类别输出到终端

提取检测类别文本并输出到终端的实现方法

这套实现不需要额外引入新依赖,你现有代码里的组件已经足够完成类名字符串的提取:存了类别id、置信度的detections字典,以及把类别id映射为人类可读名称的category_index字典,只需要按照可视化时的相同筛选规则遍历检测结果,就能把对应文本输出到终端。

操作注意事项

  • 打印内容的筛选阈值、最大输出检测数要和可视化设置完全对齐,保证终端输出和图上绘制的检测框一一对应,不会出现图上没画的目标却在终端输出的错位情况
  • 遍历检测结果时必须补上原代码定义的label_id_offset = 1,因为API返回的检测类id是从0开始计数的,而category_index中的id从1开始计数,偏移量不匹配会直接取不到正确的类名
  • TensorFlow Object Detection API返回的检测结果默认按置信度从高到低排序,遇到第一个低于置信度阈值的结果就可以终止遍历,不需要走完所有检测项,能减少实时检测时的无效运算

可直接复用的代码片段

把下面这段代码插到原代码中viz_utils.visualize_boxes_and_labels_on_image_array调用完成的位置即可:

# 和可视化保持一致的筛选参数
min_score_thresh = 0.5
max_boxes_to_draw = 3

frame_detect_results = []
# 遍历有效检测范围
for idx in range(min(num_detections, max_boxes_to_draw)):
    score = detections['detection_scores'][idx]
    # 低于阈值直接终止遍历
    if score < min_score_thresh:
        break
    # 计算真实类别id,匹配类名字符串
    real_class_id = detections['detection_classes'][idx] + label_id_offset
    class_name = category_index[real_class_id]['name']
    frame_detect_results.append(f"{class_name}(置信度{score:.2f})")

# 输出到终端
if frame_detect_results:
    print("当前检测到目标:" + "、".join(frame_detect_results))
else:
    print("当前帧无满足置信度要求的检测目标")

实用优化技巧

实时摄像头检测时,逐帧打印会导致终端滚动速度极快,可以简单加个帧计数做节流,比如每处理15帧再打印一次结果,避免输出内容过于杂乱看不清;如果需要把检测到的类别字符串传给其他后续逻辑使用,直接保存上面代码里的frame_detect_results列表即可,不需要额外做格式转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 08:24:05