1796 lines
57 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

class DbKeys:
"""
This is for database ground truth and model runner output usage. It contains both key and value info, including examples.
the value_example will follow the role of value_type, some of them are "list" but looks like a "string" since there are undeclare names.
Please contact jeff@kneron.us for further info and modifications.
"""
MONGO_OBJ_ID = {"key": '_id'}
# TODO: In future, we may merge image path into image info. But based on current structure, we separated them.
# image path attribute.
IMAGE_PATH = {"key": "img_path",
"value_type": str,
"value_example": "/a/b/c/d.jpg", # this is string.
"value_empty": " null (for json and db)\
None (for python output) "}
# image info attribute.
IMAGE_INFO = {"key": "img_info",
"value_type": dict,
# The db value under "img_info" key is dictionary which store image info.
"value_example": {
"width": 640,
"height": 480,
"format": "jpg",
"blur_score": 0.5,
},
"value_empty": "null or [] (for json and db)\
None or [] (for python output) "}
# image size.(For INFERENCE database)
IMAGE_SIZE = {"key": "img_size",
"value_type": list,
"value_example": "[640,480]", # [w,h]
"value_empty": " null or [] (for json and db)\
None or [] (for python output) "}
# detection bounding box attribute.
BBOX = {"key": "bbox",
"value_type": list,
# This is 2D list, we use string here due to undeclare names. This is for multi face usage.
# "class1, class2 is mapped to detection_map, default is kneron_detection"
"value_example": " [[x1, y1, w1, h1, score1, class1], [x2, y2, w2, h2, score2, class2], ... ] ",
"value_empty": " null or [] (for json and db)\
None or [] (for python output) "}
# For mutipleFDR.
BBOX_EMB = {"key": "bbox_emb",
"value_type": list,
# This is 3D list for multi face FDR usage.
# - bbox is a 1D list [x,y,w,h,score, class]
# - emb is a 1D list.
# |--------face1----------| |--------face2----------|
"value_example": " [ [[x1, y1, w1, h1, score1, class1],[emb1]], [[x2, y2, w2, h2, score2, class2],[emb2]] ... ] ",
"value_empty": " null or [] (for json and db)\
None or [] (for python output) "}
# detection OCR attribute.
LP_OCR = {"key": "lp_ocr",
"value_type": list,
# This is list of string, showing OCR result
"value_example": ["abcd1234", "efgh5678"],
"value_empty": " null or [] (for json and db)\
None or [] (for python output) "}
# 4 point car lincese plate landmark attribute.
LP_LMK_4PTS = {"key": "lp_lmk_4pts",
"value_type": list,
# This is a 2D list, list of license plate 4 coordinate landmark list. Now model only outputs i license plate each inputs.
# the length of the inner list should be 9, the last two item is score, class:
# [[2*4 x,y coordinates, score ]]
"value_example": " [ [ licensepalte_topleft_x1, licensepalte_topleft_y1, \
licensepalte_topright_x1, licensepalte_topright_y1, \
licensepalte_bottomright_x1, licensepalte_bottomright_y1, \
licensepalte_bottomleft_x1, licensepalte_bottomleft_y1 \
] ]",
"value_empty": " null or [] (for json and db) None or [] (for python return) "}
# 5 point face landmark attribute.
LMK_5PTS = {"key": "lmk_5pts",
"value_type": list,
# This is a 2D list, list of landmark list. First dimension is the face count, we use string here due to undeclare names.
# the length of the inner list should be 11, the last item is 2D list contains score and classID:
# [[2*5 x,y coordinates, score], [...], [...]]
"value_example": " [ [ actual_right_eye_center_x1, actual_right_eye_center_y1, \
actual_left_eye_center_x1, actual_left_eye_center_y1, \
nose_x1, nose_y1, \
actual_right_mouth_x1, actual_right_mouth_y1, \
actual_left_mouth_x1, actual_left_mouth_y1],[second_person's landmark], [third_person's landmark]]",
"value_empty": " null or [] (for json and db)\
None or [] (for python return) "}
# 2 point eye pupil landmark attribute.
LMK_EYE_7PTS = {"key": "lmk_eye_7pts",
"value_type": list,
# This is a 2D list, list of list with two eye pupil landmarks.
"value_example": " [ [ \
right_eye_60_x1, right_eye_60_y1, \
right_eye_61_x1, right_eye_61_y1, \
right_eye_63_x1, right_eye_63_y1, \
right_eye_64_x1, right_eye_64_y1, \
right_eye_65_x1, right_eye_65_y1, \
right_eye_67_x1, right_eye_67_y1, \
right_eye_96_x1, right_eye_96_y1, \
left_eye_68_x1, left_eye_68_y1, \
left_eye_69_x1, left_eye_69_y1, \
left_eye_71_x1, left_eye_71_y1, \
left_eye_72_x1, left_eye_72_y1, \
left_eye_73_x1, left_eye_73_y1, \
left_eye_75_x1, left_eye_75_y1, \
left_eye_97_x1, left_eye_97_y1, \
], \
[second_person's eye 7 pts], [third_person's eye 7 pts]]",
"value_empty": " null or [] (for json and db)\
None or [] (for python return) "}
# 11 point upper body landmark attribute.
LMK_UPPER_BODY_7PTS = {"key": "lmk_upper_body_7pts",
"value_type": list,
# This is a 2D list, list of list with 11 upper body points' landmarks.
"value_example": " [ [ nose_x1, nose_y1, \
actual_right_shoulder_x1, actual_right_shoulder_y1, \
actual_right_elbow_x1, actual_right_elbow_y1, \
actual_right_wrist_x1, actual_right_wrist_y1, \
actual_left_shoulder_x1, actual_left_shoulder_y1, \
actual_left_elbow_x1, actual_left_elbow_y1, \
actual_left_wrist_x1, actual_left_wrist_y1, \
], \
[second_person's 7 pts], [third_person's 7 pts]]",
"value_empty": " null or [] (for json and db)\
None or [] (for python return) "}
# 11 point upper body landmark attribute.
LMK_UPPER_BODY_11PTS = {"key": "lmk_upper_body_11pts",
"value_type": list,
# This is a 2D list, list of list with 11 upper body points' landmarks.
"value_example": " [ [ nose_x1, nose_y1, \
actual_right_eye_center_x1, actual_right_eye_center_y1, \
actual_left_eye_center_x1, actual_left_eye_center_y1, \
actual_right_ear_x1, actual_right_ear_y1, \
actual_left_ear_x1, actual_left_ear_y1, \
actual_right_shoulder_x1, actual_right_shoulder_y1, \
actual_left_shoulder_x1, actual_left_shoulder_y1, \
actual_right_elbow_x1, actual_right_elbow_y1, \
actual_left_elbow_x1, actual_left_elbow_y1, \
actual_right_wrist_x1, actual_right_wrist_y1, \
actual_left_wrist_x1, actual_left_wrist_y1, \
], \
[second_person's 11 pts], [third_person's 11 pts]]",
"value_empty": " null or [] (for json and db)\
None or [] (for python return) "}
# 17 point upper body landmark attribute.
LMK_COCO_BODY_17TS = {"key": "lmk_coco_body_17pts",
"value_type": list,
# This is a 2D list, list of list with 17 upper body points' landmarks. In order of x, y, score
"value_example": " [ [ nose, # 1 \
actual_right_eye, # 2 \
actual_left_eye, # 3 \
actual_right_ear, # 4 \
actual_left_ear, # 5 \
actual_right_shoulder, # 6 \
actual_left_shoulder, # 7 \
actual_right_elbow, # 8 \
actual_left_elbow, # 9 \
actual_right_wrist, # 10 \
actual_left_wrist, # 11 \
actual_right_hip, # 12 \
actual_left_hip, # 13 \
actual_right_knee, # 14 \
actual_left_knee, # 15 \
actual_right_ankle, # 16 \
actual_left_ankle, # 17 \
], \
[second_person's 17 pts], [third_person's 17 pts]]",
"value_empty": " null or [] (for json and db)\
None or [] (for python return) "}
# Image label class, indicate what this image is.
CLASS1 = {"key": "class1",
"value_type": list,
# This is 1D of List of score(float) and class_id(int).
# e.g. Refer detection_map["kneron_detection"] bwlow: class id 15 is "person". 22 is "mask", 24 is "sunglass"
"value_example": "[score, class_1_id]",
"value_empty": " null or [] (for json and db)\
None or [] (for python return) "}
# Image label classes, indicate what this image is.
CLASS2 = {"key": "class2",
"value_type": list,
# This is 2D of List of score(float) and class_id(int).
# The second dimension is for multiple people in one image
# e.g. Refer detection_map["kneron_detection"] bwlow: class id 15 is "person". 22 is "mask", 24 is "sunglass"
"value_example": "[[score, class_1_id], [score, class_2_id], [score, class_3_id]]",
"value_empty": " null or [] (for json and db)\
None or [] (for python return) "}
# Image label classes to support multiple classes per image, indicate what this image is.
CLASS3 = {"key": "class3",
"value_type": list,
# This is 3D of List of score(float) and class_id(int).
# The second dimension is for multiple people in one image
# The third dimension is for multiple class on a person
# e.g. Refer detection_map["kneron_detection"] bwlow: class id 15 is "person". 22 is "mask", 24 is "sunglass"
"value_example": "[[[score, class_1_id], [score, class_2_id], [score, class_3_id]]]",
"value_empty": " null or [] (for json and db)\
None or [] (for python return) "}
# embedding attribute support multiple faces in one image, for face recognition or similar regression model.
EMBEDDING = {"key": "emb",
"value_type": list,
# This is 2D list of list of float, list size is embedding size, which could be 256 or 512 or any length.
# If an image includes multiple people, there would be multiple embedding in the list.
"value_example": "[[embedding 1], [embedding2]]",
"value_empty": " null or [] (for json and db)\
None or [] (for python return) "}
# age attribute.
AGE = {"key": "age",
"value_type": list,
# This is 2D list of int and string for multi face usage. the following example is the result from a image of two persons.
"value_example": [[16]],
"value_empty": " null or [] (for json and db)\
None or [] (for python return) "}
# megaface test attribute.
MEGAFACE_IMG_TYPE = {"key": "megaface_img_type",
"value_type": str,
# this is string, use "probe" or "distractor" for mega face test usage.
"value_example": "probe or distractor",
"value_empty": " null or [] (for json and db)\
None or [] (for python return) "}
# megaface test attribute.
MULTIPLEFDR_IMG_TYPE = {"key": "multipleFDR_img_type",
"value_type": str,
# this is string, use "probe" or "distractor" for multiple person test usage.
"value_example": "probe or distractor",
"value_empty": " null or [] (for json and db)\
None or [] (for python return) "}
# liveness attribute.
LIVENESS = {"key": "liveness",
"value_type": list,
# This is 1D list of int and float. we use string here due to undeclare names.
# return attack or real. e.g. ["attack", 0.238] or ["real", 0.998]
"value_example": "['real', score] or ['attack', score]",
"value_empty": " null or [] (for json and db)\
None or [] (for python return) "}
# channel type of images.
CHANNEL_TYPE = {"key": "channel_type",
"value_type": str,
"value_example": "NIR or RGB",
"value_empty": " null or [] (for json and db)\
None or [] (for python return) "}
# channel type format of images.(For INFERENCE database)
CHANNEL_FORMAT= {"key": "channel_format",
"value_type": str,
"value_example": "NIR888 or RGB565",
"value_empty": " null or [] (for json and db)\
None or [] (for python return) "}
# for face recognition or similar tests' paring usage in pair collections.
SAME_PAIRS = {"key": "same_pairs",
"value_type": list,
# This is 2D list of strings.
"value_example": [['/a/b/c/d.jpg, /a/b/c/e.jpg'], ['/a/b/c/f.jpg, /a/b/c/g.jpg']],
"value_empty": " null or [] (for json and db)\
None or [] (for python return) "}
# for face recognition or similar tests' paring usage in pair collections.
DIFF_PAIRS = {"key": "diff_pairs",
"value_type": list,
# This is 2D list of strings.
"value_example": [['/a/b/c/d.jpg, /a/b/c/e.jpg'], ['/a/b/c/f.jpg, /a/b/c/g.jpg']],
"value_empty": " null or [] (for json and db)\
None or [] (for python return) "}
# for imagenet test usage.
P1D_P5D = {"key": "p1d_p5d",
"value_type": list,
"value_example": " [ p1d, p5d ] ",
"value_empty": " null or [] (for json and db)\
None or [] (for python return) "}
# for storing numpy images:
NUMPY_IMAGES = {"key": "numpy_image",
"value_type": list,
"value_example": "[[255,255,255..],[0,255,0...]]",
"value_empty": " null (for json and db)\
None (for python output) "}
NUMPY_SEGS = {"key": "numpy_segs",
"value_type": list,
"value_example": "[[0.1324,0.555, ...],[0.344,0.143,...]]",
"value_empty": " null (for json and db)\
None (for python output) "}
LANDMARK_SCORE = {"key": "landmark_score",
"value_type": list,
"value_example": "[[0.96010160446167, 0.950203835964203, 0.914104223251343, 0.644165992736816, 0.326085150241852]]",
"value_empty": " null or [] (for json and db)\
None or [] (for python return) "}
# tracking reid
TRACK_ID = {"key": "track_id",
"value_type": list,
"value_example": "[[x1, y1, w1, h1, person_id], [x1, y1, w1, h1, person_id]]", #person id for multiple images, depending on skip_rate
"value_empty": " null or [] (for json and db)\
None or [] (for python return) "}
PITCH_YAW_ROLL = {"key": "pitch_yaw_roll",
"value_type": list,
# A inside list means a person's yaw, pitch, and row angle
"value_example": '[[first_person_pitch_angle, first_person_yaw_angle, first_person_roll_angle], \
[second_person_pitch_angle, second_person_pitch_angle, second_person_pitch_angle]]',
"value_empty": " null or [] (for json and db)\
None or [] (for python return) "}
# megaface test attribute.
FEATURE_POINT_IMG_TYPE = {"key": "feature_point_img_type",
"value_type": str,
# this is string, use "probe" or "distractor" for mega face test usage.
"value_example": "src or dst",
"value_empty": " null or [] (for json and db)\
None or [] (for python return) "}
# image path attribute.
SOURCE_PATH = {"key": "source_path",
"value_type": str,
"value_example": "/a/b/c/d.jpg", # this is string.
"value_empty": " null (for json and db)\
None (for python output) "}
# image path attribute.
T_MATRIX = {"key": "t_matrix",
"value_type": str,
"value_example": "/a/b/c/d.txt", # this is a matrix.
"value_empty": " null (for json and db)\
None (for python output) "}
#feature point matching
FEATURE_POINT = {"key": "feature_point",
"value_type": list,
# in predictions, the value example is like the following format
#landmark is a list of list of 2 floats, ex: [[10.2, 12.2], [11.4, 15.4], ... ]
#score is a list of float [ 0.3, 0.6, ...]
#descriptor is a list of embedding [[embedding], [embedding], ... ]
"value_example": "[list of points], [list of scores], [descriptor]]", # this is a list.
"value_empty": " null (for json and db)\
None (for python output) "}
# instance segmentation attribute for prediction.
INS_SEG = {"key": "ins_seg",
"value_type": list,
# This is 2D list, showing every instance information in the image
# rle is a dictionary of the mask encoding, including size: [h, w], counts: encoding string.
# score is the confidence of mask. class is the category label of the mask in COCO
"value_example": " [[rle1, score1, class1], [rle2, score2, class2], ... ] ",
"value_empty": " null or [] (for json and db)\
None or [] (for python output)"}
# instance segmentation attribute for GT ONLY.
SEGMENTATION = {"key": "segmentation",
"value_type": list,
# This is 3D list, showing every instance information in the image
# class is the category label of the mask in COCO
"value_example": " [[[seg_list1], [seg_list2], class1], [[seg_list3], [seg_list4], [seg_list5], class2], ... ] ",
"value_empty": " null or [] (for json and db)\
None or [] (for python output)"}
# semantic segmentation attribute for prediction.
SEMANTIC = {"key": "semantic",
"value_type": list,
# This is 3D list, showing every pixle-wise information in a image
# It's a list including W x H elements
"value_example": " [[length of height of image], [length of height of image], ... ] ",
"value_empty": " null or [] (for json and db)\
None or [] (for python output)"}
# semantic segmentation attribute for prediction.
PAIR_TYPE = {"key": "pair_type",
"value_type": str,
# This is 3D list, showing every pixle-wise information in a image
# It's a list including W x H elements
"value_example": "same",
"value_empty": " null or [] (for json and db)\
None or [] (for python output)"}
"""This is a detection map, for detection class mapping usage. Default is using "kneron_detection".
Detection model should return corresponding int keys. Ex. If detected as "sunglass", return 24.
If model need to follow other mapping style, please contact jeff@kneron.us to added another mapping in this dictionary.
"""
detection_map = {
"kneron_detection": {
0: "background",
1: "aeroplane",
2: "bicycle",
3: "bird",
4: "boat",
5: "bottle",
6: "bus",
7: "car",
8: "cat",
9: "chair",
10: "cow",
11: "diningtable",
12: "dog",
13: "horse",
14: "motorbike",
15: "person",
16: "pottedplant",
17: "sheep",
18: "sofa",
19: "train",
20: "tvmonitor",
21: "face",
22: "mask",
23: "glass",
24: "sunglass",
25: "truck",
26: "rider",
27: "vehicle",
28: "carlicenseplatelandmark",
29: "no_chin",
30: "no_nose",
31: "no_eye",
32: "no_face",
33: "no_head",
34: "filtered",
35: "no_filtered",
36: "female",
37: "male",
38: "anger",
39: "disgust",
40: "fear",
41: "happy",
42: "sad",
43: "surprised",
44: "normal",
45: "two_wheel",
46: "plate",
47: "actual_right_eye_open",
48: "actual_leftt_eye_open",
49: "actual_right_eye_close",
50: "actual_left_eye_close",
51: "white_person",
52: "black_person",
53: "asian_person",
54: "indian_person",
55: "others_person",
56: "head"
},
# This is for facial recognition
"landmark_detection": {
0: "0",
1: "1",
2: "2",
3: "3",
4: "4",
5: "5",
6: "6",
7: "7",
8: "8",
9: "9",
10: "10",
11: "11",
12: "12",
13: "13",
14: "14",
15: "15",
16: "16",
17: "17",
18: "18",
19: "19",
20: "20",
21: "21",
22: "22",
23: "23",
24: "24",
25: "25",
26: "26",
27: "27",
28: "28",
29: "29",
30: "30",
31: "31",
32: "32",
33: "33",
34: "34",
35: "35",
36: "36",
37: "37",
38: "38",
39: "39",
40: "40",
41: "41",
42: "42",
43: "43",
44: "44",
45: "45",
46: "46",
47: "47",
48: "48",
49: "49",
50: "50",
51: "51",
52: "52",
53: "53",
54: "54",
55: "55",
56: "56",
57: "57",
58: "58",
59: "59",
60: "60",
61: "61",
62: "62",
63: "63",
64: "64",
65: "65",
66: "66",
67: "67",
68: "68",
69: "69",
70: "70",
71: "71",
72: "72",
73: "73",
74: "74",
75: "75",
76: "76",
77: "77",
78: "78",
79: "79",
80: "80",
81: "81",
82: "82",
83: "83",
84: "84",
85: "85",
86: "86",
87: "87",
88: "88",
89: "89",
90: "90",
91: "91",
92: "92",
93: "93",
94: "94",
95: "95",
96: "96",
97: "97",
},
"yolo_voc_detection": {
1: "aeroplane",
2: "bicycle",
3: "bird",
4: "boat",
5: "bottle",
6: "bus",
7: "car",
8: "cat",
9: "chair",
10: "cow",
11: "diningtable",
12: "dog",
13: "horse",
14: "motorbike",
15: "person",
16: "pottedplant",
17: "sheep",
18: "sofa",
19: "train",
20: "tvmonitor",
},
"coco": {
1: 'person',
2: 'bicycle',
3: 'car',
4: 'motorcycle',
5: 'airplane',
6: 'bus',
7: 'train',
8: 'truck',
9: 'boat',
10: 'traffic light',
11: 'fire hydrant',
12: 'stop sign',
13: 'parking meter',
14: 'bench',
15: 'bird',
16: 'cat',
17: 'dog',
18: 'horse',
19: 'sheep',
20: 'cow',
21: 'elephant',
22: 'bear',
23: 'zebra',
24: 'giraffe',
25: 'backpack',
26: 'umbrella',
27: 'handbag',
28: 'tie',
29: 'suitcase',
30: 'frisbee',
31: 'skis',
32: 'snowboard',
33: 'sports ball',
34: 'kite',
35: 'baseball bat',
36: 'baseball glove',
37: 'skateboard',
38: 'surfboard',
39: 'tennis racket',
40: 'bottle',
41: 'wine glass',
42: 'cup',
43: 'fork',
44: 'knife',
45: 'spoon',
46: 'bowl',
47: 'banana',
48: 'apple',
49: 'sandwich',
50: 'orange',
51: 'broccoli',
52: 'carrot',
53: 'hot dog',
54: 'pizza',
55: 'donut',
56: 'cake',
57: 'chair',
58: 'couch',
59: 'potted plant',
60: 'bed',
61: 'dining table',
62: 'toilet',
63: 'tv',
64: 'laptop',
65: 'mouse',
66: 'remote',
67: 'keyboard',
68: 'cell phone',
69: 'microwave',
70: 'oven',
71: 'toaster',
72: 'sink',
73: 'refrigerator',
74: 'book',
75: 'clock',
76: 'vase',
77: 'scissors',
78: 'teddy bear',
79: 'hair drier',
80: 'toothbrush'
},
"ocr": {
1: "0",
2: "1",
3: "2",
4: "3",
5: "4",
6: "5",
7: "6",
8: "7",
9: "8",
10: "9",
11: "A",
12: "B",
13: "C",
14: "D",
15: "E",
16: "F",
17: "G",
18: "H",
19: "I",
20: "J",
21: "K",
22: "L",
23: "M",
24: "N",
25: "P",
26: "Q",
27: "R",
28: "S",
29: "T",
30: "U",
31: "V",
32: "W",
33: "X",
34: "Y",
35: "Z",
36: "plate",
},
"multiple_FDR":{
0: "unknown",
1: "Charlie",
2: "Rob",
3: "Danny",
4: "Glenn",
5: "Kaitlyn",
6: "Mary"
},
"semantic_segmentation_41classes" : {
0: 'wall',
1: 'floor',
2: 'cabinet',
3: 'bed',
4: 'chair',
5: 'sofa',
6: 'table',
7: 'door',
8: 'window',
9: 'bookshelf',
10: 'picture',
11: 'counter',
12: 'blinds',
13: 'desk',
14: 'shelves',
15: 'curtain',
16: 'dresser',
17: 'pillow',
18: 'mirror',
19: 'floor mat',
20: 'clothes',
21: 'ceiling',
22: 'books',
23: 'refridgerator',
24: 'television',
25: 'paper',
26: 'towel',
27: 'shower curtain',
28: 'box',
29: 'whiteboard',
30: 'person',
31: 'night stand',
32: 'toilet',
33: 'sink',
34: 'lamp',
35: 'bathtub',
36: 'bag',
37: 'otherstructure',
38: 'otherfurniture',
39: 'otherprop',
255:'void'
},
"kws" : {
0: "negative",
1: "heysnips"
},
"simple_command" : {
0: "_unknown_",
1: "yes",
2: "no",
3: "up",
4: "down",
5: "left",
6: "right",
7: "on",
8: "off",
9: "stop",
10: "go"
},
"sound_classification" : {
0: "air conditioner",
1: "car horn",
2: "children playing",
3: "dog bark",
4: "drilling",
5: "engine idling",
6: "gun shot",
7: "jackhammer",
8: "siren",
9: "street music",
10: "speech",
11: "silence",
12: "negative"
},
"imagenet_classification" : {
0: "tench",
1: "goldfish",
2: "great white shark",
3: "tiger shark",
4: "hammerhead",
5: "electric ray",
6: "stingray",
7: "cock",
8: "hen",
9: "ostrich",
10: "brambling",
11: "goldfinch",
12: "house finch",
13: "junco",
14: "indigo bunting",
15: "robin",
16: "bulbul",
17: "jay",
18: "magpie",
19: "chickadee",
20: "water ouzel",
21: "kite",
22: "bald eagle",
23: "vulture",
24: "great grey owl",
25: "European fire salamander",
26: "common newt",
27: "eft",
28: "spotted salamander",
29: "axolotl",
30: "bullfrog",
31: "tree frog",
32: "tailed frog",
33: "loggerhead",
34: "leatherback turtle",
35: "mud turtle",
36: "terrapin",
37: "box turtle",
38: "banded gecko",
39: "common iguana",
40: "American chameleon",
41: "whiptail",
42: "agama",
43: "frilled lizard",
44: "alligator lizard",
45: "Gila monster",
46: "green lizard",
47: "African chameleon",
48: "Komodo dragon",
49: "African crocodile",
50: "American alligator",
51: "triceratops",
52: "thunder snake",
53: "ringneck snake",
54: "hognose snake",
55: "green snake",
56: "king snake",
57: "garter snake",
58: "water snake",
59: "vine snake",
60: "night snake",
61: "boa constrictor",
62: "rock python",
63: "Indian cobra",
64: "green mamba",
65: "sea snake",
66: "horned viper",
67: "diamondback",
68: "sidewinder",
69: "trilobite",
70: "harvestman",
71: "scorpion",
72: "black and gold garden spider",
73: "barn spider",
74: "garden spider",
75: "black widow",
76: "tarantula",
77: "wolf spider",
78: "tick",
79: "centipede",
80: "black grouse",
81: "ptarmigan",
82: "ruffed grouse",
83: "prairie chicken",
84: "peacock",
85: "quail",
86: "partridge",
87: "African grey",
88: "macaw",
89: "sulphur-crested cockatoo",
90: "lorikeet",
91: "coucal",
92: "bee eater",
93: "hornbill",
94: "hummingbird",
95: "jacamar",
96: "toucan",
97: "drake",
98: "red-breasted merganser",
99: "goose",
100: "black swan",
101: "tusker",
102: "echidna",
103: "platypus",
104: "wallaby",
105: "koala",
106: "wombat",
107: "jellyfish",
108: "sea anemone",
109: "brain coral",
110: "flatworm",
111: "nematode",
112: "conch",
113: "snail",
114: "slug",
115: "sea slug",
116: "chiton",
117: "chambered nautilus",
118: "Dungeness crab",
119: "rock crab",
120: "fiddler crab",
121: "king crab",
122: "American lobster",
123: "spiny lobster",
124: "crayfish",
125: "hermit crab",
126: "isopod",
127: "white stork",
128: "black stork",
129: "spoonbill",
130: "flamingo",
131: "little blue heron",
132: "American egret",
133: "bittern",
134: "crane",
135: "limpkin",
136: "European gallinule",
137: "American coot",
138: "bustard",
139: "ruddy turnstone",
140: "red-backed sandpiper",
141: "redshank",
142: "dowitcher",
143: "oystercatcher",
144: "pelican",
145: "king penguin",
146: "albatross",
147: "grey whale",
148: "killer whale",
149: "dugong",
150: "sea lion",
151: "Chihuahua",
152: "Japanese spaniel",
153: "Maltese dog",
154: "Pekinese",
155: "Shih-Tzu",
156: "Blenheim spaniel",
157: "papillon",
158: "toy terrier",
159: "Rhodesian ridgeback",
160: "Afghan hound",
161: "basset",
162: "beagle",
163: "bloodhound",
164: "bluetick",
165: "black-and-tan coonhound",
166: "Walker hound",
167: "English foxhound",
168: "redbone",
169: "borzoi",
170: "Irish wolfhound",
171: "Italian greyhound",
172: "whippet",
173: "Ibizan hound",
174: "Norwegian elkhound",
175: "otterhound",
176: "Saluki",
177: "Scottish deerhound",
178: "Weimaraner",
179: "Staffordshire bullterrier",
180: "American Staffordshire terrier",
181: "Bedlington terrier",
182: "Border terrier",
183: "Kerry blue terrier",
184: "Irish terrier",
185: "Norfolk terrier",
186: "Norwich terrier",
187: "Yorkshire terrier",
188: "wire-haired fox terrier",
189: "Lakeland terrier",
190: "Sealyham terrier",
191: "Airedale",
192: "cairn",
193: "Australian terrier",
194: "Dandie Dinmont",
195: "Boston bull",
196: "miniature schnauzer",
197: "giant schnauzer",
198: "standard schnauzer",
199: "Scotch terrier",
200: "Tibetan terrier",
201: "silky terrier",
202: "soft-coated wheaten terrier",
203: "West Highland white terrier",
204: "Lhasa",
205: "flat-coated retriever",
206: "curly-coated retriever",
207: "golden retriever",
208: "Labrador retriever",
209: "Chesapeake Bay retriever",
210: "German short-haired pointer",
211: "vizsla",
212: "English setter",
213: "Irish setter",
214: "Gordon setter",
215: "Brittany spaniel",
216: "clumber",
217: "English springer",
218: "Welsh springer spaniel",
219: "cocker spaniel",
220: "Sussex spaniel",
221: "Irish water spaniel",
222: "kuvasz",
223: "schipperke",
224: "groenendael",
225: "malinois",
226: "briard",
227: "kelpie",
228: "komondor",
229: "Old English sheepdog",
230: "Shetland sheepdog",
231: "collie",
232: "Border collie",
233: "Bouvier des Flandres",
234: "Rottweiler",
235: "German shepherd",
236: "Doberman",
237: "miniature pinscher",
238: "Greater Swiss Mountain dog",
239: "Bernese mountain dog",
240: "Appenzeller",
241: "EntleBucher",
242: "boxer",
243: "bull mastiff",
244: "Tibetan mastiff",
245: "French bulldog",
246: "Great Dane",
247: "Saint Bernard",
248: "Eskimo dog",
249: "malamute",
250: "Siberian husky",
251: "dalmatian",
252: "affenpinscher",
253: "basenji",
254: "pug",
255: "Leonberg",
256: "Newfoundland",
257: "Great Pyrenees",
258: "Samoyed",
259: "Pomeranian",
260: "chow",
261: "keeshond",
262: "Brabancon griffon",
263: "Pembroke",
264: "Cardigan",
265: "toy poodle",
266: "miniature poodle",
267: "standard poodle",
268: "Mexican hairless",
269: "timber wolf",
270: "white wolf",
271: "red wolf",
272: "coyote",
273: "dingo",
274: "dhole",
275: "African hunting dog",
276: "hyena",
277: "red fox",
278: "kit fox",
279: "Arctic fox",
280: "grey fox",
281: "tabby",
282: "tiger cat",
283: "Persian cat",
284: "Siamese cat",
285: "Egyptian cat",
286: "cougar",
287: "lynx",
288: "leopard",
289: "snow leopard",
290: "jaguar",
291: "lion",
292: "tiger",
293: "cheetah",
294: "brown bear",
295: "American black bear",
296: "ice bear",
297: "sloth bear",
298: "mongoose",
299: "meerkat",
300: "tiger beetle",
301: "ladybug",
302: "ground beetle",
303: "long-horned beetle",
304: "leaf beetle",
305: "dung beetle",
306: "rhinoceros beetle",
307: "weevil",
308: "fly",
309: "bee",
310: "ant",
311: "grasshopper",
312: "cricket",
313: "walking stick",
314: "cockroach",
315: "mantis",
316: "cicada",
317: "leafhopper",
318: "lacewing",
319: "dragonfly",
320: "damselfly",
321: "admiral",
322: "ringlet",
323: "monarch",
324: "cabbage butterfly",
325: "sulphur butterfly",
326: "lycaenid",
327: "starfish",
328: "sea urchin",
329: "sea cucumber",
330: "wood rabbit",
331: "hare",
332: "Angora",
333: "hamster",
334: "porcupine",
335: "fox squirrel",
336: "marmot",
337: "beaver",
338: "guinea pig",
339: "sorrel",
340: "zebra",
341: "hog",
342: "wild boar",
343: "warthog",
344: "hippopotamus",
345: "ox",
346: "water buffalo",
347: "bison",
348: "ram",
349: "bighorn",
350: "ibex",
351: "hartebeest",
352: "impala",
353: "gazelle",
354: "Arabian camel",
355: "llama",
356: "weasel",
357: "mink",
358: "polecat",
359: "black-footed ferret",
360: "otter",
361: "skunk",
362: "badger",
363: "armadillo",
364: "three-toed sloth",
365: "orangutan",
366: "gorilla",
367: "chimpanzee",
368: "gibbon",
369: "siamang",
370: "guenon",
371: "patas",
372: "baboon",
373: "macaque",
374: "langur",
375: "colobus",
376: "proboscis monkey",
377: "marmoset",
378: "capuchin",
379: "howler monkey",
380: "titi",
381: "spider monkey",
382: "squirrel monkey",
383: "Madagascar cat",
384: "indri",
385: "Indian elephant",
386: "African elephant",
387: "lesser panda",
388: "giant panda",
389: "barracouta",
390: "eel",
391: "coho",
392: "rock beauty",
393: "anemone fish",
394: "sturgeon",
395: "gar",
396: "lionfish",
397: "puffer",
398: "abacus",
399: "abaya",
400: "academic gown",
401: "accordion",
402: "acoustic guitar",
403: "aircraft carrier",
404: "airliner",
405: "airship",
406: "altar",
407: "ambulance",
408: "amphibian",
409: "analog clock",
410: "apiary",
411: "apron",
412: "ashcan",
413: "assault rifle",
414: "backpack",
415: "bakery",
416: "balance beam",
417: "balloon",
418: "ballpoint",
419: "Band Aid",
420: "banjo",
421: "bannister",
422: "barbell",
423: "barber chair",
424: "barbershop",
425: "barn",
426: "barometer",
427: "barrel",
428: "barrow",
429: "baseball",
430: "basketball",
431: "bassinet",
432: "bassoon",
433: "bathing cap",
434: "bath towel",
435: "bathtub",
436: "beach wagon",
437: "beacon",
438: "beaker",
439: "bearskin",
440: "beer bottle",
441: "beer glass",
442: "bell cote",
443: "bib",
444: "bicycle-built-for-two",
445: "bikini",
446: "binder",
447: "binoculars",
448: "birdhouse",
449: "boathouse",
450: "bobsled",
451: "bolo tie",
452: "bonnet",
453: "bookcase",
454: "bookshop",
455: "bottlecap",
456: "bow",
457: "bow tie",
458: "brass",
459: "brassiere",
460: "breakwater",
461: "breastplate",
462: "broom",
463: "bucket",
464: "buckle",
465: "bulletproof vest",
466: "bullet train",
467: "butcher shop",
468: "cab",
469: "caldron",
470: "candle",
471: "cannon",
472: "canoe",
473: "can opener",
474: "cardigan",
475: "car mirror",
476: "carousel",
477: "carpenters kit",
478: "carton",
479: "car wheel",
480: "cash machine",
481: "cassette",
482: "cassette player",
483: "castle",
484: "catamaran",
485: "CD player",
486: "cello",
487: "cellular telephone",
488: "chain",
489: "chainlink fence",
490: "chain mail",
491: "chain saw",
492: "chest",
493: "chiffonier",
494: "chime",
495: "china cabinet",
496: "Christmas stocking",
497: "church",
498: "cinema",
499: "cleaver",
500: "cliff dwelling",
501: "cloak",
502: "clog",
503: "cocktail shaker",
504: "coffee mug",
505: "coffeepot",
506: "coil",
507: "combination lock",
508: "computer keyboard",
509: "confectionery",
510: "container ship",
511: "convertible",
512: "corkscrew",
513: "cornet",
514: "cowboy boot",
515: "cowboy hat",
516: "cradle",
517: "crane",
518: "crash helmet",
519: "crate",
520: "crib",
521: "Crock Pot",
522: "croquet ball",
523: "crutch",
524: "cuirass",
525: "dam",
526: "desk",
527: "desktop computer",
528: "dial telephone",
529: "diaper",
530: "digital clock",
531: "digital watch",
532: "dining table",
533: "dishrag",
534: "dishwasher",
535: "disk brake",
536: "dock",
537: "dogsled",
538: "dome",
539: "doormat",
540: "drilling platform",
541: "drum",
542: "drumstick",
543: "dumbbell",
544: "Dutch oven",
545: "electric fan",
546: "electric guitar",
547: "electric locomotive",
548: "entertainment center",
549: "envelope",
550: "espresso maker",
551: "face powder",
552: "feather boa",
553: "file",
554: "fireboat",
555: "fire engine",
556: "fire screen",
557: "flagpole",
558: "flute",
559: "folding chair",
560: "football helmet",
561: "forklift",
562: "fountain",
563: "fountain pen",
564: "four-poster",
565: "freight car",
566: "French horn",
567: "frying pan",
568: "fur coat",
569: "garbage truck",
570: "gasmask",
571: "gas pump",
572: "goblet",
573: "go-kart",
574: "golf ball",
575: "golfcart",
576: "gondola",
577: "gong",
578: "gown",
579: "grand piano",
580: "greenhouse",
581: "grille",
582: "grocery store",
583: "guillotine",
584: "hair slide",
585: "hair spray",
586: "half track",
587: "hammer",
588: "hamper",
589: "hand blower",
590: "hand-held computer",
591: "handkerchief",
592: "hard disc",
593: "harmonica",
594: "harp",
595: "harvester",
596: "hatchet",
597: "holster",
598: "home theater",
599: "honeycomb",
600: "hook",
601: "hoopskirt",
602: "horizontal bar",
603: "horse cart",
604: "hourglass",
605: "iPod",
606: "iron",
607: "jack-o-lantern",
608: "jean",
609: "jeep",
610: "jersey",
611: "jigsaw puzzle",
612: "jinrikisha",
613: "joystick",
614: "kimono",
615: "knee pad",
616: "knot",
617: "lab coat",
618: "ladle",
619: "lampshade",
620: "laptop",
621: "lawn mower",
622: "lens cap",
623: "letter opener",
624: "library",
625: "lifeboat",
626: "lighter",
627: "limousine",
628: "liner",
629: "lipstick",
630: "Loafer",
631: "lotion",
632: "loudspeaker",
633: "loupe",
634: "lumbermill",
635: "magnetic compass",
636: "mailbag",
637: "mailbox",
638: "maillot",
639: "maillot",
640: "manhole cover",
641: "maraca",
642: "marimba",
643: "mask",
644: "matchstick",
645: "maypole",
646: "maze",
647: "measuring cup",
648: "medicine chest",
649: "megalith",
650: "microphone",
651: "microwave",
652: "military uniform",
653: "milk can",
654: "minibus",
655: "miniskirt",
656: "minivan",
657: "missile",
658: "mitten",
659: "mixing bowl",
660: "mobile home",
661: "Model T",
662: "modem",
663: "monastery",
664: "monitor",
665: "moped",
666: "mortar",
667: "mortarboard",
668: "mosque",
669: "mosquito net",
670: "motor scooter",
671: "mountain bike",
672: "mountain tent",
673: "mouse",
674: "mousetrap",
675: "moving van",
676: "muzzle",
677: "nail",
678: "neck brace",
679: "necklace",
680: "nipple",
681: "notebook",
682: "obelisk",
683: "oboe",
684: "ocarina",
685: "odometer",
686: "oil filter",
687: "organ",
688: "oscilloscope",
689: "overskirt",
690: "oxcart",
691: "oxygen mask",
692: "packet",
693: "paddle",
694: "paddlewheel",
695: "padlock",
696: "paintbrush",
697: "pajama",
698: "palace",
699: "panpipe",
700: "paper towel",
701: "parachute",
702: "parallel bars",
703: "park bench",
704: "parking meter",
705: "passenger car",
706: "patio",
707: "pay-phone",
708: "pedestal",
709: "pencil box",
710: "pencil sharpener",
711: "perfume",
712: "Petri dish",
713: "photocopier",
714: "pick",
715: "pickelhaube",
716: "picket fence",
717: "pickup",
718: "pier",
719: "piggy bank",
720: "pill bottle",
721: "pillow",
722: "ping-pong ball",
723: "pinwheel",
724: "pirate",
725: "pitcher",
726: "plane",
727: "planetarium",
728: "plastic bag",
729: "plate rack",
730: "plow",
731: "plunger",
732: "Polaroid camera",
733: "pole",
734: "police van",
735: "poncho",
736: "pool table",
737: "pop bottle",
738: "pot",
739: "potters wheel",
740: "power drill",
741: "prayer rug",
742: "printer",
743: "prison",
744: "projectile",
745: "projector",
746: "puck",
747: "punching bag",
748: "purse",
749: "quill",
750: "quilt",
751: "racer",
752: "racket",
753: "radiator",
754: "radio",
755: "radio telescope",
756: "rain barrel",
757: "recreational vehicle",
758: "reel",
759: "reflex camera",
760: "refrigerator",
761: "remote control",
762: "restaurant",
763: "revolver",
764: "rifle",
765: "rocking chair",
766: "rotisserie",
767: "rubber eraser",
768: "rugby ball",
769: "rule",
770: "running shoe",
771: "safe",
772: "safety pin",
773: "saltshaker",
774: "sandal",
775: "sarong",
776: "sax",
777: "scabbard",
778: "scale",
779: "school bus",
780: "schooner",
781: "scoreboard",
782: "screen",
783: "screw",
784: "screwdriver",
785: "seat belt",
786: "sewing machine",
787: "shield",
788: "shoe shop",
789: "shoji",
790: "shopping basket",
791: "shopping cart",
792: "shovel",
793: "shower cap",
794: "shower curtain",
795: "ski",
796: "ski mask",
797: "sleeping bag",
798: "slide rule",
799: "sliding door",
800: "slot",
801: "snorkel",
802: "snowmobile",
803: "snowplow",
804: "soap dispenser",
805: "soccer ball",
806: "sock",
807: "solar dish",
808: "sombrero",
809: "soup bowl",
810: "space bar",
811: "space heater",
812: "space shuttle",
813: "spatula",
814: "speedboat",
815: "spider web",
816: "spindle",
817: "sports car",
818: "spotlight",
819: "stage",
820: "steam locomotive",
821: "steel arch bridge",
822: "steel drum",
823: "stethoscope",
824: "stole",
825: "stone wall",
826: "stopwatch",
827: "stove",
828: "strainer",
829: "streetcar",
830: "stretcher",
831: "studio couch",
832: "stupa",
833: "submarine",
834: "suit",
835: "sundial",
836: "sunglass",
837: "sunglasses",
838: "sunscreen",
839: "suspension bridge",
840: "swab",
841: "sweatshirt",
842: "swimming trunks",
843: "swing",
844: "switch",
845: "syringe",
846: "table lamp",
847: "tank",
848: "tape player",
849: "teapot",
850: "teddy",
851: "television",
852: "tennis ball",
853: "thatch",
854: "theater curtain",
855: "thimble",
856: "thresher",
857: "throne",
858: "tile roof",
859: "toaster",
860: "tobacco shop",
861: "toilet seat",
862: "torch",
863: "totem pole",
864: "tow truck",
865: "toyshop",
866: "tractor",
867: "trailer truck",
868: "tray",
869: "trench coat",
870: "tricycle",
871: "trimaran",
872: "tripod",
873: "triumphal arch",
874: "trolleybus",
875: "trombone",
876: "tub",
877: "turnstile",
878: "typewriter keyboard",
879: "umbrella",
880: "unicycle",
881: "upright",
882: "vacuum",
883: "vase",
884: "vault",
885: "velvet",
886: "vending machine",
887: "vestment",
888: "viaduct",
889: "violin",
890: "volleyball",
891: "waffle iron",
892: "wall clock",
893: "wallet",
894: "wardrobe",
895: "warplane",
896: "washbasin",
897: "washer",
898: "water bottle",
899: "water jug",
900: "water tower",
901: "whiskey jug",
902: "whistle",
903: "wig",
904: "window screen",
905: "window shade",
906: "Windsor tie",
907: "wine bottle",
908: "wing",
909: "wok",
910: "wooden spoon",
911: "wool",
912: "worm fence",
913: "wreck",
914: "yawl",
915: "yurt",
916: "web site",
917: "comic book",
918: "crossword puzzle",
919: "street sign",
920: "traffic light",
921: "book jacket",
922: "menu",
923: "plate",
924: "guacamole",
925: "consomme",
926: "hot pot",
927: "trifle",
928: "ice cream",
929: "ice lolly",
930: "French loaf",
931: "bagel",
932: "pretzel",
933: "cheeseburger",
934: "hotdog",
935: "mashed potato",
936: "head cabbage",
937: "broccoli",
938: "cauliflower",
939: "zucchini",
940: "spaghetti squash",
941: "acorn squash",
942: "butternut squash",
943: "cucumber",
944: "artichoke",
945: "bell pepper",
946: "cardoon",
947: "mushroom",
948: "Granny Smith",
949: "strawberry",
950: "orange",
951: "lemon",
952: "fig",
953: "pineapple",
954: "banana",
955: "jackfruit",
956: "custard apple",
957: "pomegranate",
958: "hay",
959: "carbonara",
960: "chocolate sauce",
961: "dough",
962: "meat loaf",
963: "pizza",
964: "potpie",
965: "burrito",
966: "red wine",
967: "espresso",
968: "cup",
969: "eggnog",
970: "alp",
971: "bubble",
972: "cliff",
973: "coral reef",
974: "geyser",
975: "lakeside",
976: "promontory",
977: "sandbar",
978: "seashore",
979: "valley",
980: "volcano",
981: "ballplayer",
982: "groom",
983: "scuba diver",
984: "rapeseed",
985: "daisy",
986: "yellow ladys slipper",
987: "corn",
988: "acorn",
989: "hip",
990: "buckeye",
991: "coral fungus",
992: "agaric",
993: "gyromitra",
994: "stinkhorn",
995: "earthstar",
996: "hen-of-the-woods",
997: "bolete",
998: "ear",
999: "toilet tissue"
}
}