code: def _forward(self):
      body_feats = self.backbone(self.inputs)
      if self.neck is not None:
          body_feats = self.neck(body_feats)
      if self.training:
          loss = self.s2anet_head(body_feats, self.inputs)
          return loss
      else:
          head_outs = self.s2anet_head(body_feats)
          # post_process
          bboxes, bbox_num = self.s2anet_head.get_bboxes(head_outs)
          # rescale the prediction back to origin image
          im_shape = self.inputs["im_shape"]
          scale_factor = self.inputs["scale_factor"]
          bboxes = self.s2anet_head.get_pred(
              bboxes, bbox_num, im_shape, scale_factor
          )
          # output
          output = {"bbox": bboxes, "bbox_num": bbox_num}
          return output
  
file_path: PaddleDetection/ppdet/modeling/architectures/s2anet.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import paddle
  from ppdet.core.workspace import register, create
  from .meta_arch import BaseArch
label_desc: Use image node_id 3 for calling the S2ANet obj's underlying member method code with example usage: obj._forward() and returns: loss, output