Как выполнить прогнозирование на изображении с использованием предварительно обученной модели тензорного потока? - PullRequest
0 голосов
/ 08 ноября 2019

Я адаптировал этот сценарий retrain.py для использования с несколькими моделями предварительной подготовки. После завершения обучения создается файл «retrained_graph.pb», который я затем читаю и пытаюсь использовать для запуска прогнозов на изображении. используя этот код:

def get_top_labels(image_data):
    '''
    Returns a list of labels and their probabilities
    image_data: content of image as string
    '''
    with tf.compat.v1.Session() as sess:
        softmax_tensor = sess.graph.get_tensor_by_name('final_result:0')
        predictions = sess.run(softmax_tensor, {'DecodeJpeg/contents:0': image_data})
        return predictions

Это прекрасно работает для модели inception_v3, потому что она имеет тензор под названием DecodeJpeg, другие модели, которые я использую, такие как inception_v4, mobilenet и inception_resnet_v2 - нет.

У меня вопрос: могу ли я добавить операции на график, например, использованный в add_jpeg_decoding в скрипте retrain.py, чтобы потом я мог использовать это для прогнозирования?

Можно ли это сделать? что-то вроде этого: predictions = sess.run(softmax_tensor, {image_data_tensor: image_data}), где image_data_tensor - это переменная, которая зависит от того, какую модель я использую?

Я просмотрел stackoverflow и не смог найти вопрос, который решает мою проблему, я бы действительноСпасибо за любую помощь в этом, спасибо. Мне нужно хотя бы знать, возможно ли это. Извините за репост, у меня нет просмотров на мой первый.

1 Ответ

0 голосов
/ 08 ноября 2019

Так что после некоторого исследования я придумал способ, оставив здесь ответ на случай, если кому-то это понадобится. Что вам нужно сделать, так это сделать, чтобы самостоятельно выполнить декодирование, получив тензор из изображения, используя t = read_tensor_from_image_file found here , затем вы можете выполнить свои прогнозы, используя этот фрагмент кода:

        start = time.time()
        results = sess.run(output_layer_name,
                           {input_layer_name: t})
        end = time.time()
        return results

обычно input_layer_name = input:0 и output_layer_name = final_result:0.

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