Ошибка 400 в Flask «Браузер (или прокси) отправил запрос, который этот сервер не может понять.» - PullRequest
0 голосов
/ 22 ноября 2018

Итак, я пытаюсь следовать этому уроку https://www.youtube.com/watch?v=eCz_DTtUBfo об использовании колб с моей моделью ML.Часть загрузки модели работает, но когда я пытаюсь ее инициализировать, она просто не работает.Может быть, у меня есть некоторые ошибки в моем письме.Я надеюсь, что кто-нибудь может мне помочь: c

Вот мой код колбы:

from keras.preprocessing.image import img_to_array
from flask import request
from flask import jsonify
from flask import Flask

app = Flask(__name__)

def get_model():
    global model
    model = load_model('pecuscope_model.h5')
    print(" * Model loaded!")

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 Keras model...")
get_model()

@app.route("/predict", methods=["GET","POST"])
def predict():
    message = request.get_json(force=True)
    encoded = message['image']
    decoded = base64.b64decode(encoded)
    image = Image.open(io.BytesIO(decoded))
    processed_image = preprocess_image(image, target_size=(229, 229))

    prediction = model.predict(processed_image).tolist()

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

и мой HTML:

<!DOCTYPE html>
<html>
<head>
    <title>PecuScope Prediction</title>
    <style>
        * {
            font-size:30px;
        }
    </style>
</head>
<body>
    <input id="image-selector" type="file">
    <button id="predict-button">Predict</button>
    <p style="font-weight:bold">Predictions</p>
    <p>Mosquito: <span id="mosquito-prediction"></span></p>
    <p>Abeja: <span id=abeja-prediction"></span></p>
    <img id="selected-image" src=""/>

    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script>
        let base64Image;
        $("#image-selector").change(function() {
            let reader = new FileReader();
            reader.onload = function(e) {
                let dataURL = reader.result;            
                $('#selected-image').attr("src", dataURL);
                base64Image = dataURL.replace("data:image/jpg;base64,","");
                console.log(base64Image);
            }
            reader.readAsDataURL($("#image-selector")[0].files[0]);
        $("#mosquito-prediction").text("");
        $("#abeja-prediction").text("");
        });

        $("#predict-button").click(function(event){
            let message = {
                image: base64Image
            }
            console.log(message);
            $.post("http://10.142.0.2:5000/predict", JSON.stringify(message), 

function(response){
                    $("#mosquito-prediction").text(response.prediction.mosquito.toFixed(6));
                    $("#abeja-prediction").text(response.prediction.abeja.toFixed(6));
                    console.log(response);
                });
            });
        </script>
    <body>
    <html>

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

1 Ответ

0 голосов
/ 29 ноября 2018

Не знаю, если это причина, но, по крайней мере, вы забыли "в теле файла html: Abeja: span id = abeja-предсказание"

...