Tensorflow 对象检测 API 无法正确检测对象/根本无法检测对象

问题描述 投票:0回答:2

我已遵循代码的整个步骤/格式(多次交叉检查以确保 100% 正确)以及在 Tensorflow 对象检测 API 上训练自定义对象所需的数据。我尝试使用 ssd_mobilenet_v1_coco、faster_rcnn_resnet101_coco 以及 faster_rcnn_inception_v2_coco 模型,但仍然没有得到任何好的结果。我得到的只是对象的错误分类或根本没有边界框。

我正在训练检测单个类对象,训练图像数量约为 250,验证图像数量为 63;每个图像的大小各不相同,大多约为 300 x 300 像素或更小。我正在训练模型直到它们收敛(不完全)。我通过查看 eval 性能知道这一点,该性能显示步长超过 15000 时,损失逐渐减少(至 < 0.04) over time but also fluctuates. I stop my training and export the graph. My question is:

我对用于解决对象检测问题的测试视频抱有很大疑问。视频帧的尺寸非常大,为 1370 x 786 像素,其中我需要检测的对象与帧大小相比非常小。这是导致问题的原因吗?因为我的训练图像很小(300 x 300 或更小),而我的测试视频帧与训练图像相比太大了?我尝试了几次训练,但每个模型每次都失败了,我陷入了想要放弃的境地。

有人可以解释一下这里发生的事情吗?我应该训练更多步数吗?或者我应该训练与测试帧中类似的尺寸图像来进行训练?这会有帮助吗?

以下是我使用的配置文件和labelmap.pbtxt的代码。

配置文件:

    fine_tune_checkpoint: ".../ssd_mobilenet_v1_coco_2017_11_17/model.ckpt"
  from_detection_checkpoint: true
  num_steps: 200000
  data_augmentation_options {
    random_horizontal_flip {
    }
  }
  data_augmentation_options {
    ssd_random_crop {
    }
  }
}

train_input_reader: {
  tf_record_input_reader {
    input_path: ".../train.record"
  }
  label_map_path: ".../labelmap.pbtxt"
}

eval_config: {
  num_examples: 63

labelmap.pbtxt:

item {
  id: 1
  name: 'tomato'
}
python tensorflow object-detection-api
2个回答
2
投票

或者我也应该训练与测试帧中类似尺寸的图像进行训练吗?这会有帮助吗?

根据您的解释,这正是您需要做的。

您不应期望在 300x300 图像上训练的网络能够在 1370x786 图像上按预期工作。特别是如果物体在大图像中已经很小的话。

您的训练数据必须尽可能与您的评估数据相似,而不会进入危险的过度拟合区域。至少图像必须具有相似的大小和纵横比并且来自相同的域

解决此问题后,请记住小物体确实很难检测,因此您可能需要修改默认模型配置。

如果您没有实时限制,我建议您首先尝试使用 Faster-RCNN,将 output_stride 参数设置为 8 而不是 16。


0
投票

我和他有同样的疑问,但在我的场景中,我创建了四个不同的班级,但只有 2 个接受过培训。一个类具有相同的结构,但另一个类的结构与每个项目不同,因此在训练之后,它在经过训练的图像中运行良好,但当我尝试在新图像中进行对象检测时,在标记正确的图像时存在巨大的混乱类对象。对象检测仅适用于定义的结构化项目吗?或者是否有任何其他对象检测模型在该场景中使用 full 。目前我正在使用yolov11

© www.soinside.com 2019 - 2024. All rights reserved.