我想用10x10矩形遮盖图像,我在图像中随机定位。例如。将[batch,height,width,col_channels]的值设置为零。
在numpy我会做[:,random_x:random_x + 10,random_y:random_y + 10,:] = 0.
是否有可能以优雅的方式在张量流中做到这一点?
答案 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)