(mm_motion_loaders, file)
| 122 | |
| 123 | |
| 124 | def evaluate_multimodality(mm_motion_loaders, file): |
| 125 | eval_dict = OrderedDict({}) |
| 126 | print('========== Evaluating MultiModality ==========') |
| 127 | for model_name, mm_motion_loader in mm_motion_loaders.items(): |
| 128 | mm_motion_embeddings = [] |
| 129 | with torch.no_grad(): |
| 130 | for idx, batch in enumerate(mm_motion_loader): |
| 131 | # (1, mm_replications, dim_pos) |
| 132 | motions, m_lens = batch |
| 133 | motion_embedings = eval_wrapper.get_motion_embeddings(motions[0], m_lens[0]) |
| 134 | mm_motion_embeddings.append(motion_embedings.unsqueeze(0)) |
| 135 | if len(mm_motion_embeddings) == 0: |
| 136 | multimodality = 0 |
| 137 | else: |
| 138 | mm_motion_embeddings = torch.cat(mm_motion_embeddings, dim=0).cpu().numpy() |
| 139 | multimodality = calculate_multimodality(mm_motion_embeddings, mm_num_times) |
| 140 | print(f'---> [{model_name}] Multimodality: {multimodality:.4f}') |
| 141 | print(f'---> [{model_name}] Multimodality: {multimodality:.4f}', file=file, flush=True) |
| 142 | eval_dict[model_name] = multimodality |
| 143 | return eval_dict |
| 144 | |
| 145 | |
| 146 | def get_metric_statistics(values): |
no test coverage detected