code: def _forward(self):
      body_feats = self.backbone(self.inputs)
      neck_feats = self.neck(body_feats)
  
      if self.training:
          return self.head(neck_feats, self.inputs)
      else:
          head_outs = self.head(neck_feats)
          bbox, bbox_num, nms_keep_idx = self.head.post_process(
              head_outs,
              self.inputs["im_shape"],
              self.inputs["scale_factor"],
          )
  
          if self.use_extra_data:
              extra_data = (
                  {}
              )  # record the bbox output before nms, such like scores and nms_keep_idx
              """extra_data:{
                              'scores': predict scores,
                              'nms_keep_idx': bbox index before nms,
                             }
                             """
              preds_logits = self.head.decode_cls_logits(head_outs[0])
              preds_scores = F.sigmoid(preds_logits)
              extra_data["logits"] = preds_logits
              extra_data["scores"] = preds_scores
              extra_data[
                  "nms_keep_idx"
              ] = nms_keep_idx  # bbox index before nms
              return {
                  "bbox": bbox,
                  "bbox_num": bbox_num,
                  "extra_data": extra_data,
              }
          else:
              return {"bbox": bbox, "bbox_num": bbox_num}
  
file_path: PaddleDetection/ppdet/modeling/architectures/retinanet.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from ppdet.core.workspace import register, create
  from .meta_arch import BaseArch
  import paddle
  import paddle.nn.functional
label_desc: Use image node_id 3 for calling the RetinaNet obj's underlying member method code with example usage: obj._forward() and returns: self, dict, dict