class_docstr: This class computes an assignment between the targets and the
  predictions of the network For efficiency reasons, the targets don't
  include the no_object.
  
  Because of this, in general, there are more predictions than targets. In
  this case, we do a 1-to-k (dynamic) matching of the best predictions, while
  the others are un-matched (and thus treated as non-objects).
docstr: Get the information of which prior is in gt bboxes and gt center
  priors.
docstr_tok: ["Get","the","information","of","which","prior","is","in","gt","bboxes","and","gt","center","priors","."]
code: def get_in_gt_and_in_center_info(
      self, pred_bboxes: Tensor, gt_bboxes: Tensor
  ) -> Tuple[Tensor, Tensor]:
      """Get the information of which prior is in gt bboxes and gt center
      priors."""
      xy_target_gts = bbox_cxcywh_to_xyxy(gt_bboxes)  # (x1, y1, x2, y2)
  
      pred_bboxes_center_x = pred_bboxes[:, 0].unsqueeze(1)
      pred_bboxes_center_y = pred_bboxes[:, 1].unsqueeze(1)
  
      # whether the center of each anchor is inside a gt box
      b_l = pred_bboxes_center_x > xy_target_gts[:, 0].unsqueeze(0)
      b_r = pred_bboxes_center_x < xy_target_gts[:, 2].unsqueeze(0)
      b_t = pred_bboxes_center_y > xy_target_gts[:, 1].unsqueeze(0)
      b_b = pred_bboxes_center_y < xy_target_gts[:, 3].unsqueeze(0)
      # (b_l.long()+b_r.long()+b_t.long()+b_b.long())==4 [300,num_gt] ,
      is_in_boxes = (
          b_l.long() + b_r.long() + b_t.long() + b_b.long()
      ) == 4
      is_in_boxes_all = is_in_boxes.sum(1) > 0  # [num_query]
      # in fixed center
      center_radius = 2.5
      # Modified to self-adapted sampling --- the center size depends
      # on the size of the gt boxes
      # https://github.com/dulucas/UVO_Challenge/blob/main/Track1/detection/mmdet/core/bbox/assigners/rpn_sim_ota_assigner.py#L212    # noqa
      b_l = pred_bboxes_center_x > (
          gt_bboxes[:, 0]
          - (
              center_radius
              * (xy_target_gts[:, 2] - xy_target_gts[:, 0])
          )
      ).unsqueeze(0)
      b_r = pred_bboxes_center_x < (
          gt_bboxes[:, 0]
          + (
              center_radius
              * (xy_target_gts[:, 2] - xy_target_gts[:, 0])
          )
      ).unsqueeze(0)
      b_t = pred_bboxes_center_y > (
          gt_bboxes[:, 1]
          - (
              center_radius
              * (xy_target_gts[:, 3] - xy_target_gts[:, 1])
          )
      ).unsqueeze(0)
      b_b = pred_bboxes_center_y < (
          gt_bboxes[:, 1]
          + (
              center_radius
              * (xy_target_gts[:, 3] - xy_target_gts[:, 1])
          )
      ).unsqueeze(0)
  
      is_in_centers = (
          b_l.long() + b_r.long() + b_t.long() + b_b.long()
      ) == 4
      is_in_centers_all = is_in_centers.sum(1) > 0
  
      is_in_boxes_anchor = is_in_boxes_all | is_in_centers_all
      is_in_boxes_and_center = is_in_boxes & is_in_centers
  
      return is_in_boxes_anchor, is_in_boxes_and_center
  
imports: from typing import List, Tuple, Union
  import torch
  import torch.nn
  from mmengine.config import ConfigDict
  from mmengine.structures import InstanceData
  from torch import Tensor
  from mmdet.registry import MODELS, TASK_UTILS
  from mmdet.structures.bbox import bbox_cxcywh_to_xyxy, bbox_xyxy_to_cxcywh
  from mmdet.utils import ConfigType
label_desc: Use image node_id 4 for calling the DiffusionDetMatcher obj's underlying member method code with example usage: obj.get_in_gt_and_in_center_info(pred_bboxes, gt_bboxes) and returns: is_in_boxes_anchor,  is_in_boxes_and_center