我想在WiderFace数据集上添加一个数据扩充,我想知道,如何使用张量流随机裁剪图像并且只保留裁剪框的中心位于裁剪中?
我已经尝试实现一个解决方案,但我使用TFRecords和TfExampleDecoder,并且在此过程中输入图像的形状设置为[None, None, 3]
,因此无法获得图像的形状并执行此操作我自己。
答案 0 :(得分:0)
您可以获得形状,但仅限于运行时 - 当您调用sess.run并实际传入数据时 - 即实际定义形状时。
因此,在tesorflow中手动进行随机裁剪,基本上,您希望重新实现tf.random_crop
,以便您可以处理对边界框的操作。
首先,要获得形状,x = your_tensor.shape[0]
将为您提供第一个维度。在您实际调用sess.run
之前,它将显示为“无”,然后它将解析为适当的值。现在,您可以使用tf.random_uniform
或任何您喜欢的方法计算一些随机裁剪参数。最后,使用tf.slice
执行裁剪。
如果您想选择是否执行裁剪,可以使用tf.cond
。
在这些组件之间,您应该能够仅使用tensorflow构造实现所需的内容。尝试一下,如果你遇到问题就会遇到问题并且遇到错误。