Почему все мои прогнозы начального уровня v3 (в Керасе) неверны?

Я новичок в машинном обучении и просто реализую начальную версию v3 с использованием весов ImageNet. Это мой первый заезд на нем. Моя реализация находится в Керасе. Все мои прогнозы неверны, и мне нужно немного подняться, чтобы увидеть, в чем проблема. На самом деле довольно сложно найти пример использования inception-v3 сверху вниз с использованием Keras в Интернете. Большинство из них представляют собой учебные пособия по трансферному обучению. Вот мой код.

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', 'засор', 1.0), ('n01924916', 'плоский червь', 7.0789714e-11), ('n03950228', 'кувшин', 2.1705252e-11), ('n02841315' , 'бинокль', 4.1622389e-13), ('n06359193', 'web_site', 3.8697981e-16)]]

Может ли кто-нибудь подсказать, как эта самая основная реализация неверна. Возможно, моя форма ввода неверна?


person GhostRider    schedule 09.07.2017    source источник


Ответы (1)


Модель Inception-v3 требует, чтобы вы прогнали свое изображение через preprocess_input() перед прогнозированием.

добавлять:

im=preprocess_input(im)

Кроме того, вы должны импортировать preprocess_input из keras.applications.inception_v3, а не from keras.applications.imagenet_utils

person ilan    schedule 25.09.2017