-
Notifications
You must be signed in to change notification settings - Fork 31
/
coco.py
131 lines (123 loc) · 2.31 KB
/
coco.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
import numpy as np
from collections import namedtuple
CocoClass = namedtuple('CocoClass', [
'label',
'box_color',
'font_color',
'box_thickness',
'font_thickness',
'font_scale',
'alpha',
])
COCO_CLASSES = [
'unlabeled',
'person',
'bicycle',
'car',
'motorcycle',
'airplane',
'bus',
'train',
'truck',
'boat',
'traffic light',
'fire hydrant',
'street sign',
'stop sign',
'parking meter',
'bench',
'bird',
'cat',
'dog',
'horse',
'sheep',
'cow',
'elephant',
'bear',
'zebra',
'giraffe',
'hat',
'backpack',
'umbrella',
'shoe',
'eye glasses',
'handbag',
'tie',
'suitcase',
'frisbee',
'skis',
'snowboard',
'sports ball',
'kite',
'baseball bat',
'baseball glove',
'skateboard',
'surfboard',
'tennis racket',
'bottle',
'plate',
'wine glass',
'cup',
'fork',
'knife',
'spoon',
'bowl',
'banana',
'apple',
'sandwich',
'orange',
'broccoli',
'carrot',
'hot dog',
'pizza',
'donut',
'cake',
'chair',
'couch',
'potted plant',
'bed',
'mirror',
'dining table',
'window',
'desk',
'toilet',
'door',
'tv',
'laptop',
'mouse',
'remote',
'keyboard',
'cell phone',
'microwave',
'oven',
'toaster',
'sink',
'refrigerator',
'blender',
'book',
'clock',
'vase',
'scissors',
'teddy bear',
'hair drier',
'toothbrush',
]
# Random RGB colors for each label
_COCO_COLORS = np.random.RandomState(255).uniform(0, 255, size=(len(COCO_CLASSES), 3)).astype(np.uint8)
# Dictionary of labels with index as a key
_COCO_DICTIONARY = {
idx: CocoClass(label,
box_color=tuple(map(int, _COCO_COLORS[idx])),
font_color=(255, 255, 255),
box_thickness=1,
font_thickness=1,
font_scale=0.5,
alpha=0.55)
for idx, label in enumerate(COCO_CLASSES)
}
def get_coco_class(idx):
"""Finds COCO class in build-in dictionary, returning 'unlabeled' if not found.
:param idx: index of COCO class to find
:return: CocoClass instance
"""
return _COCO_DICTIONARY.get(idx, _COCO_DICTIONARY[0])