【发布时间】:2019-02-22 05:16:45
【问题描述】:
我为我的一个课程编写了一个图像识别代码。我正在对“好”和“坏”的心脏超声图像进行分类。我遇到的问题是分类器总是预测图像是“好”的。目前我没有太多图片需要整理,所以准确率只有50%左右,但是我不确定为什么机器总是认为图片很好。
图片示例:
有什么建议吗?我提供了以下代码:
#required imports
#using sequential from tensorflow
from keras.models import Sequential
from keras.layers import Conv2D
from keras.layers import MaxPooling2D
from keras.layers import Flatten
from keras.layers import Dense
#classification model to be sequential
classifier = Sequential()
classifier.add(Conv2D(32, (3, 3), input_shape = (64, 64, 3), activation = 'relu'))
classifier.add(MaxPooling2D(pool_size = (2, 2)))
classifier.add(Flatten())
classifier.add(Dense(units = 128, activation = 'relu'))
#output layer
classifier.add(Dense(units = 1, activation = 'sigmoid'))
#compilation
classifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])
#training
from keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(rescale = 1./255, shear_range = 0.2,
zoom_range = 0.2, horizontal_flip = True)
test_datagen = ImageDataGenerator(rescale = 1./255)
training_set = train_datagen.flow_from_directory("/home/jovyan/dataset/training_set/", target_size = (64, 64), batch_size = 32, class_mode = 'binary')
test_set = test_datagen.flow_from_directory("/home/jovyan/dataset/test_set/", target_size = (64, 64), batch_size = 32, class_mode = 'binary')
classifier.fit_generator(training_set, steps_per_epoch = 85, epochs = 25, validation_data=test_set, validation_steps=2000)
#predictions
import numpy as np
from keras.preprocessing import image
test_image=image.load_img("/home/jovyan/dataset/test_set/test_bad_1.jpg", target_size=(64, 64))
test_image=image.img_to_array(test_image)
test_image=np.expand_dims(test_image, axis=0)
result=classifier.predict(test_image)
training_set.class_indices
if result[0][0]==1:
prediction='good'
else:
prediction='bad'
print(prediction)`
【问题讨论】:
-
欢迎来到 StackOverflow!可以添加带有预期结果描述的图像示例吗?例如。 “imageA” - 预期好,“imageB” - 坏
-
谢谢!是的
-
我认为架构是不够的,仅仅使用一个conv层可能无法检测到模型学习能够很好地执行分类所需的复杂特征。
标签: python tensorflow machine-learning keras