使用tf.image.rgb_to_grayscale进行自定义preprocessing_function-ValueError:使用序列设置数组元素

时间:2018-11-21 22:26:29

标签: python tensorflow keras image-preprocessing

我正在尝试使用自定义预处理功能在训练过程中将RGB图像转换为灰度图像。因此,我尝试为此使用 public void save(User user) { userRepository.save(user); } 。我的功能如下:

tf.image.rbg_to_grayscale

def prep_data(x): x = tf.image.rgb_to_grayscale(x) return x datagen = ImageDataGenerator(preprocessing_function=prep_data,validation_split=0.15) 是使用train_generator定义的。没有此自定义功能的训练效果很好,但是一旦使用它,就会出现以下错误:

  

ValueError:设置具有序列的数组元素。

从这个答案here来看,我假设我需要将输入更改为datagen.flow_from_dataframe(...),但是我不知道将rgb_to_grayscale传递给函数的正确方法是什么。

关于如何解决此问题的任何想法?

2 个答案:

答案 0 :(得分:1)

相反,您可以使用color_mode的{​​{1}}参数并将其设置为flow_from_directory以将图像转换为灰度。来自Keras docs

  

color_mode :“灰度”,“ rbg”和“ rgba”之一。默认值:“ rgb”。图像是否将转换为具有1、3或4个通道。

答案 1 :(得分:0)

将RGB图像更改为灰度(示例):

img = image.load_img('/kaggle/input/cassava-leaf-disease-classification/train_images/'+train['image_id'][i], target_size=(28,28,1), color_mode="grayscale")