python - 如何可视化 TFRecord?
问题描述
我在另一个论坛上被问到这个问题,但我想我会把它贴在这里给任何遇到 TFRecords 问题的人。
如果 TFRecord 文件中的标签与 labels.pbtxt 文件中的标签不一致,TensorFlow 的对象检测 API 可能会产生奇怪的行为。它会运行,损失可能会减少,但网络不会产生良好的检测。
另外,我总是对 XY、行列空间感到困惑,所以我总是喜欢仔细检查以确保我的注释实际上是在注释图像的正确部分。
我发现做到这一点的最佳方法是解码 TFRecord 并使用 TF 工具对其进行绘图。下面是一些代码:
import matplotlib.pyplot as plt
import numpy as np
import tensorflow as tf
from object_detection.utils import visualization_utils as vu
from object_detection.protos import string_int_label_map_pb2 as pb
from object_detection.data_decoders.tf_example_decoder import TfExampleDecoder as TfDecoder
from google.protobuf import text_format
def main(tfrecords_filename, label_map=None):
if label_map is not None:
label_map_proto = pb.StringIntLabelMap()
with tf.gfile.GFile(label_map,'r') as f:
text_format.Merge(f.read(), label_map_proto)
class_dict = {}
for entry in label_map_proto.item:
class_dict[entry.id] = {'name':entry.display_name}
sess = tf.Session()
decoder = TfDecoder(label_map_proto_file=label_map, use_display_name=False)
sess.run(tf.tables_initializer())
for record in tf.python_io.tf_record_iterator(tfrecords_filename):
example = decoder.decode(record)
host_example = sess.run(example)
scores = np.ones(host_example['groundtruth_boxes'].shape[0])
vu.visualize_boxes_and_labels_on_image_array(
host_example['image'],
host_example['groundtruth_boxes'],
host_example['groundtruth_classes'],
scores,
class_dict,
max_boxes_to_draw=None,
use_normalized_coordinates=True)
plt.imshow(host_example['image'])
plt.show()
解决方案
如果您想直观地检查边界框/标签,可以检查此 TFRecord 查看器:https ://github.com/sulc/tfrecord-viewer
推荐阅读
- c# - 添加新项目时如何添加新的堆栈面板?
- javascript - 笑话/酶 | 测试中未定义 Redux 属性
- cypress - 如何在柏树中进行条件检查
- python - 导入 sklearn 错误 DLL 加载失败。如何使它正确?
- html - Difficulties with constructing path to desired element?, Excel VBA
- html - How to call an HTML object with the 'name' tag?
- excel - 如何将“/”放在日期值上?
- android - BroadCast onReceiver() 不调用 Marshmallow 及更高版本的 SDK
- matlab - Matlab线图:是否可以单独设置标记线宽度?
- c - C中的全局结构初始化错误