【发布时间】:2019-04-25 19:10:22
【问题描述】:
我目前正在研究一个图像识别问题,我希望识别具有最高概率的图像,这意味着期望从给定输入测试图像的图像池中匹配具有最大匹配分数百分比的图像。
我想要任何想法、建议或任何博客文章,我可以通过它继续前进。
- 我编写了一个 CNN 分类器,它由通常的卷积、最大池化层组成;
- 然后我使用 Keras 的 ImageDataGenerator 函数来使用图像增强。我将其应用于训练集,并重新调整了我的测试集。
- 然后我用一些随机图像测试了算法。但我需要了解如何从给定输入测试图像的图像池中准确匹配具有最大匹配分数百分比的图像。
- 此时我只是传递一张图像作为输入,算法正在返回它是猫、狗还是任何材料。
如果要求不清楚,请告诉我,我将提供所有细节。
classifier = Sequential()
classifier.add(Conv2D(32,(3,3), input_shape =(600,200,3),
activation ='relu'))
classifier.add(MaxPooling2D(pool_size = (2,2)))
classifier.add(Conv2D(32,(3,3), activation ='relu'))
classifier.add(MaxPooling2D(pool_size = (2,2)))
classifier.add(Flatten())
classifier.add(Dense(units = 128, activation ='relu'))
classifier.add(Dropout(0.4))
classifier.add(Dense(units = 64, activation ='relu'))
classifier.add(Dense(units = 3, activation ='softmax'))
classifier.compile(optimizer = 'adam', loss =
'categorical_crossentropy', metrics =['accuracy'])
#Testing
img_width, img_height = 600, 200
def prediction(file):
x = load_img(file, target_size=(img_width,img_height))
x = img_to_array(x)
x = np.expand_dims(x, axis=0)
array = classifier.predict(x)
result = array[0]
#print(result)
answer = np.argmax(result)
if answer == 1:
print("Predicted: Dog")
elif answer == 0:
print("Predicted: Cat")
elif answer == 2:
print("Predicted: Materials")
我想要这样的输出,给定一张图片,它应该告诉我它属于哪个类别的概率,例如狗:23%,猫:2%,材料:75%
【问题讨论】:
-
您能向我们展示您在模型中添加最后一层的代码吗?
-
classifier.add(Dense(units = 128, activation ='relu')) classifier.add(Dropout(0.1)) classifier.add(Dense(units = 64, activation ='relu') ) #Hidden Layers classifier.add(Dense(units = 3, activation ='softmax')) #Output Node #Compiling classifier.compile(optimizer = 'adam', loss = 'categorical_crossentropy', metrics =['accuracy'])
-
好的,看起来不错。您还可以添加用于测试模型并获取图像预测的代码吗?
标签: python machine-learning deep-learning computer-vision