(features_path, output_path, show_num_identities_for_each_domain=100, plot_by_domain=False,
if_from_numpy='', if_generalization=True)
| 721 | |
| 722 | |
| 723 | def visualize3(features_path, output_path, show_num_identities_for_each_domain=100, plot_by_domain=False, |
| 724 | if_from_numpy='', if_generalization=True): |
| 725 | from collections import defaultdict |
| 726 | datasets = defaultdict(dict) |
| 727 | if not osp.exists(features_path): |
| 728 | assert False, f'features_path ({features_path}) is not existing!' |
| 729 | query_dict_list, gallery_dict_list = [], [] |
| 730 | for _file in sorted(os.listdir(features_path)): |
| 731 | print(_file) |
| 732 | if 'cids' in _file or 'fuse' in _file: |
| 733 | continue |
| 734 | features = np.load(osp.join(features_path, _file)) |
| 735 | dataset_name = re.findall(p1, _file)[0] |
| 736 | if 'pids' in _file: |
| 737 | if 'pids' in datasets[dataset_name].keys(): |
| 738 | datasets[dataset_name]['pids'] = np.concatenate( |
| 739 | (datasets[dataset_name]['pids'], features), axis=0) |
| 740 | # print(f'{dataset_name} ==> add pids: {features.shape}') |
| 741 | else: |
| 742 | datasets[dataset_name].update({'pids': features}) |
| 743 | # print(f'{dataset_name} ==> initial pids: {features.shape}') |
| 744 | |
| 745 | elif 'features' in _file: |
| 746 | if 'features' in datasets[dataset_name].keys(): |
| 747 | datasets[dataset_name]['features'] = np.concatenate( |
| 748 | (datasets[dataset_name]['features'], features), axis=0) |
| 749 | # print(f'{dataset_name} ==> add features: {features.shape}') |
| 750 | else: |
| 751 | datasets[dataset_name].update({'features': features}) |
| 752 | # print(f'{dataset_name} ==> initial features: {features.shape}') |
| 753 | else: |
| 754 | assert False, f'the name of _file is {_file}, which is not compatible' |
| 755 | |
| 756 | print(list(datasets.keys())) |
| 757 | for k, v in datasets.items(): |
| 758 | # print(k) |
| 759 | # print(np.max(v['pids'])) |
| 760 | # print(np.min(v['pids'])) |
| 761 | v['pids'] = relabel_numpy(v['pids']) |
| 762 | # print(np.max(v['pids'])) |
| 763 | # print(np.min(v['pids'])) |
| 764 | |
| 765 | for k, v in datasets.items(): |
| 766 | # selected_ids = np.random.permutation(np.max(v['pids']))[ |
| 767 | # :show_num_identities_for_each_domain] |
| 768 | selected_ids = np.random.permutation(np.max(v['pids'])) |
| 769 | |
| 770 | index = np.arange(v['pids'].shape[0]) |
| 771 | # for ii, pid in enumerate(v['pids']): |
| 772 | # if pid in selected_ids: |
| 773 | # if 'selected_features' and 'selected_pids' in v.keys(): |
| 774 | # v['selected_features'] = np.concatenate((v['selected_features'], v['features'][ii]), axis=0) |
| 775 | # assert v['pids'][ii] == pid, 'conflict' |
| 776 | # v['selected_pids'] = np.concatenate((v['selected_pids'], pid), axis=0) |
| 777 | # else: |
| 778 | # v.update({'selected_features': v['features'][ii]}) |
| 779 | # assert v['pids'][ii] == pid, 'conflict' |
| 780 | # v.update({'selected_pids': pid}) |
nothing calls this directly
no test coverage detected