class_docstr: Region Proposal Network Head.
  
  Parameters
  ----------
  channels : int
      Channel number used in convolutional layers.
  anchor_depth : int
      Each FPN stage have one scale and three ratios,
      we can compute anchor_depth = len(scale) \times len(ratios)
code: def __init__(self, channels, anchor_depth, **kwargs):
      super(RPNHead, self).__init__(**kwargs)
      weight_initializer = mx.init.Normal(0.01)
      with self.name_scope():
          self.conv1 = nn.HybridSequential()
          self.conv1.add(
              nn.Conv2D(
                  channels,
                  3,
                  1,
                  1,
                  weight_initializer=weight_initializer,
              ),
              nn.Activation("relu"),
          )
          # use sigmoid instead of softmax, reduce channel numbers
          # Note : that is to say, if use softmax here,
          # then the self.score will anchor_depth*2 output channel
          self.score = nn.Conv2D(
              anchor_depth,
              1,
              1,
              0,
              weight_initializer=weight_initializer,
          )
          self.loc = nn.Conv2D(
              anchor_depth * 4,
              1,
              1,
              0,
              weight_initializer=weight_initializer,
          )
  
file_path: gluon-cv/gluoncv/model_zoo/rcnn/rpn/rpn.py
imports: from __future__ import absolute_import
  import mxnet
  from mxnet import autograd
  from mxnet import gluon
  from mxnet.gluon import nn
  from .anchor import RPNAnchorGenerator
  from .proposal import RPNProposal
label_desc: Use image node_id 1 to create a new RPNHead object from inherited base classes: gluon with example: obj = RPNHead(channels, anchor_depth)