docstr: Implements a Dense convolution where radius_idx represents
  the indexes of the points in x and pos to be agragated into the new feature
  for each point in new_pos
  
  Arguments:
      x -- Previous features [B, N, C]
      pos -- Previous positions [B, N, 3]
      new_pos  -- Sampled positions [B, npoints, 3]
      radius_idx -- Indexes to group [B, npoints, nsample]
      scale_idx -- Scale index in multiscale convolutional layers
  Returns:
      new_x -- Features after passing trhough the MLP [B, mlp[-1], npoints]
code: def conv(self, x, pos, new_pos, radius_idx, scale_idx):
      """Implements a Dense convolution where radius_idx represents
      the indexes of the points in x and pos to be agragated into the new feature
      for each point in new_pos
  
      Arguments:
          x -- Previous features [B, N, C]
          pos -- Previous positions [B, N, 3]
          new_pos  -- Sampled positions [B, npoints, 3]
          radius_idx -- Indexes to group [B, npoints, nsample]
          scale_idx -- Scale index in multiscale convolutional layers
      Returns:
          new_x -- Features after passing trhough the MLP [B, mlp[-1], npoints]
      """
      assert scale_idx < len(self.mlps)
      new_features = self._prepare_features(
          x, pos, new_pos, radius_idx, scale_idx
      )
      new_features = self.mlps[scale_idx](
          new_features
      )  # (B, mlp[-1], npoint, nsample)
      new_features = F.max_pool2d(
          new_features, kernel_size=[1, new_features.size(3)]
      )  # (B, mlp[-1], npoint, 1)
      new_features = new_features.squeeze(-1)  # (B, mlp[-1], npoint)
      return new_features
  
file_path: torch-points3d/torch_points3d/modules/pointnet2/dense.py
imports: import torch
  import torch.nn
  import torch.nn.functional
  import torch_points_kernels
  from torch_points3d.core.base_conv.dense import *
  from torch_points3d.core.spatial_ops import DenseRadiusNeighbourFinder, DenseFPSSampler
  from torch_points3d.utils.model_building_utils.activation_resolver import get_activation
label_desc: Use image node_id 3 for calling the PointNetMSGDown obj's underlying member method code with example usage: obj.conv(x, pos, new_pos, radius_idx, scale_idx) and returns: new_features