Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 操作错误:无法识别图像文件<_io.BytesIO对象位于&燃气轮机;当试图用Keras模型进行预测时_Python_Tensorflow_Flask_Keras - Fatal编程技术网

Python 操作错误:无法识别图像文件<_io.BytesIO对象位于&燃气轮机;当试图用Keras模型进行预测时

Python 操作错误:无法识别图像文件<_io.BytesIO对象位于&燃气轮机;当试图用Keras模型进行预测时,python,tensorflow,flask,keras,Python,Tensorflow,Flask,Keras,我在YouTube上观看了deeplizard的“将Keras神经网络部署到烧瓶web服务”教程,但被卡住了。 我找到了一些解决类似问题的建议,这些建议对其他人(如和)有所帮助,但由于某些原因,它们对我不起作用。也许我用错了 它被image=image.open(io.BytesIO(decoded))这一行打乱了 这是我的代码(很抱歉,这不是最小的,我不知道如何简化它而不删除可能相关的细节) 如果你有任何建议,请告诉我 非常感谢 app = Flask(__name__) def get_

我在YouTube上观看了deeplizard的“将Keras神经网络部署到烧瓶web服务”教程,但被卡住了。 我找到了一些解决类似问题的建议,这些建议对其他人(如和)有所帮助,但由于某些原因,它们对我不起作用。也许我用错了

它被
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\u类(即重塑(-1,50,50,3)),批量大小=32,详细程度=0)[0]


但用户通过html上传的图像并没有被“重塑”。。。我试图在代码中编造这个,但到目前为止运气不好。

我也遇到了同样的问题。目标大小没有问题,因为它将取决于您部署的模型所训练的数据集中图像的目标大小

无论如何,问题在于从客户端发送到服务器的图像类型(png/jpg)。确保在下面的代码行(clientside.html)中

base64Image=dataURL.replace(“数据:image/png;base64,”,”)

您特别提到了png,并且还发送了与imagename.png(png图像)相同类型的图像


我希望这可能会有帮助

您尝试加载的图像的格式是什么?@MatiasValdenegro,jpg。我想弄清楚如何允许多种格式,但首先我只想让它工作您正在使用的
Image
类是什么?请提供完整的错误堆栈跟踪。