Esempio n. 1
0
class TensorboardLogs:
    def __init__(self,
                 filepath: Union[Path, str],
                 num_scalars=0,
                 num_images=0):
        size_guidance = {
            SCALARS: num_scalars,
            IMAGES: num_images,
        }
        self._event_acc = EventAccumulator(str(filepath),
                                           size_guidance=size_guidance)
        self._event_acc.Reload()
        self.tags = self._event_acc.Tags()
        self.all_tags = [
            tag for _, some_tags in self.tags.items()
            if isinstance(some_tags, list) for tag in some_tags
        ]
        if len(self.all_tags) == 0:
            warnings.warn(
                'No tags detected, the path might not contain any logs')

    def images(self, tag: str) -> List[Image.Image]:
        return [
            Image.open(io.BytesIO(img_event.encoded_image_string))
            for img_event in self._event_acc.Images(tag)
        ]

    def scalars(self, tag: str) -> torch.Tensor:
        return torch.tensor([
            scalar_event.value for scalar_event in self._event_acc.Scalars(tag)
        ])
Esempio n. 2
0
def extract_data(summary_path: os.PathLike,
                 logs_path: os.PathLike) -> Tuple[List[float], Dict, str]:
    config = Config.load(summary_path).config
    events_acc = EventAccumulator(logs_path)
    events_acc.Reload()

    _, _, val_acc_diffs = zip(*events_acc.Scalars('diff/val/acc'))
    hp = config.hp.to_dict()
    hp['n_conv_layers'] = len(config.hp.conv_model_config.conv_sizes)

    if 'Minimum_test' in events_acc.images.Keys():
        image_test = events_acc.Images('Minimum_test')[0].encoded_image_string
        image_train = events_acc.Images(
            'Minimum_train')[0].encoded_image_string
    else:
        image_test = None
        image_train = None

    return val_acc_diffs, hp, image_test, image_train
Esempio n. 3
0
def plot_alignment(log_dir, save_dir):
    tf_event = glob.glob(os.path.join(log_dir, "events.*"))[0]
    event_acc = EventAccumulator(tf_event, size_guidance=SIZE_GUIDANCE)
    event_acc.Reload()
    alignments = event_acc.Images('alignment')
    for alignment in alignments:
        img_str = alignment.encoded_image_string
        step = alignment.step
        f = io.BytesIO(img_str)
        img = plt.imread(f)
        plt.imshow(img)
        plt.axis('off')
        plt.title('step {:0>5d}'.format(step))
        plt.tight_layout()
        plt.savefig('{}/{:0>5d}.png'.format(save_dir, step))
        plt.clf()
import os
import glob
import numpy as np
from scipy import misc
from tensorboard.backend.event_processing.event_accumulator import EventAccumulator

EVAL_DIR = './tmp/20170906-17:26:07/eval'
IMAGE_SHAPE = [256, 256]

event_acc = EventAccumulator(EVAL_DIR)
event_acc.Reload()
image_tags = event_acc.Tags()['images']
total = len(image_tags)
for i, tag in enumerate(image_tags):
    encoded_image_string = event_acc.Images(tag)[0].encoded_image_string
    ty = tag.split('/')[0]
    index = tag.split('/')[2]
    output_dir = os.path.join(EVAL_DIR, ty)
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)
    with open('%s/%s.png' % (output_dir, index), 'wb') as f:
        f.write(encoded_image_string)

    print '%d/%d exporting done.' % (i, total)

types = [
    name for name in os.listdir(EVAL_DIR)
    if os.path.isdir(os.path.join(EVAL_DIR, name))
]

n_row = 8
Esempio n. 5
0
    '/mnt/fs2/2019/Takamuro/m2_research/weather_transfer/results/c_UNet/tensorboard'
)
parser.add_argument(
    '--log_path',
    type=str,
    default=
    'runs/Apr11_20-10-29_DLBOX2_lr-0.0001_bs-16_ne-50_name-cUNet_w-e-res101-0408_train-D1T1_adam-b1-09_wloss-mse_train200k-test500'
)
args = parser.parse_args()

sys.path.append(os.getcwd())

output_path = os.path.join(args.output_dir, args.log_path.split('/')[-1])
os.makedirs(output_path, exist_ok=True)

path = args.log_path  # Tensorboard ログファイル
event_acc = EventAccumulator(path, size_guidance={'images': 0})
event_acc.Reload()  # ログファイルのサイズによっては非常に時間がかかる

for tag in event_acc.Tags()['images']:
    events = event_acc.Images(tag)
    tag_name = tag.replace('/', '_')
    for index, event in enumerate(events):
        # 画像はエンコードされているので戻す
        s = np.frombuffer(event.encoded_image_string, dtype=np.uint8)
        image = cv2.imdecode(s, cv2.IMREAD_COLOR)  # カラー画像の場合
        # 保存
        output_path_ = os.path.join(output_path,
                                    '{}_{:04}.jpg'.format(tag_name, index))
        cv2.imwrite(output_path_, image)