TF:屏蔽图像中的随机矩形。

时间:2017-09-11 09:20:41

标签: python tensorflow

我想用10x10矩形遮盖图像,我在图像中随机定位。例如。将[batch,height,width,col_channels]的值设置为零。

在numpy我会做[:,random_x:random_x + 10,random_y:random_y + 10,:] = 0.

是否有可能以优雅的方式在张量流中做到这一点?

1 个答案:

答案 0 :(得分:0)

我不确定它的优雅程度,但是我的解决方案使用tensorflow操作而不是numpy ops。因此,在@tf.function内运行时,它可以提供不同的随机值:

随机化矩形:

x1, y1 = tf.random.uniform([2], maxval=255)

创建遮罩:

mask = tf.concat([
    tf.zeros([img_size, y1]),
    tf.concat([tf.zeros([x1, y2-y1]), tf.ones([x2-x1, y2-y1]), tf.zeros([img_size - x2, y2-y1])], axis=0),
    tf.zeros([img_size, img_size - y2])
  ], axis=1)
mask = tf.stack([mask] * channels, axis=2)

戴上口罩:

tf.boolean_mask(img, mask)