Почему мое маленькое Flask приложение с кератами и бэкэндом тензорного потока cra sh при последующих загрузках изображений? - PullRequest
0 голосов
/ 16 февраля 2020

для выполнения задания мы провели классификацию изображений с помощью Keras и TF, которые классифицируют собак по сравнению с кошками. Я написал простое приложение Flask, которое позволяет продемонстрировать загрузку pi c и показать, оценивает ли загруженное изображение собаку или кошку.

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

TypeError: Cannot interpret feed_dict key as Tensor: Tensor Tensor("Placeholder:0", shape=(3, 3, 3, 32), dtype=float32) is not an element of this graph.

со строкой:

  model = load_model('/Volumes/T5_500G/Capstone/v2/flask/models/model_weights.h5')

, выделенной на flask странице отладки

Я новичок в этом, так Я не понимаю, как это исправить. Вот мой код:

@app.route('/upload_image', methods=['GET', 'POST'])
def upload_image():


    prediction_results = {}
    animals = ['% Cat Score', '% Dog Score']
    animals_scores = []
    imageUrl = ""

    if request.method == 'POST':

        if request.files:
            import keras
            from keras.models import load_model
            from keras import backend as K
            import numpy as np
            model = load_model('/Volumes/T5_500G/Capstone/v2/flask/models/model_weights.h5')
            print(request.files)
            print(request.files['image'].filename)
            imageUrl = "/static/uploads/"+request.files['image'].filename
            image2 = app.config['IMAGE_UPLOADS']+"/"+request.files['image'].filename
            request.files['image'].save(image2)
            img_path = image2
            img = keras.preprocessing.image.load_img(img_path, target_size=(224,224))
            img_array = keras.preprocessing.image.img_to_array(img)
            expanded_img_array = np.expand_dims(img_array, axis=0)
            preprocessed_img = expanded_img_array / 255. # Preprocess the image
            prediction = model.predict(preprocessed_img)
            pred_list = prediction.tolist()
            animals_scores.append(pred_list[0][0])
            animals_scores.append(pred_list[0][1])
            print(prediction_results)


            imageUrl = "/static/uploads/"+request.files['image'].filename
    return render_template('/upload_image.html',imageUrl=imageUrl, animals=animals, animals_scores=animals_scores)

Пути загрузки - это пути на моем ноутбуке. Я надеюсь исправить это в pu sh на heroku или похожее.

Я прочитал несколько постов об очистке сессии keras. Это проблема?

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 17 февраля 2020

Я немного изменил ваш код в соответствии с моим комментарием, теперь он должен работать.

import keras
from keras.models import load_model
from keras import backend as K
import numpy as np

model = load_model('/Volumes/T5_500G/Capstone/v2/flask/models/model_weights.h5')

@app.route('/upload_image', methods=['GET', 'POST'])
def upload_image():
    prediction_results = {}
    animals = ['% Cat Score', '% Dog Score']
    animals_scores = []
    imageUrl = ""

    if request.method == 'POST':

        if request.files:

            print(request.files)
            print(request.files['image'].filename)
            imageUrl = "/static/uploads/"+request.files['image'].filename
            image2 = app.config['IMAGE_UPLOADS']+"/"+request.files['image'].filename
            request.files['image'].save(image2)
            img_path = image2
            img = keras.preprocessing.image.load_img(img_path, target_size=(224,224))
            img_array = keras.preprocessing.image.img_to_array(img)
            expanded_img_array = np.expand_dims(img_array, axis=0)
            preprocessed_img = expanded_img_array / 255. # Preprocess the image
            prediction = model.predict(preprocessed_img)
            pred_list = prediction.tolist()
            animals_scores.append(pred_list[0][0])
            animals_scores.append(pred_list[0][1])
            print(prediction_results)


            imageUrl = "/static/uploads/"+request.files['image'].filename
    return render_template('/upload_image.html',imageUrl=imageUrl, animals=animals, animals_scores=animals_scores)```
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...