получил ключ подачи тензора и ошибку заполнителя при вызове API - PullRequest
0 голосов
/ 04 февраля 2020

Я написал код, который обнаруживает и предсказывает любой объект. Затем я преобразую скрипт в Flask API.

Я впервые вызвал API с помощью Postman и получил вывод. Но когда я вызываю их во второй раз, я получаю сообщение об ошибке:

TypeError: Невозможно интерпретировать ключ feed_dict как Tensor: Tensor Tensor ("Placeholder: 0", shape = (3, 3, 3, 64), dtype = float32) не является элементом этого графика.

Код:

from keras.preprocessing import image as image_util 
from keras.applications.imagenet_utils import preprocess_input
from keras.applications.imagenet_utils import decode_predictions
from keras.applications import VGG16
import numpy as np 
import argparse
import cv2
from flask import Flask,request

app = Flask(__name__)

# ap = argparse.ArgumentParser()
# ap.add_argument("-i","--image",required= True,help ="path of the image")
# args = vars(ap.parse_args())

# orig = cv2.imread(args["image"]) #Opencv function to load a image
@app.route('/objrec', methods=['POST'])
def obj_rec():
    path= request.form['path']
    image = image_util.load_img(path,target_size=(224,224))
    image = image_util.img_to_array(image)

    #print("!!!!!.....!!!!")
    #print(image.shape)


    image = np.expand_dims(image,axis=0) #(224,224,3) --> (1,224,224,3)
    #print("!!!!!.....!!!!")
    #print(image.shape)
    image = preprocess_input(image)

    #Loading the model 
    model = VGG16(weights="imagenet")
    pred = model.predict(image)
    #print("111!!!!!.....!!!!")
    #print(pred)
    p = decode_predictions(pred)
    #print("222!!!!!.....!!!!")
    #print(p)

    for (i,(imagenetID,label,prob)) in enumerate(p[0]):
        print("{}. {}: {:.2f}%".format(i+1, label, prob*100))

    ans = p[0][0]
    ans = ans[1]
    print("THE PREDICTED IMAGE IS: "+ans)

    '''
    orig = cv2.imread(args["image"]) #Opencv function to load a image
    (imagenetID,label,prob) = p[0][0]
    cv2.putText(orig, "{},{:.2f}%".format(label,prob*100),(10,30),cv2.FONT_HERSHEY_COMPLEX,0.5,(0,0,0),1)
    cv2.imshow("classification",orig)
    cv2.waitKey(0) 
    '''
    return ans



if __name__ == '__main__':

    #path = 'G:\Agrima\Obj_Rec\orange.jpg'
    app.run(port=5002,debug=True)

Снимок экрана почтальона:

Postman SS

...