Ошибка OSE: невозможно идентифицировать файл изображения <объект _io.BytesIO в ...> при попытке прогнозирования с использованием модели Keras - PullRequest
0 голосов
/ 04 ноября 2018

Я следил за обучением Deeplizard на YouTube по развертыванию нейронной сети Keras для веб-службы Flask, но застрял. Я нашел несколько предложений по подобным проблемам, которые помогли другим (например, этот и этот ), но по какой-то причине они не работают для меня. Или, может быть, я неправильно их применяю.

Это расстроено линией image = Image.open(io.BytesIO(decoded)).

Вот код, который у меня есть (извините, он не минимален, я не уверен, как упростить его, не опуская детали, которые могут иметь значение).

Если у вас есть предложения, пожалуйста, дайте мне знать.

Очень ценится.

app = Flask(__name__)


def get_model():
    global model, graph
    model = load_model('model.h5')
    print(' * Model loaded!')
    graph = tf.Graph()


def preprocess_image(image, target_size):
    if image.mode != 'RGB':
        image = image.convert('RGB')
    image = image.resize(target_size)
    image = img_to_array(image)
    image = np.expand_dims(image, axis=0)

    return image


print(' * Loading model...')
get_model()


@app.route('/predict', methods=["POST"])
def predict():
    message = request.get_json(force=True)
    encoded = message['image']
    decoded = base64.b64decode(encoded)
    with graph.as_default():
        image = Image.open(io.BytesIO(decoded))
        preprocessed_image = preprocess_image(image, target_size(50, 50))
        prediction = model.predict(preprocessed_image).tolist()

        response = {
            'prediction': {
                'food': prediction[0][0],
                'notfood': prediction[0][1]
            }
        }
    return jsonify(response)

Я подозреваю, что это может быть потому, что моя модель принимает входные данные как:

model.predict_classes(i.reshape((-1, 50, 50, 3)), batch_size=32, verbose=0)[0]

но изображения, загруженные пользователем через html, не меняются ... Я пытался найти это в коде, но пока не повезло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...