所以,我正在使用keras模型进行我的项目,对数据图像进行一些训练,这就是我可以得到我训练过的图像的输出分类。结果进展顺利。但是,我想在已构建的Keras模型上添加一些图像属性。例如,我想使用opencv在keras上添加hsv图像属性,以便它们一起训练。
image_hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
我想在添加卷积层后添加此功能。我想要的是
from keras import layers
input_ = layers.Input(shape = [96, 96, 3])
conv2 = layers.Conv2D(32, (3, 3), padding = "same", activation = "relu")(input_)
conv2 = layers.BatchNormalization(axis = 1)(conv2)
conv2 = layers.MaxPooling2D(pool_size = (3, 3))(conv2)
conv2 = layers.Dropout(0.2)(conv2)
prop = cv2.cvtColor(np.array(conv2), cv2.COLOR_BGR2HSV)
flat = layers.Flatten()(prop)
fc = layers.Dense(512, activation = "relu")(flat)
fc = layers.BatchNormalization()(fc)
fc = layers.Dropout(0.2)(fc)
output = keras.layers.Dense(2, activation = "sigmoid")(fc)
model = keras.models.Model(inputs = input_, outputs = output)
model.compile(loss="binary_crossentropy", optimizer= Adam(lr=LR, decay = LR / 2),
metrics=["accuracy"])
但是,我遇到了这样的错误:
TypeError: src data type = 17 is not supported
是因为conv2的输出形状是(32,32,32)吗?谁能给我答案吗?我不知道该怎么解决。
答案 0 :(得分:1)
是的,您的图片是(32,32,32)。 Conv2D在原始彩色图像中使用32个卷积滤镜。
因此,在卷积之后,就不会考虑初始图像的色彩空间。您可以在输入模型之前或作为第一层进行转换。
检查图层Lambda
以便能够在模型中包含您喜欢的任何变换。