def __call__(self, batched_inputs):
        """
        Same input/output format as :meth:`NuscenesDD3D`
        """
        def _maybe_read_image(dataset_dict):
            ret = copy.copy(dataset_dict)
            if "image" not in ret:
                image = read_image(ret.pop("file_name"), self.tta_mapper.image_format)
                image = torch.from_numpy(np.ascontiguousarray(image.transpose(2, 0, 1)))  # CHW
                ret["image"] = image
            if "height" not in ret and "width" not in ret:
                ret["height"] = image.shape[1]
                ret["width"] = image.shape[2]
            return ret

        instances_per_image = [self._inference_one_image(_maybe_read_image(x)) for x in batched_inputs]

        # ----------------------------------------------------------
        # NuScenes specific: cross-image (i.e. sample-level) BEV NMS.
        # ----------------------------------------------------------
        sample_tokens = [x['sample_token'] for x in batched_inputs]
        group_idxs = get_group_idxs(sample_tokens, self.model.num_images_per_sample)
        global_poses = [x['pose'] for x in batched_inputs]

        filtered_instances = nuscenes_sample_aggregate(
            instances_per_image,
            group_idxs,
            self.model.num_classes,
            global_poses,
            self.model.bev_nms_iou_thresh,
            max_num_dets_per_sample=self.model.max_num_dets_per_sample
        )

        return [{'instances': instances} for instances in filtered_instances]

        Same input/output format as :meth:`NuscenesDD3D`
        
tridet/modeling/dd3d/nuscenes_dd3d_tta.py