我想在没有本地化网络的情况下使用带有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])
答案 0 :(得分:2)
好的,我想我找到了答案:
问题是使用高度和宽度归一化坐标,例如-1 <= x,y <= 1
,更具体地说是缩放回矩阵坐标0 <= x < width
和0 <= y < height
,这在{{1}中完成如下方法:
_interpolate
更改x = (x + 1.0)*(width_f) / 2.0
y = (y + 1.0)*(height_f) / 2.0
方法中的tf.linspace
函数,以便从_meshgrid
转到0
或width-1
并删除上面提到的反向缩放解决了我的问题。< / p>