Diff of /common/logger.py [000000] .. [f804b3]

Switch to unified view

a b/common/logger.py
1
2
from io import BytesIO
3
4
from PIL import Image
5
import tensorflow as tf
6
7
8
class Logger(object):
9
10
    def __init__(self, log_dir):
11
        self.writer = tf.compat.v1.summary.FileWriter(log_dir)
12
13
    def scalar_summary(self, tag, value, step):
14
        summary = tf.compat.v1.Summary(value=[tf.compat.v1.Summary.Value(tag=tag, simple_value=value)])
15
        self.writer.add_summary(summary, step)
16
        self.writer.flush()
17
18
    def image_summary(self, tag, image, step):
19
        s = BytesIO()
20
        Image.fromarray(image).save(s, format="png")
21
22
        # Create an Image object
23
        img_sum = tf.compat.v1.Summary.Image(
24
            encoded_image_string=s.getvalue(),
25
            height=image.shape[0],
26
            width=image.shape[1],
27
        )
28
29
        # Create and write Summary
30
        summary = tf.compat.v1.Summary(value=[tf.compat.v1.Summary.Value(tag=tag, image=img_sum)])
31
        self.writer.add_summary(summary, step)
32
        self.writer.flush()
33
34
    def image_list_summary(self, tag, images, step):
35
        if len(images) == 0:
36
            return
37
        img_summaries = []
38
        for i, img in enumerate(images):
39
            s = BytesIO()
40
            Image.fromarray(img).save(s, format="png")
41
42
            # Create an Image object
43
            img_sum = tf.compat.v1.Summary.Image(
44
                encoded_image_string=s.getvalue(),
45
                height=img.shape[0],
46
                width=img.shape[1],
47
            )
48
49
            # Create a Summary value
50
            img_summaries.append(
51
                tf.compat.v1.Summary.Value(tag="{}/{}".format(tag, i), image=img_sum)
52
            )
53
54
        # Create and write Summary
55
        summary = tf.compat.v1.Summary(value=img_summaries)
56
        self.writer.add_summary(summary, step)
57
        self.writer.flush()