Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow 动态张量对齐/裁剪_Tensorflow - Fatal编程技术网

Tensorflow 动态张量对齐/裁剪

Tensorflow 动态张量对齐/裁剪,tensorflow,Tensorflow,我在TensorFlow实现了完全卷积网络。它使用Encoder解码器结构。 在训练时,我总是使用相同的图像大小(224x224,使用随机裁剪),一切都很好 在干涉阶段,我希望一次预测一幅图像,因为我希望使用完整图像(而不是croped)。例如,这样的图像具有大小[406256]。这就是问题所在。 在编码器-解码器体系结构中,我添加了两个TESOR。训练时,两个张量的大小相匹配。预测单个图像时,大小不匹配(张量大小:[1,47,47,64]vs[1,46,46,64])。我认为这是因为在Conv

我在TensorFlow实现了完全卷积网络。它使用Encoder解码器结构。 在训练时,我总是使用相同的图像大小(
224x224
,使用随机裁剪),一切都很好

在干涉阶段,我希望一次预测一幅图像,因为我希望使用完整图像(而不是croped)。例如,这样的图像具有大小
[406256]
。这就是问题所在。 在编码器-解码器体系结构中,我添加了两个TESOR。训练时,两个张量的大小相匹配。预测单个图像时,大小不匹配(张量大小:
[1,47,47,64]
vs
[1,46,46,64]
)。我认为这是因为在Conv和Pool层中进行了一些舍入

我应该在我的架构中改变什么,以适合我想要的任何图像大小?我应该更改舍入参数吗?或者加上张量的“裁剪”

链接到架构的实现:
(问题出现在第166行)

我找到了可变输入大小的解决方案:)

我们真正需要的是一个“裁剪层”,裁剪一个张量来匹配另一个张量。我在这里发现了非常相似的图层: (作物和玉米)

我刚刚制作了“裁剪”和“添加”,它正在工作:

def crop_and_add(x1,x2):
    x1_shape = tf.shape(x1)
    x2_shape = tf.shape(x2)
    # offsets for the top left corner of the crop
    offsets = [0, (x1_shape[1] - x2_shape[1]) // 2, (x1_shape[2] - x2_shape[2]) // 2, 0]
    size = [-1, x2_shape[1], x2_shape[2], -1]
    x1_crop = tf.slice(x1, offsets, size)
    return x1_crop + x2
模型I中的所有添加被上述层所取代(因此合并编码器和解码器数据)

此外,模型的输入需要定义为:

image = tf.placeholder(tf.float32, shape=[1, None, None, 3], name="input_image")
所以我们知道我们将通过单个图像,该图像有3个通道。但我们既不知道宽度也不知道高度。而且效果非常好!(K80上的40fps为AWS P2,图像大小为224x{}-图像的拍摄侧为224)


仅供参考,我也在尝试运行(比LinkNet快2倍),但在TensorFlow中运行较慢。我认为这是因为PReLu(在TF时速度很慢)。它也不支持图像的仲裁大小,因为unpol层需要通过整数列表(而不是占位符)预定义输出大小。因此,在TF中,LinkNet在速度和性能方面看起来更好

只需将输入大小调整为
[224224,224]
我不想调整输入大小,因为这样我会丢失一些
空间信息。我的模型是通过右
纵横比学习的(无图像大小调整)。在干涉情况下,我还希望得到正确的纵横比。我也可以将图像分割成几个矩形区域,然后合并。但我希望这个模型能以合理的速度工作,并在不同输入分辨率的手机上工作。你有没有研究过为什么在预测时张量大小不匹配?这是舍入误差,因为406不能除以8。但是裁剪和对齐功能解决了这个问题