class_docstr: GFLHead
  Args:
      conv_feat (object): Instance of 'FCOSFeat'
      num_classes (int): Number of classes
      fpn_stride (list): The stride of each FPN Layer
      prior_prob (float): Used to set the bias init for the class prediction layer
      loss_class (object): Instance of QualityFocalLoss.
      loss_dfl (object): Instance of DistributionFocalLoss.
      loss_bbox (object): Instance of bbox loss.
      reg_max: Max value of integral set :math: `{0, ..., reg_max}`
              n QFL setting. Default: 16.
code: def forward(self, fpn_feats):
      assert len(fpn_feats) == len(
          self.fpn_stride
      ), "The size of fpn_feats is not equal to size of fpn_stride"
      cls_logits_list = []
      bboxes_reg_list = []
      for stride, scale_reg, fpn_feat in zip(
          self.fpn_stride, self.scales_regs, fpn_feats
      ):
          conv_cls_feat, conv_reg_feat = self.conv_feat(fpn_feat)
          cls_score = self.gfl_head_cls(conv_cls_feat)
          bbox_pred = scale_reg(self.gfl_head_reg(conv_reg_feat))
          if self.dgqp_module:
              quality_score = self.dgqp_module(bbox_pred)
              cls_score = F.sigmoid(cls_score) * quality_score
          if not self.training:
              cls_score = F.sigmoid(cls_score.transpose([0, 2, 3, 1]))
              bbox_pred = bbox_pred.transpose([0, 2, 3, 1])
              b, cell_h, cell_w, _ = paddle.shape(cls_score)
              y, x = self.get_single_level_center_point(
                  [cell_h, cell_w], stride, cell_offset=self.cell_offset
              )
              center_points = paddle.stack([x, y], axis=-1)
              cls_score = cls_score.reshape(
                  [b, -1, self.cls_out_channels]
              )
              bbox_pred = self.distribution_project(bbox_pred) * stride
              bbox_pred = bbox_pred.reshape([-1, cell_h * cell_w, 4])
  
              # NOTE: If keep_ratio=False and image shape value that
              # multiples of 32, distance2bbox not set max_shapes parameter
              # to speed up model prediction. If need to set max_shapes,
              # please use inputs['im_shape'].
              bbox_pred = batch_distance2bbox(
                  center_points, bbox_pred, max_shapes=None
              )
  
          cls_logits_list.append(cls_score)
          bboxes_reg_list.append(bbox_pred)
  
      return (cls_logits_list, bboxes_reg_list)
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import math
  import numpy
  import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddle import ParamAttr
  from paddle.nn.initializer import Normal, Constant
  from ppdet.core.workspace import register
  from ppdet.modeling.bbox_utils import distance2bbox, bbox2distance, batch_distance2bbox
  from ppdet.data.transform.atss_assigner import bbox_overlaps
label_desc: Use image node_id 2 for calling the GFLHead obj's underlying member method code with example usage: obj.forward(fpn_feats) and returns: cls_logits_list,  bboxes_reg_list