class_docstr: Region Proposal Network.
code: def __init__(self, cf, conv):
      super(RPN, self).__init__()
      self.dim = conv.dim
  
      self.conv_shared = conv(
          cf.end_filts,
          cf.n_rpn_features,
          ks=3,
          stride=cf.rpn_anchor_stride,
          pad=1,
          relu=cf.relu,
      )
      self.conv_class = conv(
          cf.n_rpn_features,
          2 * len(cf.rpn_anchor_ratios),
          ks=1,
          stride=1,
          relu=None,
      )
      self.conv_bbox = conv(
          cf.n_rpn_features,
          2 * self.dim * len(cf.rpn_anchor_ratios),
          ks=1,
          stride=1,
          relu=None,
      )
  
imports: import utils.model_utils
  import utils.exp_utils
  from cuda_functions.nms_2D.pth_nms import nms_gpu
  from cuda_functions.nms_3D.pth_nms import nms_gpu
  from cuda_functions.roi_align_2D.roi_align.crop_and_resize import CropAndResizeFunction
  from cuda_functions.roi_align_3D.roi_align.crop_and_resize import CropAndResizeFunction
  import numpy
  import torch
  import torch.nn
  import torch.nn.functional
  import torch.utils
label_desc: Use image node_id 1 to create a new RPN object from inherited base classes: nn with example: obj = RPN(cf, conv)