How to extract and save images from tensorboard event summary?

后端 未结 3 787
滥情空心
滥情空心 2021-02-07 11:59

Given a tensorflow event file, how can I extract images corresponding to a specific tag, and then save them to disk in a common format e.g. .png?

3条回答
  •  离开以前
    2021-02-07 12:29

    If you are using TensorFlow 2, this works nicely

    from collections import defaultdict, namedtuple
    from typing import List
    import tensorflow as tf
    
    
    TensorBoardImage = namedtuple("TensorBoardImage", ["topic", "image", "cnt"])
    
    
    def extract_images_from_event(event_filename: str, image_tags: List[str]):
        topic_counter = defaultdict(lambda: 0)
    
        serialized_examples = tf.data.TFRecordDataset(event_filename)
        for serialized_example in serialized_examples:
            event = event_pb2.Event.FromString(serialized_example.numpy())
            for v in event.summary.value:
                if v.tag in image_tags:
    
                    if v.HasField('tensor'):  # event for images using tensor field
                        s = v.tensor.string_val[2]  # first elements are W and H
    
                        tf_img = tf.image.decode_image(s)  # [H, W, C]
                        np_img = tf_img.numpy()
    
                        topic_counter[v.tag] += 1
    
                        cnt = topic_counter[v.tag]
                        tbi = TensorBoardImage(topic=v.tag, image=np_img, cnt=cnt)
    
                        yield tbi
    

    Although, 'v' has an image field, it is empty.

    I used

        tf.summary.image("topic", img)
    

    to add the images to the event file.

提交回复
热议问题