code: def forward(self, inputs):
      if self.data_format == "NHWC":
          image = inputs["image"]
          inputs["image"] = paddle.transpose(image, [0, 2, 3, 1])
  
      if self.fuse_norm:
          image = inputs["image"]
          self.inputs["image"] = image * self.scale + self.bias
          self.inputs["im_shape"] = inputs["im_shape"]
          self.inputs["scale_factor"] = inputs["scale_factor"]
      else:
          self.inputs = inputs
  
      self.model_arch()
  
      if self.training:
          out = self.get_loss()
      else:
          inputs_list = []
          # multi-scale input
          if not isinstance(inputs, typing.Sequence):
              inputs_list.append(inputs)
          else:
              inputs_list.extend(inputs)
          outs = []
          for inp in inputs_list:
              if self.fuse_norm:
                  self.inputs["image"] = (
                      inp["image"] * self.scale + self.bias
                  )
                  self.inputs["im_shape"] = inp["im_shape"]
                  self.inputs["scale_factor"] = inp["scale_factor"]
              else:
                  self.inputs = inp
              outs.append(self.get_pred())
  
          # multi-scale test
          if len(outs) > 1:
              out = self.merge_multi_scale_predictions(outs)
          else:
              out = outs[0]
      return out
  
file_path: PaddleDetection/ppdet/modeling/architectures/meta_arch.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import numpy
  import paddle
  import paddle.nn
  import typing
  from ppdet.core.workspace import register
  from ppdet.modeling.post_process import nms
label_desc: Use image node_id 3 for calling the BaseArch obj's underlying member method code with example usage: obj.forward(inputs) and returns: out