0

我是一名 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', '扁虫', 7.0789714e-11), ('n03950228', '投手', 2.1705252e-11), ('n02841315' , '双筒望远镜', 4.1622389e-13), ('n06359193', 'web_site', 3.8697981e-16)]]

有人可以建议这个最基本的实现是如何错误的。也许我的输入形状不正确?

4

1 回答 1

0

inception-v3 模型要求您preprocess_input()在预测之前运行您的图像。

添加:

im=preprocess_input(im)

preprocess_input此外,您应该从而keras.applications.inception_v3不是导入from keras.applications.imagenet_utils

于 2017-09-25T13:37:31.957 回答