diff --git a/simple_reid.py b/simple_reid.py index 7a84db2..893651f 100644 --- a/simple_reid.py +++ b/simple_reid.py @@ -1,19 +1,17 @@ import shutil - +import matplotlib.pyplot as plt import torch from torchvision import transforms import numpy as np import cv2 import os - import param from deep_sort.deep.feature_extractor import FastReIDExtractor - from fastreid.demo import FeatureExtractionDemo from fastreid.config import get_cfg -def extractidfeature(id_path:str,extractor:FeatureExtractionDemo): +def extractidfeature(id_path: str, extractor: FeatureExtractionDemo): img_id = cv2.imread(id_path) tensor_id = extractor.run_on_image(img_id) return tensor_id.detach().cpu().numpy() @@ -21,46 +19,60 @@ def extractidfeature(id_path:str,extractor:FeatureExtractionDemo): # example if __name__ == '__main__': dislist = {} - extractor_model_path = "./deep_sort/deep/checkpoint/market_bot_R50-ibn.pth" cfg_path = "./fastreid/cfgs/Market1501/bagtricks_R50-ibn.yml" - query_path = "./query/cam1" - galla_path = "./gallary" - + query_path = "D:\\study\\python\\1zhouxue\\UESTC_ReID_Dataset_V3\\query\\cam3" + galla_path = "D:\\study\\python\\1zhouxue\\UESTC_ReID_Dataset_V3\\gallery" + C=3 gallary_list = os.listdir(galla_path) - count = 0 cfg = get_cfg() cfg.MODEL.DEVICE = 'cpu' + cfg.MODEL.WEIGHTS = extractor_model_path cfg.merge_from_file(cfg_path) cfg.freeze() my_option = param.Parameters() # load model in head extractor = FeatureExtractionDemo(cfg) with torch.no_grad(): - for i in range(3,26): + for i in range(1,6): count = 0 dislist.clear() - id_try = extractidfeature(query_path+f"/1_{i}.jpg",extractor) + id_try = extractidfeature(query_path+f"/{C}_{i}.jpg",extractor) for gal in gallary_list: count += 1 - if(count%10 == 0): + if count % 25 == 0: id_tar = extractidfeature(galla_path+'/'+gal,extractor) - dist = np.sum(np.abs(id_try-id_tar)) + dist = np.sum(np.abs(id_try-id_tar)) dislist[gal] = float(dist) - if count>5000: + if count > 8000: break - matched = sorted(dislist.items(),key=lambda x:x[1]) + matched = sorted(dislist.items(), key=lambda x : x[1]) print(matched) try: - os.mkdir("match/"+ f"1_{i}") + os.mkdir("match/" + f"{C}_{i}") except: pass + x = 1 for path in matched[0:10]: s_path = galla_path+'/'+path[0] - t_path = "match/"+ f"1_{i}" +"/"+path[0] - print(s_path,t_path) - shutil.copy(s_path,t_path) - + t_path = "match/" + f"{C}_{i}" + "/" + path[0] + print(s_path, t_path) + shutil.copy(s_path, t_path) + + ID = path[0].split('_') + # print(ID) + ID = int(ID[0]) + img = plt.imread(s_path) + plt.subplot(1, 10, x) + if id == i: + plt.title(x) + else: + plt.title(f"{x}_F") + plt.imshow(img) + plt.xticks([]) + plt.yticks([]) + x += 1 + plt.show() \ No newline at end of file