在TFRecords上使用SavedModel进行ObjectDetection推断

时间:2019-11-19 20:47:01

标签: tensorflow tensorflow-datasets

我正在尝试使用SavedModel from the detection model zoo进行推理。我可以使用Object Detection Tutorial得到一个可行的示例。但是,它运行得很慢,我怀疑如果使用tfrecords作为输入可能会更快。此外,不幸的是,我无法使用Tensorflow 1.14。

    feature_description = {'image_raw': tf.io.FixedLenFeature([], tf.string, default_value='')}
    def _parse_function(example_proto):
        # Parse the input `tf.Example` proto using the dictionary above.
        return tf.io.parse_single_example(example_proto, feature_description)

    sm_dir = '/faster_rcnn_inception_resnet_v2_atrous_coco_2018_01_28/saved_model'
    sm = tf.saved_model.load_v2(sm_dir)
    f = sm.signatures['serving_default']
    tfr_loc = 'inputs.tfr'
    raw_dataset = tf.data.TFRecordDataset(tfr_loc)
    parsed_dataset = raw_dataset.map(_parse_function)

    with tf.Session() as sess:
        for tfr_i in parsed_dataset:
            imgs_raw = tf.decode_raw(tfr_i['image_raw'], tf.float32)
            imgs_raw = tf.reshape(imgs_raw, [-1, 1028, 768, 3])
            inference = f(imgs_raw)
            sess.run(inference)

这给了我以下错误:

tensorflow.python.framework.errors_impl.NotFoundError: Resource AnonymousIterator/AnonymousIterator0/N10tensorflow4data16IteratorResourceE does not exist.

1 个答案:

答案 0 :(得分:0)

您需要在脚本的开头使用“急切执行”。

tf.enable_eager_execution()

参考:https://www.tensorflow.org/api_docs/python/tf/data/Dataset#iter