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)
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)
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
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)
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)