首页 > 解决方案 > 如何让keras从图像中提取特征

问题描述

我有一个图像列表作为训练数据,其中一个图像如下所示:

在此处输入图像描述

对于每个训练图像,我手动标记了红色纤维并生成了一个灰度图像,如下所示:

在此处输入图像描述

现在我想让算法学习红色纤维标记过程,并为每个图像返回一个灰度图像:

def readImagesIntoNumpy(directory):
    files = os.listdir(directory)
    images = map(lambda file: io.imread(directory + file), files)
    return np.array(images)

// xTrain.shape = (num_of_images, 256, 256, 4)
xTrain = readImagesIntoNumpy("./original/")
// yTrain.shape = (num_of_images, 256, 256, 1)
yTrain = np.expand_dims(readImagesIntoNumpy("./gray/"), axis = 3)

// constructing the neural network
s = Input((256, 256, 4))
o = Conv2D(32, (1, 1), activation = 'sigmoid')(s)
for i in range(20):
    o = Conv2D(32, (1, 1), activation='elu')(o)
o = Conv2D(1, (1, 1), activation = 'sigmoid')(o)
model = Model(inputs = [s], outputs = [o])
model.compile(optimizer='adam', loss='binary_crossentropy')
// model.summary() has 21313 trainable parameters

// training the neural network:
model.fit(xTrain, yTrain, epochs = 50, callbacks=[checkpoint])

但是,如果我现在让模型预测训练数据上的灰度图像

yPredicted = model.predict(xTrain)

它只返回完全黑色的图像。

为什么?

标签: pythonimagetensorflowkerasneural-network

解决方案


推荐阅读