张量流中的随机裁剪和边界框

时间:2018-03-29 15:54:37

标签: python tensorflow

我想在WiderFace数据集上添加一个数据扩充,我想知道,如何使用张量流随机裁剪图像并且只保留裁剪框的中心位于裁剪中?

我已经尝试实现一个解决方案,但我使用TFRecords和TfExampleDecoder,并且在此过程中输入图像的形状设置为[None, None, 3],因此无法获得图像的形状并执行此操作我自己。

1 个答案:

答案 0 :(得分:0)

您可以获得形状,但仅限于运行时 - 当您调用sess.run并实际传入数据时 - 即实际定义形状时。

因此,在tesorflow中手动进行随机裁剪,基本上,您希望重新实现tf.random_crop,以便您可以处理对边界框的操作。

首先,要获得形状,x = your_tensor.shape[0]将为您提供第一个维度。在您实际调用sess.run之前,它将显示为“无”,然后它将解析为适当的值。现在,您可以使用tf.random_uniform或任何您喜欢的方法计算一些随机裁剪参数。最后,使用tf.slice执行裁剪。

如果您想选择是否执行裁剪,可以使用tf.cond

在这些组件之间,您应该能够仅使用tensorflow构造实现所需的内容。尝试一下,如果你遇到问题就会遇到问题并且遇到错误。