docs: def forward(self, images, features, targets=None):
          """
          Arguments:
              images (ImageList): images for which we want to compute the predictions
              features (list[Tensor]): features computed from the images that are
                  used for computing the predictions. Each tensor in the list
                  correspond to different feature levels
              targets (list[BoxList): ground-truth boxes present in the image (optional)
  
          Returns:
              boxes (list[BoxList]): the predicted boxes from the RPN, one BoxList per
                  image.
              losses (dict[Tensor]): the losses for the model during training. During
                  testing, it is an empty dict.
          """
          objectness, rpn_box_regression = self.head(features)
          anchors = self.anchor_generator(images, features)
  
          if self.training:
              return self._forward_train(anchors, objectness, rpn_box_regression, targets)
          else:
              return self._forward_test(anchors, objectness, rpn_box_regression)