class_docstr: add a RPN head with classification and regression
  通过滑动窗口计算预测目标概率与bbox regression参数
  
  Arguments:
      in_channels: number of channels of the input feature
      num_anchors: number of anchors to be predicted
class_docstr_tok: ["add","a","RPN","head","with","classification","and","regression","\u901a\u8fc7\u6ed1\u52a8\u7a97\u53e3\u8ba1\u7b97\u9884\u6d4b\u76ee\u6807\u6982\u7387\u4e0ebbox","regression\u53c2\u6570","Arguments",":","in_channels",":","number","of","channels","of","the","input","feature","num_anchors",":","number","of","anchors","to","be","predicted"]
code: def __init__(self, in_channels, num_anchors):
      super(RPNHead, self).__init__()
      # 3x3 滑动窗口
      self.conv = nn.Conv2d(
          in_channels, in_channels, kernel_size=3, stride=1, padding=1
      )
      # 计算预测的目标分数（这里的目标只是指前景或者背景）
      self.cls_logits = nn.Conv2d(
          in_channels, num_anchors, kernel_size=1, stride=1
      )
      # 计算预测的目标bbox regression参数
      self.bbox_pred = nn.Conv2d(
          in_channels, num_anchors * 4, kernel_size=1, stride=1
      )
  
      for layer in self.children():
          if isinstance(layer, nn.Conv2d):
              torch.nn.init.normal_(layer.weight, std=0.01)
              torch.nn.init.constant_(layer.bias, 0)
  
imports: from typing import List, Optional, Dict, Tuple
  import torch
  from torch import nn, Tensor
  from torch.nn import functional
  import torchvision
  from .None import det_utils
  from .None import boxes
  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)