Я использую следующее приложение Flask в качестве API, для которого я публикую изображение для модели keras, чтобы классифицировать его как одно из двух изображений.Изображение, которое я публикую (через curl), представляет собой изображение размером 64 на 64 пикселя, и модель использовала изображения того же размера для обучения.Я получаю ошибку изменения размера каждый раз, когда я отправляю изображение в API через curl:
from flask import Flask, jsonify, request
import numpy as np
import PIL
from PIL import Image
from keras.models import load_model
import keras
import tensorflow as tf
app = Flask(__name__)
def auc(y_true, y_pred):
auc = tf.metrics.auc(y_true, y_pred)[1]
keras.backend.get_session().run(tf.local_variables_initializer())
return auc
model = load_model('image_model_2.h5',custom_objects={'auc': auc})
@app.route('/predict', methods=["POST"])
def predict_image():
# Preprocess the image so that it matches the training input
image = request.files['file']
image = Image.open(image)
image = np.asarray(image.resize((64,64)))
image = image.reshape(1,1,64,64)
# Use the loaded model to generate a prediction.
pred = model.predict(image)
# Prepare and send the response.
digit = np.argmax(pred)
prediction = {'digit':int(digit)}
return jsonify(prediction)
if __name__ == "__main__":
app.run()
Вот команда curl:
curl -F 'file=@small_cat.png' 127.0.0.1:5000/predict
, а вот ошибка:
ValueError: cannot reshape array of size 12288 into shape (1,1,64,64)