Код вывода Tensorflow Tensorflow OCR

Я пытаюсь запустить распознавание внимания в моделях тензорного потока https://github.com/tensorflow/models/tree/master/attention_ocr . Я могу найти сценарий для обучения и оценки набора данных FSNS, но у них нет кода для выполнения вывода на одном изображении. Я хочу протестировать его на своих изображениях и посмотреть, насколько хорошо он работает. Вот что я пробовал для части вывода, но получаю сообщение об ошибке «Попытка использовать неинициализированное значение AttentionOcr_v1/conv_tower_fn/INCE/InceptionV3/Conv2d_1a_3x3/weights»

      dataset = common_flags.create_dataset(split_name=FLAGS.split_name)
      model = common_flags.create_model(dataset.num_char_classes,
                                        dataset.max_sequence_length,
                                        1, dataset.null_code)

      #images: A tensor of shape [batch_size, height, width, channels].
      images_actual_data = Image.open("imagename.jpg").resize((600, 150))
      #Increase dimension of data and make it 4D
      images_actual_data = np.expand_dims(images_actual_data,axis=0)/255.0
      slim.get_or_create_global_step()  
      master_checkpoint = "trained_files/attention_ocr_2017_05_17/model.ckpt-399731"
      inception_checkpoint = "inception-v3_2016_08_28/inception_v3.ckpt"

#inference code
      with tf.Session() as sess:
        init_op = tf.initialize_all_variables()
        sess.run(init_op)
        images_placeholder = tf.placeholder(dtype=tf.float32,shape=(1,150,600,3))
        endpoints = model.create_base(images_placeholder, labels_one_hot=None)
        model.create_init_fn_to_restore(master_checkpoint, inception_checkpoint)
        predictions = sess.run(endpoints.predicted_chars, feed_dict={images_placeholder: images_actual_data})

Вот выходной лог

    DEBUG 2017-08-01 21:20:58.000825: model.py: 314 images: Tensor("Placeholder:0", shape=(1, 150, 600, 3), dtype=float32)
    DEBUG 2017-08-01 21:20:58.000827: model.py: 319 Views=1 single view: Tensor("AttentionOcr_v1/split:0", shape=(1, 150, 600, 3), dtype=float32)
    DEBUG 2017-08-01 21:20:58.000827: model.py: 186 Using final_endpoint=Mixed_5d
    DEBUG 2017-08-01 21:20:59.000906: model.py: 325 Conv tower: Tensor("AttentionOcr_v1/conv_tower_fn/INCE/InceptionV3/Mixed_5d/concat:0", shape=(1, 16, 72, 288), dtype=float32)
    DEBUG 2017-08-01 21:20:59.000909: model.py: 328 Pooled views: Tensor("AttentionOcr_v1/pool_views_fn/STCK/Reshape:0", shape=(1, 1152, 288), dtype=float32)
    DEBUG 2017-08-01 21:20:59.000909: sequence_layers.py: 421 Use AttentionWithAutoregression as a layer class
    DEBUG 2017-08-01 21:21:01.000588: model.py: 331 chars_logit: Tensor("AttentionOcr_v1/sequence_logit_fn/SQLR/concat:0", shape=(1, 37, 134), dtype=float32)
    INFO 2017-08-01 21:21:01.000864: model.py: 511 Request to re-store 117 weights from trained_files/attention_ocr_2017_05_17/model.ckpt-399731
    INFO 2017-08-01 21:21:02.000021: model.py: 511 Request to re-store 104 weights from inception-v3_2016_08_28/inception_v3.ckpt

    Traceback (most recent call last):
      File "/Users/sxa091/everything/example_projects/tf_projects/models/attention_ocr/python/eval_image.py", line 84, in <module>
        app.run()
      File "/usr/local/lib/python2.7/site-packages/tensorflow/python/platform/app.py", line 48, in run
        _sys.exit(main(_sys.argv[:1] + flags_passthrough))
      File "/Users/sxa091/everything/example_projects/tf_projects/models/attention_ocr/python/eval_image.py", line 80, in main
        predictions = sess.run(endpoints.predicted_chars, feed_dict={images_placeholder: images_actual_data})
      File "/usr/local/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 778, in run
        run_metadata_ptr)
      File "/usr/local/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 982, in _run
        feed_dict_string, options, run_metadata)
      File "/usr/local/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 1032, in _do_run
        target_list, options, run_metadata)
      File "/usr/local/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 1052, in _do_call
        raise type(e)(node_def, op, message)
    tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value AttentionOcr_v1/conv_tower_fn/INCE/InceptionV3/Conv2d_1a_3x3/weights
         [[Node: AttentionOcr_v1/conv_tower_fn/INCE/InceptionV3/Conv2d_1a_3x3/weights/read = Identity[T=DT_FLOAT, _class=["loc:@AttentionOcr_v1/conv_tower_fn/INCE/InceptionV3/Conv2d_1a_3x3/weights"], _device="/job:localhost/replica:0/task:0/cpu:0"](AttentionOcr_v1/conv_tower_fn/INCE/InceptionV3/Conv2d_1a_3x3/weights)]]

person Shailesh Acharya    schedule 17.07.2017    source источник
comment
В чем именно здесь вопрос?   -  person Niyaz    schedule 25.07.2017
comment
@Niyaz Фрагмент кода, который я разместил, не работает, потому что он неполный. Итак, я надеялся, что кто-нибудь сможет пролить свет на то, как написать код вывода для модели Attention_ocr. Спасибо.   -  person Shailesh Acharya    schedule 27.07.2017
comment
Если вы загружаете веса из основной контрольной точки, вам не нужно указывать начальную контрольную точку.   -  person Alexander Gorban    schedule 03.08.2017
comment
Поэтому я попытался установить только основную контрольную точку. model.create_init_fn_to_restore(master_checkpoint, inception_checkpoint = None) Я все еще получаю ту же ошибку.   -  person Shailesh Acharya    schedule 04.08.2017
comment
Ладно, похоже что-то сломалось. Я посмотрю повнимательнее github.com/tensorflow/models/issues/2137.   -  person Alexander Gorban    schedule 08.08.2017
comment
мы загрузили новую контрольную точку с фиксированными именами тензора .gz, пожалуйста, попробуйте и дайте мне знать, как это работает. Вот также пример кода для выполнения вывода на обученной модели github.com/tensorflow/ модели/тянуть/2166   -  person Alexander Gorban    schedule 10.08.2017
comment
@AlexanderGorban Большое спасибо. Я проверю это, а затем опубликую результаты.   -  person Shailesh Acharya    schedule 11.08.2017
comment
@AlexanderGorban Я попробовал новый код demo_inference.py с сайта github.com/tensorflow/models/pull/2166. И использовал контрольную точку по адресу download.tensorflow.org/models/attention_ocr_2017_08_09.tar. .gz И я получаю следующую ошибку ValueError: контрольная точка отсутствует переменная [AttentionOcr_v1/sequence_logit_fn/SQLR/LSTM/attention_decoder/lstm_cell/weights]   -  person Shailesh Acharya    schedule 15.08.2017
comment
Хорошо, я снова попробовал код demo_inference.py с github.com/tensorflow/models/pull/2166, но на этот раз я использовал старую контрольную точку по адресу download.tensorflow.org/models/attention_ocr_2017_05_17.tar.gz И проблема устранена, и часть логического вывода работает гладко.   -  person Shailesh Acharya    schedule 15.08.2017


Ответы (1)


У каждого есть свой любимый способ хранения и чтения изображений, поэтому этот фрагмент намеренно неполный.

Вот один из возможных способов заполнения images_actual_data:

import skimage.io as io
import numpy as np

fn = '600x150_image_with_4_views_%i.jpg'
images = [io.imread(fn % i, dtype='float') for i in range(batch_size)]
images_actual_data = np.stack(images)
images_actual_data = 2.5*(images_actual_data - 0.5)  # normalize values

Обратите внимание, что вам нужно использовать тот же тип нормализации который использовался во время обучения.

person Alexander Gorban    schedule 02.08.2017
comment
Привет, спасибо за ответ. Я отредактировал вопрос с журналом моего сообщения об ошибке, а также частью загрузки изображения. Ошибка выглядит так, как будто не удается загрузить начальную контрольную точку. Пути к контрольным точкам указаны правильно. Объясните, пожалуйста, в чем может быть причина? - person Shailesh Acharya; 02.08.2017
comment
Вы обновили свой вопрос, и теперь это совершенно новый вопрос. Так что мой текущий ответ больше не выглядит актуальным, в таких случаях создавайте новые вопросы. - person Alexander Gorban; 03.08.2017
comment
Прости за это. Я должен был опубликовать весь код в начале. - person Shailesh Acharya; 04.08.2017