docstr: 将gt_boxes拼接到proposal后面
  Args:
      proposals: 一个batch中每张图像rpn预测的boxes
      gt_boxes:  一个batch中每张图像对应的真实目标边界框
  
  Returns:
docstr_tok: ["\u5c06gt_boxes\u62fc\u63a5\u5230proposal\u540e\u9762","Args",":","proposals",":","\u4e00\u4e2abatch\u4e2d\u6bcf\u5f20\u56fe\u50cfrpn\u9884\u6d4b\u7684boxes","gt_boxes",":","\u4e00\u4e2abatch\u4e2d\u6bcf\u5f20\u56fe\u50cf\u5bf9\u5e94\u7684\u771f\u5b9e\u76ee\u6807\u8fb9\u754c\u6846","Returns",":"]
code: def add_gt_proposals(self, proposals, gt_boxes):
      # type: (List[Tensor], List[Tensor]) -> List[Tensor]
      """
      将gt_boxes拼接到proposal后面
      Args:
          proposals: 一个batch中每张图像rpn预测的boxes
          gt_boxes:  一个batch中每张图像对应的真实目标边界框
  
      Returns:
  
      """
      proposals = [
          torch.cat((proposal, gt_box))
          for proposal, gt_box in zip(proposals, gt_boxes)
      ]
      return proposals
  
imports: from typing import Optional, List, Dict, Tuple
  import torch
  from torch import Tensor
  import torch.nn.functional
  from torchvision.ops import roi_align
  from .None import det_utils
  from .None import boxes
label_desc: Use image node_id 5 for calling the RoIHeads obj's underlying member method code with example usage: obj.add_gt_proposals(proposals, gt_boxes) and returns: proposals