MCPcopy Create free account
hub / github.com/OpenGVLab/UniFormerV2 / run_visualization

Function run_visualization

tools/visualization.py:29–193  ·  view source on GitHub ↗

Run model visualization (weights, activations and model inputs) and visualize them on Tensorboard. Args: vis_loader (loader): video visualization loader. model (model): the video model to visualize. cfg (CfgNode): configs. Details can be found in slow

(vis_loader, model, cfg, writer=None)

Source from the content-addressed store, hash-verified

27
28
29def run_visualization(vis_loader, model, cfg, writer=None):
30 """
31 Run model visualization (weights, activations and model inputs) and visualize
32 them on Tensorboard.
33 Args:
34 vis_loader (loader): video visualization loader.
35 model (model): the video model to visualize.
36 cfg (CfgNode): configs. Details can be found in
37 slowfast/config/defaults.py
38 writer (TensorboardWriter, optional): TensorboardWriter object
39 to writer Tensorboard log.
40 """
41 n_devices = cfg.NUM_GPUS * cfg.NUM_SHARDS
42 prefix = "module/" if n_devices > 1 else ""
43 # Get a list of selected layer names and indexing.
44 layer_ls, indexing_dict = process_layer_index_data(
45 cfg.TENSORBOARD.MODEL_VIS.LAYER_LIST, layer_name_prefix=prefix
46 )
47 logger.info("Start Model Visualization.")
48 # Register hooks for activations.
49 model_vis = GetWeightAndActivation(model, layer_ls)
50
51 if writer is not None and cfg.TENSORBOARD.MODEL_VIS.MODEL_WEIGHTS:
52 layer_weights = model_vis.get_weights()
53 writer.plot_weights_and_activations(
54 layer_weights, tag="Layer Weights/", heat_map=False
55 )
56
57 # video_vis = VideoVisualizer(
58 # cfg.MODEL.NUM_CLASSES,
59 # cfg.TENSORBOARD.CLASS_NAMES_PATH,
60 # cfg.TENSORBOARD.MODEL_VIS.TOPK_PREDS,
61 # cfg.TENSORBOARD.MODEL_VIS.COLORMAP,
62 # )
63 if n_devices > 1:
64 grad_cam_layer_ls = [
65 "module/" + layer
66 for layer in cfg.TENSORBOARD.MODEL_VIS.GRAD_CAM.LAYER_LIST
67 ]
68 else:
69 grad_cam_layer_ls = cfg.TENSORBOARD.MODEL_VIS.GRAD_CAM.LAYER_LIST
70
71 if cfg.TENSORBOARD.MODEL_VIS.GRAD_CAM.ENABLE:
72 gradcam = GradCAM(
73 model,
74 target_layers=grad_cam_layer_ls,
75 data_mean=cfg.DATA.MEAN,
76 data_std=cfg.DATA.STD,
77 colormap=cfg.TENSORBOARD.MODEL_VIS.GRAD_CAM.COLORMAP,
78 )
79 logger.info("Finish drawing weights.")
80 global_idx = -1
81 for inputs, labels, _, meta in tqdm.tqdm(vis_loader):
82 if cfg.NUM_GPUS:
83 # Transfer the data to the current GPU device.
84 if isinstance(inputs, (list,)):
85 for i in range(len(inputs)):
86 inputs[i] = inputs[i].cuda(non_blocking=True)

Callers 1

visualizeFunction · 0.85

Calls 7

get_weightsMethod · 0.95
get_activationsMethod · 0.95
process_layer_index_dataFunction · 0.90
GradCAMClass · 0.90
add_imageMethod · 0.80

Tested by

no test coverage detected