I am using keras' pre-trained model and the error came up when calling ResNet50(weights='imagenet'). I have the following code in flask server:
def getVGG16Prediction(img_path):
model = VGG16(weights='imagenet', include_top=True)
img = image.load_img(img_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
pred = model.predict(x)
return sort(decode_predictions(pred, top=3)[0])
def getResNet50Prediction(img_path):
model = ResNet50(weights='imagenet') #ERROR HERE
img = image.load_img(img_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
preds = model.predict(x)
return decode_predictions(preds, top=3)[0]
when calling in in main, it works fine
if __name__ == "__main__":
STATIC_PATH = os.getcwd()+"/static"
print(getVGG16Prediction(STATIC_PATH+"/18.jpg"))
print(getResNet50Prediction(STATIC_PATH+"/18.jpg"))
however, the ValueError rises when I call it from the flask POST function:
@app.route("/uploadMultipleImages", methods=["POST"])
def uploadMultipleImages():
uploaded_files = request.files.getlist("file[]")
weight = request.form.get("weight")
for file in uploaded_files:
path = os.path.join(STATIC_PATH, file.filename)
file.save(os.path.join(STATIC_PATH, file.filename))
result = getResNet50Prediction(path)
The full error is as follow:
ValueError: Tensor("cond/pred_id:0", dtype=bool) must be from the same graph as Tensor("batchnorm/add_1:0", shape=(?, 112, 112, 64), dtype=float32)
Any comment or suggestion is highly appreciated. Thank you.