在Python中使用U-net和3通道输入图像进行图像分割

时间:2020-06-11 10:01:31

标签: python keras image-segmentation unity3d-unet

我使用unet概述的代码,使用herein进行图像分割。

我的输入图像是256x256x3。而相应的分割掩码为256x256。

我已经更改了输入到Unet的大小:

def unet(pretrained_weights = None,input_size = (256,256,3)):

并获得一个具有256x256x1层的网络作为输出

conv2d_144 (Conv2D)             (None, 256, 256, 1)  2           conv2d_143[0][0]  

查看完整的体系结构here

当我尝试使用.fit_generator运行时,出现以下错误:

ValueError: Error when checking target: expected conv2d_144 to have shape (256, 256, 1) but got array with shape (256, 256, 3)

该如何解决?请让我知道我能提供什么额外的信息!

谢谢!

PS:我的输出中有三个类,这可能是原因吗?

2 个答案:

答案 0 :(得分:0)

您必须确定是否要为图像输入RGB或灰度: 将图像转换为灰度图像或更改转换层。另一种选择是将256x256x3输入展平为一个尺寸并将其用作输入。

答案 1 :(得分:0)

实际上,我通过对分割蒙版进行一次热编码并将最后一层的激活函数更改为softmax来进行修复,并使用filtersize来匹配类数!

https://github.com/MKeel1ng/MULTI-CHANNEL-UNET