Esempio n. 1
0
    def testEncodeDecode(self):
        # 1 vs 1 already equal encode and decode.
        proposal = generate_gt_boxes(1, image_size=100)
        gt_boxes = proposal

        deltas = self._encode(proposal, gt_boxes)
        decoded_gt_boxes = self._decode(proposal, deltas)

        self.assertAllEqual(deltas, np.zeros((1, 4)))
        self.assertAllClose(gt_boxes, decoded_gt_boxes)

        # 3 vs 3 already equal encode and decode
        proposal = generate_gt_boxes(3, image_size=100)
        gt_boxes = proposal

        deltas = self._encode(proposal, gt_boxes)
        decoded_gt_boxes = self._decode(proposal, deltas)

        self.assertAllEqual(deltas, np.zeros((3, 4)))
        self.assertAllClose(gt_boxes, decoded_gt_boxes)

        # 3 vs 4 different encode and decode
        proposal = generate_gt_boxes(3, image_size=100)
        gt_boxes = generate_gt_boxes(3, image_size=100)

        deltas = self._encode(proposal, gt_boxes)
        decoded_gt_boxes = self._decode(proposal, deltas)

        self.assertAllEqual(deltas.shape, (3, 4))
        self.assertAllClose(gt_boxes, decoded_gt_boxes)
Esempio n. 2
0
    def testNonZeroForegrounds(self):
        """Tests we never get zero foregrounds.

        We're doing iterations with random gt_boxes and proposals under
        conditions that make it likely we would get zero foregrounds if there
        is a bug in the code. (Very few gt_boxes and a small minibatch_size).
        """
        number_of_iterations = 50
        for _ in range(number_of_iterations):
            im_shape = np.random.randint(low=600,
                                         high=980,
                                         size=2,
                                         dtype=np.int32)
            total_boxes = np.random.randint(low=1, high=4, dtype=np.int32)
            total_proposals = np.random.randint(low=4, high=8, dtype=np.int32)
            # Generate gt_boxes and then add a label.
            gt_boxes = generate_gt_boxes(total_boxes, im_shape)
            gt_boxes_w_label = np.concatenate(
                [gt_boxes, [[self._placeholder_label]] * total_boxes],
                axis=1).astype(np.float32)
            # Generate the proposals and add the batch number.
            proposed_boxes = generate_gt_boxes(total_proposals, im_shape)
            # Run RCNNTarget.
            (proposals_label,
             _) = self._run_rcnn_target(self._shared_model, gt_boxes_w_label,
                                        proposed_boxes.astype(np.float32))
            # Assertion
            foreground_number = proposals_label[proposals_label > 0].shape[0]
            self.assertGreater(foreground_number, 0)
Esempio n. 3
0
 def _get_image_with_boxes(self, image_size, total_boxes):
     image = self._gen_image(*image_size)
     bboxes = generate_gt_boxes(
         total_boxes,
         image_size[:2],
     )
     return image, bboxes
Esempio n. 4
0
    def testNonZeroForegrounds(self):
        """Tests we never get zero foregrounds.

        We're doing iterations with random gt_boxes and proposals under
        conditions that make it likely we would get zero foregrounds if there
        is a bug in the code. (Very few gt_boxes and a small minibatch_size).
        """
        number_of_iterations = 50
        for _ in range(number_of_iterations):
            im_shape = np.random.randint(
                low=600, high=980, size=2, dtype=np.int32
            )
            total_boxes = np.random.randint(
                low=1, high=4, dtype=np.int32
            )
            total_proposals = np.random.randint(
                low=4, high=8, dtype=np.int32
            )
            # Generate gt_boxes and then add a label.
            gt_boxes = generate_gt_boxes(
                total_boxes, im_shape
            )
            gt_boxes_w_label = np.concatenate(
                [gt_boxes, [[self._placeholder_label]] * total_boxes],
                axis=1
            ).astype(np.float32)
            # Generate the proposals and add the batch number.
            proposed_boxes = generate_gt_boxes(
                total_proposals, im_shape
            )
            # Run RCNNTarget.
            (proposals_label, _) = self._run_rcnn_target(
                self._shared_model, gt_boxes_w_label,
                proposed_boxes.astype(np.float32)
            )
            # Assertion
            foreground_number = proposals_label[proposals_label > 0].shape[0]
            self.assertGreater(foreground_number, 0)
Esempio n. 5
0
 def testEncodeDecodeRandomizedValues(self):
     for i in range(1, 2000, 117):
         gt_boxes = generate_gt_boxes(i, image_size=800)
         proposals = generate_gt_boxes(i, image_size=800)
         self._encode_decode(proposals, gt_boxes)
Esempio n. 6
0
 def _get_image_with_boxes(self, image_size, total_boxes):
     image = self._gen_image(*image_size)
     bboxes = generate_gt_boxes(
         total_boxes, image_size[:2],
     )
     return image, bboxes