Spaces:
Build error
Build error
import pickle | |
import streamlit as st | |
from backend.load_file import load_json | |
# st.cache_data | |
def load_activation(filename): | |
activation = load_json(filename) | |
return activation | |
# @st.cache_data | |
def load_dataset(data_index): | |
with open(f'./data/preprocessed_image_net/val_data_{data_index}.pkl', 'rb') as file: | |
dataset = pickle.load(file) | |
return dataset | |
def load_layer_infos(filename): | |
layer_infos = load_json(filename) | |
return layer_infos | |
def get_receptive_field_coordinates(layer_infos, layer_name, idx_x, idx_y): | |
""" | |
layer_name: as in layer_infos keys (eg: 'encoder.stages[0].layers[0]') | |
idx_x: integer coordinate of width axis in feature maps. must < n | |
idx_y: integer coordinate of height axis in feature maps. must < n | |
""" | |
layer_name = layer_name.replace('.dwconv', '').replace('.layernorm', '') | |
layer_name = layer_name.replace('.pwconv1', '').replace('.pwconv2', '').replace('.drop_path', '') | |
n = layer_infos[layer_name]['n'] | |
j = layer_infos[layer_name]['j'] | |
r = layer_infos[layer_name]['r'] | |
start = layer_infos[layer_name]['start'] | |
assert idx_x < n, f'n={n}' | |
assert idx_y < n, f'n={n}' | |
# image tensor (N, H, W, C) or (N, C, H, W) => image_patch=image[y1:y2, x1:x2] | |
center = (start + idx_x*j, start + idx_y*j) | |
x1, x2 = (max(center[0]-r/2, 0), max(center[0]+r/2, 0)) | |
y1, y2 = (max(center[1]-r/2, 0), max(center[1]+r/2, 0)) | |
x1, x2, y1, y2 = int(x1), int(x2), int(y1), int(y2) | |
return x1, x2, y1, y2 | |