code: def post_process(self, head_outs, img_shape, scale_factor):
      pred_scores, pred_bboxes, stride_tensor = head_outs
      pred_scores = pred_scores.transpose([0, 2, 1])
      pred_bboxes *= stride_tensor
      # scale bbox to origin image
      scale_factor = scale_factor.flip(-1).tile([1, 2]).unsqueeze(1)
      pred_bboxes /= scale_factor
      if self.exclude_nms:
          # `exclude_nms=True` just use in benchmark
          return pred_bboxes.sum(), pred_scores.sum()
      else:
          bbox_pred, bbox_num, _ = self.nms(pred_bboxes, pred_scores)
          return bbox_pred, bbox_num
  
imports: import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddle import ParamAttr
  from paddle.regularizer import L2Decay
  from ppdet.core.workspace import register
  import math
  import numpy
  from ..initializer import bias_init_with_prob, constant_
  from ..backbones.csp_darknet import BaseConv, DWConv
  from ..losses import IouLoss
  from ppdet.modeling.assigners.simota_assigner import SimOTAAssigner
  from ppdet.modeling.bbox_utils import bbox_overlaps
  from ppdet.modeling.layers import MultiClassNMS
label_desc: Use image node_id 7 for calling the YOLOXHead obj's underlying member method code with example usage: obj.post_process(head_outs, img_shape, scale_factor) and returns: pred_bboxes,  pred_scores, bbox_pred,  bbox_num