【问题标题】:Convolution over two images using Keras使用 Keras 对两个图像进行卷积
【发布时间】:2017-10-29 04:01:24
【问题描述】:

我有一个形状为(128,128,6) 的图像张量。它包含两个沿三维(2x3=6 通道)堆叠的图像。现在我想在那个维度上使用卷积,这样我得到一个 (128,128,3) 张量,我可以将其用作使用 Keras 的预训练模型(例如 vgg16)的输入。

这两个图像可以看作是视频的相邻帧。目标是获得关于第一张和第二张图像之间变化的信息(找到图像之间的一些局部相关性)

如何在我使用(例如)5x5x6 内核的情况下执行这样的卷积。或者,我可以使用5x5x2kernel 对每个图像的相应通道进行卷积(分别对两个图像的红色、绿色、蓝色通道进行卷积)。

我将如何在 Keras 或原生 Tensorflow 中实现这一点?

【问题讨论】:

    标签: python tensorflow computer-vision deep-learning keras


    【解决方案1】:

    我要做的是使用三个输入,每个输入使用两个图像。然后你可以像这样使用标准卷积:Convolution2D(1, 5, 5, border_mode='same') 为每个输入分开来达到预期的结果。之后,您可以将它们与合并层合并,并将生成的图像输入预训练的网络。

    对于 tensorflow dim_ordering,所有这些看起来都像这样:

    inp1 = Input((128,128,2))
    cv1 = Convolution2D(1, 5, 5, border_mode='same')
    inp2 = Input((128,128, 2))
    ...
    model_input = merge([cv1, cv2, cv3], mode='concat', concat_axis=-1)
    

    【讨论】: