class_docstr: Base class for caffe2-compatible implementation of a meta architecture.
  The forward is traceable and its traced graph can be converted to caffe2
  graph through ONNX.
docstr: Run the forward in caffe2-style. It has to use caffe2-compatible ops
  and the method will be used for tracing.
  
  Args:
      inputs (tuple[Tensor]): inputs defined by :meth:`get_caffe2_input`.
          They will be the inputs of the converted caffe2 graph.
  
  Returns:
      tuple[Tensor]: output tensors. They will be the outputs of the
          converted caffe2 graph.
code: def forward(self, inputs):
      """
      Run the forward in caffe2-style. It has to use caffe2-compatible ops
      and the method will be used for tracing.
  
      Args:
          inputs (tuple[Tensor]): inputs defined by :meth:`get_caffe2_input`.
              They will be the inputs of the converted caffe2 graph.
  
      Returns:
          tuple[Tensor]: output tensors. They will be the outputs of the
              converted caffe2 graph.
      """
      raise NotImplementedError
  
imports: import functools
  import io
  import struct
  import types
  import torch
  from detectron2.modeling import meta_arch
  from detectron2.modeling.box_regression import Box2BoxTransform
  from detectron2.modeling.roi_heads import keypoint_head
  from detectron2.structures import Boxes, ImageList, Instances, RotatedBoxes
  from .c10 import Caffe2Compatible
  from .caffe2_patch import ROIHeadsPatcher, patch_generalized_rcnn
  from .shared import alias, check_set_pb_arg, get_pb_arg_floats, get_pb_arg_valf, get_pb_arg_vali, get_pb_arg_vals, mock_torch_nn_functional_interpolate
label_desc: Use image node_id 4 for calling the Caffe2MetaArch obj's underlying member method code with example usage: obj.forward(inputs) without return types