Многопоточность Flask Приложение выдает ошибку с MRCNN - PullRequest
2 голосов
/ 04 марта 2020

У меня flask приложение работает в режиме thread true .

if __name__ == '__main__':
    setup.check_director()
    web_app.secret = "image-service"
    web_app.run(host='0.0.0.0', port=8084, debug=True, threaded=True)

Я запускаю mrcnn (https://github.com/matterport/Mask_RCNN) задача, использующая вызов API, класс Predictor выглядит следующим образом:

class Predictor(object):
    def __init__(self, config=None, weights=WEIGHTS_PATH, device=DEVICE):
        self.weights=weights
        self.config = ElementConfig() if config is None else config
        # self.el = Element_linker()

        self.logger.info("Loading Mask R-CNN model")
        print("Loading Mask R-CNN model and weights")
        start = time.time()

        self._graph = tf.Graph()

        with self._graph.as_default():
            self.model = modellib.MaskRCNN(mode="inference", model_dir=MODEL_DIR, config=self.config)
            self.logger.info("Loading saved weights from {}".format(weights))
            self.model.load_weights(weights, by_name=True)
            self.init_g = tf.global_variables_initializer()
            self.init_l = tf.local_variables_initializer()
            print("Loading completed in %s seconds" % ((time.time() - start)))

    ....
    ....
    ....

    def predict(self):
        with tf.Session(graph=self._graph) as _session:
           _session.run(self.init_g)
           _session.run(self.init_l)
           results = _session.run(self.model.detect([image], verbose=0))

    ....
    ....
    ....
    ....

Код работает нормально, если одновременно выполняется один вызов API. Когда у меня несколько ударов по API одновременно, код выдает ошибку как:

ValueError: Tensor Tensor("Placeholder:0", shape=(7, 7, 3, 64), dtype=float32) is not an element of this graph.

Подробный журнал: https://gist.github.com/amandalmia14/70b8b3fb13bef8f545d9963bd609f2f2

Я также пытался использовать разные способы организации сеансов и графиков. Также перепробовал все решения, представленные на странице проблем mrcnn github, но ничего не помогло.

Есть ли проблема с многопоточностью или подходом, упомянутым выше?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...