in build_graph/tools/generate_r152_neighbors.py [0:0]
def generate_pairwise_clip_distance_epic(args):
def generate_pdist_matrices(videos, split):
pattern = re.compile('|'.join(videos))
uids = [uid for uid in all_uids if pattern.match(uid)]
avg_feats = torch.stack([all_avg_feats[uid] for uid in uids], 0).numpy()
pdist_dense = euclidean_distances(avg_feats)
print (split, pdist_dense.shape)
# Matches within same kitchen
pdist = np.array(pdist_dense)
uid_to_idx = {uid:idx for idx, uid in enumerate(uids)}
z_idx = {}
for idxA in range(len(uids)):
kitchen = uids[idxA][:3]
if kitchen not in z_idx:
z_idx[kitchen] = [idxB for idxB in range(len(uids)) if uids[idxB][:3]!=kitchen]
for idx in tqdm.tqdm(range(len(uids))):
kitchen = uids[idx][:3]
pdist[idx][z_idx[kitchen]] = 0
pdist = csr_matrix(pdist)
out_fl = f'build_graph/data/{args.dset}/{split}_pdist_r152_samek.pth'
torch.save({'uids':uids, 'uid_to_idx':uid_to_idx, 'pdist':pdist}, out_fl)
all_avg_feats = torch.load(f'build_graph/data/{args.dset}/avg_feats_r152.pth')
all_uids = sorted(all_avg_feats.keys())
dset = epic.EPICInteractions('data/epic', 'val', 32)
generate_pdist_matrices(dset.train_vids, 'train')
generate_pdist_matrices(dset.val_vids, 'val')