def get_plan_col_target(self,
             ego_traj_preds,
             ego_traj_gts,
             agents_boxes_gts,
             agents_feats_gts):
        """"Get Trajectory mode classification target.
        Args:
            ego_traj_preds (Tensor): MultiModal traj preds with shape (B, plan_fut_mode, fut_ts, 2).
            ego_traj_gts (Tensor): traj gts with shape (B, 1, fut_ts, 2).
            agents_boxes_gts (List(Tensor)): Ground truth traj for each agent with shape (N_a, 9).
            agents_feats_gts (List(Tensor)): Ground truth feats for each agent with shape (N_a, 34).
        Returns:
            traj_labels (Tensor): traj cls labels (1, plan_fut_mode).
        """

        planning_metric = PlanningMetric(fut_ts=self.fut_ts)
        segmentation, pedestrian = planning_metric.get_label(agents_boxes_gts, agents_feats_gts)
        occupancy = torch.logical_or(segmentation, pedestrian)

        label_list = []
        for i in range(self.plan_fut_mode):
            label = planning_metric.evaluate_coll(
                ego_traj_preds[None, i].detach(),
                ego_traj_gts[None, i],
                occupancy)
            label_list.append(label)

        return torch.cat(label_list, dim=-1).to(agents_feats_gts.device)
"Get Trajectory mode classification target.
        Args:
            ego_traj_preds (Tensor): MultiModal traj preds with shape (B, plan_fut_mode, fut_ts, 2).
            ego_traj_gts (Tensor): traj gts with shape (B, 1, fut_ts, 2).
            agents_boxes_gts (List(Tensor)): Ground truth traj for each agent with shape (N_a, 9).
            agents_feats_gts (List(Tensor)): Ground truth feats for each agent with shape (N_a, 34).
        Returns:
            traj_labels (Tensor): traj cls labels (1, plan_fut_mode).
        
VADv2/VADv2_head.py