python - 构建用于牛眼皮疹识别的卷积神经网络

标签 python tensorflow machine-learning keras conv-neural-network

我需要建立一个牛眼皮疹识别系统。

为此,我选择使用 Tensorflow+Keras。我已经批量下载了大约 300 张牛眼皮疹图像,以及相同数量的其他皮肤病和清洁皮肤图像。这是我的模型:

model = Sequential()
model.add(Conv2D(32, (3, 3), input_shape=input_shape))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Flatten())
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(1))
model.add(Activation('sigmoid'))

在此过程中(30 个时期),它确实提供了 90% 以上的准确度,但是,系统在测试集上仅显示出约 65% 的准确度。

然后我尝试裁剪所有皮疹图像,以便它们填充整个图像。结果再次令人失望,我不知道为什么,但它在测试集上显示出大约 55% 的准确率。

你能给我一些建议吗?模型是否错误或效率低下?我是否必须使用其他一些机器学习技术来实现此目的?

我的数据集中的图像示例:here , herehere

我第二次尝试时使用的裁剪图片示例:here , herehere

最佳答案

嗯,很难从这些信息开始。

1)您是否尝试过预处理图像?

2)您是否尝试过加载预训练的 VGG16 网络(看起来与您的网络很接近),那么您只需要训练密集层。

base_model = VGG16(weights='imagenet', include_top=False, input_shape=target_shape)

model_top = Sequential()
model_top.add(Flatten(name='flatten', input_shape=base_model.output_shape[1:]))
model_top.add(Dense(4096, activation='relu', name='fc1'))
model_top.add(Dense(4096, activation='relu', name='fc2'))
model_top.add(Dropout(0.5))
model_top.add(Dense(nr_classes, activation='softmax', name='predictions'))

model_full = Model(inputs=base_model.input, outputs=model_top(base_model.output))

# set the first 25 layers (up to the last convolution block)
# to non-trainable (weights will not be updated)
for layer in model_full.layers[:-5]:
    layer.trainable = False

model_full.compile(loss='categorical_crossentropy',
                   optimizer=optimizers.Adam(lr=1e-7))

model_full.summary()

3)创建验证集以查看网络是否过度拟合(验证准确度降低,但训练准确度增加)。

关于python - 构建用于牛眼皮疹识别的卷积神经网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50911337/

相关文章:

python - urllib IncompleteRead() 错误我可以通过重新请求来解决吗?

python - 如何使用 PyDictionary 获取单词的一种含义?

python - 关于tensorflow中session的解释

python - conv1D 中的形状尺寸

matlab - Matlab 中的感知器训练

python - 如何将两个训练有素的神经网络权重矩阵合并为一个?

validation - 训练数据的分布与测试/预测的分布

python - 在 Pylons 中流式处理 POST 大请求

python - Flask 和 SqlAlchemy session

python - 如何在jupyter中添加conda环境