Пример #1
0
    def test_mini_batch(self):
        with self.cached_session():
            # create simple FilterDetections layer
            layer = layers.FilterDetections()

            # create input with batch_size=2
            boxes = np.array(
                [
                    [
                        [0, 0, 10, 10],  # this will be suppressed
                        [0, 0, 10, 10],
                    ],
                    [
                        [100, 100, 150, 150],
                        [100, 100, 150, 150],  # this will be suppressed
                    ],
                ],
                dtype=K.floatx())
            boxes = K.constant(boxes)

            classification = np.array(
                [
                    [
                        [0, 0.9],  # this will be suppressed
                        [0, 1],
                    ],
                    [
                        [1, 0],
                        [0.9, 0],  # this will be suppressed
                    ],
                ],
                dtype=K.floatx())
            classification = K.constant(classification)

            # compute output
            actual_boxes, actual_scores, actual_labels = layer.call(
                [boxes, classification])
            actual_boxes = K.get_value(actual_boxes)
            actual_scores = K.get_value(actual_scores)
            actual_labels = K.get_value(actual_labels)

            # define expected output
            expected_boxes = -1 * np.ones((2, 300, 4), dtype=K.floatx())
            expected_boxes[0, 0, :] = [0, 0, 10, 10]
            expected_boxes[1, 0, :] = [100, 100, 150, 150]

            expected_scores = -1 * np.ones((2, 300), dtype=K.floatx())
            expected_scores[0, 0] = 1
            expected_scores[1, 0] = 1

            expected_labels = -1 * np.ones((2, 300), dtype=K.floatx())
            expected_labels[0, 0] = 1
            expected_labels[1, 0] = 0

            # assert actual and expected are equal
            self.assertAllEqual(actual_boxes, expected_boxes)
            self.assertAllEqual(actual_scores, expected_scores)
            self.assertAllEqual(actual_labels, expected_labels)
Пример #2
0
    def test_simple_3d(self):
        with self.test_session():
            # create simple FilterDetections layer
            layer = layers.FilterDetections()

            # create simple input
            boxes = np.array(
                [[
                    [0, 0, 10, 10],
                    [0, 0, 10, 10],  # this will be suppressed
                ]],
                dtype=K.floatx())
            boxes = np.expand_dims(boxes, 0)
            boxes = K.constant(boxes)

            classification = np.array(
                [[
                    [0, 0.9],  # this will be suppressed
                    [0, 1],
                ]],
                dtype=K.floatx())
            classification = np.expand_dims(classification, 0)
            classification = K.constant(classification)

            # compute output
            actual_boxes, actual_scores, actual_labels = layer.call(
                [boxes, classification])
            actual_boxes = K.get_value(actual_boxes)
            actual_scores = K.get_value(actual_scores)
            actual_labels = K.get_value(actual_labels)

            # define expected output
            expected_boxes = -1 * np.ones((1, 1, 300, 4), dtype=K.floatx())
            expected_boxes[0, 0, 0, :] = [0, 0, 10, 10]

            expected_scores = -1 * np.ones((1, 1, 300), dtype=K.floatx())
            expected_scores[0, 0, 0] = 1

            expected_labels = -1 * np.ones((1, 1, 300), dtype=K.floatx())
            expected_labels[0, 0, 0] = 1

            # assert actual and expected are equal
            self.assertAllEqual(actual_boxes, expected_boxes)
            self.assertAllEqual(actual_scores, expected_scores)
            self.assertAllEqual(actual_labels, expected_labels)
Пример #3
0
    def test_simple_with_other(self):
        with self.test_session():
            # create simple FilterDetections layer
            layer = layers.FilterDetections()

            # create simple input
            boxes = np.array(
                [[
                    [0, 0, 10, 10],
                    [0, 0, 10, 10],  # this will be suppressed
                ]],
                dtype=K.floatx())
            boxes = K.constant(boxes)

            classification = np.array(
                [[
                    [0, 0.9],  # this will be suppressed
                    [0, 1],
                ]],
                dtype=K.floatx())
            classification = K.constant(classification)

            other = []
            other.append(
                np.array(
                    [[
                        [0, 1234],  # this will be suppressed
                        [0, 5678],
                    ]],
                    dtype=K.floatx()))
            other.append(
                np.array(
                    [[
                        5678,  # this will be suppressed
                        1234,
                    ]],
                    dtype=K.floatx()))
            other = [K.constant(o) for o in other]

            # compute output
            actual = layer.call([boxes, classification] + other)
            actual_boxes = K.get_value(actual[0])
            actual_scores = K.get_value(actual[1])
            actual_labels = K.get_value(actual[2])
            actual_other = [K.get_value(a) for a in actual[3:]]

            # define expected output
            expected_boxes = -1 * np.ones((1, 300, 4), dtype=K.floatx())
            expected_boxes[0, 0, :] = [0, 0, 10, 10]

            expected_scores = -1 * np.ones((1, 300), dtype=K.floatx())
            expected_scores[0, 0] = 1

            expected_labels = -1 * np.ones((1, 300), dtype=K.floatx())
            expected_labels[0, 0] = 1

            expected_other = []
            expected_other.append(-1 * np.ones((1, 300, 2), dtype=K.floatx()))
            expected_other[-1][0, 0, :] = [0, 5678]
            expected_other.append(-1 * np.ones((1, 300), dtype=K.floatx()))
            expected_other[-1][0, 0] = 1234

            # assert actual and expected are equal
            self.assertAllEqual(actual_boxes, expected_boxes)
            self.assertAllEqual(actual_scores, expected_scores)
            self.assertAllEqual(actual_labels, expected_labels)

            for a, e in zip(actual_other, expected_other):
                self.assertAllEqual(a, e)