I've followed this tutoria to create a custom object YoloV3 Keras model: https://momoky.space/pythonlessons/YOLOv3-object-detection-tutorial/tree/master/YOLOv3-custom-training
Model works perfectly fine, my next goal is to create a Python Flask API witch is capable to process Image after upload it. I've started modify the Code here for image detection
That's my added code:
@app.route('/api/test', methods=['POST'])
def main():
    img = request.files["image"].read()
    img = Image.open(io.BytesIO(img))
    npimg=np.array(img)
    image=npimg.copy()
    image=cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
    #cv2.imshow("Image", image)
    #cv2.waitKey()
    cv2.imwrite('c:\\yolo\\temp.jpg', image)
    image = 'c:\\yolo\\temp.jpg'
    yolo = YOLO()
    r_image, ObjectsList = yolo.detect_img(image)
    #response = {ObjectsList}
    response_pikled = jsonpickle.encode(ObjectsList)
    #yolo.close_session()
    return Response(response=response_pikled, status=200, mimetype="application/json")
app.run(host="localhost", port=5000)
So my problem is that it works only on first iteration, when I upload a new image I receive following error:
File "C:\Users\xxx\Anaconda3\envs\yolo\lib\site-packages\tensorflow\python\client\session.py", line 929, in run
    run_metadata_ptr)
  File "C:\Users\xxx\Anaconda3\envs\yolo\lib\site-packages\tensorflow\python\client\session.py", line 1095, in _run
    'Cannot interpret feed_dict key as Tensor: ' + e.args[0])
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.
This is the original static part of the code:
if __name__=="__main__":
    yolo = YOLO()
    image = 'test.png'
    r_image, ObjectsList = yolo.detect_img(image)
    print(ObjectsList)
    #cv2.imshow(image, r_image)
    cv2.imwrite('detect.png', r_image)
    yolo.close_session()
Things that really confuse me is how to load the model when the application start, and execute detection every time a new image is posted. Thank you
UPDATE
in the construtor part there's a referenced Keras backend session:
 **def __init__(self, **kwargs):
        self.__dict__.update(self._defaults) # set up default values
        self.__dict__.update(kwargs) # and update with user overrides
        self.class_names = self._get_class()
        self.anchors = self._get_anchors()
        self.sess = K.get_session()
        self.boxes, self.scores, self.classes = self.generate()**
After addinga K.clear_session it works for multiple series request:
 @app.route('/api/test', methods=['POST'])
    def main():
        img = request.files["image"].read()
        img = Image.open(io.BytesIO(img))
        npimg=np.array(img)
        image=npimg.copy()
        image=cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
        #cv2.imshow("Image", image)
        #cv2.waitKey()
        cv2.imwrite('c:\\yolo\\temp.jpg', image)
        image = 'c:\\yolo\\temp.jpg'
        yolo = YOLO()
        r_image, ObjectsList = yolo.detect_img(image)
        #response = {ObjectsList}
        response_pikled = jsonpickle.encode(ObjectsList)
        #yolo.close_session()
        K.clear_session()
        return Response(response=response_pikled, status=200, mimetype="application/json")
Will be possible to avoid model, anchors and classes needs to be loaded at every computation avoiding this:
ogs/000/trained_weights_final.h5 model, anchors, and classes loaded.
127.0.0.1 - - [27/Dec/2019 22:58:49] "?[37mPOST /api/test HTTP/1.1?[0m" 200 -
logs/000/trained_weights_final.h5 model, anchors, and classes loaded.
127.0.0.1 - - [27/Dec/2019 22:59:08] "?[37mPOST /api/test HTTP/1.1?[0m" 200 -
logs/000/trained_weights_final.h5 model, anchors, and classes loaded.
127.0.0.1 - - [27/Dec/2019 22:59:33] "?[37mPOST /api/test HTTP/1.1?[0m" 200 
-