(txt_path, save_path, n_min=25, n_dti=20)
| 64 | |
| 65 | |
| 66 | def dti(txt_path, save_path, n_min=25, n_dti=20): |
| 67 | seq_txts = sorted(glob.glob(os.path.join(txt_path, '*.txt'))) |
| 68 | for seq_txt in seq_txts: |
| 69 | seq_name = seq_txt.split('/')[-1] |
| 70 | seq_data = np.loadtxt(seq_txt, dtype=np.float64, delimiter=',') |
| 71 | min_id = int(np.min(seq_data[:, 1])) |
| 72 | max_id = int(np.max(seq_data[:, 1])) |
| 73 | seq_results = np.zeros((1, 10), dtype=np.float64) |
| 74 | for track_id in range(min_id, max_id + 1): |
| 75 | index = (seq_data[:, 1] == track_id) |
| 76 | tracklet = seq_data[index] |
| 77 | tracklet_dti = tracklet |
| 78 | if tracklet.shape[0] == 0: |
| 79 | continue |
| 80 | n_frame = tracklet.shape[0] |
| 81 | n_conf = np.sum(tracklet[:, 6] > 0.5) |
| 82 | if n_frame > n_min: |
| 83 | frames = tracklet[:, 0] |
| 84 | frames_dti = {} |
| 85 | for i in range(0, n_frame): |
| 86 | right_frame = frames[i] |
| 87 | if i > 0: |
| 88 | left_frame = frames[i - 1] |
| 89 | else: |
| 90 | left_frame = frames[i] |
| 91 | # disconnected track interpolation |
| 92 | if 1 < right_frame - left_frame < n_dti: |
| 93 | num_bi = int(right_frame - left_frame - 1) |
| 94 | right_bbox = tracklet[i, 2:6] |
| 95 | left_bbox = tracklet[i - 1, 2:6] |
| 96 | for j in range(1, num_bi + 1): |
| 97 | curr_frame = j + left_frame |
| 98 | curr_bbox = (curr_frame - left_frame) * (right_bbox - left_bbox) / \ |
| 99 | (right_frame - left_frame) + left_bbox |
| 100 | frames_dti[curr_frame] = curr_bbox |
| 101 | num_dti = len(frames_dti.keys()) |
| 102 | if num_dti > 0: |
| 103 | data_dti = np.zeros((num_dti, 10), dtype=np.float64) |
| 104 | for n in range(num_dti): |
| 105 | data_dti[n, 0] = list(frames_dti.keys())[n] |
| 106 | data_dti[n, 1] = track_id |
| 107 | data_dti[n, 2:6] = frames_dti[list(frames_dti.keys())[n]] |
| 108 | data_dti[n, 6:] = [1, -1, -1, -1] |
| 109 | tracklet_dti = np.vstack((tracklet, data_dti)) |
| 110 | seq_results = np.vstack((seq_results, tracklet_dti)) |
| 111 | save_seq_txt = os.path.join(save_path, seq_name) |
| 112 | seq_results = seq_results[1:] |
| 113 | seq_results = seq_results[seq_results[:, 0].argsort()] |
| 114 | write_results_score(save_seq_txt, seq_results) |
| 115 | |
| 116 | |
| 117 | if __name__ == '__main__': |
no test coverage detected