# Copyright (c) Facebook, Inc. and its affiliates.
import json
import logging
import numpy as np
import os
from PIL import Image
import pdb

from detectron2.data import DatasetCatalog, MetadataCatalog
from detectron2.data.datasets.coco import load_coco_json, register_coco_instances
from detectron2.utils.file_io import PathManager

EntityV2_instance_CATEGORIES = [
{'name': 'man', 'id': 1, 'c_name': '男人', 'supercategory': 'person', 'type': 'thing'},
{'name': 'car', 'id': 2, 'c_name': '小汽车', 'supercategory': 'land_transportation', 'type': 'thing'},
{'name': 'chair', 'id': 4, 'c_name': '椅子', 'supercategory': 'seat_furniture', 'type': 'thing'},
{'name': 'utility_ot', 'id': 5, 'c_name': '其他工具', 'supercategory': 'utility', 'type': 'thing'},
{'name': 'street_light', 'id': 7, 'c_name': '路灯', 'supercategory': 'traffic_facility', 'type': 'thing'},
{'name': 'signboard', 'id': 9, 'c_name': '简介牌', 'supercategory': 'media', 'type': 'thing'},
{'name': 'facility_ot', 'id': 10, 'c_name': '其他设施类', 'supercategory': 'facility', 'type': 'thing'},
{'name': 'rigid_container_ot', 'id': 11, 'c_name': '其他定型容器', 'supercategory': 'rigid_container', 'type': 'thing'},
{'name': 'sculpture', 'id': 13, 'c_name': '雕塑雕像', 'supercategory': 'media', 'type': 'thing'},
{'name': 'book', 'id': 14, 'c_name': '书', 'supercategory': 'media', 'type': 'thing'},
{'name': 'box', 'id': 16, 'c_name': '盒子箱子', 'supercategory': 'rigid_container', 'type': 'thing'},
{'name': 'table_ot', 'id': 17, 'c_name': '其他桌子', 'supercategory': 'table', 'type': 'thing'},
{'name': 'noncommon_furniture', 'id': 19, 'c_name': '非常用家具', 'supercategory': 'furniture', 'type': 'thing'},
{'name': 'can_light', 'id': 20, 'c_name': '筒灯', 'supercategory': 'light', 'type': 'thing'},
{'name': 'painting', 'id': 24, 'c_name': '绘画类', 'supercategory': 'media', 'type': 'thing'},
{'name': 'traffic_sign', 'id': 26, 'c_name': '交通标志', 'supercategory': 'traffic_facility', 'type': 'thing'},
{'name': 'paper', 'id': 29, 'c_name': '纸', 'supercategory': 'media', 'type': 'thing'},
{'name': 'boat', 'id': 30, 'c_name': '小型船只', 'supercategory': 'underwater_vehicle', 'type': 'thing'},
{'name': 'entertainment_appliances_ot', 'id': 31, 'c_name': '其他娱乐设施', 'supercategory': 'entertainment_appliances_ot', 'type': 'thing'},
{'name': 'bottle', 'id': 32, 'c_name': '瓶子', 'supercategory': 'rigid_container', 'type': 'thing'},
{'name': 'birds_ot', 'id': 34, 'c_name': '其他飞禽', 'supercategory': 'birds', 'type': 'thing'},
{'name': 'cushion', 'id': 35, 'c_name': '抱枕', 'supercategory': 'common_furniture', 'type': 'thing'},
{'name': 'cup_ot', 'id': 37, 'c_name': '其他杯子', 'supercategory': 'cup', 'type': 'thing'},
{'name': 'backpack', 'id': 38, 'c_name': '背包', 'supercategory': 'bag', 'type': 'thing'},
{'name': 'sconce', 'id': 42, 'c_name': '壁灯', 'supercategory': 'light', 'type': 'thing'},
{'name': 'fooddrink_ot', 'id': 43, 'c_name': '其他食物饮品', 'supercategory': 'fooddrink', 'type': 'thing'},
{'name': 'handbag', 'id': 46, 'c_name': '手提包', 'supercategory': 'bag', 'type': 'thing'},
{'name': 'decoration', 'id': 47, 'c_name': '装饰物', 'supercategory': 'common_furniture', 'type': 'thing'},
{'name': 'electric_wire', 'id': 48, 'c_name': '电线电缆', 'supercategory': 'traffic_facility', 'type': 'thing'},
{'name': 'trash_bin', 'id': 49, 'c_name': '垃圾桶', 'supercategory': 'clean_tool', 'type': 'thing'},
{'name': 'plate', 'id': 51, 'c_name': '盘子', 'supercategory': 'kitchen_tool', 'type': 'thing'},
{'name': 'drink_ot', 'id': 52, 'c_name': '其他饮品', 'supercategory': 'drink', 'type': 'thing'},
{'name': 'toy_ot', 'id': 55, 'c_name': '其他玩具', 'supercategory': 'toy', 'type': 'thing'},
{'name': 'pen', 'id': 56, 'c_name': '笔', 'supercategory': 'media', 'type': 'thing'},
{'name': 'flag', 'id': 57, 'c_name': '旗帜', 'supercategory': 'media', 'type': 'thing'},
{'name': 'outdoor_supplies_ot', 'id': 59, 'c_name': '其他户外休闲用品', 'supercategory': 'outdoor_supplies', 'type': 'thing'},
{'name': 'curtain', 'id': 60, 'c_name': '窗帘', 'supercategory': 'common_furniture', 'type': 'thing'},
{'name': 'chandilier', 'id': 61, 'c_name': '吊灯', 'supercategory': 'light', 'type': 'thing'},
{'name': 'fish_ot', 'id': 62, 'c_name': '其他鱼类', 'supercategory': 'fish', 'type': 'thing'},
{'name': 'light_ot', 'id': 64, 'c_name': '其他灯', 'supercategory': 'light', 'type': 'thing'},
{'name': 'plugs_and_sockets', 'id': 65, 'c_name': '插头插座', 'supercategory': 'entertainment_appliances', 'type': 'thing'},
{'name': 'rope', 'id': 66, 'c_name': '绳子', 'supercategory': 'outdoor_supplies', 'type': 'thing'},
{'name': 'land_transportation_ot', 'id': 68, 'c_name': '其他陆地交通工具', 'supercategory': 'land_transportation', 'type': 'thing'},
{'name': 'bicycle', 'id': 69, 'c_name': '自行车', 'supercategory': 'land_transportation', 'type': 'thing'},
{'name': 'stool', 'id': 70, 'c_name': '凳子', 'supercategory': 'seat_furniture', 'type': 'thing'},
{'name': 'kitchen_tool_ot', 'id': 72, 'c_name': '其他厨房工具', 'supercategory': 'kitchen_tool', 'type': 'thing'},
{'name': 'mat', 'id': 75, 'c_name': '垫子', 'supercategory': 'blanket_furniture', 'type': 'thing'},
{'name': 'bench', 'id': 76, 'c_name': '长凳', 'supercategory': 'seat_furniture', 'type': 'thing'},
{'name': 'billboard', 'id': 79, 'c_name': '广告牌', 'supercategory': 'media', 'type': 'thing'},
{'name': 'flower', 'id': 80, 'c_name': '花', 'supercategory': 'plant_part', 'type': 'thing'},
{'name': 'bowl', 'id': 81, 'c_name': '碗', 'supercategory': 'rigid_container', 'type': 'thing'},
{'name': 'leaf', 'id': 82, 'c_name': '树叶', 'supercategory': 'plant_part', 'type': 'thing'},
{'name': 'cow_ot', 'id': 83, 'c_name': '其他牛', 'supercategory': 'cow', 'type': 'thing'},
{'name': 'dessert_snacks_ot', 'id': 84, 'c_name': '其他甜点小吃', 'supercategory': 'dessert_snacks', 'type': 'thing'},
{'name': 'dog', 'id': 85, 'c_name': '狗', 'supercategory': 'mammal', 'type': 'thing'},
{'name': 'bag_ot', 'id': 86, 'c_name': '其他包', 'supercategory': 'bag', 'type': 'thing'},
{'name': 'photo', 'id': 87, 'c_name': '照片', 'supercategory': 'media', 'type': 'thing'},
{'name': 'bath_tool_ot', 'id': 88, 'c_name': '其他沐浴工具', 'supercategory': 'bath_tool', 'type': 'thing'},
{'name': 'towel', 'id': 89, 'c_name': '毛巾', 'supercategory': 'bath_tool', 'type': 'thing'},
{'name': 'ceiling_lamp', 'id': 91, 'c_name': '吸顶灯', 'supercategory': 'light', 'type': 'thing'},
{'name': 'musical_instrument', 'id': 92, 'c_name': '乐器', 'supercategory': 'sports_musical', 'type': 'thing'},
{'name': 'barrel', 'id': 93, 'c_name': '桶', 'supercategory': 'rigid_container', 'type': 'thing'},
{'name': 'traffic_light', 'id': 94, 'c_name': '红绿灯', 'supercategory': 'traffic_facility', 'type': 'thing'},
{'name': 'wineglass', 'id': 95, 'c_name': '酒杯', 'supercategory': 'cup', 'type': 'thing'},
{'name': 'plastic_bag', 'id': 96, 'c_name': '塑料袋', 'supercategory': 'flexible_container', 'type': 'thing'},
{'name': 'cloth_ot', 'id': 97, 'c_name': '其他服饰类', 'supercategory': 'cloth', 'type': 'thing'},
{'name': 'jar', 'id': 98, 'c_name': '玻璃罐', 'supercategory': 'rigid_container', 'type': 'thing'},
{'name': 'mobilephone', 'id': 99, 'c_name': '手机', 'supercategory': 'telephone', 'type': 'thing'},
{'name': 'cable', 'id': 101, 'c_name': '连接线', 'supercategory': 'entertainment_appliances', 'type': 'thing'},
{'name': 'fitness_equipment_ot', 'id': 102, 'c_name': '其他健身设备', 'supercategory': 'fitness_equipment', 'type': 'thing'},
{'name': 'poster', 'id': 103, 'c_name': '海报类', 'supercategory': 'media', 'type': 'thing'},
{'name': 'glass', 'id': 104, 'c_name': '玻璃杯', 'supercategory': 'cup', 'type': 'thing'},
{'name': 'branch', 'id': 105, 'c_name': '树枝', 'supercategory': 'plant_part', 'type': 'thing'},
{'name': 'repair_tool_ot', 'id': 106, 'c_name': '其他修理工具', 'supercategory': 'repair_tool', 'type': 'thing'},
{'name': 'pillow', 'id': 107, 'c_name': '枕头', 'supercategory': 'beddings', 'type': 'thing'},
{'name': 'cabinets_ot', 'id': 108, 'c_name': '其他橱柜', 'supercategory': 'cabinets', 'type': 'thing'},
{'name': 'apple', 'id': 109, 'c_name': '苹果', 'supercategory': 'fruit', 'type': 'thing'},
{'name': 'sheep', 'id': 110, 'c_name': '羊', 'supercategory': 'mammal', 'type': 'thing'},
{'name': 'doll_ot', 'id': 112, 'c_name': '其他玩偶', 'supercategory': 'doll', 'type': 'thing'},
{'name': 'fruit_ot', 'id': 113, 'c_name': '其他水果', 'supercategory': 'fruit', 'type': 'thing'},
{'name': 'kitchen cabinets', 'id': 115, 'c_name': '厨房里的柜子', 'supercategory': 'cabinets', 'type': 'thing'},
{'name': 'trunk', 'id': 118, 'c_name': '树干', 'supercategory': 'plant_part', 'type': 'thing'},
{'name': 'media_ot', 'id': 119, 'c_name': '其他传媒类', 'supercategory': 'media', 'type': 'thing'},
{'name': 'candle', 'id': 121, 'c_name': '蜡烛', 'supercategory': 'lab_tool', 'type': 'thing'},
{'name': 'duck', 'id': 123, 'c_name': '鸭', 'supercategory': 'birds', 'type': 'thing'},
{'name': 'pigeon', 'id': 124, 'c_name': '鸽子', 'supercategory': 'birds', 'type': 'thing'},
{'name': 'spoon', 'id': 125, 'c_name': '勺子', 'supercategory': 'kitchen_tool', 'type': 'thing'},
{'name': 'dining_table', 'id': 129, 'c_name': '餐桌', 'supercategory': 'table', 'type': 'thing'},
{'name': 'pumkin', 'id': 130, 'c_name': '南瓜', 'supercategory': 'vegetable', 'type': 'thing'},
{'name': 'horse_ot', 'id': 132, 'c_name': '其他马', 'supercategory': 'horse', 'type': 'thing'},
{'name': 'vegetable_ot', 'id': 133, 'c_name': '其他蔬菜', 'supercategory': 'vegetable', 'type': 'thing'},
{'name': 'flexible_container_ot', 'id': 134, 'c_name': '其他可改变外形的容器', 'supercategory': 'flexible_container', 'type': 'thing'},
{'name': 'surveillance_camera', 'id': 135, 'c_name': '监控器', 'supercategory': 'entertainment_appliances', 'type': 'thing'},
{'name': 'motorbike', 'id': 136, 'c_name': '摩托车', 'supercategory': 'land_transportation', 'type': 'thing'},
{'name': 'ordniary_sofa', 'id': 137, 'c_name': '普通沙发', 'supercategory': 'sofa', 'type': 'thing'},
{'name': 'laptop', 'id': 139, 'c_name': '笔记本电脑', 'supercategory': 'entertainment_appliances', 'type': 'thing'},
{'name': 'umbrella', 'id': 140, 'c_name': '雨伞', 'supercategory': 'outdoor_supplies', 'type': 'thing'},
{'name': 'faucet', 'id': 141, 'c_name': '水龙头', 'supercategory': 'kitchen_tool', 'type': 'thing'},
{'name': 'mammal_ot', 'id': 142, 'c_name': '其他哺乳动物', 'supercategory': 'mammal', 'type': 'thing'},
{'name': 'napkin', 'id': 144, 'c_name': '餐巾', 'supercategory': 'clean_tool', 'type': 'thing'},
{'name': 'bus', 'id': 145, 'c_name': '公交车', 'supercategory': 'land_transportation', 'type': 'thing'},
{'name': 'speaker', 'id': 146, 'c_name': '音响', 'supercategory': 'entertainment_appliances', 'type': 'thing'},
{'name': 'camera', 'id': 147, 'c_name': '照相机', 'supercategory': 'entertainment_appliances', 'type': 'thing'},
{'name': 'mirror', 'id': 148, 'c_name': '镜子', 'supercategory': 'common_furniture', 'type': 'thing'},
{'name': 'paddle', 'id': 149, 'c_name': '桨', 'supercategory': 'boat_part', 'type': 'thing'},
{'name': 'basket', 'id': 152, 'c_name': '篮子', 'supercategory': 'flexible_container', 'type': 'thing'},
{'name': 'sailboat', 'id': 154, 'c_name': '帆船', 'supercategory': 'underwater_vehicle', 'type': 'thing'},
{'name': 'ship', 'id': 155, 'c_name': '大轮船', 'supercategory': 'underwater_vehicle', 'type': 'thing'},
{'name': 'cat', 'id': 157, 'c_name': '猫', 'supercategory': 'mammal', 'type': 'thing'},
{'name': 'screen', 'id': 158, 'c_name': '显示器', 'supercategory': 'entertainment_appliances', 'type': 'thing'},
{'name': 'orange', 'id': 160, 'c_name': '橘子', 'supercategory': 'fruit', 'type': 'thing'},
{'name': 'bedroom bed', 'id': 161, 'c_name': '卧室床', 'supercategory': 'bed', 'type': 'thing'},
{'name': 'ball_ot', 'id': 162, 'c_name': '其他球类', 'supercategory': 'ball', 'type': 'thing'},
{'name': 'switch', 'id': 164, 'c_name': '开关', 'supercategory': 'entertainment_appliances', 'type': 'thing'},
{'name': 'elephant', 'id': 165, 'c_name': '大象', 'supercategory': 'mammal', 'type': 'thing'},
{'name': 'blanket', 'id': 166, 'c_name': '毛毯', 'supercategory': 'blanket_furniture', 'type': 'thing'},
{'name': 'airplane', 'id': 167, 'c_name': '飞机', 'supercategory': 'air_vehicle', 'type': 'thing'},
{'name': 'kiosk', 'id': 168, 'c_name': '电话亭', 'supercategory': 'energyfacility', 'type': 'thing'},
{'name': 'television', 'id': 169, 'c_name': '电视机', 'supercategory': 'entertainment_appliances', 'type': 'thing'},
{'name': 'trolley', 'id': 170, 'c_name': '手推车', 'supercategory': 'land_transportation', 'type': 'thing'},
{'name': 'couch', 'id': 173, 'c_name': '长沙发', 'supercategory': 'sofa', 'type': 'thing'},
{'name': 'van', 'id': 174, 'c_name': '厢式货车', 'supercategory': 'land_transportation', 'type': 'thing'},
{'name': 'meat_ot', 'id': 175, 'c_name': '其他肉', 'supercategory': 'meat', 'type': 'thing'},
{'name': 'accessories_ot', 'id': 176, 'c_name': '其他服饰类', 'supercategory': 'accessories', 'type': 'thing'},
{'name': 'blanket_furniture_ot', 'id': 177, 'c_name': '其他毯子', 'supercategory': 'blanket_furniture', 'type': 'thing'},
{'name': 'hanger', 'id': 178, 'c_name': '衣架', 'supercategory': 'common_furniture', 'type': 'thing'},
{'name': 'rug', 'id': 179, 'c_name': '地毯', 'supercategory': 'blanket_furniture', 'type': 'thing'},
{'name': 'paper_bag', 'id': 180, 'c_name': '纸袋', 'supercategory': 'flexible_container', 'type': 'thing'},
{'name': 'remote_control', 'id': 181, 'c_name': '遥控器', 'supercategory': 'entertainment_appliances', 'type': 'thing'},
{'name': 'kitchen_sink', 'id': 182, 'c_name': '盥洗', 'supercategory': 'kitchen_tool', 'type': 'thing'},
{'name': 'fork', 'id': 183, 'c_name': '叉', 'supercategory': 'kitchen_tool', 'type': 'thing'},
{'name': 'kitchen_pot_ot', 'id': 184, 'c_name': '其他厨房用锅', 'supercategory': 'kitchen_pot', 'type': 'thing'},
{'name': 'insect_ot', 'id': 185, 'c_name': '其他昆虫类', 'supercategory': 'insect', 'type': 'thing'},
{'name': 'underwater_vehicle_ot', 'id': 188, 'c_name': '其他水中交通工具', 'supercategory': 'underwater_vehicle', 'type': 'thing'},
{'name': 'table-knife', 'id': 192, 'c_name': '餐刀', 'supercategory': 'knife', 'type': 'thing'},
{'name': 'gym_equipment', 'id': 193, 'c_name': '室内健身器材', 'supercategory': 'fitness_equipment', 'type': 'thing'},
{'name': 'flowerpot', 'id': 196, 'c_name': '花盆', 'supercategory': 'rigid_container', 'type': 'thing'},
{'name': 'tv_receiver', 'id': 200, 'c_name': '电视接收器', 'supercategory': 'entertainment_appliances', 'type': 'thing'},
{'name': 'nightstand', 'id': 201, 'c_name': '床头柜', 'supercategory': 'cabinets', 'type': 'thing'},
{'name': 'kitchen_appliances_ot', 'id': 202, 'c_name': '其他厨房电器', 'supercategory': 'kitchen_appliances', 'type': 'thing'},
{'name': 'ski_pole', 'id': 203, 'c_name': '滑雪杆', 'supercategory': 'fitness_equipment', 'type': 'thing'},
{'name': 'coat', 'id': 204, 'c_name': '外套', 'supercategory': 'upper_body_clothing', 'type': 'thing'},
{'name': 'cutting_board', 'id': 205, 'c_name': '砧板', 'supercategory': 'kitchen_tool', 'type': 'thing'},
{'name': 'footwear_ot', 'id': 208, 'c_name': '其他鞋', 'supercategory': 'footwear', 'type': 'thing'},
{'name': 'microphone', 'id': 209, 'c_name': '麦克风', 'supercategory': 'entertainment_appliances', 'type': 'thing'},
{'name': 'lemon', 'id': 210, 'c_name': '柠檬', 'supercategory': 'fruit', 'type': 'thing'},
{'name': 'mushroom', 'id': 214, 'c_name': '蘑菇', 'supercategory': 'vegetable', 'type': 'thing'},
{'name': 'tire', 'id': 215, 'c_name': '轮胎', 'supercategory': 'vehicle_part', 'type': 'thing'},
{'name': 'filling cabinets', 'id': 216, 'c_name': '文件柜', 'supercategory': 'cabinets', 'type': 'thing'},
{'name': 'keyboard', 'id': 220, 'c_name': '键盘', 'supercategory': 'entertainment_appliances', 'type': 'thing'},
{'name': 'ladder', 'id': 221, 'c_name': '梯子', 'supercategory': 'repair_tool', 'type': 'thing'},
{'name': 'mouse', 'id': 222, 'c_name': '鼠标', 'supercategory': 'entertainment_appliances', 'type': 'thing'},
{'name': 'seat_furniture_ot', 'id': 224, 'c_name': '其他椅子', 'supercategory': 'seat_furniture', 'type': 'thing'},
{'name': 'spatula', 'id': 225, 'c_name': '厨房用铲', 'supercategory': 'kitchen_tool', 'type': 'thing'},
{'name': 'kite', 'id': 226, 'c_name': '风筝', 'supercategory': 'toy', 'type': 'thing'},
{'name': 'train', 'id': 228, 'c_name': '火车', 'supercategory': 'land_transportation', 'type': 'thing'},
{'name': 'sofa_ot', 'id': 229, 'c_name': '其他沙发', 'supercategory': 'sofa', 'type': 'thing'},
{'name': 'seasoning_ot', 'id': 234, 'c_name': '其他调味品', 'supercategory': 'seasoning', 'type': 'thing'},
{'name': 'cable_car', 'id': 235, 'c_name': '缆车', 'supercategory': 'land_transportation', 'type': 'thing'},
{'name': 'fast_food_ot', 'id': 236, 'c_name': '其他快餐食品', 'supercategory': 'fast_food', 'type': 'thing'},
{'name': 'tableware', 'id': 238, 'c_name': '餐具', 'supercategory': 'kitchen_tool', 'type': 'thing'},
{'name': 'played_blocks', 'id': 240, 'c_name': '积木', 'supercategory': 'toy', 'type': 'thing'},
{'name': 'suitcase', 'id': 244, 'c_name': '手提箱', 'supercategory': 'bag', 'type': 'thing'},
{'name': 'earthware_pot_with_handle', 'id': 246, 'c_name': '带柄的陶罐', 'supercategory': 'rigid_container', 'type': 'thing'},
{'name': 'pizza', 'id': 247, 'c_name': '披萨', 'supercategory': 'fast_food', 'type': 'thing'},
{'name': 'scarf', 'id': 251, 'c_name': '围巾', 'supercategory': 'human_accessories', 'type': 'thing'},
{'name': 'giraffe', 'id': 254, 'c_name': '长颈鹿', 'supercategory': 'deer', 'type': 'thing'},
{'name': 'scooter', 'id': 255, 'c_name': '滑板车', 'supercategory': 'land_transportation', 'type': 'thing'},
{'name': 'ski_board', 'id': 258, 'c_name': '滑雪板', 'supercategory': 'fitness_equipment', 'type': 'thing'},
{'name': 'crumb', 'id': 261, 'c_name': '面包屑', 'supercategory': 'dessert_snacks', 'type': 'thing'},
{'name': 'packaging_paper', 'id': 266, 'c_name': '包装纸', 'supercategory': 'media', 'type': 'thing'},
{'name': ' medical_equipment', 'id': 271, 'c_name': '医疗器械', 'supercategory': 'lab_tool', 'type': 'thing'},
{'name': 'leather_shoes', 'id': 272, 'c_name': '皮鞋', 'supercategory': 'footwear', 'type': 'thing'},
{'name': 'pipe', 'id': 277, 'c_name': '水管', 'supercategory': 'clean_tool', 'type': 'thing'},
{'name': 'canoe', 'id': 284, 'c_name': '皮划艇', 'supercategory': 'underwater_vehicle', 'type': 'thing'},
{'name': 'chicken', 'id': 285, 'c_name': '鸡', 'supercategory': 'birds', 'type': 'thing'},
{'name': 'T-shirt', 'id': 287, 'c_name': 'T恤', 'supercategory': 'upper_body_clothing', 'type': 'thing'},
{'name': 'strawberry', 'id': 290, 'c_name': '草莓', 'supercategory': 'fruit', 'type': 'thing'},
{'name': 'saucer', 'id': 292, 'c_name': '茶碟', 'supercategory': 'kitchen_tool', 'type': 'thing'},
{'name': 'turtle', 'id': 293, 'c_name': '龟', 'supercategory': 'reptile', 'type': 'thing'},
{'name': 'coffee cup', 'id': 294, 'c_name': '咖啡杯', 'supercategory': 'cup', 'type': 'thing'},
{'name': 'wrench', 'id': 304, 'c_name': '扳手', 'supercategory': 'repair_tool', 'type': 'thing'},
{'name': 'gas_stove', 'id': 305, 'c_name': '燃气炉', 'supercategory': 'stove', 'type': 'thing'},
{'name': 'zebra', 'id': 306, 'c_name': '斑马', 'supercategory': 'horse', 'type': 'thing'},
{'name': 'knife_ot', 'id': 308, 'c_name': '其他刀', 'supercategory': 'knife', 'type': 'thing'},
{'name': 'rifle', 'id': 309, 'c_name': '步枪', 'supercategory': 'weapon', 'type': 'thing'},
{'name': 'golf', 'id': 312, 'c_name': '高尔夫球', 'supercategory': 'ball', 'type': 'thing'},
{'name': ' folder', 'id': 313, 'c_name': '文件夹', 'supercategory': 'lab_tool', 'type': 'thing'},
{'name': 'gloves', 'id': 314, 'c_name': '手套', 'supercategory': 'human_accessories', 'type': 'thing'},
{'name': 'screwdriver', 'id': 315, 'c_name': '螺丝刀', 'supercategory': 'repair_tool', 'type': 'thing'},
{'name': 'plant_ot', 'id': 318, 'c_name': '其他植物', 'supercategory': 'plant', 'type': 'thing'},
{'name': 'food_processor', 'id': 330, 'c_name': '食品加工机', 'supercategory': 'kitchen_tool', 'type': 'thing'},
{'name': 'deer_ot', 'id': 333, 'c_name': '其他鹿', 'supercategory': 'deer', 'type': 'thing'},
{'name': 'beddings_ot', 'id': 336, 'c_name': '其他床上用品', 'supercategory': 'beddings', 'type': 'thing'},
{'name': 'tube', 'id': 337, 'c_name': '试管', 'supercategory': 'lab_tool', 'type': 'thing'},
{'name': 'sausage', 'id': 359, 'c_name': '香肠', 'supercategory': 'fast_food', 'type': 'thing'},
{'name': 'radish', 'id': 406, 'c_name': '萝卜', 'supercategory': 'vegetable', 'type': 'thing'},
{'name': 'tong', 'id': 422, 'c_name': '钳子', 'supercategory': 'repair_tool', 'type': 'thing'},
{'name': 'ski', 'id': 426, 'c_name': '雪橇', 'supercategory': 'fitness_equipment', 'type': 'thing'},
{'name': 'hot_ballon', 'id': 427, 'c_name': '热气球', 'supercategory': 'air_vehicle', 'type': 'thing'},
{'name': 'sparrow', 'id': 446, 'c_name': '麻雀', 'supercategory': 'birds', 'type': 'thing'},
{'name': 'hoodie', 'id': 478, 'c_name': '连帽衫', 'supercategory': 'upper_body_clothing', 'type': 'thing'},
{'name': 'person_ot', 'id': 640, 'c_name': '无法分辨年龄性别的人', 'supercategory': 'person', 'type': 'thing'},
{'name': 'woman', 'id': 641, 'c_name': '女人', 'supercategory': 'person', 'type': 'thing'},
{'name': 'boy', 'id': 642, 'c_name': '男孩', 'supercategory': 'person', 'type': 'thing'},
{'name': 'girl', 'id': 643, 'c_name': '女孩', 'supercategory': 'person', 'type': 'thing'},
]


_PREDEFINED_SPLITS = {
    "entityv2_instance_train": (
        "entityseg/images/entity_01_11580",
        "entityseg/annotations/instance_segmentation/entityv2_01_instances_train.json",
    ),
    "entityv2_instance_val": (
        "entityseg/images/entity_01_11580",
        "entityseg/annotations/instance_segmentation/entityv2_01_instances_val.json",
    ),
}

def _get_entityv2_instances_meta():
    thing_ids = [k["id"] for k in EntityV2_instance_CATEGORIES]
    # Mapping from the incontiguous ADE category id to an id in [0, 99]
    thing_dataset_id_to_contiguous_id = {k: i for i, k in enumerate(thing_ids)}
    thing_classes = [k["name"] for k in EntityV2_instance_CATEGORIES]
    ret = {
        "thing_dataset_id_to_contiguous_id": thing_dataset_id_to_contiguous_id,
        "thing_classes": thing_classes,
    }
    return ret


def register_all_entityv2_instance(root):
    for key, (image_root, json_file) in _PREDEFINED_SPLITS.items():
        # Assume pre-defined datasets live in `./datasets`.
        register_coco_instances(
            key,
            _get_entityv2_instances_meta(),
            os.path.join(root, json_file) if "://" not in json_file else json_file,
            os.path.join(root, image_root),
        )


_root = os.getenv("DETECTRON2_DATASETS", "datasets")
register_all_entityv2_instance(_root)