TensorFlow使用具有给定θ的空间变换器

时间:2017-05-22 11:39:17

标签: tensorflow affinetransform

我想在没有本地化网络的情况下使用带有TensorFlow的Spatial Transformer,而是使用给定的变换矩阵theta。我尝试使用不应改变输入的单位矩阵的变换器。不幸的是情况并非如此,如果我多次在输出上重复转换,则图像在左上角缩小和缩小。我认为会出现一些离散化错误,但为什么要进行身份转换?

in = tf.placeholder(tf.float32, [None, H, W, C], name="input_image")
theta = tf.placeholder(tf.float32, [None, 6], name="input_theta")
transformed = transformer(in, theta, [H, W])

1 个答案:

答案 0 :(得分:2)

好的,我想我找到了答案: 问题是使用高度和宽度归一化坐标,例如-1 <= x,y <= 1,更具体地说是缩放回矩阵坐标0 <= x < width0 <= y < height,这在{{1}中完成如下方法:

_interpolate

更改x = (x + 1.0)*(width_f) / 2.0 y = (y + 1.0)*(height_f) / 2.0 方法中的tf.linspace函数,以便从_meshgrid转到0width-1并删除上面提到的反向缩放解决了我的问题。< / p>