code: def _point_pooler(self, features, proposal_boxes, point_coords):
      point_features_list = [
          features[k] for k in self.mask_point_in_features
      ]
      point_features_scales = [
          self._feature_scales[k] for k in self.mask_point_in_features
      ]
      # sample image-level features
      (
          point_fine_grained_features,
          _,
      ) = point_sample_fine_grained_features(
          point_features_list,
          point_features_scales,
          proposal_boxes,
          point_coords,
      )
      return point_fine_grained_features
  
imports: import logging
  import math
  import numpy
  from typing import Dict, List, Tuple
  import fvcore.nn.weight_init
  import torch
  from torch import Tensor, nn
  from torch.nn import functional
  from detectron2.config import configurable
  from detectron2.layers import Conv2d, ShapeSpec, cat, interpolate
  from detectron2.modeling import ROI_MASK_HEAD_REGISTRY
  from detectron2.modeling.roi_heads.mask_head import mask_rcnn_inference, mask_rcnn_loss
  from detectron2.structures import Boxes
  from .point_features import generate_regular_grid_point_coords, get_point_coords_wrt_image, get_uncertain_point_coords_on_grid, get_uncertain_point_coords_with_randomness, point_sample, point_sample_fine_grained_features, sample_point_labels
  from .point_head import build_point_head, roi_mask_point_loss
label_desc: Use image node_id 7 for calling the PointRendMaskHead obj's underlying member method code with example usage: obj._point_pooler(features, proposal_boxes, point_coords) and returns: point_fine_grained_features