class_docstr: A class to process & decode inputs/outputs of a fastrcnn classification+regression head.
docstr: Args:
      proposals: BoxProposals
      box_logits: Nx#classx4 or Nx1x4, the output of the head
      label_logits: Nx#class, the output of the head
      gt_boxes: Mx4
      bbox_regression_weights: a 4 element tensor
docstr_tok: ["Args",":","proposals",":","BoxProposals","box_logits",":","Nx","#","classx4","or","Nx1x4",",","the","output","of","the","head","label_logits",":","Nx","#","class",",","the","output","of","the","head","gt_boxes",":","Mx4","bbox_regression_weights",":","a","4","element","tensor"]
code: def __init__(
      self,
      proposals,
      box_logits,
      label_logits,
      gt_boxes,
      bbox_regression_weights,
  ):
      """
      Args:
          proposals: BoxProposals
          box_logits: Nx#classx4 or Nx1x4, the output of the head
          label_logits: Nx#class, the output of the head
          gt_boxes: Mx4
          bbox_regression_weights: a 4 element tensor
      """
      for k, v in locals().items():
          if k != "self" and v is not None:
              setattr(self, k, v)
      self._bbox_class_agnostic = int(box_logits.shape[1]) == 1
      self._num_classes = box_logits.shape[1]
  
imports: import tensorflow
  from tensorpack import tfv1
  from tensorpack.models import Conv2D, FullyConnected, layer_register
  from tensorpack.tfutils.argscope import argscope
  from tensorpack.tfutils.scope_utils import under_name_scope
  from tensorpack.tfutils.summary import add_moving_summary
  from tensorpack.utils.argtools import memoized_method
  from config import config
  from utils.box_ops import pairwise_iou
  from .model_box import decode_bbox_target, encode_bbox_target
  from .backbone import GroupNorm
label_desc: Use image node_id 1 to create a new FastRCNNHead object from inherited base classes: object with example: obj = FastRCNNHead(proposals, box_logits, label_logits, gt_boxes, bbox_regression_weights)