code: def test_nms(self):
      res = VoteNetResults(center=torch.zeros((2, 4, 3)))
  
      box = box_corners_from_param(
          torch.tensor([1, 1, 1]).float(),
          0,
          torch.tensor([0.5, 0.5, 0.5]),
      )
      boxes = box.unsqueeze(0).unsqueeze(0)
      boxes.repeat((res.batch_size, res.num_proposal, 1, 1))
  
      objectness = torch.tensor([[0, 1, 0.5, 0], [1, 0.8, 0, 0]])
      classes = torch.tensor([[0, 0, 0, 0], [2, 1, 1, 1]]).long()
  
      mask = res._nms_mask(boxes, objectness, classes)
      np.testing.assert_equal(
          mask,
          np.asarray(
              [[False, True, False, False], [True, True, False, False]]
          ),
      )
  
imports: import os
  import sys
  import unittest
  import torch
  import numpy
  from torch_points3d.utils.box_utils import box_corners_from_param, box3d_vol, intersection_area, convex_hull_graham, nms_samecls, box3d_iou
  from torch_points3d.modules.VoteNet.votenet_results import VoteNetResults
  from torch_points3d.metrics.box_detection.ap import eval_detection
  from torch_points3d.datasets.object_detection.box_data import BoxData
label_desc: Use image node_id 1 for calling the TestVotenetResults obj's underlying member method code with example usage: obj.test_nms() without return types