class_docstr: FCOSR Assigner, refer to https://arxiv.org/abs/2111.10780 for details
  
  1. compute normalized gaussian distribution score and refined gaussian distribution score
  2. refer to ellipse center sampling, sample points whose normalized gaussian distribution score is greater than threshold
  3. refer to multi-level sampling, assign ground truth to feature map which follows two conditions.
      i). first, the ratio between the short edge of the target and the stride of the feature map is less than 2.
      ii). second, the long edge of minimum bounding rectangle of the target is larger than the acceptance range of feature map
  4. refer to fuzzy sample label assignment, the points satisfying 2 and 3 will be assigned to the ground truth according to gaussian distribution score
code: def get_inside_range_mask(
      self, points, gt_bboxes, gt_rboxes, stride_tensor, regress_range
  ):
      # [1, L, 2] -> [1, 1, L, 2]
      points = points.unsqueeze(0)
      # [B, n, 4] -> [B, n, 1, 4]
      x1y1, x2y2 = gt_bboxes.unsqueeze(2).split(2, axis=-1)
      # [B, n, L, 2]
      lt = points - x1y1
      rb = x2y2 - points
      # [B, n, L, 4]
      ltrb = paddle.concat([lt, rb], axis=-1)
      # [B, n, L, 4] -> [B, n, L]
      inside_mask = paddle.min(ltrb, axis=-1) > EPS
      # regress_range [1, L, 2] -> [1, 1, L, 2]
      regress_range = regress_range.unsqueeze(0)
      # stride_tensor [1, L, 1] -> [1, 1, L]
      stride_tensor = stride_tensor.transpose((0, 2, 1))
      # fcos range
      # [B, n, L, 4] -> [B, n, L]
      ltrb_max = paddle.max(ltrb, axis=-1)
      # [1, 1, L, 2] -> [1, 1, L]
      low, high = regress_range[..., 0], regress_range[..., 1]
      # [B, n, L]
      regress_mask = (ltrb_max >= low) & (ltrb_max <= high)
      # mask for rotated
      # [B, n, 1]
      min_edge = paddle.min(gt_rboxes[..., 2:4], axis=-1, keepdim=True)
      # [B, n , L]
      rotated_mask = ((min_edge / stride_tensor) < 2.0) & (
          ltrb_max > high
      )
      mask = inside_mask & (regress_mask | rotated_mask)
      return mask.cast(paddle.float32)
  
file_path: PaddleDetection/ppdet/modeling/assigners/fcosr_assigner.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import numpy
  import paddle
  import paddle.nn
  import paddle.nn.functional
  from ppdet.core.workspace import register
  from ppdet.modeling.rbox_utils import box2corners, check_points_in_polys, paddle_gather
label_desc: Use image node_id 4 for calling the FCOSRAssigner obj's underlying member method code with example usage: obj.get_inside_range_mask(points, gt_bboxes, gt_rboxes, stride_tensor, regress_range) and returns: mask