Я выполнил вывод для обнаружения объекта, используя:
PYTHONPATH=$PYTHONPATH:$(readlink -f ..) \
python -m object_detection/inference/infer_detections \
--input_tfrecord_paths=$TF_RECORD_FILES \
--output_tfrecord_path=${SPLIT}_detections.tfrecord-00000-of-00001 \
--inference_graph=faster_rcnn_inception_resnet_v2_atrous_oid/frozen_inference_graph.pb \
--discard_image_pixels
Как я могу прочитать сгенерированный файл TFRecord, чтобы увидеть обнаруженные объекты?
У меня есть следующий код
def read_decode(fname_queue):
reader = tf.TFRecordReader()
key, serialized_example = reader.read(fname_queue)
features = tf.parse_single_example(serialized_example,
features = {
'image/encoded': tf.FixedLenFeature([], tf.string),
'image/height': tf.FixedLenFeature([],tf.int64),
'image/width': tf.FixedLenFeature([], tf.int64),
'image/detection/bbox/xmin': tf.FixedLenFeature([], tf.float32),
'image/detection/bbox/xmax': tf.FixedLenFeature([], tf.float32),
'image/detection/bbox/ymin': tf.FixedLenFeature([], tf.float32),
'image/detection/bbox/ymax': tf.FixedLenFeature([], tf.float32),
'image/detection/label': tf.FixedLenFeature([], tf.int64),
'image/detection/score': tf.FixedLenFeature([], tf.float32,)
}
)
image_encoded = features["image/encoded"]
image_raw = tf.image.decode_png(image_encoded, channels=3)
height = features['image/height']
width = features['image/width']
xmin = features['image/detection/bbox/xmin']
ymin = features['image/detection/bbox/ymin']
xmax = features['image/detection/bbox/xmax']
ymax = features['image/detection/bbox/ymax']
label = features['image/detection/label']
score = features['image/detection/score']
bbox = [ymin,xmin,ymax,xmax]
return [image_raw,bbox,score,label]
current_image = read_decode(fname_queue)
with tf.Session() as sess:
sess.run(tf.initialize_all_variables())
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(coord=coord)
for i in range(1):
image_data = sess.run([current_image])
img = Image.fromarray(image_data[0], "RGB")
plt.imshow(img)
coord.request_stop()
coord.join(threads)
sess.close()
Но я получаю ошибку:
InvalidArgumentError: Ключ: изображение / обнаружение / bbox / xmin.Не могу разобрать сериализованный пример.[</ обнаружения / bbox / xmin "," изображение / обнаружение / bbox / ymax "," изображение / обнаружение / bbox / ymin "," изображение / обнаружение / метка "," изображение / обнаружение / оценка "," изображение / закодировано ","изображение / высота", "изображение / ширина"], dens_shapes = [[], [], [], [], [], [], [], [], []], num_sparse = 0, sparse_keys =[], sparse_types = [], _device = "/ job: localhost / replica: 0 / task: 0 / device: CPU: 0"] (ReaderReadV2_17: 1, ParseSingleExample_17 / Const, ParseSingleExample_17 / Const, ParseSingleExample_17 / Const, ParseSingleExample_Const, ParseSingleExample_17 / Const_4, ParseSingleExample_17 / Const, ParseSingleExample_17 / Const_6, ParseSingleExample_17 / Const_4, ParseSingleExample_17 / Const_4)]] </p>