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

kyn*_*nem 0 python image-processing conv-neural-network keras

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

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

我不明白的是如何定义第一层或如何正确地将数据输入模型。我非常感谢你在这个问题上的帮助

Dan*_*ler 5

好吧,这不是一个“规则”,但您可能会主要使用 2D 卷积和相关层。

像往常一样,您将所有内容作为 numpy 数组提供,也许可以对值进行标准化。常见选项有:

  • 0 到 1 之间(只需除以 255。)
  • -1 到 1 之间(除以 255、乘以 2、减 1)
  • Caffe 风格:从每个通道中减去一个特定值,以根据其通常的平均值“居中”这些值,而无需重新缩放它们。

你的模型应该从以下内容开始:

inputTensor = Input((2048,2048,1))
output = Conv2D(filters, kernel_size, .....)(inputTensor)    
Run Code Online (Sandbox Code Playgroud)

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

稍后,由您决定使用哪些层。

  • 二维卷积
  • 最大池化二维
  • 上采样二维

无论您是要创建线性模型还是要划分分支、连接分支等,都由您决定。

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

你不能做什么:

  • 不要使用展平图层(实际上你可以,如果你稍后重塑输出以获得图像尺寸......但为什么?)
  • 不要使用全局池层(您不想牺牲空间维度)