in anticipation/anticipation/datasets/epic_future_labels.py [0:0]
def get_future_labels(self, graph, end_frame, graph_data):
frames, graphs = graph_data['frames'], graph_data['graphs']
final_graph = graphs[-1]['G']
# for each node, get future labels
future_verbs, future_labels, future_ints = [], [], []
for node in sorted(graph.nodes()):
visits = copy.deepcopy(final_graph.node[node]['members'])
for visit in visits:
visit['start'] = frames[visit['start']]
visit['stop'] = frames[visit['stop']]
if self.task=='anticipation':
future_visits = [visit for visit in visits if visit['start'][1]>end_frame]
elif self.task=='recognition':
future_visits = [visit for visit in visits if visit['stop'][1]<end_frame]
vfuture, nfuture, ifuture = self.visits_to_labels(future_visits)
future_verbs.append(vfuture)
future_labels.append(nfuture)
future_ints.append(ifuture)
future_verbs = torch.stack(future_verbs, 0)
future_labels = torch.stack(future_labels, 0)
future_ints = torch.stack(future_ints, 0)
return {'verbs':future_verbs, 'nouns':future_labels, 'ints':future_ints}