From c9e7abd1bfb0d60f5284c71d481864b41b2fea3f Mon Sep 17 00:00:00 2001 From: Deepankar Sharma <74599435+ideepankarsharma2003@users.noreply.github.com> Date: Mon, 31 Mar 2025 12:27:57 +0530 Subject: [PATCH 1/4] Update test_in_custom.py --- PromptPAR/test_in_custom.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/PromptPAR/test_in_custom.py b/PromptPAR/test_in_custom.py index 2c95401..7700201 100644 --- a/PromptPAR/test_in_custom.py +++ b/PromptPAR/test_in_custom.py @@ -11,6 +11,7 @@ from models.base_block import TransformerClassifier from tools.function import get_pedestrian_metrics from tools.utils import time_str, set_seed +from utils.train_utils import AverageMeter from clip import clip from clip.model import build_model from torchvision import transforms @@ -86,7 +87,7 @@ def main(args, image_root): preds_probs = [] gt_list = [] with torch.no_grad(): - for step, (imgs, imgname) in enumerate(valid_loader): + for step, (imgs, imgname) in enumerate(data_loader): imgs = imgs.cuda() valid_logits,_ = model(imgs, clip_model=clip_model) From fbd8b5e688f89b5673651e32f284ef4b86656417 Mon Sep 17 00:00:00 2001 From: Deepankar Sharma <74599435+ideepankarsharma2003@users.noreply.github.com> Date: Mon, 31 Mar 2025 12:34:32 +0530 Subject: [PATCH 2/4] Update test_in_custom.py --- PromptPAR/test_in_custom.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/PromptPAR/test_in_custom.py b/PromptPAR/test_in_custom.py index 7700201..dc71e5f 100644 --- a/PromptPAR/test_in_custom.py +++ b/PromptPAR/test_in_custom.py @@ -108,4 +108,5 @@ def main(args, image_root): parser = argument_parser() image_root = '' args = parser.parse_args() - main(args) + main(args, image_root) + From 7055f5b2af9eb176562e239ff976b669422ae7e8 Mon Sep 17 00:00:00 2001 From: Deepankar Sharma <74599435+ideepankarsharma2003@users.noreply.github.com> Date: Mon, 31 Mar 2025 14:22:19 +0530 Subject: [PATCH 3/4] Update test_in_custom.py --- PromptPAR/test_in_custom.py | 82 +++++++++++++++++++++++++++---------- 1 file changed, 60 insertions(+), 22 deletions(-) diff --git a/PromptPAR/test_in_custom.py b/PromptPAR/test_in_custom.py index dc71e5f..ec83a0c 100644 --- a/PromptPAR/test_in_custom.py +++ b/PromptPAR/test_in_custom.py @@ -2,6 +2,7 @@ import pprint from collections import OrderedDict import time +import json import numpy as np import torch from torch.utils.data import DataLoader, Dataset @@ -11,29 +12,57 @@ from models.base_block import TransformerClassifier from tools.function import get_pedestrian_metrics from tools.utils import time_str, set_seed -from utils.train_utils import AverageMeter from clip import clip from clip.model import build_model from torchvision import transforms from PIL import Image from config import argument_parser +from utils.train_utils import AverageMeter set_seed(605) device = "cuda" if torch.cuda.is_available() else "cpu" # attr_words的设置取决于你加载哪个数据集训练的checkpoint 例如PETA attr_words = [ - 'head hat','head muffler','head nothing','head sunglasses','head long hair', - 'upper casual', 'upper formal', 'upper jacket', 'upper logo', 'upper plaid', - 'upper short sleeve', 'upper thin stripes', 'upper t-shirt','upper other','upper v-neck', - 'lower Casual', 'lower Formal', 'lower Jeans', 'lower Shorts', 'lower Short Skirt','lower Trousers', - 'shoes Leather', 'shoes Sandals', 'shoes other', 'shoes sneaker', - 'attach Backpack', 'attach Other', 'attach messenger bag', 'attach nothing', 'attach plastic bags', - 'age less 30','age 30 45','age 45 60','age over 60', + 'head hat', + 'head muffler', + 'head nothing', + 'head sunglasses', + 'head long hair', + 'upper casual', + 'upper formal', + 'upper jacket', + 'upper logo', + 'upper plaid', + 'upper short sleeve', + 'upper thin stripes', + 'upper t-shirt', + 'upper other', + 'upper v-neck', + 'lower Casual', + 'lower Formal', + 'lower Jeans', + 'lower Shorts', + 'lower Short Skirt', + 'lower Trousers', + 'shoes Leather', + 'shoes Sandals', + 'shoes other', + 'shoes sneaker', + 'attach Backpack', + 'attach Other', + 'attach messenger bag', + 'attach nothing', + 'attach plastic bags', + 'age less 30', + 'age 30 45', + 'age 45 60', + 'age over 60', 'male' ] # 54 class CustomDataset(Dataset): def __init__(self, image_root, transform=None): self.image_root = image_root + print(f"image_root: {image_root}") self.image_list = sorted([os.path.join(image_root, f) for f in os.listdir(image_root) if f.endswith(('.jpg', '.png'))]) self.transform = transform @@ -77,32 +106,41 @@ def main(args, image_root): else: print(f"Warning: Checkpoint {args.dir} not found, skipping model loading.") return - - print("Starting evaluation...") start = time.time() model.eval() - loss_meter = AverageMeter() + # loss_meter = AverageMeter() # ----> used nowhere preds_probs = [] - gt_list = [] + imgnames= [] + # gt_list = [] # ----> used nowhere with torch.no_grad(): for step, (imgs, imgname) in enumerate(data_loader): imgs = imgs.cuda() - valid_logits,_ = model(imgs, clip_model=clip_model) - + valid_logits, _ = model(imgs, clip_model=clip_model) valid_probs = torch.sigmoid(valid_logits) preds_probs.append(valid_probs.cpu().numpy()) - preds_attrs = [[] for _ in range(len(preds_probs))] - - # 这里可以对preds_probs处理后得到预测结果 - for pidx, ppreds in enumerate(preds_probs): - for aidx, pattr in enumerate(ppreds): - if pattr >0.45:# 我们的阈值设为0.45 可以修改 - preds_attrs[pidx].append(attributes[aidx]) - + imgnames.append(imgname) + + preds_attrs = {} + for batch_preds, batch_imgs in zip(preds_probs, imgnames): + for i, sample_preds in enumerate(batch_preds): + sample_attrs = [] + # Now iterate over each attribute score in the sample + for aidx, attr_score in enumerate(sample_preds): + if attr_score > 0.45: # now attr_score is a scalar value + sample_attrs.append(attributes[aidx]) + + + preds_attrs[batch_imgs[i]]= sample_attrs + end = time.time() print(f'Total test time: {end - start:.2f} seconds') + + with open("preds.json" , "w") as f: + json.dump(preds_attrs, f, indent=4) + + if __name__ == '__main__': parser = argument_parser() From 6713f24a6e1c4ffebc235c6e0094010e5fd9695c Mon Sep 17 00:00:00 2001 From: Deepankar Sharma <74599435+ideepankarsharma2003@users.noreply.github.com> Date: Mon, 31 Mar 2025 14:48:20 +0530 Subject: [PATCH 4/4] Update test_in_custom.py --- PromptPAR/test_in_custom.py | 43 ++++++------------------------------- 1 file changed, 7 insertions(+), 36 deletions(-) diff --git a/PromptPAR/test_in_custom.py b/PromptPAR/test_in_custom.py index ec83a0c..eb181c1 100644 --- a/PromptPAR/test_in_custom.py +++ b/PromptPAR/test_in_custom.py @@ -22,42 +22,13 @@ device = "cuda" if torch.cuda.is_available() else "cpu" # attr_words的设置取决于你加载哪个数据集训练的checkpoint 例如PETA attr_words = [ - 'head hat', - 'head muffler', - 'head nothing', - 'head sunglasses', - 'head long hair', - 'upper casual', - 'upper formal', - 'upper jacket', - 'upper logo', - 'upper plaid', - 'upper short sleeve', - 'upper thin stripes', - 'upper t-shirt', - 'upper other', - 'upper v-neck', - 'lower Casual', - 'lower Formal', - 'lower Jeans', - 'lower Shorts', - 'lower Short Skirt', - 'lower Trousers', - 'shoes Leather', - 'shoes Sandals', - 'shoes other', - 'shoes sneaker', - 'attach Backpack', - 'attach Other', - 'attach messenger bag', - 'attach nothing', - 'attach plastic bags', - 'age less 30', - 'age 30 45', - 'age 45 60', - 'age over 60', - 'male' -] # 54 + 'head hat','head muffler','head nothing','head sunglasses','head long hair', + 'upper casual', 'upper formal', 'upper jacket', 'upper logo', 'upper plaid', + 'upper short sleeve', 'upper thin stripes', 'upper t-shirt','upper other','upper v-neck', + 'lower Casual', 'lower Formal', 'lower Jeans', 'lower Shorts', 'lower Short Skirt','lower Trousers', + 'shoes Leather', 'shoes Sandals', 'shoes other', 'shoes sneaker', + 'attach Backpack', 'attach Other', 'attach messenger bag', 'attach nothing', 'attach plastic bags', + 'age less 30','age 30 45','age 45 60','age over 60',] # 34 class CustomDataset(Dataset): def __init__(self, image_root, transform=None):