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

TensorFlow目标检测自定义数据集边界框(BB)无法显示问题求助

解决TensorFlow Object Detection自定义数据集可视化边界框不显示的问题

我之前切换自定义数据集时也碰到过一模一样的情况,结合TensorFlow Object Detection API的常见踩坑点,给你梳理几个核心排查方向:

1. 核对标签映射(Label Map)的一致性

这是最容易出错的环节:

  • 确保自定义的label_map.pbtxt格式完全正确,每个类的ID从1开始(0是默认背景类),比如:
    item {
      id: 1
      name: 'your_class_1'
    }
    item {
      id: 2
      name: 'your_class_2'
    }
    
  • 训练配置文件(.config)里的num_classes必须和你自定义类的数量完全匹配,不能多也不能少。
  • 检查Jupyter Notebook里加载label map的代码,一定要替换成你自己的文件路径,别还沿用Pascal VOC的pascal_label_map.pbtxt:
    PATH_TO_LABELS = os.path.join('data', 'your_custom_label_map.pbtxt')
    

2. 验证模型的检测输出是否有效

先别着急可视化,先打印模型的检测结果看看:
在Notebook里添加这段代码,查看检测到的类别和置信度:

# 假设你已经得到了detection_classes和detection_scores
print("检测到的类别ID:", detection_classes[0][:10])  # 打印前10个检测结果的类别
print("对应的置信度:", detection_scores[0][:10])
  • 如果输出的类别全是0,说明模型没学到自定义类的特征,或者标签映射没对应上;
  • 如果有非0的类别但置信度低于默认阈值(0.5),可以尝试调低MIN_SCORE_THRESH的值,比如改成0.3,看看能不能显示边界框。

3. 检查自定义数据集的标注正确性

  • 确认标注文件(比如VOC格式的XML)里的object/name值,和label map里的name完全一致,大小写、空格、特殊字符都不能有差异,比如label map里是'dog',XML里写成'Dog'就会匹配失败;
  • 检查标注的边界框坐标是否合法:xmin < xmax且ymin < ymax,并且所有坐标都在图像的尺寸范围内,超出范围的标注会被模型忽略。

4. 确认可视化代码的适配

  • 确保category_index是基于你的自定义label map生成的,打印出来看看是否正确加载了所有类别:
    category_index = label_map_util.create_category_index_from_labelmap(PATH_TO_LABELS, use_display_name=True)
    print(category_index)
    
  • 检查可视化函数visualize_boxes_and_labels_on_image_array的参数,有没有把category_index传入,别误用了之前VOC的category_index。

5. 验证模型Checkpoint的加载

确保你加载的是自己训练完成后的checkpoint,而不是从Model Zoo下载的预训练初始模型。比如在加载模型时,指定的ckpt文件应该是model_dir里最新的ckpt-xxxx(xxxx是训练步数),而不是预训练的faster_rcnn_inception_resnet_v2_atrous_coco_2018_01_28里的文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:06:27