Keras:将图像输入CNN并获取图像输出

时间:2018-07-06 12:50:17

标签: python image-processing keras conv-neural-network

到目前为止,我已经在熊猫的数值数据集上练习神经网络,但是现在我需要创建一个将图像作为输入并输出该图像的二进制蒙版的模型。

我的训练数据为numpy形状的数组(602、2048、2048、1)。具有一个通道的602x尺寸2048x2048的图像。输出掩码的数组具有相同的尺寸。

我不知道如何定义第一层或如何将数据正确地输入到模型中。非常感谢您在此问题上的帮助

1 个答案:

答案 0 :(得分:2)

嗯,这不是一个“规则”,但是可能您将主要使用2D转换和相关图层。

像往常一样,将所有内容作为numpy数组提供,也许可以标准化这些值。常用选项是:

  • 介于0和1之间(仅除以255。)
  • 在-1和1之间(除以255。乘以2,然后减去1)
  • 咖啡风格:从每个通道中减去一个特定值,以根据其通常的平均值将这些值“居中”,而无需重新缩放它们。

您的模型应以类似以下内容的开头:

inputTensor = Input((2048,2048,1))
output = Conv2D(filters, kernel_size, .....)(inputTensor)    

或者,在顺序模型中:model.add(Conv2D(...., input_shape=(2048,2048,1))

稍后,由您决定要使用的图层。

  • Conv2D
  • MaxPooling2D
  • Upsampling2D

您是要创建线性模型,还是要划分分支,联接分支等。

具有 U-Net 风格的模型对您来说应该是一个好的开始。

不能做的事情

  • 不要使用Flatten图层(实际上,您可以使用,如果稍后再调整输出的形状以具有图像尺寸...但是为什么?)
  • 不要使用全局池化层(您不想牺牲空间尺寸)