我遵循了代码的整个步骤/格式(多次交叉检查以 100% 确定它们是正确的)以及在 Tensorflow 对象检测 API 上训练自定义对象所需的数据。我尝试使用 ssd_mobilenet_v1_coco、faster_rcnn_resnet101_coco 以及 fast_rcnn_inception_v2_coco 模型,但仍然没有得到任何好的结果。我得到的只是对象的错误分类或根本没有边界框。
我正在训练检测单个类对象,训练图像数量约为 250,验证图像数量为 63;并且每个大小不一的图像大多在 300 x 300 像素或更小。我正在训练模型直到它们收敛(不完全)。我通过查看 eval 性能(步长超过 15000 步)来了解这一点,损失随着时间的推移逐渐减少(至 < 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
Run Code Online (Sandbox Code Playgroud)
标签图.pbtxt:
item {
id: 1
name: 'tomato'
}
Run Code Online (Sandbox Code Playgroud)