Beispiel #1
0
    def test_get_prime_multiplier_for_color_randomness(self):
        # Show that default multipler is not 1 and does not divide the total number
        # of standard colors.
        multiplier = visualization_utils._get_multiplier_for_color_randomness()
        self.assertNotEqual(
            0, multiplier % len(visualization_utils.STANDARD_COLORS))
        self.assertNotEqual(1, multiplier)

        # Show that with 34 colors, the closest prime number to 34/10 that
        # satisfies the constraints is 5.
        default_standard_colors = visualization_utils.STANDARD_COLORS
        visualization_utils.STANDARD_COLORS = [
            'color_{}'.format(str(i)) for i in range(34)
        ]
        multiplier = visualization_utils._get_multiplier_for_color_randomness()
        self.assertEqual(5, multiplier)

        # Show that with 110 colors, the closest prime number to 110/10 that
        # satisfies the constraints is 13 (since 11 equally divides 110).
        visualization_utils.STANDARD_COLORS = [
            'color_{}'.format(str(i)) for i in range(110)
        ]
        multiplier = visualization_utils._get_multiplier_for_color_randomness()
        self.assertEqual(13, multiplier)

        visualization_utils.STANDARD_COLORS = default_standard_colors
Beispiel #2
0
def get_boxes(image,
              boxes,
              classes,
              scores,
              category_index,
              instance_masks=None,
              instance_boundaries=None,
              keypoints=None,
              track_ids=None,
              use_normalized_coordinates=False,
              max_boxes_to_draw=20,
              min_score_thresh=.5,
              agnostic_mode=False,
              line_thickness=4,
              groundtruth_box_visualization_color='black',
              skip_scores=False,
              skip_labels=False,
              skip_track_ids=False):
    box_to_display_str_map = collections.defaultdict(list)
    box_to_color_map = collections.defaultdict(str)
    box_to_instance_masks_map = {}
    box_to_instance_boundaries_map = {}
    box_to_keypoints_map = collections.defaultdict(list)
    box_to_track_ids_map = {}
    if not max_boxes_to_draw:
        max_boxes_to_draw = boxes.shape[0]
    for i in range(min(max_boxes_to_draw, boxes.shape[0])):
        if scores is None or scores[i] > min_score_thresh:
            box = tuple(boxes[i].tolist())
            if instance_masks is not None:
                box_to_instance_masks_map[box] = instance_masks[i]
            if instance_boundaries is not None:
                box_to_instance_boundaries_map[box] = instance_boundaries[i]
            if keypoints is not None:
                box_to_keypoints_map[box].extend(keypoints[i])
            if track_ids is not None:
                box_to_track_ids_map[box] = track_ids[i]
            if scores is None:
                box_to_color_map[box] = groundtruth_box_visualization_color
            else:
                display_str = ''
                if not skip_labels:
                    if not agnostic_mode:
                        if classes[i] in six.viewkeys(category_index):
                            class_name = category_index[classes[i]]['name']
                        else:
                            class_name = 'N/A'
                        display_str = str(class_name)
                if not skip_scores:
                    if not display_str:
                        display_str = '{}%'.format(int(100 * scores[i]))
                    else:
                        display_str = '{}: {}%'.format(display_str,
                                                       int(100 * scores[i]))
                if not skip_track_ids and track_ids is not None:
                    if not display_str:
                        display_str = 'ID {}'.format(track_ids[i])
                    else:
                        display_str = '{}: ID {}'.format(
                            display_str, track_ids[i])
                box_to_display_str_map[box].append(display_str)
                if agnostic_mode:
                    box_to_color_map[box] = 'DarkOrange'
                elif track_ids is not None:
                    prime_multipler = vis_util._get_multiplier_for_color_randomness(
                    )
                    box_to_color_map[box] = vis_util.STANDARD_COLORS[
                        (prime_multipler * track_ids[i]) %
                        len(vis_util.STANDARD_COLORS)]
                else:
                    box_to_color_map[box] = vis_util.STANDARD_COLORS[
                        classes[i] % len(vis_util.STANDARD_COLORS)]

    return box_to_display_str_map