class_docstr: The post process for FCENet.
class_docstr_tok: ["The","post","process","for","FCENet","."]
docstr: Decoding predictions of FCENet to instances.
  
  Args:
      preds (list(Tensor)): The head output tensors.
      fourier_degree (int): The maximum Fourier transform degree k.
      num_reconstr_points (int): The points number of the polygon
          reconstructed from predicted Fourier coefficients.
      scale (int): The down-sample scale of the prediction.
      alpha (float) : The parameter to calculate final scores. Score_{final}
              = (Score_{text region} ^ alpha)
              * (Score_{text center region}^ beta)
      beta (float) : The parameter to calculate final score.
      box_type (str):  Boundary encoding type 'poly' or 'quad'.
      score_thr (float) : The threshold used to filter out the final
          candidates.
      nms_thr (float) :  The threshold of nms.
  
  Returns:
      boundaries (list[list[float]]): The instance boundary and confidence
          list.
docstr_tok: ["Decoding","predictions","of","FCENet","to","instances",".","Args",":","preds","(","list","(","Tensor",")",")",":","The","head","output","tensors",".","fourier_degree","(","int",")",":","The","maximum","Fourier","transform","degree","k.","num_reconstr_points","(","int",")",":","The","points","number","of","the","polygon","reconstructed","from","predicted","Fourier","coefficients",".","scale","(","int",")",":","The","down-sample","scale","of","the","prediction",".","alpha","(","float",")",":","The","parameter","to","calculate","final","scores",".","Score_","{","final","}","=","(","Score_","{","text","region","}","^","alpha",")","*","(","Score_","{","text","center","region","}","^","beta",")","beta","(","float",")",":","The","parameter","to","calculate","final","score",".","box_type","(","str",")",":","Boundary","encoding","type","'poly","'","or","'quad","'",".","score_thr","(","float",")",":","The","threshold","used","to","filter","out","the","final","candidates",".","nms_thr","(","float",")",":","The","threshold","of","nms",".","Returns",":","boundaries","(","list","[","list","[","float","]","]",")",":","The","instance","boundary","and","confidence","list","."]
code: def fcenet_decode(
      self,
      preds,
      fourier_degree,
      num_reconstr_points,
      scale,
      alpha=1.0,
      beta=2.0,
      box_type="poly",
      score_thr=0.3,
      nms_thr=0.1,
  ):
      """Decoding predictions of FCENet to instances.
  
      Args:
          preds (list(Tensor)): The head output tensors.
          fourier_degree (int): The maximum Fourier transform degree k.
          num_reconstr_points (int): The points number of the polygon
              reconstructed from predicted Fourier coefficients.
          scale (int): The down-sample scale of the prediction.
          alpha (float) : The parameter to calculate final scores. Score_{final}
                  = (Score_{text region} ^ alpha)
                  * (Score_{text center region}^ beta)
          beta (float) : The parameter to calculate final score.
          box_type (str):  Boundary encoding type 'poly' or 'quad'.
          score_thr (float) : The threshold used to filter out the final
              candidates.
          nms_thr (float) :  The threshold of nms.
  
      Returns:
          boundaries (list[list[float]]): The instance boundary and confidence
              list.
      """
      assert isinstance(preds, list)
      assert len(preds) == 2
      assert box_type in ["poly", "quad"]
  
      cls_pred = preds[0][0]
      tr_pred = cls_pred[0:2]
      tcl_pred = cls_pred[2:]
  
      reg_pred = preds[1][0].transpose([1, 2, 0])
      x_pred = reg_pred[:, :, : 2 * fourier_degree + 1]
      y_pred = reg_pred[:, :, 2 * fourier_degree + 1 :]
  
      score_pred = (tr_pred[1] ** alpha) * (tcl_pred[1] ** beta)
      tr_pred_mask = (score_pred) > score_thr
      tr_mask = fill_hole(tr_pred_mask)
  
      tr_contours, _ = cv2.findContours(
          tr_mask.astype(np.uint8),
          cv2.RETR_TREE,
          cv2.CHAIN_APPROX_SIMPLE,
      )  # opencv4
  
      mask = np.zeros_like(tr_mask)
      boundaries = []
      for cont in tr_contours:
          deal_map = mask.copy().astype(np.int8)
          cv2.drawContours(deal_map, [cont], -1, 1, -1)
  
          score_map = score_pred * deal_map
          score_mask = score_map > 0
          xy_text = np.argwhere(score_mask)
          dxy = xy_text[:, 1] + xy_text[:, 0] * 1j
  
          x, y = x_pred[score_mask], y_pred[score_mask]
          c = x + y * 1j
          c[:, fourier_degree] = c[:, fourier_degree] + dxy
          c *= scale
  
          polygons = fourier2poly(c, num_reconstr_points)
          score = score_map[score_mask].reshape(-1, 1)
          polygons = poly_nms(
              np.hstack((polygons, score)).tolist(), nms_thr
          )
  
          boundaries = boundaries + polygons
  
      boundaries = poly_nms(boundaries, nms_thr)
  
      if box_type == "quad":
          new_boundaries = []
          for boundary in boundaries:
              poly = (
                  np.array(boundary[:-1])
                  .reshape(-1, 2)
                  .astype(np.float32)
              )
              score = boundary[-1]
              points = cv2.boxPoints(cv2.minAreaRect(poly))
              points = np.int64(points)
              new_boundaries.append(
                  points.reshape(-1).tolist() + [score]
              )
              boundaries = new_boundaries
  
      return boundaries
  
file_path: PaddleOCR/ppocr/postprocess/fce_postprocess.py
imports: import cv2
  import paddle
  import numpy
  from numpy.fft import ifft
  from ppocr.utils.poly_nms import poly_nms, valid_boundary
label_desc: Use image node_id 6 for calling the FCEPostProcess obj's underlying member method code with example usage: obj.fcenet_decode(preds, fourier_degree, num_reconstr_points, scale, alpha, beta, box_type, score_thr, nms_thr) and returns: boundaries