Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion classify_utils/cal_acc_MCP.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,11 @@ def cal_top1_topk(feats, cent_MCP, concept_vecs, concept_means, selected_node, a
parser.add_argument('--l2', default = [], type = int, nargs = "+", help = "Select the node to drop")
parser.add_argument('--l3', default = [], type = int, nargs = "+", help = "Select the node to drop")
parser.add_argument('--l4', default = [], type = int, nargs = "+", help = "Select the node to drop")
parser.add_argument("--saved_dir", default = ".", type = str)
args = parser.parse_args()

args.dst = f"{args.saved_dir}/pkl/{args.case_name}/{args.model.lower()}_{args.basic_model.lower()}"

print("Calculate accuracy !!")
os.environ["CUDA_VISIBLE_DEVICES"] = args.device

Expand All @@ -138,7 +141,7 @@ def cal_top1_topk(feats, cent_MCP, concept_vecs, concept_means, selected_node, a
num_class = int(num_class * 0.8 + 0.5)

model = load_model(args.model, args.basic_model.lower(), num_class)
load_weight(model, f"./pkl/{case_name}/{args.model.lower()}_{args.basic_model}/best_model.pkl")
load_weight(model, f"{args.dst}/best_model.pkl")
model.eval()

post_name = ""
Expand Down
5 changes: 4 additions & 1 deletion classify_utils/cal_class_MCP.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,13 @@ def cal_class_MCP(model, concept_vecs, concept_means, data_transforms, data_path
parser.add_argument('--w_mode', default = "best", choices=['best', 'last'], type = str)
parser.add_argument('--all_class', default = False, action = "store_true", help = "if true, generate the whole dataset's classes MCP distribution.")
parser.add_argument('--few_shot', default = False, action = "store_true")
parser.add_argument("--saved_dir", default = ".", type = str)

args = parser.parse_args()
print("Calculate the class MCP distribution !!")
os.environ["CUDA_VISIBLE_DEVICES"] = args.device
args.dst = f"{args.saved_dir}/pkl/{args.case_name}/{args.model.lower()}_{args.basic_model.lower()}"


case_name = args.case_name
args, image_size = get_model_set(args)
Expand All @@ -100,7 +103,7 @@ def cal_class_MCP(model, concept_vecs, concept_means, data_transforms, data_path
num_class = int(num_class * 0.8 + 0.5)

model = load_model(args.model, args.basic_model.lower(), num_class)
trained_param_path = f"./pkl/{args.case_name}/{args.model.lower()}_{args.basic_model}/{args.w_mode}_model.pkl"
trained_param_path = f"{args.dst}/{args.w_mode}_model.pkl"
load_weight(model, trained_param_path)
model.eval()

Expand Down
5 changes: 4 additions & 1 deletion extract_prototypes.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,10 +119,13 @@ def load_dataset(data_path: str, image_size: int, args, data_transform = None) -
parser.add_argument('--basic_model', default = "resnet50", type = str)
parser.add_argument('--model', default = "aix_model", type = str)
parser.add_argument('--w_mode', default = "best", choices=['best', 'last'], type = str)
parser.add_argument("--saved_dir", default = ".", type = str)
args = parser.parse_args()

os.environ["CUDA_VISIBLE_DEVICES"] = args.device

args.dst = f"{args.saved_dir}/pkl/{args.case_name}/{args.model.lower()}_{args.basic_model.lower()}"

os.makedirs(f"./PCA_concept_specific_tmp/{args.case_name}/{args.basic_model}/", exist_ok = True)
data_path, train_path, val_path, num_class = get_dataset(args.case_name)

Expand All @@ -143,7 +146,7 @@ def load_dataset(data_path: str, image_size: int, args, data_transform = None) -
print(args)

train_loader = load_dataset(data_path, image_size, args)
trained_param_path = f"./pkl/{args.case_name}/{args.model.lower()}_{args.basic_model}/best_model.pkl"
trained_param_path = f"{args.dst}/best_model.pkl"
load_weight(model, trained_param_path)

post_name = ""
Expand Down
2 changes: 1 addition & 1 deletion train.py
Original file line number Diff line number Diff line change
Expand Up @@ -404,7 +404,7 @@ def runs(args):
"Lr_scheduler" : lr_state_dict,
"Best ACC" : max_acc[phase].avg,
"concept_cha" : args.concept_cha}
torch.save(save_data, './pkl/{}/{}_{}/last_model.pkl'.format(args.index, args.model.lower(), args.basic_model.lower()))
torch.save(save_data, f'{args.dst}/last_model.pkl')
# -------------------------------------------------------------
info_log('Index : {}'.format(args.index), args.global_rank, args.log_type, args.log)
info_log("dataset : {}".format(args.dataset_name), args.global_rank, args.log_type, args.log)
Expand Down
5 changes: 4 additions & 1 deletion vis_utils/find_topk_area.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,10 +102,13 @@ def save_masked(ori_imgs, masks, args):
parser.add_argument('--eigen_topk', default = 1, type = int)
parser.add_argument('--heatmap', action = "store_true", default = False)
parser.add_argument('--masked', action = "store_true", default = False)
parser.add_argument("--saved_dir", default = ".", type = str)
args = parser.parse_args()
os.environ["CUDA_VISIBLE_DEVICES"] = args.device
print(args)

args.dst = f"{args.saved_dir}/pkl/{args.case_name}/{args.model.lower()}_{args.basic_model.lower()}"

nrow = args.topk

layer_sizes = []
Expand Down Expand Up @@ -147,7 +150,7 @@ def save_masked(ori_imgs, masks, args):
if args.model.lower() != "aix_model":
post_name = "_resp"
model = load_model(args.model, args.basic_model, num_class)
trained_param_path = f"./pkl/{args.case_name}/{args.model.lower()}_{args.basic_model}/best_model.pkl"
trained_param_path = f"{args.dst}/best_model.pkl"
print(trained_param_path)
load_weight(model, trained_param_path)

Expand Down
7 changes: 6 additions & 1 deletion vis_utils/find_topk_response.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,10 @@ def __getitem__(self, idx):
parser.add_argument('--concept_per_layer', default = [32, 32, 32, 32], type = int, nargs = "+")
parser.add_argument('--eigen_topk', default = 1, type = int)
parser.add_argument('--use_CLS_token', action = "store_true", default = False)
parser.add_argument("--saved_dir", default = ".", type = str)
args = parser.parse_args()



print(args)
os.environ["CUDA_VISIBLE_DEVICES"] = args.device
Expand All @@ -63,6 +66,8 @@ def __getitem__(self, idx):
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])])
TOP_RATE = 0.1
for step, case_name in enumerate(case_names):
args.dst = f"{args.saved_dir}/pkl/{case_name}/{args.model.lower()}_{args.basic_model.lower()}"

data_path, train_path, val_path, num_class = get_dataset(case_name)
data_path = data_path + train_path

Expand All @@ -76,7 +81,7 @@ def __getitem__(self, idx):
concept_vecs, concept_means = load_concept(concept_covs, concept_means, args.eigen_topk)

model = load_model(args.model, args.basic_model, num_class).cuda()
trained_param_path = f"./pkl/{case_name}/{args.model.lower()}_{args.basic_model}/best_model.pkl"
trained_param_path = f"{args.dst}/best_model.pkl"
load_weight(model, trained_param_path)

max_resp_path = [np.array([]),
Expand Down