Keras:使用灰度蒙版和 ImageDataGenerator 类进行图像分割

我目前正在尝试使用 Keras 2.1.6(以 TensorFlow 作为后端)实现卷积网络,并ImageDataGenerator使用灰度掩码对图像进行分割。我尝试使用图像作为输入,并使用掩码作为标签。由于训练图像数量少,而且内存限制,我使用了ImageDataGeneratorKeras 中提供的类。


但是,在将 Keras 示例中提供的值更改为稍后描述的值后,我收到此错误:


File "C:\Users\XXX\Anaconda3\lib\site-packages\keras\engine\training.py", line 2223, in fit_generator

batch_size = x.shape[0]

AttributeError: 'tuple' object has no attribute 'shape'

据我所知,这是因为生成器确实生成了一个元组,而不是一个数组。这首先发生在我将以下参数从 Keras 示例中提供的标准值更改为以下参数后:color_mode='grayscale'对于所有掩码生成器,并且class_mode='input'由于这被推荐用于自动编码器。


可以在此处找到 Keras 示例。


我使用的数据集由 100 张图像 ( jpg) 和 100 个相应的灰度蒙版 ( png) 组成,可以在此链接下载


侃侃尔雅
浏览 273回答 2
2回答

慕少森

您要构建的是图像分割模型,而不是自动编码器。因此,由于您有单独的图像和标签生成器(即掩码),您需要将class_mode参数设置为None以防止生成器生成任何标签数组。此外,您需要将最后一层的激活函数从 更改softmax为sigmoid,否则由于 softmax 将其输入元素的总和归一化为 1,因此输出将全部为 1。您也可以binary_crossentropy用于损失函数。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python