code: def grid_points(self, featmap_size, stride=16, device="cuda"):
      feat_h, feat_w = featmap_size
      shift_x = torch.arange(0.0, feat_w, device=device) * stride
      shift_y = torch.arange(0.0, feat_h, device=device) * stride
      shift_xx, shift_yy = self._meshgrid(shift_x, shift_y)
      stride = shift_x.new_full((shift_xx.shape[0],), stride)
      shifts = torch.stack([shift_xx, shift_yy, stride], dim=-1)
      all_points = shifts.to(device)
      return all_points
  
imports: import torch
  from .builder import ANCHOR_GENERATORS
label_desc: Use image node_id 2 for calling the PointGenerator obj's underlying member method code with example usage: obj.grid_points(featmap_size, stride, device) and returns: all_points