Пример #1
0
    def test_create_target_assigner(self):
        """Tests that named constructor gives working target assigners.

    TODO(rathodv): Make this test more general.
    """
        corners = [[0.0, 0.0, 1.0, 1.0]]
        groundtruth = box_list.BoxList(tf.constant(corners))

        priors = box_list.BoxList(tf.constant(corners))
        multibox_ta = (targetassigner.create_target_assigner('Multibox',
                                                             stage='proposal'))
        multibox_ta.assign(priors, groundtruth)
        # No tests on output, as that may vary arbitrarily as new target assigners
        # are added. As long as it is constructed correctly and runs without errors,
        # tests on the individual assigners cover correctness of the assignments.

        anchors = box_list.BoxList(tf.constant(corners))
        faster_rcnn_proposals_ta = (targetassigner.create_target_assigner(
            'FasterRCNN', stage='proposal'))
        faster_rcnn_proposals_ta.assign(anchors, groundtruth)

        fast_rcnn_ta = (targetassigner.create_target_assigner('FastRCNN'))
        fast_rcnn_ta.assign(anchors, groundtruth)

        faster_rcnn_detection_ta = (targetassigner.create_target_assigner(
            'FasterRCNN', stage='detection'))
        faster_rcnn_detection_ta.assign(anchors, groundtruth)

        with self.assertRaises(ValueError):
            targetassigner.create_target_assigner('InvalidDetector',
                                                  stage='invalid_stage')
Пример #2
0
    def test_prune_non_overlapping_boxes(self):
        corners1 = tf.constant([[4.0, 3.0, 7.0, 5.0], [5.0, 6.0, 10.0, 7.0]])
        corners2 = tf.constant([[3.0, 4.0, 6.0, 8.0], [14.0, 14.0, 15.0, 15.0],
                                [0.0, 0.0, 20.0, 20.0]])
        boxes1 = box_list.BoxList(corners1)
        boxes2 = box_list.BoxList(corners2)
        minoverlap = 0.5

        exp_output_1 = boxes1
        exp_output_2 = box_list.BoxList(tf.constant(0.0, shape=[0, 4]))
        output_1, keep_indices_1 = box_list_ops.prune_non_overlapping_boxes(
            boxes1, boxes2, min_overlap=minoverlap)
        output_2, keep_indices_2 = box_list_ops.prune_non_overlapping_boxes(
            boxes2, boxes1, min_overlap=minoverlap)
        with self.test_session() as sess:
            (output_1_, keep_indices_1_, output_2_, keep_indices_2_,
             exp_output_1_, exp_output_2_) = sess.run([
                 output_1.get(), keep_indices_1,
                 output_2.get(), keep_indices_2,
                 exp_output_1.get(),
                 exp_output_2.get()
             ])
            self.assertAllClose(output_1_, exp_output_1_)
            self.assertAllClose(output_2_, exp_output_2_)
            self.assertAllEqual(keep_indices_1_, [0, 1])
            self.assertAllEqual(keep_indices_2_, [])
Пример #3
0
 def testHardMiningWithSingleLossType(self):
     location_losses = tf.constant([[100, 90, 80, 0], [0, 1, 2, 3]],
                                   tf.float32)
     cls_losses = tf.constant([[0, 10, 50, 110], [9, 6, 3, 0]], tf.float32)
     box_corners = tf.constant([[0.1, 0.1, 0.9, 0.9], [0.1, 0.1, 0.9, 0.9],
                                [0.1, 0.1, 0.9, 0.9], [0.1, 0.1, 0.9, 0.9]],
                               tf.float32)
     decoded_boxlist_list = []
     decoded_boxlist_list.append(box_list.BoxList(box_corners))
     decoded_boxlist_list.append(box_list.BoxList(box_corners))
     # Uses only location loss to select hard examples
     loss_op = losses.HardExampleMiner(num_hard_examples=1,
                                       iou_threshold=0.0,
                                       loss_type='loc',
                                       cls_loss_weight=1,
                                       loc_loss_weight=1)
     (loc_loss, cls_loss) = loss_op(location_losses, cls_losses,
                                    decoded_boxlist_list)
     exp_loc_loss = 100 + 3
     exp_cls_loss = 0 + 0
     with self.test_session() as sess:
         loc_loss_output = sess.run(loc_loss)
         self.assertAllClose(loc_loss_output, exp_loc_loss)
         cls_loss_output = sess.run(cls_loss)
         self.assertAllClose(cls_loss_output, exp_cls_loss)
Пример #4
0
    def test_raises_error_on_incompatible_groundtruth_boxes_and_labels(self):
        similarity_calc = region_similarity_calculator.NegSqDistSimilarity()
        matcher = bipartite_matcher.GreedyBipartiteMatcher()
        box_coder = mean_stddev_box_coder.MeanStddevBoxCoder()
        unmatched_class_label = tf.constant([1, 0, 0, 0, 0, 0, 0], tf.float32)
        target_assigner = targetassigner.TargetAssigner(
            similarity_calc, matcher, box_coder)

        prior_means = tf.constant([[0.0, 0.0, 0.5, 0.5], [0.5, 0.5, 1.0, 0.8],
                                   [0, 0.5, .5, 1.0], [.75, 0, 1.0, .25]])
        priors = box_list.BoxList(prior_means)

        box_corners = [[0.0, 0.0, 0.5, 0.5], [0.0, 0.0, 0.5, 0.8],
                       [0.5, 0.5, 0.9, 0.9], [.75, 0, .95, .27]]
        boxes = box_list.BoxList(tf.constant(box_corners))

        groundtruth_labels = tf.constant(
            [[0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 0],
             [0, 0, 0, 1, 0, 0, 0]], tf.float32)
        with self.assertRaisesRegexp(ValueError, 'Unequal shapes'):
            target_assigner.assign(priors,
                                   boxes,
                                   groundtruth_labels,
                                   unmatched_class_label=unmatched_class_label,
                                   num_valid_rows=3)
Пример #5
0
 def test_concatenate_with_missing_fields(self):
     corners1 = tf.constant([[0, 0, 0, 0], [1, 2, 3, 4]], tf.float32)
     scores1 = tf.constant([1.0, 2.1])
     corners2 = tf.constant([[0, 3, 1, 6], [2, 4, 3, 8]], tf.float32)
     boxlist1 = box_list.BoxList(corners1)
     boxlist1.add_field('scores', scores1)
     boxlist2 = box_list.BoxList(corners2)
     with self.assertRaises(ValueError):
         box_list_ops.concatenate([boxlist1, boxlist2])
Пример #6
0
 def test_matched_iou(self):
     corners1 = tf.constant([[4.0, 3.0, 7.0, 5.0], [5.0, 6.0, 10.0, 7.0]])
     corners2 = tf.constant([[3.0, 4.0, 6.0, 8.0], [14.0, 14.0, 15.0,
                                                    15.0]])
     exp_output = [2.0 / 16.0, 0]
     boxes1 = box_list.BoxList(corners1)
     boxes2 = box_list.BoxList(corners2)
     iou = box_list_ops.matched_iou(boxes1, boxes2)
     with self.test_session() as sess:
         iou_output = sess.run(iou)
         self.assertAllClose(iou_output, exp_output)
Пример #7
0
    def test_box_list_invalid_inputs(self):
        data0 = tf.constant([[[0, 0, 1, 1], [3, 4, 5, 5]]], tf.float32)
        data1 = tf.constant([[0, 0, 1], [1, 1, 2], [3, 4, 5]], tf.float32)
        data2 = tf.constant([[0, 0, 1], [1, 1, 2], [3, 4, 5]], tf.int32)

        with self.assertRaises(ValueError):
            _ = box_list.BoxList(data0)
        with self.assertRaises(ValueError):
            _ = box_list.BoxList(data1)
        with self.assertRaises(ValueError):
            _ = box_list.BoxList(data2)
Пример #8
0
 def test_gather_with_invalid_inputs(self):
     corners = tf.constant(
         [4 * [0.0], 4 * [1.0], 4 * [2.0], 4 * [3.0], 4 * [4.0]])
     indices_float32 = tf.constant([0, 2, 4], tf.float32)
     boxes = box_list.BoxList(corners)
     with self.assertRaises(ValueError):
         _ = box_list_ops.gather(boxes, indices_float32)
     indices_2d = tf.constant([[0, 2, 4]], tf.int32)
     boxes = box_list.BoxList(corners)
     with self.assertRaises(ValueError):
         _ = box_list_ops.gather(boxes, indices_2d)
Пример #9
0
 def test_very_small_Width_nan_after_encoding(self):
     boxes = [[10.0, 10.0, 10.0000001, 20.0]]
     anchors = [[15.0, 12.0, 30.0, 18.0]]
     expected_rel_codes = [[-0.833333, 0., -21.128731, 0.510826]]
     boxes = box_list.BoxList(tf.constant(boxes))
     anchors = box_list.BoxList(tf.constant(anchors))
     coder = faster_rcnn_box_coder.FasterRcnnBoxCoder()
     rel_codes = coder.encode(boxes, anchors)
     with self.test_session() as sess:
         rel_codes_out, = sess.run([rel_codes])
         self.assertAllClose(rel_codes_out, expected_rel_codes)
Пример #10
0
 def test_pairwise_distances(self):
     corners1 = tf.constant([[0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 0.0, 2.0]])
     corners2 = tf.constant([[3.0, 4.0, 1.0, 0.0], [-4.0, 0.0, 0.0, 3.0],
                             [0.0, 0.0, 0.0, 0.0]])
     exp_output = [[26, 25, 0], [18, 27, 6]]
     boxes1 = box_list.BoxList(corners1)
     boxes2 = box_list.BoxList(corners2)
     dist_matrix = box_list_ops.sq_dist(boxes1, boxes2)
     with self.test_session() as sess:
         dist_output = sess.run(dist_matrix)
         self.assertAllClose(dist_output, exp_output)
Пример #11
0
 def test_intersection(self):
     corners1 = tf.constant([[4.0, 3.0, 7.0, 5.0], [5.0, 6.0, 10.0, 7.0]])
     corners2 = tf.constant([[3.0, 4.0, 6.0, 8.0], [14.0, 14.0, 15.0, 15.0],
                             [0.0, 0.0, 20.0, 20.0]])
     exp_output = [[2.0, 0.0, 6.0], [1.0, 0.0, 5.0]]
     boxes1 = box_list.BoxList(corners1)
     boxes2 = box_list.BoxList(corners2)
     intersect = box_list_ops.intersection(boxes1, boxes2)
     with self.test_session() as sess:
         intersect_output = sess.run(intersect)
         self.assertAllClose(intersect_output, exp_output)
Пример #12
0
    def test_box_voting_fails_with_negative_scores(self):
        candidates = box_list.BoxList(
            tf.constant([[0.1, 0.1, 0.4, 0.4]], tf.float32))
        pool = box_list.BoxList(tf.constant([[0.1, 0.1, 0.4, 0.4]],
                                            tf.float32))
        pool.add_field('scores', tf.constant([-0.2]))
        averaged_boxes = box_list_ops.box_voting(candidates, pool)

        with self.test_session() as sess:
            with self.assertRaisesOpError('Scores must be non negative'):
                sess.run([averaged_boxes.get()])
Пример #13
0
    def testGetCorrectRelativeCodesAfterEncoding(self):
        box_corners = [[0.0, 0.0, 0.5, 0.5], [0.0, 0.0, 0.5, 0.5]]
        boxes = box_list.BoxList(tf.constant(box_corners))
        expected_rel_codes = [[0.0, 0.0, 0.0, 0.0], [-5.0, -5.0, -5.0, -3.0]]
        prior_means = tf.constant([[0.0, 0.0, 0.5, 0.5], [0.5, 0.5, 1.0, 0.8]])
        priors = box_list.BoxList(prior_means)

        coder = mean_stddev_box_coder.MeanStddevBoxCoder(stddev=0.1)
        rel_codes = coder.encode(boxes, priors)
        with self.test_session() as sess:
            rel_codes_out = sess.run(rel_codes)
            self.assertAllClose(rel_codes_out, expected_rel_codes)
Пример #14
0
 def test_get_correct_relative_codes_after_encoding(self):
     boxes = [[10.0, 10.0, 20.0, 15.0], [0.2, 0.1, 0.5, 0.4]]
     anchors = [[15.0, 12.0, 30.0, 18.0], [0.1, 0.0, 0.7, 0.9]]
     expected_rel_codes = [[-0.5, -0.416666, -0.405465, -0.182321],
                           [-0.083333, -0.222222, -0.693147, -1.098612]]
     boxes = box_list.BoxList(tf.constant(boxes))
     anchors = box_list.BoxList(tf.constant(anchors))
     coder = faster_rcnn_box_coder.FasterRcnnBoxCoder()
     rel_codes = coder.encode(boxes, anchors)
     with self.test_session() as sess:
         rel_codes_out, = sess.run([rel_codes])
         self.assertAllClose(rel_codes_out, expected_rel_codes)
 def test_correct_relative_codes_with_small_width(self):
     boxes = [[10.0, 10.0, 10.0000001, 20.0]]
     anchors = [[15.0, 12.0, 30.0, 18.0]]
     scale_factors = None
     expected_rel_codes = [[-1.317616, 0., -20.670586]]
     boxes = box_list.BoxList(tf.constant(boxes))
     anchors = box_list.BoxList(tf.constant(anchors))
     coder = square_box_coder.SquareBoxCoder(scale_factors=scale_factors)
     rel_codes = coder.encode(boxes, anchors)
     with self.test_session() as sess:
         (rel_codes_out, ) = sess.run([rel_codes])
         self.assertAllClose(rel_codes_out, expected_rel_codes)
Пример #16
0
 def test_get_correct_pairwise_similarity_based_on_iou(self):
   corners1 = tf.constant([[4.0, 3.0, 7.0, 5.0], [5.0, 6.0, 10.0, 7.0]])
   corners2 = tf.constant([[3.0, 4.0, 6.0, 8.0], [14.0, 14.0, 15.0, 15.0],
                           [0.0, 0.0, 20.0, 20.0]])
   exp_output = [[2.0 / 16.0, 0, 6.0 / 400.0], [1.0 / 16.0, 0.0, 5.0 / 400.0]]
   boxes1 = box_list.BoxList(corners1)
   boxes2 = box_list.BoxList(corners2)
   iou_similarity_calculator = region_similarity_calculator.IouSimilarity()
   iou_similarity = iou_similarity_calculator.compare(boxes1, boxes2)
   with self.test_session() as sess:
     iou_output = sess.run(iou_similarity)
     self.assertAllClose(iou_output, exp_output)
Пример #17
0
    def test_box_voting_fails_when_unmatched(self):
        candidates = box_list.BoxList(
            tf.constant([[0.1, 0.1, 0.4, 0.4]], tf.float32))
        pool = box_list.BoxList(tf.constant([[0.6, 0.6, 0.8, 0.8]],
                                            tf.float32))
        pool.add_field('scores', tf.constant([0.2]))
        averaged_boxes = box_list_ops.box_voting(candidates, pool)

        with self.test_session() as sess:
            with self.assertRaisesOpError(
                    'Each box in selected_boxes must match '
                    'with at least one box in pool_boxes.'):
                sess.run([averaged_boxes.get()])
Пример #18
0
 def graph_fn(anchor_means, groundtruth_boxlist1, groundtruth_boxlist2):
     box_list1 = box_list.BoxList(groundtruth_boxlist1)
     box_list2 = box_list.BoxList(groundtruth_boxlist2)
     gt_box_batch = [box_list1, box_list2]
     gt_class_targets = [None, None]
     anchors_boxlist = box_list.BoxList(anchor_means)
     agnostic_target_assigner = self._get_target_assigner()
     (cls_targets, cls_weights, reg_targets, reg_weights,
      _) = targetassigner.batch_assign_targets(agnostic_target_assigner,
                                               anchors_boxlist,
                                               gt_box_batch,
                                               gt_class_targets)
     return (cls_targets, cls_weights, reg_targets, reg_weights)
 def test_correct_relative_codes_with_non_default_scale(self):
     boxes = [[10.0, 10.0, 20.0, 15.0], [0.2, 0.1, 0.5, 0.4]]
     anchors = [[15.0, 12.0, 30.0, 18.0], [0.1, 0.0, 0.7, 0.9]]
     scale_factors = [2, 3, 4]
     expected_rel_codes = [[-1.581139, -0.790569, -1.175573],
                           [-0.136083, -0.816497, -3.583519]]
     boxes = box_list.BoxList(tf.constant(boxes))
     anchors = box_list.BoxList(tf.constant(anchors))
     coder = square_box_coder.SquareBoxCoder(scale_factors=scale_factors)
     rel_codes = coder.encode(boxes, anchors)
     with self.test_session() as sess:
         (rel_codes_out, ) = sess.run([rel_codes])
         self.assertAllClose(rel_codes_out, expected_rel_codes)
Пример #20
0
 def graph_fn(anchor_means, groundtruth_box_corners):
     similarity_calc = region_similarity_calculator.IouSimilarity()
     matcher = argmax_matcher.ArgMaxMatcher(matched_threshold=0.5,
                                            unmatched_threshold=0.3)
     box_coder = mean_stddev_box_coder.MeanStddevBoxCoder(stddev=0.1)
     target_assigner = targetassigner.TargetAssigner(
         similarity_calc, matcher, box_coder)
     anchors_boxlist = box_list.BoxList(anchor_means)
     groundtruth_boxlist = box_list.BoxList(groundtruth_box_corners)
     result = target_assigner.assign(anchors_boxlist,
                                     groundtruth_boxlist,
                                     unmatched_class_label=None)
     (cls_targets, cls_weights, reg_targets, reg_weights, _) = result
     return (cls_targets, cls_weights, reg_targets, reg_weights)
    def test_correct_relative_codes_with_default_scale(self):
        boxes = [[10.0, 10.0, 20.0, 15.0], [0.2, 0.1, 0.5, 0.4]]
        anchors = [[15.0, 12.0, 30.0, 18.0], [0.1, 0.0, 0.7, 0.9]]
        scale_factors = None
        expected_rel_codes = [[-0.790569, -0.263523, -0.293893],
                              [-0.068041, -0.272166, -0.89588]]

        boxes = box_list.BoxList(tf.constant(boxes))
        anchors = box_list.BoxList(tf.constant(anchors))
        coder = square_box_coder.SquareBoxCoder(scale_factors=scale_factors)
        rel_codes = coder.encode(boxes, anchors)
        with self.test_session() as sess:
            (rel_codes_out, ) = sess.run([rel_codes])
            self.assertAllClose(rel_codes_out, expected_rel_codes)
Пример #22
0
 def test_get_correct_pairwise_similarity_based_on_squared_distances(self):
   corners1 = tf.constant([[0.0, 0.0, 0.0, 0.0],
                           [1.0, 1.0, 0.0, 2.0]])
   corners2 = tf.constant([[3.0, 4.0, 1.0, 0.0],
                           [-4.0, 0.0, 0.0, 3.0],
                           [0.0, 0.0, 0.0, 0.0]])
   exp_output = [[-26, -25, 0], [-18, -27, -6]]
   boxes1 = box_list.BoxList(corners1)
   boxes2 = box_list.BoxList(corners2)
   dist_similarity_calc = region_similarity_calculator.NegSqDistSimilarity()
   dist_similarity = dist_similarity_calc.compare(boxes1, boxes2)
   with self.test_session() as sess:
     dist_output = sess.run(dist_similarity)
     self.assertAllClose(dist_output, exp_output)
Пример #23
0
    def test_change_coordinate_frame(self):
        corners = tf.constant([[0.25, 0.5, 0.75, 0.75], [0.5, 0.0, 1.0, 1.0]])
        window = tf.constant([0.25, 0.25, 0.75, 0.75])
        boxes = box_list.BoxList(corners)

        expected_corners = tf.constant([[0, 0.5, 1.0, 1.0],
                                        [0.5, -0.5, 1.5, 1.5]])
        expected_boxes = box_list.BoxList(expected_corners)
        output = box_list_ops.change_coordinate_frame(boxes, window)

        with self.test_session() as sess:
            output_, expected_boxes_ = sess.run(
                [output.get(), expected_boxes.get()])
            self.assertAllClose(output_, expected_boxes_)
Пример #24
0
 def test_get_correct_relative_codes_after_encoding_with_scaling(self):
     boxes = [[10.0, 10.0, 20.0, 15.0], [0.2, 0.1, 0.5, 0.4]]
     anchors = [[15.0, 12.0, 30.0, 18.0], [0.1, 0.0, 0.7, 0.9]]
     scale_factors = [2, 3, 4, 5]
     expected_rel_codes = [[-1., -1.25, -1.62186, -0.911608],
                           [-0.166667, -0.666667, -2.772588, -5.493062]]
     boxes = box_list.BoxList(tf.constant(boxes))
     anchors = box_list.BoxList(tf.constant(anchors))
     coder = faster_rcnn_box_coder.FasterRcnnBoxCoder(
         scale_factors=scale_factors)
     rel_codes = coder.encode(boxes, anchors)
     with self.test_session() as sess:
         rel_codes_out, = sess.run([rel_codes])
         self.assertAllClose(rel_codes_out, expected_rel_codes)
Пример #25
0
 def test_ioa(self):
     corners1 = tf.constant([[4.0, 3.0, 7.0, 5.0], [5.0, 6.0, 10.0, 7.0]])
     corners2 = tf.constant([[3.0, 4.0, 6.0, 8.0], [14.0, 14.0, 15.0, 15.0],
                             [0.0, 0.0, 20.0, 20.0]])
     exp_output_1 = [[2.0 / 12.0, 0, 6.0 / 400.0],
                     [1.0 / 12.0, 0.0, 5.0 / 400.0]]
     exp_output_2 = [[2.0 / 6.0, 1.0 / 5.0], [0, 0], [6.0 / 6.0, 5.0 / 5.0]]
     boxes1 = box_list.BoxList(corners1)
     boxes2 = box_list.BoxList(corners2)
     ioa_1 = box_list_ops.ioa(boxes1, boxes2)
     ioa_2 = box_list_ops.ioa(boxes2, boxes1)
     with self.test_session() as sess:
         ioa_output_1, ioa_output_2 = sess.run([ioa_1, ioa_2])
         self.assertAllClose(ioa_output_1, exp_output_1)
         self.assertAllClose(ioa_output_2, exp_output_2)
Пример #26
0
        def graph_fn(anchor_means, groundtruth_box_corners, gt_class_targets):
            groundtruth_boxlist = box_list.BoxList(groundtruth_box_corners)
            gt_box_batch = [groundtruth_boxlist]
            gt_class_targets_batch = [gt_class_targets]
            anchors_boxlist = box_list.BoxList(anchor_means)

            multiclass_target_assigner = self._get_target_assigner()
            num_classes = 3
            unmatched_class_label = tf.constant([1] + num_classes * [0],
                                                tf.float32)
            (cls_targets, cls_weights, reg_targets, reg_weights,
             _) = targetassigner.batch_assign_targets(
                 multiclass_target_assigner, anchors_boxlist, gt_box_batch,
                 gt_class_targets_batch, unmatched_class_label)
            return (cls_targets, cls_weights, reg_targets, reg_weights)
Пример #27
0
 def test_copy_extra_fields(self):
     corners = tf.constant([[0, 0, 1, 1], [0, 0.1, 1, 1.1]], tf.float32)
     boxes = box_list.BoxList(corners)
     tensor1 = np.array([[1], [4]])
     tensor2 = np.array([[1, 1], [2, 2]])
     boxes.add_field('tensor1', tf.constant(tensor1))
     boxes.add_field('tensor2', tf.constant(tensor2))
     new_boxes = box_list.BoxList(
         tf.constant([[0, 0, 10, 10], [1, 3, 5, 5]], tf.float32))
     new_boxes = box_list_ops._copy_extra_fields(new_boxes, boxes)
     with self.test_session() as sess:
         self.assertAllClose(tensor1,
                             sess.run(new_boxes.get_field('tensor1')))
         self.assertAllClose(tensor2,
                             sess.run(new_boxes.get_field('tensor2')))
 def test_very_small_width_nan_after_encoding(self):
     boxes = [[10., 10., 10.0000001, 20.]]
     keypoints = [[[10., 10.], [10.0000001, 20.]]]
     anchors = [[15., 12., 30., 18.]]
     expected_rel_codes = [[
         -0.833333, 0., -21.128731, 0.510826, -0.833333, -0.833333,
         -0.833333, 0.833333
     ]]
     boxes = box_list.BoxList(tf.constant(boxes))
     boxes.add_field(fields.BoxListFields.keypoints, tf.constant(keypoints))
     anchors = box_list.BoxList(tf.constant(anchors))
     coder = keypoint_box_coder.KeypointBoxCoder(2)
     rel_codes = coder.encode(boxes, anchors)
     with self.test_session() as sess:
         rel_codes_out, = sess.run([rel_codes])
         self.assertAllClose(rel_codes_out, expected_rel_codes)
Пример #29
0
 def _generate(self, feature_map_shape_list, im_height, im_width):
   return [box_list.BoxList(
       tf.constant([[0, 0, .5, .5],
                    [0, .5, .5, 1],
                    [.5, 0, 1, .5],
                    [1., 1., 1.5, 1.5]  # Anchor that is outside clip_window.
                   ], tf.float32))]
Пример #30
0
    def test_sort_by_field_descending_order(self):
        exp_corners = [[0, 0, 1, 1], [0, 0.1, 1, 1.1], [0, -0.1, 1, 0.9],
                       [0, 10, 1, 11], [0, 10.1, 1, 11.1], [0, 100, 1, 101]]
        exp_scores = [.95, .9, .75, .6, .5, .3]
        exp_weights = [.2, .45, .6, .75, .8, .92]
        shuffle = [2, 4, 0, 5, 1, 3]

        corners = tf.constant([exp_corners[i] for i in shuffle], tf.float32)
        boxes = box_list.BoxList(corners)
        boxes.add_field(
            'scores', tf.constant([exp_scores[i] for i in shuffle],
                                  tf.float32))
        boxes.add_field(
            'weights',
            tf.constant([exp_weights[i] for i in shuffle], tf.float32))

        sort_by_score = box_list_ops.sort_by_field(boxes, 'scores')
        with self.test_session() as sess:
            corners_out, scores_out, weights_out = sess.run([
                sort_by_score.get(),
                sort_by_score.get_field('scores'),
                sort_by_score.get_field('weights')
            ])
            self.assertAllClose(corners_out, exp_corners)
            self.assertAllClose(scores_out, exp_scores)
            self.assertAllClose(weights_out, exp_weights)