张量流中的多级特征融合

时间:2017-10-13 16:41:57

标签: python-3.x tensorflow neural-network deep-learning conv-neural-network

我想知道如何在 Tensorflow 组合两个具有不同空间空间的图层。

例如::

batch_size = 3

input1 = tf.ones([batch_size, 32, 32, 3], tf.float32)
input2 = tf.ones([batch_size, 16, 16, 3], tf.float32)

filt1 = tf.constant(0.1, shape = [3,3,3,64])
filt1_1 = tf.constant(0.1, shape = [1,1,64,64])

filt2 = tf.constant(0.1, shape = [3,3,3,128])
filt2_2 = tf.constant(0.1, shape = [1,1,128,128])

#first layer
conv1 = tf.nn.conv2d(input1, filt1, [1,2,2,1], "SAME")
pool1 = tf.nn.max_pool(conv1, [1,2,2,1],[1,2,2,1], "SAME")

conv1_1 = tf.nn.conv2d(pool1,  filt1_1, [1,2,2,1], "SAME")
deconv1 = tf.nn.conv2d_transpose(conv1_1, filt1_1, pool1.get_shape().as_list(), [1,2,2,1], "SAME")

#seconda Layer
conv2 = tf.nn.conv2d(input2, filt2, [1,2,2,1], "SAME")
pool2 = tf.nn.max_pool(conv2, [1,2,2,1],[1,2,2,1], "SAME")

conv2_2 = tf.nn.conv2d(pool2,  filt2_2, [1,2,2,1], "SAME")
deconv2 = tf.nn.conv2d_transpose(conv2_2, filt2_2, pool2.get_shape().as_list(), [1,2,2,1], "SAME")

deconv1形状为[3,8,8,64], deconv2形状为[3,4,4,12]。在这里,我不能使用 tf.concat 来组合 deconv1 deconv2 。那怎么办呢???

修改

这是我试图实现的架构的图像::它与本文相关::

  

七。 He,W.,Zhang,X。Y.,Yin,F。,& Liu,C。L.(2017)。深度直接   多方位场景文本检测的回归。 arXiv预印本   的arXiv:1703.08289

architecture

1 个答案:

答案 0 :(得分:1)

enter image description here

我检查了你指向的纸张并且有它,考虑到这个网络的输入图像有大小H x W(高度和宽度),我在每一层的一侧写出输出图像的大小。现在看一下我将输入箭头圈到该层的最底层,让我们检查它。该图层有两个输入,第一个来自前一个图层,其形状为H/2 x W/2,第二个来自第一个图层,其大小为H/2 x W/2。这两个输入合并在一起(不是连接,而是基于纸张加在一起)并进入最后Upsample层,输出大小为H x W的图像。

其他Upsample图层也具有相同的输入。如您所见,所有合并操作都具有匹配形状。此外,所有合并图层的过滤器编号均为128,与其他合并层具有一致性。

您也可以使用concat代替合并,但会产生更大的过滤器编号,请注意。合并两个形状为H/2 x W/2 x 128的矩阵会产生相同的形状H/2 x W/2 x 128,但在最后一个轴上连接两个矩阵,形状H/2 x W/2 x 128会产生H/2 x W/2 x 256

我试图尽可能地指导你,希望这很有用。