class_docstr: OksCost.
  
  this function based on: https://github.com/hikvision-research/opera/blob/main/opera/core/bbox/match_costs/match_cost.py
  
  Args:
      num_keypoints (int): number of keypoints
      weight (int | float, optional): loss_weight.
class_docstr_tok: ["OksCost",".","this","function","based","on",":","https",":","\/\/github.com\/hikvision-research\/opera\/blob\/main\/opera\/core\/bbox\/match_costs\/match_cost.py","Args",":","num_keypoints","(","int",")",":","number","of","keypoints","weight","(","int","|","float",",","optional",")",":","loss_weight","."]
docstr: Args:
      kpt_pred (Tensor): Predicted keypoints with unnormalized
          coordinates (x_{i}, y_{i}). Shape [num_query, K, 2].
      gt_keypoints (Tensor): Ground truth keypoints with unnormalized
          coordinates (x_{i}, y_{i}). Shape [num_gt, K, 2].
      valid_kpt_flag (Tensor): valid flag of ground truth keypoints.
          Shape [num_gt, K].
      gt_areas (Tensor): Ground truth mask areas. Shape [num_gt,].
  
  Returns:
      paddle.Tensor: oks_cost value with weight.
docstr_tok: ["Args",":","kpt_pred","(","Tensor",")",":","Predicted","keypoints","with","unnormalized","coordinates","(","x_","{","i","}",",","y_","{","i","}",")",".","Shape","[","num_query",",","K",",","2","]",".","gt_keypoints","(","Tensor",")",":","Ground","truth","keypoints","with","unnormalized","coordinates","(","x_","{","i","}",",","y_","{","i","}",")",".","Shape","[","num_gt",",","K",",","2","]",".","valid_kpt_flag","(","Tensor",")",":","valid","flag","of","ground","truth","keypoints",".","Shape","[","num_gt",",","K","]",".","gt_areas","(","Tensor",")",":","Ground","truth","mask","areas",".","Shape","[","num_gt",",","]",".","Returns",":","paddle.Tensor",":","oks_cost","value","with","weight","."]
code: def __call__(self, kpt_pred, gt_keypoints, valid_kpt_flag, gt_areas):
      """
      Args:
          kpt_pred (Tensor): Predicted keypoints with unnormalized
              coordinates (x_{i}, y_{i}). Shape [num_query, K, 2].
          gt_keypoints (Tensor): Ground truth keypoints with unnormalized
              coordinates (x_{i}, y_{i}). Shape [num_gt, K, 2].
          valid_kpt_flag (Tensor): valid flag of ground truth keypoints.
              Shape [num_gt, K].
          gt_areas (Tensor): Ground truth mask areas. Shape [num_gt,].
  
      Returns:
          paddle.Tensor: oks_cost value with weight.
      """
      sigmas = paddle.to_tensor(self.sigmas)
      variances = (sigmas * 2) ** 2
  
      oks_cost = []
      assert len(gt_keypoints) == len(gt_areas)
      for i in range(len(gt_keypoints)):
          if gt_keypoints[i].size == 0:
              oks_cost.append(kpt_pred.sum() * 0)
          squared_distance = (
              kpt_pred[:, :, 0] - gt_keypoints[i, :, 0].unsqueeze(0)
          ) ** 2 + (
              kpt_pred[:, :, 1] - gt_keypoints[i, :, 1].unsqueeze(0)
          ) ** 2
          vis_flag = (valid_kpt_flag[i] > 0).astype("int")
          vis_ind = vis_flag.nonzero(as_tuple=False)[:, 0]
          num_vis_kpt = vis_ind.shape[0]
          # assert num_vis_kpt > 0
          if num_vis_kpt == 0:
              oks_cost.append(
                  paddle.zeros((squared_distance.shape[0], 1))
              )
              continue
          area = gt_areas[i]
  
          squared_distance0 = squared_distance / (area * variances * 2)
          squared_distance0 = paddle.index_select(
              squared_distance0, vis_ind, axis=1
          )
          squared_distance1 = paddle.exp(-squared_distance0).sum(
              axis=1, keepdim=True
          )
          oks = squared_distance1 / num_vis_kpt
          # The 1 is a constant that doesn't change the matching, so omitted.
          oks_cost.append(-oks)
      oks_cost = paddle.concat(oks_cost, axis=1)
      return oks_cost * self.weight
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import numpy
  import paddle
  import paddle.nn.functional
  from ppdet.core.workspace import register
label_desc: Use image node_id 2 for calling the OksCost obj's underlying member method code with example usage: obj.__call__(kpt_pred, gt_keypoints, valid_kpt_flag, gt_areas) and returns: unknown