Tensorflow对象检测问题

时间:2017-10-05 20:07:46

标签: image tensorflow object-detection

我正在尝试Tensorflow faster_rcnn_resnet101模型来检测642 * 481图像中的多个对象。我试过两种方法,但都没有得到满意的结果。

1)通过这种方式,我从训练图像中裁剪了对象(50 * 160矩形)(训练图像可能与642 * 481测试图像的昏暗尺寸不同)。我使用那些裁剪的图像来训练faster_rcnn_resnet101。如果测试集也是相同大小的裁剪图像,看起来效果很好。但是对于642 * 481测试图像,它无法检测到那里的多个物体,效果很好。

然后我想也许模型重新调整测试图像以匹配50 * 160,因此细节丢失了。在这个想法中,我尝试了另一种方式

2)我将每个裁剪的图像分别复制到642 * 481白色背景中(基本填充)。因此每个训练图像具有与测试图像相同的暗淡尺寸。复制在背景上的裁剪图像的位置有意设置为随机。但是,它仍然没有对测试图像进​​行良好的检测。 为了尝试它的性能,我使用GIMP制作包含对象的窗口,并用白色像素替换窗口外的其他部分。结果好多了。 如果我们只在图像中保留一个对象窗口并将其他部分设为白色,则结果为超级。

所以我的问题是这些背后发生了什么?我怎样才能成功地检测测试图像中的多个对象?感谢。

1 个答案:

答案 0 :(得分:0)

这个想法是你应该在训练期间使用包含多个物体实例的训练图像。换句话说,你不必裁剪!特别是你的图像不是很大。

但是,您必须识别(标记)对象。这意味着知道图像中每个对象的边界框。此外,这些数据应与tfrecord文件中的原始图像组合在一起。整个过程有一个很好的指南here。在您的情况下,您将在源图像(642x481)中标记所有对象,而不仅仅是“浣熊”。如果您的对象有多个类,请确保将其标记为!

如果您使用这些包含上下文中对象的图像进行训练,那么网络将学会识别在上下文中具有对象的类似图像。