Tensorflow:推断后从tfrecord导出图像

时间:2018-11-16 13:04:56

标签: python tensorflow object-detection-api

我已经在云上使用对象检测API训练了一个模型,我想知道它如何处理我拥有的一组图像(因为Tensorboard只能显示10张图像)。

训练完模型后,我已经使用记录的infer_detections脚本运行了推理。

python -m object_detection/inference/infer_detections \
  --input_tfrecord_paths=inputImages.tfrecord \
  --output_tfrecord_path=outputImages.tfrecord \
  --inference_graph=frozen_inference_graph.pb \

我现在有了outputImages记录,其中包含推断的框。初步了解文件的原始内容,可以看到检测到的框有一些字典,例如:

"image/detection/bbox/ymin": {
        "floatList": {
          "value": [
            0.6493546962738037, 
            0.5936318635940552, 
            0.35681775212287903, 
            0.3537094295024872, 

以及分数和被推断的类别。所以我的假设是推断的盒子在那里。

现在,我想以一种简单的方式阅读这些框,以将其打印在图像上。对于包含基本事实框的tfRecords,我一直在使用:

decoded_image = tensor_result[fields.InputDataFields.image]
image = Image.fromarray(decoded_image)
boxes = tensor_result[fields.InputDataFields.groundtruth_boxes]
labels = tensor_result[fields.InputDataFields.groundtruth_classes]
filename = tensor_result[fields.InputDataFields.filename]

,效果很好。因此,为了进行检测,我尝试了各种可用的密钥:

decoded_image = tensor_result[fields.InputDataFields.image]
image = Image.fromarray(decoded_image)
boxes = tensor_result[fields.DetectionResultFields.detection_boxes]
labels = tensor_result[fields.DetectionResultFields.detection_classes]
filename = tensor_result[fields.InputDataFields.filename]

但是这些键不存在。

我注意到解码器似乎是无法正确读取这些字段的解码器:

def tensors_for_record(file_path):
    record_iterator = tf.python_io.tf_record_iterator(path=file_path)
    tensor_dict = list()
    maxRecords = 100
    count = 0

    for string_record in record_iterator:
        if (count > maxRecords):
            return tensor_dict
        print("Iterating... " + str(count)+" of " + str(maxRecords))
        example = tf.train.Example()
        example.ParseFromString(string_record)
        example_decoder = tf_example_decoder.TfExampleDecoder()
        tensor_dict.append(example_decoder.decode(tf.convert_to_tensor(string_record)))
        count += 1
    return tensor_dict

我还应该使用其他解码器吗?

0 个答案:

没有答案