Visualization - Saliency, Grad-CAM

Visualizing Structure

๊ฐ layer์˜ parameter์˜ ํฌ๊ธฐ๋ฅผ ๊ตฌํ•ด์„œ ์ „์ฒด parameter์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค.
module.named_parameters๋ฅผ ์ด์šฉํ•ด์„œ param์ธ์ž์— ์žˆ๋Š” ์ •๋ณด๋ฅผ ์ด์šฉํ•ด์„œ ๊ตฌํ•œ๋‹ค.

def get_module_params_num(module):

  param_num = 0

  for _, param in module.named_parameters():

    size = 1
    for i in range(len(param.shape)):
       size = size * param.shape[i]
    param_size = size 
    param_num += param_size

  return param_num

def get_model_params_num(model):
  module_num = 0
  for name, module in model._modules.items():
    module_num += get_module_params_num(module)
  return module_num

num_params = get_model_params_num(model)
print(f"Number of parameters in customed-VGG11: {num_params}")

Visualizing conv1 filters

VGG์˜ ์ฒซ๋ฒˆ์งธ convolution layer๋Š” ํ•ด๋‹น filter์˜ ์ฑ„๋„ ์ˆ˜๊ฐ€ RGB ์ฑ„๋„ ์ˆ˜(3)์™€ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์— filter๋ฅผ visualizing ํ•˜๊ธฐ ์‰ฝ๋‹ค.

conv1_filters_data = model.backbone.conv1.weight.data

plot_filters(conv1_filters_data, title="Filters in conv1 layer")

Visualizing

ํƒœ๊ทธ:

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ: