class_docstr: Post-processing methods for ABCNet.
  
  Args:
      num_classes (int): Number of classes.
      use_sigmoid_cls (bool): Whether to use sigmoid for classification.
      strides (tuple): Strides of each feature map.
      norm_by_strides (bool): Whether to normalize the regression targets by
          the strides.
      bbox_coder (dict): Config dict for bbox coder.
      text_repr_type (str): Text representation type, 'poly' or 'quad'.
      with_bezier (bool): Whether to use bezier curve for text detection.
      train_cfg (dict): Config dict for training.
      test_cfg (dict): Config dict for testing.
class_docstr_tok: ["Post-processing","methods","for","ABCNet",".","Args",":","num_classes","(","int",")",":","Number","of","classes",".","use_sigmoid_cls","(","bool",")",":","Whether","to","use","sigmoid","for","classification",".","strides","(","tuple",")",":","Strides","of","each","feature","map",".","norm_by_strides","(","bool",")",":","Whether","to","normalize","the","regression","targets","by","the","strides",".","bbox_coder","(","dict",")",":","Config","dict","for","bbox","coder",".","text_repr_type","(","str",")",":","Text","representation","type",",","'poly","'","or","'quad","'",".","with_bezier","(","bool",")",":","Whether","to","use","bezier","curve","for","text","detection",".","train_cfg","(","dict",")",":","Config","dict","for","training",".","test_cfg","(","dict",")",":","Config","dict","for","testing","."]
docstr: Split the prediction results into multi-level features. The
  prediction results are concatenated in the first dimension.
  Args:
      pred_results (list[list[torch.Tensor]): Prediction results of all
          head with multi-level features.
          The first dimension of pred_results is the number of outputs of
          head. The second dimension is the number of level. The third
          dimension is the feature with (N, C, H, W).
  
  Returns:
      list[list[torch.Tensor]]:
      [Batch_size, Number of heads]
docstr_tok: ["Split","the","prediction","results","into","multi-level","features",".","The","prediction","results","are","concatenated","in","the","first","dimension",".","Args",":","pred_results","(","list","[","list","[","torch.Tensor","]",")",":","Prediction","results","of","all","head","with","multi-level","features",".","The","first","dimension","of","pred_results","is","the","number","of","outputs","of","head",".","The","second","dimension","is","the","number","of","level",".","The","third","dimension","is","the","feature","with","(","N",",","C",",","H",",","W",")",".","Returns",":","list","[","list","[","torch.Tensor","]","]",":","[","Batch_size",",","Number","of","heads","]"]
code: def split_results(self, pred_results: List[torch.Tensor]):
      """Split the prediction results into multi-level features. The
      prediction results are concatenated in the first dimension.
      Args:
          pred_results (list[list[torch.Tensor]): Prediction results of all
              head with multi-level features.
              The first dimension of pred_results is the number of outputs of
              head. The second dimension is the number of level. The third
              dimension is the feature with (N, C, H, W).
  
      Returns:
          list[list[torch.Tensor]]:
          [Batch_size, Number of heads]
      """
  
      results = []
      num_levels = len(pred_results[0])
      bs = pred_results[0][0].size(0)
      featmap_sizes = [
          pred_results[0][i].shape[-2:] for i in range(num_levels)
      ]
      mlvl_priors = self.prior_generator.grid_priors(
          featmap_sizes,
          dtype=pred_results[0][0].dtype,
          device=pred_results[0][0].device,
      )
      for img_id in range(bs):
          single_results = [mlvl_priors]
          for pred_result in pred_results:
              single_results.append(
                  select_single_mlvl(pred_result, img_id)
              )
          results.append(single_results)
      return results
  
file_path: mmocr/projects/ABCNet/abcnet/model/abcnet_det_postprocessor.py
imports: from functools import partial
  from typing import List
  import numpy
  import torch
  from mmcv.ops import batched_nms
  from mmdet.models.task_modules.prior_generators import MlvlPointGenerator
  from mmdet.models.utils import filter_scores_and_topk, multi_apply, select_single_mlvl
  from mmengine.structures import InstanceData
  from mmocr.models.textdet.postprocessors.base import BaseTextDetPostProcessor
  from mmocr.registry import MODELS, TASK_UTILS
label_desc: Use image node_id 2 for calling the ABCNetDetPostprocessor obj's underlying member method code with example usage: obj.split_results(pred_results) and returns: results