我已遵循代码的整个步骤/格式(多次交叉检查以确保 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'
}
或者我也应该训练与测试帧中类似尺寸的图像进行训练吗?这会有帮助吗?
根据您的解释,这正是您需要做的。
您不应期望在 300x300 图像上训练的网络能够在 1370x786 图像上按预期工作。特别是如果物体在大图像中已经很小的话。
您的训练数据必须尽可能与您的评估数据相似,而不会进入危险的过度拟合区域。至少图像必须具有相似的大小和纵横比并且来自相同的域
解决此问题后,请记住小物体确实很难检测,因此您可能需要修改默认模型配置。
如果您没有实时限制,我建议您首先尝试使用 Faster-RCNN,将 output_stride 参数设置为 8 而不是 16。
我和他有同样的疑问,但在我的场景中,我创建了四个不同的班级,但只有 2 个接受过培训。一个类具有相同的结构,但另一个类的结构与每个项目不同,因此在训练之后,它在经过训练的图像中运行良好,但当我尝试在新图像中进行对象检测时,在标记正确的图像时存在巨大的混乱类对象。对象检测仅适用于定义的结构化项目吗?或者是否有任何其他对象检测模型在该场景中使用 full 。目前我正在使用yolov11