import os
import numpy as np
from glob import glob
from tqdm import tqdm
import scipy.io as scio
import xml.etree.ElementTree as ET
from alisuretool.Tools import Tools
from deal_data_0_global_info import get_data_root_path

if __name__ == '__main__':
    data_root = get_data_root_path()
    image_info_path = os.path.join(data_root, "deal", "image_info_list2.pkl")
    image_info_list = Tools.read_from_pkl(image_info_path)

    # [one for one in image_info_list if len(one["object"]) > 0]

    cat_list = {}
    cat_single_list = {}
    for image_info in image_info_list:
        for one in image_info["object"]:
            cat_name = one[-1]["cat_name"]

            if cat_name not in cat_list:
                cat_list[cat_name] = []
            if cat_name not in cat_single_list:
                cat_single_list[cat_name] = []

            if len(image_info["object"]) == 1:
                cat_single_list[cat_name].append(image_info)
            else:
                # Tools.print(image_info["image_path"])
import os
import numpy as np
from glob import glob
import scipy.io as scio
import xml.etree.ElementTree as ET
from deal_data_0_global_info import get_data_root_path

data = scio.loadmat(os.path.join(get_data_root_path(), 'meta_det.mat'))
# anno_dir = './ILSVRC_DET/Annotations/DET/train'
anno_dir = os.path.join(get_data_root_path(),
                        "ILSVRC2017_DET/ILSVRC/Annotations/DET/train")
xml_files = sorted(glob(os.path.join(anno_dir, 'ILSVRC2013_train/*/*.xml')))
xml_files_2014 = sorted(glob(os.path.join(anno_dir, '*/*.xml')))
xml_files.extend(xml_files_2014)
print(len(xml_files))  # 349319

name_to_detlabelid = {}
for item in data['synsets'][0]:
    det_label_id = item[0][0][0]
    name = item[1][0]
    cat_name = item[2][0]
    # print(det_label_id)
    # print(cat_name)
    # print(name)
    name_to_detlabelid[name] = det_label_id

image_labels = np.zeros([len(xml_files), 200])
for i, xml_file in enumerate(xml_files):
    tree = ET.parse(xml_file)
    root = tree.getroot()
    objects = root.findall('object')