docstr: Test negative area filters
docstr_tok: ["Test","negative","area","filters"]
code: def testNegativeArea(self):
      """
      Test negative area filters
      """
      gt_boxes = np.array(
          [
              [10, 10, 20, 3],  # Negative area
              [10, 10, 20, 22],
              [10, 10, 8, 22],  # Negative area
              [10, 10, 20, 22],
          ]
      )
      all_anchors = np.array(
          [
              [11, 13, 12, 16],
              [10, 10, 20, 22],
              [11, 13, 12, 19],
              [7, 13, 34, 30],
          ]
      )
      rpn_cls_prob = np.array(
          [[0.3, 0.7], [0.4, 0.6], [0.9, 0.1], [0.8, 0.2]]
      )
  
      results = self._run_rpn_proposal(
          all_anchors, rpn_cls_prob, self.config, gt_boxes=gt_boxes
      )
  
      # Check we get exactly 2 'proposals' and 2 'unsorted_proposals' because
      # we have 4 gt_boxes, but 2 with negative area (and nms_threshold = 1).
      self.assertEqual(results["proposals"].shape, (2, 4))
  
      self.assertEqual(results["unsorted_proposals"].shape, (2, 4))
  
file_path: luminoth/luminoth/models/fasterrcnn/rpn_proposal_test.py
imports: import numpy
  import tensorflow
  from easydict import EasyDict
  from luminoth.models.fasterrcnn.rpn_proposal import RPNProposal
  from luminoth.utils.bbox_transform_tf import encode, clip_boxes
label_desc: Use image node_id 5 for calling the RPNProposalTest obj's underlying member method code with example usage: obj.testNegativeArea() without return types