带有黑白图像的张量流形状问题

时间:2017-06-16 08:07:18

标签: python image image-processing colors tensorflow

我是张力流初学者,所以请耐心等待。 现在我正在尝试修改现有的用于创建超分辨率图像的CNN的python程序。如果您感兴趣,可以在此处找到该代码:https://github.com/pinae/Superresolution

输入张量的形状为< 5,240,320,3>,5为批量大小,240和320为图像的大小,3为通道数(RGB)。我想修改这个程序的黑白图像,所以只有1个频道 - > < 5,240,320,1>

首先,我将测试和验证图像转换为b / w:

   image = image.convert('L')

然后将图像写入数组,这就是我的问题开始的地方。该阵列的大小将小于< 240,320>。将5个图像的数组写入列表并移交给tensorflow。

Tensorflow期望< 5,240,320,1>张量但图像列表具有< 5,240,320>的形状,因此缺少一个维度。我尝试使用np.expand_dims等添加维度但没有成功。

    input_batches = np.expand_dims(input_batches, axis=-1)

为什么张量流占位符的通道索引似乎从1开始,而分辨率索引从0开始?

我确信将会有更多问题,例如调整过滤器,但这就是我现在被困住的地方。

2 个答案:

答案 0 :(得分:0)

您需要了解代码。我相信问题可能会更深层次。由于信息有限,我假设您使用的是network.py。在那里,我们在第16行看到了这一点:

    self.inputs = tf.placeholder(
        tf.float32, [batch_size, dimensions[1], dimensions[0], 3], name='input_images'
    )

深度维度已经硬编码为3。您可能还需要编辑它,可能还有许多其他内容。

作为一个警告,大多数超级分辨率的CNN使用小的补丁大小。绝对不是(240, 320),我怀疑由于批量很小,很难收敛。

答案 1 :(得分:0)

如果你有一个形状张量[5,240,320]你可以用这一个命令重塑它[5,240,320,1]

correctSizedTensor = tf.reshape( wrongSizedTensor, [5,240,320,1] )