Exemplo n.º 1
0
  def test_matches_expected(self):
    pred_classes = test_utils.read_segmentation_with_rgb_color_map(
        'team_pred_class.png', _CLASS_COLOR_MAP)
    pred_instances = test_utils.read_test_image(
        'team_pred_instance.png', mode='L')

    instance_class_map = {
        0: 0,
        47: 1,
        97: 1,
        133: 1,
        150: 1,
        174: 1,
        198: 2,
        215: 1,
        244: 1,
        255: 1,
    }
    gt_instances, gt_classes = test_utils.panoptic_segmentation_with_class_map(
        'team_gt_instance.png', instance_class_map)

    pc = parsing_covering.ParsingCovering(
        num_categories=3,
        ignored_label=0,
        max_instances_per_category=256,
        offset=256 * 256,
        normalize_by_image_size=False)
    pc.compare_and_accumulate(gt_classes, gt_instances, pred_classes,
                              pred_instances)
    np.testing.assert_array_almost_equal(
        pc.weighted_iou_per_class, [0.0, 39864.14634, 3136], decimal=4)
    np.testing.assert_array_equal(pc.gt_area_per_class, [0.0, 56870, 5800])
    np.testing.assert_array_almost_equal(
        pc.result_per_category(), [0.0, 0.70097, 0.54069], decimal=4)
    self.assertAlmostEqual(pc.result(), 0.6208296732)
Exemplo n.º 2
0
  def test_reads_segmentation_with_color_map(self):
    rgb_to_semantic_label = {(0, 0, 0): 0, (0, 0, 255): 1, (255, 0, 0): 23}
    labels = test_utils.read_segmentation_with_rgb_color_map(
        'team_pred_class.png', rgb_to_semantic_label)

    input_image = test_utils.read_test_image('team_pred_class.png')
    np.testing.assert_array_equal(
        labels == 0,
        np.logical_and(input_image[:, :, 0] == 0, input_image[:, :, 2] == 0))
    np.testing.assert_array_equal(labels == 1, input_image[:, :, 2] == 255)
    np.testing.assert_array_equal(labels == 23, input_image[:, :, 0] == 255)
Exemplo n.º 3
0
  def test_reads_segmentation_with_color_map(self):
    rgb_to_semantic_label = {(0, 0, 0): 0, (0, 0, 255): 1, (255, 0, 0): 23}
    labels = test_utils.read_segmentation_with_rgb_color_map(
        'team_pred_class.png', rgb_to_semantic_label)

    input_image = test_utils.read_test_image('team_pred_class.png')
    np.testing.assert_array_equal(
        labels == 0,
        np.logical_and(input_image[:, :, 0] == 0, input_image[:, :, 2] == 0))
    np.testing.assert_array_equal(labels == 1, input_image[:, :, 2] == 255)
    np.testing.assert_array_equal(labels == 23, input_image[:, :, 0] == 255)
Exemplo n.º 4
0
    def test_matches_expected_normalize_by_size(self):
        pred_classes = test_utils.read_segmentation_with_rgb_color_map(
            'team_pred_class.png', _CLASS_COLOR_MAP)
        pred_instances = test_utils.read_test_image('team_pred_instance.png',
                                                    mode='L')

        instance_class_map = {
            0: 0,
            47: 1,
            97: 1,
            133: 1,
            150: 1,
            174: 1,
            198: 2,
            215: 1,
            244: 1,
            255: 1,
        }
        gt_instances, gt_classes = test_utils.panoptic_segmentation_with_class_map(
            'team_gt_instance.png', instance_class_map)

        pc = parsing_covering.ParsingCovering(num_categories=3,
                                              ignored_label=0,
                                              max_instances_per_category=256,
                                              offset=256 * 256,
                                              normalize_by_image_size=True)
        pc.compare_and_accumulate(gt_classes, gt_instances, pred_classes,
                                  pred_instances)
        np.testing.assert_array_almost_equal(
            pc.weighted_iou_per_class, [0.0, 0.5002088756, 0.03935002196],
            decimal=4)
        np.testing.assert_array_almost_equal(
            pc.gt_area_per_class, [0.0, 0.7135955832, 0.07277746408],
            decimal=4)
        # Note that the per-category and overall PCs are identical to those without
        # normalization in the previous test, because we only have a single image.
        np.testing.assert_array_almost_equal(pc.result_per_category(),
                                             [0.0, 0.70097, 0.54069],
                                             decimal=4)
        self.assertAlmostEqual(pc.result(), 0.6208296732)
Exemplo n.º 5
0
  def test_matches_expected_normalize_by_size(self):
    pred_classes = test_utils.read_segmentation_with_rgb_color_map(
        'team_pred_class.png', _CLASS_COLOR_MAP)
    pred_instances = test_utils.read_test_image(
        'team_pred_instance.png', mode='L')

    instance_class_map = {
        0: 0,
        47: 1,
        97: 1,
        133: 1,
        150: 1,
        174: 1,
        198: 2,
        215: 1,
        244: 1,
        255: 1,
    }
    gt_instances, gt_classes = test_utils.panoptic_segmentation_with_class_map(
        'team_gt_instance.png', instance_class_map)

    pc = parsing_covering.ParsingCovering(
        num_categories=3,
        ignored_label=0,
        max_instances_per_category=256,
        offset=256 * 256,
        normalize_by_image_size=True)
    pc.compare_and_accumulate(gt_classes, gt_instances, pred_classes,
                              pred_instances)
    np.testing.assert_array_almost_equal(
        pc.weighted_iou_per_class, [0.0, 0.5002088756, 0.03935002196],
        decimal=4)
    np.testing.assert_array_almost_equal(
        pc.gt_area_per_class, [0.0, 0.7135955832, 0.07277746408], decimal=4)
    # Note that the per-category and overall PCs are identical to those without
    # normalization in the previous test, because we only have a single image.
    np.testing.assert_array_almost_equal(
        pc.result_per_category(), [0.0, 0.70097, 0.54069], decimal=4)
    self.assertAlmostEqual(pc.result(), 0.6208296732)
Exemplo n.º 6
0
    def test_matches_expected(self):
        pred_classes = test_utils.read_segmentation_with_rgb_color_map(
            'team_pred_class.png', _CLASS_COLOR_MAP)
        pred_instances = test_utils.read_test_image('team_pred_instance.png',
                                                    mode='L')

        instance_class_map = {
            0: 0,
            47: 1,
            97: 1,
            133: 1,
            150: 1,
            174: 1,
            198: 2,
            215: 1,
            244: 1,
            255: 1,
        }
        gt_instances, gt_classes = test_utils.panoptic_segmentation_with_class_map(
            'team_gt_instance.png', instance_class_map)

        pc = parsing_covering.ParsingCovering(num_categories=3,
                                              ignored_label=0,
                                              max_instances_per_category=256,
                                              offset=256 * 256,
                                              normalize_by_image_size=False)
        pc.compare_and_accumulate(gt_classes, gt_instances, pred_classes,
                                  pred_instances)
        np.testing.assert_array_almost_equal(pc.weighted_iou_per_class,
                                             [0.0, 39864.14634, 3136],
                                             decimal=4)
        np.testing.assert_array_equal(pc.gt_area_per_class, [0.0, 56870, 5800])
        np.testing.assert_array_almost_equal(pc.result_per_category(),
                                             [0.0, 0.70097, 0.54069],
                                             decimal=4)
        self.assertAlmostEqual(pc.result(), 0.6208296732)
Exemplo n.º 7
0
    def test_matches_expected(self):
        pred_classes = test_utils.read_segmentation_with_rgb_color_map(
            'team_pred_class.png', _CLASS_COLOR_MAP)
        pred_instances = test_utils.read_test_image('team_pred_instance.png',
                                                    mode='L')

        instance_class_map = {
            0: 0,
            47: 1,
            97: 1,
            133: 1,
            150: 1,
            174: 1,
            198: 2,
            215: 1,
            244: 1,
            255: 1,
        }
        gt_instances, gt_classes = test_utils.panoptic_segmentation_with_class_map(
            'team_gt_instance.png', instance_class_map)

        pq = panoptic_quality.PanopticQuality(num_categories=3,
                                              ignored_label=0,
                                              max_instances_per_category=256,
                                              offset=256 * 256)
        pq.compare_and_accumulate(gt_classes, gt_instances, pred_classes,
                                  pred_instances)
        np.testing.assert_array_almost_equal(pq.iou_per_class,
                                             [2.06104, 5.26827, 0.54069],
                                             decimal=4)
        np.testing.assert_array_equal(pq.tp_per_class, [1, 7, 1])
        np.testing.assert_array_equal(pq.fn_per_class, [0, 1, 0])
        np.testing.assert_array_equal(pq.fp_per_class, [0, 0, 0])
        np.testing.assert_array_almost_equal(pq.result_per_category(),
                                             [2.061038, 0.702436, 0.54069])
        self.assertAlmostEqual(pq.result(), 0.62156287)
Exemplo n.º 8
0
  def test_matches_expected(self):
    pred_classes = test_utils.read_segmentation_with_rgb_color_map(
        'team_pred_class.png', _CLASS_COLOR_MAP)
    pred_instances = test_utils.read_test_image(
        'team_pred_instance.png', mode='L')

    instance_class_map = {
        0: 0,
        47: 1,
        97: 1,
        133: 1,
        150: 1,
        174: 1,
        198: 2,
        215: 1,
        244: 1,
        255: 1,
    }
    gt_instances, gt_classes = test_utils.panoptic_segmentation_with_class_map(
        'team_gt_instance.png', instance_class_map)

    pq = panoptic_quality.PanopticQuality(
        num_categories=3,
        ignored_label=0,
        max_instances_per_category=256,
        offset=256 * 256)
    pq.compare_and_accumulate(gt_classes, gt_instances, pred_classes,
                              pred_instances)
    np.testing.assert_array_almost_equal(
        pq.iou_per_class, [2.06104, 5.26827, 0.54069], decimal=4)
    np.testing.assert_array_equal(pq.tp_per_class, [1, 7, 1])
    np.testing.assert_array_equal(pq.fn_per_class, [0, 1, 0])
    np.testing.assert_array_equal(pq.fp_per_class, [0, 0, 0])
    np.testing.assert_array_almost_equal(pq.result_per_category(),
                                         [2.061038, 0.702436, 0.54069])
    self.assertAlmostEqual(pq.result(), 0.62156287)
Exemplo n.º 9
0
  def test_streaming_metric_on_single_image(self):
    offset = 256 * 256

    instance_class_map = {
        0: 0,
        47: 1,
        97: 1,
        133: 1,
        150: 1,
        174: 1,
        198: 2,
        215: 1,
        244: 1,
        255: 1,
    }
    gt_instances, gt_classes = test_utils.panoptic_segmentation_with_class_map(
        'team_gt_instance.png', instance_class_map)

    pred_classes = test_utils.read_segmentation_with_rgb_color_map(
        'team_pred_class.png', _CLASS_COLOR_MAP)
    pred_instances = test_utils.read_test_image(
        'team_pred_instance.png', mode='L')

    gt_class_tensor = tf.placeholder(tf.uint16)
    gt_instance_tensor = tf.placeholder(tf.uint16)
    pred_class_tensor = tf.placeholder(tf.uint16)
    pred_instance_tensor = tf.placeholder(tf.uint16)
    qualities, update_pq = streaming_metrics.streaming_panoptic_quality(
        gt_class_tensor,
        gt_instance_tensor,
        pred_class_tensor,
        pred_instance_tensor,
        num_classes=3,
        max_instances_per_category=256,
        ignored_label=0,
        offset=offset)
    pq, sq, rq, total_tp, total_fn, total_fp = tf.unstack(qualities, 6, axis=0)
    feed_dict = {
        gt_class_tensor: gt_classes,
        gt_instance_tensor: gt_instances,
        pred_class_tensor: pred_classes,
        pred_instance_tensor: pred_instances
    }

    with self.session() as sess:
      sess.run(tf.local_variables_initializer())
      sess.run(update_pq, feed_dict=feed_dict)
      (result_pq, result_sq, result_rq, result_total_tp, result_total_fn,
       result_total_fp) = sess.run([pq, sq, rq, total_tp, total_fn, total_fp],
                                   feed_dict=feed_dict)
    np.testing.assert_array_almost_equal(
        result_pq, [2.06104, 0.7024, 0.54069], decimal=4)
    np.testing.assert_array_almost_equal(
        result_sq, [2.06104, 0.7526, 0.54069], decimal=4)
    np.testing.assert_array_almost_equal(result_rq, [1., 0.9333, 1.], decimal=4)
    np.testing.assert_array_almost_equal(
        result_total_tp, [1., 7., 1.], decimal=4)
    np.testing.assert_array_almost_equal(
        result_total_fn, [0., 1., 0.], decimal=4)
    np.testing.assert_array_almost_equal(
        result_total_fp, [0., 0., 0.], decimal=4)
Exemplo n.º 10
0
  def test_streaming_metric_on_multiple_images_normalize_by_size(self):
    """Tests streaming parsing covering metric with image size normalization."""
    num_classes = 7
    offset = 256 * 256

    bird_gt_instance_class_map = {
        92: 5,
        176: 3,
        255: 4,
    }
    cat_gt_instance_class_map = {
        0: 0,
        255: 6,
    }
    team_gt_instance_class_map = {
        0: 0,
        47: 1,
        97: 1,
        133: 1,
        150: 1,
        174: 1,
        198: 2,
        215: 1,
        244: 1,
        255: 1,
    }
    test_image = collections.namedtuple(
        'TestImage',
        ['gt_class_map', 'gt_path', 'pred_inst_path', 'pred_class_path'])
    test_images = [
        test_image(bird_gt_instance_class_map, 'bird_gt.png',
                   'bird_pred_instance.png', 'bird_pred_class.png'),
        test_image(cat_gt_instance_class_map, 'cat_gt.png',
                   'cat_pred_instance.png', 'cat_pred_class.png'),
        test_image(team_gt_instance_class_map, 'team_gt_instance.png',
                   'team_pred_instance.png', 'team_pred_class.png'),
    ]

    gt_classes = []
    gt_instances = []
    pred_classes = []
    pred_instances = []
    for test_image in test_images:
      (image_gt_instances,
       image_gt_classes) = test_utils.panoptic_segmentation_with_class_map(
           test_image.gt_path, test_image.gt_class_map)
      gt_classes.append(image_gt_classes)
      gt_instances.append(image_gt_instances)

      pred_instances.append(
          test_utils.read_test_image(test_image.pred_inst_path, mode='L'))
      pred_classes.append(
          test_utils.read_segmentation_with_rgb_color_map(
              test_image.pred_class_path, _CLASS_COLOR_MAP))

    gt_class_tensor = tf.placeholder(tf.uint16)
    gt_instance_tensor = tf.placeholder(tf.uint16)
    pred_class_tensor = tf.placeholder(tf.uint16)
    pred_instance_tensor = tf.placeholder(tf.uint16)
    coverings, update_ops = streaming_metrics.streaming_parsing_covering(
        gt_class_tensor,
        gt_instance_tensor,
        pred_class_tensor,
        pred_instance_tensor,
        num_classes=num_classes,
        max_instances_per_category=256,
        ignored_label=0,
        offset=offset,
        normalize_by_image_size=True)
    (per_class_coverings, per_class_weighted_ious, per_class_gt_areas) = (
        tf.unstack(coverings, num=3, axis=0))

    with self.session() as sess:
      sess.run(tf.local_variables_initializer())
      for pred_class, pred_instance, gt_class, gt_instance in six.moves.zip(
          pred_classes, pred_instances, gt_classes, gt_instances):
        sess.run(
            update_ops,
            feed_dict={
                gt_class_tensor: gt_class,
                gt_instance_tensor: gt_instance,
                pred_class_tensor: pred_class,
                pred_instance_tensor: pred_instance
            })
        (result_per_class_coverings, result_per_class_weighted_ious,
         result_per_class_gt_areas) = (
             sess.run(
                 [
                     per_class_coverings,
                     per_class_weighted_ious,
                     per_class_gt_areas,
                 ],
                 feed_dict={
                     gt_class_tensor: 0,
                     gt_instance_tensor: 0,
                     pred_class_tensor: 0,
                     pred_instance_tensor: 0
                 }))

    np.testing.assert_array_almost_equal(
        result_per_class_coverings, [
            0.0,
            0.7009696912,
            0.5406896552,
            0.7453531599,
            0.8576779026,
            0.9910687881,
            0.7741046032,
        ],
        decimal=4)
    np.testing.assert_array_almost_equal(
        result_per_class_weighted_ious, [
            0.0,
            0.5002088756,
            0.03935002196,
            0.03086105851,
            0.06547211033,
            0.8743792686,
            0.2549565051,
        ],
        decimal=4)
    np.testing.assert_array_almost_equal(
        result_per_class_gt_areas, [
            0.0,
            0.7135955832,
            0.07277746408,
            0.04140461216,
            0.07633647799,
            0.8822589099,
            0.3293566581,
        ],
        decimal=4)
Exemplo n.º 11
0
  def test_streaming_metric_on_multiple_images(self):
    """Tests streaming parsing covering metric."""
    num_classes = 7
    offset = 256 * 256

    bird_gt_instance_class_map = {
        92: 5,
        176: 3,
        255: 4,
    }
    cat_gt_instance_class_map = {
        0: 0,
        255: 6,
    }
    team_gt_instance_class_map = {
        0: 0,
        47: 1,
        97: 1,
        133: 1,
        150: 1,
        174: 1,
        198: 2,
        215: 1,
        244: 1,
        255: 1,
    }
    test_image = collections.namedtuple(
        'TestImage',
        ['gt_class_map', 'gt_path', 'pred_inst_path', 'pred_class_path'])
    test_images = [
        test_image(bird_gt_instance_class_map, 'bird_gt.png',
                   'bird_pred_instance.png', 'bird_pred_class.png'),
        test_image(cat_gt_instance_class_map, 'cat_gt.png',
                   'cat_pred_instance.png', 'cat_pred_class.png'),
        test_image(team_gt_instance_class_map, 'team_gt_instance.png',
                   'team_pred_instance.png', 'team_pred_class.png'),
    ]

    gt_classes = []
    gt_instances = []
    pred_classes = []
    pred_instances = []
    for test_image in test_images:
      (image_gt_instances,
       image_gt_classes) = test_utils.panoptic_segmentation_with_class_map(
           test_image.gt_path, test_image.gt_class_map)
      gt_classes.append(image_gt_classes)
      gt_instances.append(image_gt_instances)

      pred_instances.append(
          test_utils.read_test_image(test_image.pred_inst_path, mode='L'))
      pred_classes.append(
          test_utils.read_segmentation_with_rgb_color_map(
              test_image.pred_class_path, _CLASS_COLOR_MAP))

    gt_class_tensor = tf.placeholder(tf.uint16)
    gt_instance_tensor = tf.placeholder(tf.uint16)
    pred_class_tensor = tf.placeholder(tf.uint16)
    pred_instance_tensor = tf.placeholder(tf.uint16)
    coverings, update_ops = streaming_metrics.streaming_parsing_covering(
        gt_class_tensor,
        gt_instance_tensor,
        pred_class_tensor,
        pred_instance_tensor,
        num_classes=num_classes,
        max_instances_per_category=256,
        ignored_label=0,
        offset=offset,
        normalize_by_image_size=False)
    (per_class_coverings, per_class_weighted_ious, per_class_gt_areas) = (
        tf.unstack(coverings, num=3, axis=0))

    with self.session() as sess:
      sess.run(tf.local_variables_initializer())
      for pred_class, pred_instance, gt_class, gt_instance in six.moves.zip(
          pred_classes, pred_instances, gt_classes, gt_instances):
        sess.run(
            update_ops,
            feed_dict={
                gt_class_tensor: gt_class,
                gt_instance_tensor: gt_instance,
                pred_class_tensor: pred_class,
                pred_instance_tensor: pred_instance
            })
        (result_per_class_coverings, result_per_class_weighted_ious,
         result_per_class_gt_areas) = (
             sess.run(
                 [
                     per_class_coverings,
                     per_class_weighted_ious,
                     per_class_gt_areas,
                 ],
                 feed_dict={
                     gt_class_tensor: 0,
                     gt_instance_tensor: 0,
                     pred_class_tensor: 0,
                     pred_instance_tensor: 0
                 }))

    np.testing.assert_array_almost_equal(
        result_per_class_coverings, [
            0.0,
            0.7009696912,
            0.5406896552,
            0.7453531599,
            0.8576779026,
            0.9910687881,
            0.7741046032,
        ],
        decimal=4)
    np.testing.assert_array_almost_equal(
        result_per_class_weighted_ious, [
            0.0,
            39864.14634,
            3136,
            1177.657993,
            2498.41573,
            33366.31289,
            26671,
        ],
        decimal=4)
    np.testing.assert_array_equal(result_per_class_gt_areas, [
        0.0,
        56870,
        5800,
        1580,
        2913,
        33667,
        34454,
    ])
Exemplo n.º 12
0
  def test_streaming_metric_on_single_image(self):
    offset = 256 * 256

    instance_class_map = {
        0: 0,
        47: 1,
        97: 1,
        133: 1,
        150: 1,
        174: 1,
        198: 2,
        215: 1,
        244: 1,
        255: 1,
    }
    gt_instances, gt_classes = test_utils.panoptic_segmentation_with_class_map(
        'team_gt_instance.png', instance_class_map)

    pred_classes = test_utils.read_segmentation_with_rgb_color_map(
        'team_pred_class.png', _CLASS_COLOR_MAP)
    pred_instances = test_utils.read_test_image(
        'team_pred_instance.png', mode='L')

    gt_class_tensor = tf.placeholder(tf.uint16)
    gt_instance_tensor = tf.placeholder(tf.uint16)
    pred_class_tensor = tf.placeholder(tf.uint16)
    pred_instance_tensor = tf.placeholder(tf.uint16)
    coverings, update_ops = streaming_metrics.streaming_parsing_covering(
        gt_class_tensor,
        gt_instance_tensor,
        pred_class_tensor,
        pred_instance_tensor,
        num_classes=3,
        max_instances_per_category=256,
        ignored_label=0,
        offset=offset,
        normalize_by_image_size=False)
    (per_class_coverings, per_class_weighted_ious, per_class_gt_areas) = (
        tf.unstack(coverings, num=3, axis=0))
    feed_dict = {
        gt_class_tensor: gt_classes,
        gt_instance_tensor: gt_instances,
        pred_class_tensor: pred_classes,
        pred_instance_tensor: pred_instances
    }

    with self.session() as sess:
      sess.run(tf.local_variables_initializer())
      sess.run(update_ops, feed_dict=feed_dict)
      (result_per_class_coverings, result_per_class_weighted_ious,
       result_per_class_gt_areas) = (
           sess.run([
               per_class_coverings,
               per_class_weighted_ious,
               per_class_gt_areas,
           ],
                    feed_dict=feed_dict))

    np.testing.assert_array_almost_equal(
        result_per_class_coverings, [0.0, 0.7009696912, 0.5406896552],
        decimal=4)
    np.testing.assert_array_almost_equal(
        result_per_class_weighted_ious, [0.0, 39864.14634, 3136], decimal=4)
    np.testing.assert_array_equal(result_per_class_gt_areas, [0, 56870, 5800])
Exemplo n.º 13
0
  def test_streaming_metric_on_multiple_images(self):
    num_classes = 7
    offset = 256 * 256

    bird_gt_instance_class_map = {
        92: 5,
        176: 3,
        255: 4,
    }
    cat_gt_instance_class_map = {
        0: 0,
        255: 6,
    }
    team_gt_instance_class_map = {
        0: 0,
        47: 1,
        97: 1,
        133: 1,
        150: 1,
        174: 1,
        198: 2,
        215: 1,
        244: 1,
        255: 1,
    }
    test_image = collections.namedtuple(
        'TestImage',
        ['gt_class_map', 'gt_path', 'pred_inst_path', 'pred_class_path'])
    test_images = [
        test_image(bird_gt_instance_class_map, 'bird_gt.png',
                   'bird_pred_instance.png', 'bird_pred_class.png'),
        test_image(cat_gt_instance_class_map, 'cat_gt.png',
                   'cat_pred_instance.png', 'cat_pred_class.png'),
        test_image(team_gt_instance_class_map, 'team_gt_instance.png',
                   'team_pred_instance.png', 'team_pred_class.png'),
    ]

    gt_classes = []
    gt_instances = []
    pred_classes = []
    pred_instances = []
    for test_image in test_images:
      (image_gt_instances,
       image_gt_classes) = test_utils.panoptic_segmentation_with_class_map(
           test_image.gt_path, test_image.gt_class_map)
      gt_classes.append(image_gt_classes)
      gt_instances.append(image_gt_instances)

      pred_classes.append(
          test_utils.read_segmentation_with_rgb_color_map(
              test_image.pred_class_path, _CLASS_COLOR_MAP))
      pred_instances.append(
          test_utils.read_test_image(test_image.pred_inst_path, mode='L'))

    gt_class_tensor = tf.placeholder(tf.uint16)
    gt_instance_tensor = tf.placeholder(tf.uint16)
    pred_class_tensor = tf.placeholder(tf.uint16)
    pred_instance_tensor = tf.placeholder(tf.uint16)
    qualities, update_pq = streaming_metrics.streaming_panoptic_quality(
        gt_class_tensor,
        gt_instance_tensor,
        pred_class_tensor,
        pred_instance_tensor,
        num_classes=num_classes,
        max_instances_per_category=256,
        ignored_label=0,
        offset=offset)
    pq, sq, rq, total_tp, total_fn, total_fp = tf.unstack(qualities, 6, axis=0)
    with self.session() as sess:
      sess.run(tf.local_variables_initializer())
      for pred_class, pred_instance, gt_class, gt_instance in six.moves.zip(
          pred_classes, pred_instances, gt_classes, gt_instances):
        sess.run(
            update_pq,
            feed_dict={
                gt_class_tensor: gt_class,
                gt_instance_tensor: gt_instance,
                pred_class_tensor: pred_class,
                pred_instance_tensor: pred_instance
            })
      (result_pq, result_sq, result_rq, result_total_tp, result_total_fn,
       result_total_fp) = sess.run(
           [pq, sq, rq, total_tp, total_fn, total_fp],
           feed_dict={
               gt_class_tensor: 0,
               gt_instance_tensor: 0,
               pred_class_tensor: 0,
               pred_instance_tensor: 0
           })
    np.testing.assert_array_almost_equal(
        result_pq,
        [4.3107, 0.7024, 0.54069, 0.745353, 0.85768, 0.99107, 0.77410],
        decimal=4)
    np.testing.assert_array_almost_equal(
        result_sq, [5.3883, 0.7526, 0.5407, 0.7454, 0.8577, 0.9911, 0.7741],
        decimal=4)
    np.testing.assert_array_almost_equal(
        result_rq, [0.8, 0.9333, 1., 1., 1., 1., 1.], decimal=4)
    np.testing.assert_array_almost_equal(
        result_total_tp, [2., 7., 1., 1., 1., 1., 1.], decimal=4)
    np.testing.assert_array_almost_equal(
        result_total_fn, [0., 1., 0., 0., 0., 0., 0.], decimal=4)
    np.testing.assert_array_almost_equal(
        result_total_fp, [1., 0., 0., 0., 0., 0., 0.], decimal=4)
Exemplo n.º 14
0
 def test_read_test_image(self):
     image_array = test_utils.read_test_image('team_pred_class.png')
     self.assertSequenceEqual(image_array.shape, (231, 345, 4))
Exemplo n.º 15
0
 def test_read_test_image(self):
   image_array = test_utils.read_test_image('team_pred_class.png')
   self.assertSequenceEqual(image_array.shape, (231, 345, 4))