TensorFlow 使用给定 theta 的 Spatial Transformer

TensorFlow use Spatial Transformer with given theta

我想在没有定位网的情况下将 Spatial Transformer 与 TensorFlow 一起使用,但改用给定的变换矩阵 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 <= x,y <= 1,更具体地说,缩放回矩阵坐标 0 <= x < width0 <= y < height,在 [=14= 中按如下方式完成] 方法:

x = (x + 1.0)*(width_f) / 2.0
y = (y + 1.0)*(height_f) / 2.0

_meshgrid 方法中的 tf.linspace 函数从 0 更改为 width-1heigth-1 并删除提到的反向缩放解决了我的问题.