我目前正在使用Tensorflow Object API来训练自己的课程。我正在使用faster_rcnn_resnet101_coco模型进行训练。
要创建训练数据,我使用了RectLabel在大约100张图像中的对象周围放置了边框。每个图像中大约包含30个类别,所有图像中总共存在40个类别。
我的图像尺寸为1920×1080。这些图像是通过从我想检测的物体的视频中拉出随机帧而产生的。
我的问题是我没有得到任何检测(Tensorboard没有显示任何东西),我认为这是因为正在调整训练图像的大小并且图像中的对象变得太小。我使用的是默认的fast_rcnn_resnet101_coco.config文件,没有任何更改(数据位置除外)。
对图像进行随机裁剪(而不是如下调整大小)以保持对象大小相同以进行训练是否是一个好主意?
image_resizer {
keep_aspect_ratio_resizer {
min_dimension: 600
max_dimension: 1024
}
我还有其他问题要忽略吗?
答案 0 :(得分:0)
我曾经处理过对象检测问题,起初一无所获。我训练模型两天,得到了正确的结果。
更多的培训和更多的数据可能会有所帮助。
答案 1 :(得分:0)
如果您担心调整大小会使对象变小以致无法检测,则可以使用更大的输入分辨率。从理论上讲,您只能在训练数据上执行此操作,但是我不确定使用如此小的训练集是否可以取得良好的效果。 相反,您可以先在较大的输入分辨率上使用相同的数据集(COCO?)对预训练模型进行微调,然后再在较大的分辨率上对训练数据进行微调。 这样,该模型理论上将首先学习适应更大的分辨率,然后再学习您的课程。
我也想支持2013年星期五,并建议获取更多的训练数据,可能会有更多的扩充,然后增加训练时间。如果您仍然要在相同数量的图像上进行训练,则仅进行较长时间的训练可能无济于事,因为这样会导致过拟合。