我是ML初学者,只需使用ImageNet权重实现inception-v3。这是我第一次参加比赛。我的实施是在Keras。我的预测都是错的,我需要一点点,看看问题是什么。使用Keras在线查找从上到下使用的inception-v3的示例是非常困难的。大多数是转学习的教程。这是我的代码。
import keras as k
from keras.applications.inception_v3 import InceptionV3
from keras.applications.imagenet_utils import preprocess_input, decode_predictions
from keras.preprocessing import image
import cv2
import numpy as np
model = k.applications.inception_v3.InceptionV3(include_top=True, weights='imagenet', input_tensor=None, input_shape=None)
im = 'images/cat.jpg'
cv2.imread(im).shape
(168,299,3)
im = cv2.resize(cv2.imread(im), (299, 299)).astype(np.float32)
im = np.expand_dims(im, axis=0)
im.shape
(1,299,299,3)
preds = model.predict(im)
print('Predicted:', decode_predictions(preds
预测:[[('n03047690','clog',1.0),('n01924916','flatworm',7.0789714e-11),('n03950228','pitcher',2.1705252e-11),( 'n02841315','双筒望远镜',4.1622389e-13),('n06359193','web_site',3.8697981e-16)]]
有人会建议这个最基本的实现是如何错误的。也许我的输入形状不正确?
答案 0 :(得分:0)
inception-v3模型要求您在预测之前通过preprocess_input()
运行图像。
添加:
im=preprocess_input(im)
另外,您应该从preprocess_input
导入keras.applications.inception_v3
而不是from keras.applications.imagenet_utils