docs: def subsample(self, proposals, targets):
          """
          This method performs the positive/negative sampling, and return
          the sampled proposals.
          Note: this function keeps a state.
  
          Arguments:
              proposals (list[BoxList])
              targets (list[BoxList])
          """
  
          labels, regression_targets = self.prepare_targets(proposals, targets)
          sampled_pos_inds, sampled_neg_inds = self.fg_bg_sampler(labels)
  
          proposals = list(proposals)
          # add corresponding label and regression_targets information to the bounding boxes
          for labels_per_image, regression_targets_per_image, proposals_per_image in zip(
              labels, regression_targets, proposals
          ):
              proposals_per_image.add_field("labels", labels_per_image)
              proposals_per_image.add_field(
                  "regression_targets", regression_targets_per_image
              )
  
          # distributed sampled proposals, that were obtained on all feature maps
          # concatenated via the fg_bg_sampler, into individual feature map levels
          for img_idx, (pos_inds_img, neg_inds_img) in enumerate(
              zip(sampled_pos_inds, sampled_neg_inds)
          ):
              img_sampled_inds = torch.nonzero(pos_inds_img | neg_inds_img).squeeze(1)
              proposals_per_image = proposals[img_idx][img_sampled_inds]
              proposals[img_idx] = proposals_per_image
  
          self._proposals = proposals
          return proposals