使用 Python 中的 U-net 和 3 通道输入图像进行图像分割
Using U-net in Python with 3-channel input images for image segmentation
我正在使用 unet for image segmentation, using the code outlined 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: 我在输出中有三个 类,这可能是原因吗?
您必须决定是否要为图像输入 RGB 或灰度:
将您的图像转换为灰度或更改转换层。另一种选择是将 256x256x3 输入展平为一维并将其用作输入。
我实际上已经通过对我的分割掩码进行单热编码并将最后一层的激活函数更改为 softmax 来修复它,过滤器大小与 类!
的数量相匹配
我正在使用 unet for image segmentation, using the code outlined 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: 我在输出中有三个 类,这可能是原因吗?
您必须决定是否要为图像输入 RGB 或灰度: 将您的图像转换为灰度或更改转换层。另一种选择是将 256x256x3 输入展平为一维并将其用作输入。
我实际上已经通过对我的分割掩码进行单热编码并将最后一层的激活函数更改为 softmax 来修复它,过滤器大小与 类!
的数量相匹配