-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathvisualizer.py
94 lines (79 loc) · 4.37 KB
/
visualizer.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
from cProfile import label
import os
import sys
import time
import visdom
import numpy as np
from tools import utils
import pdb
class Visualizer():
def __init__(self, port, legends_loss, legends_acc=None):
self.vis = visdom.Visdom(port=port)
self.data_loss = {'X': [], 'Y': [], 'legend': legends_loss}
if legends_acc is not None:
self.data_acc = {'X': [], 'Y': [], 'legend': legends_acc}
def reset(self):
"""Reset the self.saved status"""
self.saved = False
def plot_loss(self, epoch, losses):
self.data_loss['X'].append(epoch)
self.data_loss['Y'].append([losses[i] for i in range(len(losses))])
self.vis.line(
X=np.stack([np.array(self.data_loss['X'])] * len(self.data_loss['legend']), 1),
Y=np.array(self.data_loss['Y']),
opts={
'title': 'loss over time',
'legend': self.data_loss['legend'],
'xlabel': 'epoch',
'ylabel': 'loss'},
win=0)
def plot_acc(self, epoch, accs):
self.data_acc['X'].append(epoch)
self.data_acc['Y'].append([accs[i] for i in range(len(accs))])
self.vis.line(
X=np.stack([np.array(self.data_acc['X'])] * len(self.data_acc['legend']), 1),
Y=np.array(self.data_acc['Y']),
opts={
'title': 'acc over time',
'legend': self.data_acc['legend'],
'xlabel': 'epoch',
'ylabel': 'acc'},
win=1)
def plot_mask(self, imgs, imgs_remain, masks, mask_remain, labels, all_preds, remain_preds, reset=True):
if reset:
self.vis.close(env="mask")
# self.vis.text(labels, env="mask")
self.vis.images(imgs, opts=dict(title='image', caption=all_preds), env="mask")
self.vis.images(masks, opts=dict(title='mask', caption=labels), env="mask")
self.vis.images(imgs_remain, opts=dict(title='image remain', caption=remain_preds), env="mask")
self.vis.images(mask_remain, opts=dict(title='mask remain', caption=labels), env="mask")
def plot_mask_gpp(self, imgs, cams, I_P, t_H, t_L, labels, all_preds, remain_preds, reset=True):
if reset:
self.vis.close(env="mask")
# self.vis.text(labels, env="mask")
self.vis.images(imgs, opts=dict(title='image', caption=all_preds), env="mask")
self.vis.images(cams, opts=dict(title='cam', caption=labels), env="mask")
self.vis.images(I_P, opts=dict(title='gpp', caption=labels), env="mask")
self.vis.images(t_H, opts=dict(title='image remain', caption=remain_preds), env="mask")
self.vis.images(t_L, opts=dict(title='cam remain', caption=labels), env="mask")
def plot_mask_5cams(self, imgs, cam, cam0, cam1, cam2, cam3, labels, all_preds, remain_preds, reset=True):
if reset:
self.vis.close(env="mask")
# self.vis.text(labels, env="mask")
self.vis.images(imgs, opts=dict(title='image', caption=all_preds), env="mask")
self.vis.images(cam, opts=dict(title='cam', caption=labels), env="mask")
self.vis.images(cam0, opts=dict(title='cam0', caption=labels), env="mask")
self.vis.images(cam1, opts=dict(title='cam1', caption=labels), env="mask")
self.vis.images(cam2, opts=dict(title='cam2', caption=labels), env="mask")
self.vis.images(cam3, opts=dict(title='cam3', caption=labels), env="mask")
def plot_mask_recon(self, imgs, cam, imgs_recon_masked, cam_recon, imgs_recon_fg, cam_recon_fg,imgs_recon_bg, cam_recon_bg, labels, original_preds, fg_preds, bg_pred,reset=True):
if reset:
self.vis.close(env="mask")
self.vis.images(imgs, opts=dict(title='image', caption=original_preds), env="mask")
self.vis.images(cam, opts=dict(title='cam', caption=labels), env="mask")
self.vis.images(imgs_recon_masked, opts=dict(title='image', caption=original_preds), env="mask")
self.vis.images(cam_recon, opts=dict(title='cam', caption=labels), env="mask")
self.vis.images(imgs_recon_fg, opts=dict(title='image', caption=fg_preds), env="mask")
self.vis.images(cam_recon_fg, opts=dict(title='cam', caption=labels), env="mask")
self.vis.images(imgs_recon_bg, opts=dict(title='image', caption=bg_pred), env="mask")
self.vis.images(cam_recon_bg, opts=dict(title='cam', caption=labels), env="mask")