我已经按照代码的整个步骤/格式(多次交叉检查以100%确定它们是正确的)以及在Tensorflow Object Detection API上训练自定义对象所需的数据。我尝试使用ssd_mobilenet_v1_coco,faster_rcnn_resnet101_coco以及faster_rcnn_inception_v2_coco模型,但仍未获得任何好的结果。我得到的只是对象的错误分类或根本没有边界框。
我正在训练检测单个类对象,其中训练图像数量约为250,验证图像数量为63;每个不同大小的图像大多在300 x 300像素或更小。我正在训练模型,直到它们收敛(不完全)。我知道这一点,通过观察步数超过15000的eval性能,损失随时间逐渐减小(至<0.04)但也会波动。我停止训练并导出图表。我的问题是:
我对用于解决物体检测的测试视频存在疑问。视频帧非常大,尺寸为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'
}
答案 0 :(得分:1)
或者我应该像训练测试框架一样训练类似的尺寸图像?这会有帮助吗?
根据您的解释,这正是您需要做的事情。
您不应期望在300x300图像上受过培训的网络能够在1370x786图像上按预期工作。特别是如果对象在大图像中已经很小。
您的火车数据必须与您的评估数据尽可能相似,而不会在危险的过度区域中进行监控。至少图像必须具有相似的尺寸和纵横比,并且来自相同的域
一旦解决了这个问题,请记住,小对象确实难以检测,因此您可能需要修改默认的模型配置。
如果您没有实时约束,我建议您首先尝试使用Faster-RCNN将output_stride参数设置为8而不是16。