class_docstr: Adds a simple RPN Head with classification and regression heads
  
  Args:
      in_channels (int): number of channels of the input feature
      num_anchors (int): number of anchors to be predicted
      conv_depth (int, optional): number of convolutions
code: def __init__(
      self, in_channels: int, num_anchors: int, conv_depth=1
  ) -> None:
      super().__init__()
      convs = []
      for _ in range(conv_depth):
          convs.append(
              Conv2dNormActivation(
                  in_channels,
                  in_channels,
                  kernel_size=3,
                  norm_layer=None,
              )
          )
      self.conv = nn.Sequential(*convs)
      self.cls_logits = nn.Conv2d(
          in_channels, num_anchors, kernel_size=1, stride=1
      )
      self.bbox_pred = nn.Conv2d(
          in_channels, num_anchors * 4, kernel_size=1, stride=1
      )
  
      for layer in self.modules():
          if isinstance(layer, nn.Conv2d):
              torch.nn.init.normal_(layer.weight, std=0.01)  # type: ignore[arg-type]
              if layer.bias is not None:
                  torch.nn.init.constant_(layer.bias, 0)
  
imports: from typing import Dict, List, Optional, Tuple
  import torch
  from torch import nn, Tensor
  from torch.nn import functional
  from torchvision.ops import boxes, Conv2dNormActivation
  from .None import _utils
  from .anchor_utils import AnchorGenerator
  from .image_list import ImageList
label_desc: Use image node_id 1 to create a new RPNHead object from inherited base classes: nn with example: obj = RPNHead(in_channels, num_anchors, conv_depth)