import os import numpy as np import json from prepare_data import reform_data from pose import transform_pose from bbox_2d import generate_2d_bbox from instance_mask import generate_instance_mask from fps_alg import generate_fps from bbox_3d import generate_3d_bbox import shutil def compute_categories_id(data_name, world): #Category = 'banana1' #Category = 'pear2' #Category = "orange2" # Opening JSON file f = open(f'{data_name}/Meta/{world}.json') # returns JSON object as # a dictionary data = json.load(f) # Iterating through the json # list catergories_label_to_id={} catergories_id_to_label={} catergories_instance_array_cat_to_id={} catergories_instance_array_id_to_cat={} for k in data['categories']: catergories_label_to_id[k['label']]=k['id'] catergories_id_to_label[k['id']]=k['label'] catergories_instance_array_cat_to_id[k['label']]=[] for k in data['objects']: #print(k) #catergories_instance_array[catergories_id_to_label[i['category_id']]] catergories_instance_array_id_to_cat[k['id']] = catergories_id_to_label[k['category_id']] catergories_instance_array_cat_to_id[catergories_id_to_label[k['category_id']]].append(k['id']) # if i['category_id'] == id_category : # print("Hello fruits instance") # id_instances.append(i['id']) # print(i['id']) # print("catergories_instance_array_cat_to_id : ", catergories_instance_array_cat_to_id) # print("catergories_instance_array_id_to_cat : ", catergories_instance_array_id_to_cat) # Closing file f.close() return catergories_instance_array_id_to_cat, catergories_instance_array_cat_to_id def generate_folders(name, list_categories): is_exist = os.path.exists(name) if not is_exist: os.mkdir(name) folders = ["RGB", "Depth", "Mask", "Meta", "Pose", "Bbox_2d", "Bbox_2d_loose", "Instance_Segmentation", "Semantic_Segmentation", "Instance_Mask", "Occlusion", "Models", "Pose_transformed", "Bbox", "FPS"] for f in folders: is_exist = os.path.exists(f"{name}/{f}") if not is_exist: if f not in ["RGB_Gen", "Instance_Mask", "Models", "Pose_transformed", "Bbox", "FPS"]: os.mkdir(f"{name}/{f}") else: for cat in list_categories: os.makedirs(f"{name}/Generated/{f}/{cat}") # def compute_categories_id(dataset_src, world): # #Category = 'banana1' # #Category = 'pear2' # #Category = "orange2" # # Opening JSON file # f = open(f'{dataset_src}/{world}/meta.json') # # returns JSON object as # # a dictionary # data = json.load(f) # # Iterating through the json # # list # id_category = 0 # catergories_label_to_id={} # catergories_id_to_label={} # catergories_instance_array_cat_to_id={} # catergories_instance_array_id_to_cat={} # for i in data['categories']: # catergories_label_to_id[i['label']]=i['id'] # catergories_id_to_label[i['id']]=i['label'] # catergories_instance_array_cat_to_id[i['label']]=[] # for i in data['objects']: # print(i) # #catergories_instance_array[catergories_id_to_label[i['category_id']]] # catergories_instance_array_id_to_cat[i['id']] = catergories_id_to_label[i['category_id']] # catergories_instance_array_cat_to_id[catergories_id_to_label[i['category_id']]].append(i['id']) # # if i['category_id'] == id_category : # # print("Hello fruits instance") # # id_instances.append(i['id']) # # print(i['id']) # print("catergories_instance_array_cat_to_id : ", catergories_instance_array_cat_to_id) # print("catergories_instance_array_id_to_cat : ", catergories_instance_array_id_to_cat) # # Closing file # f.close() # return catergories_instance_array_id_to_cat, catergories_instance_array_cat_to_id # def get_id_wanted(wanted_category): # #Category = 'banana1' # #Category = 'pear2' # #Category = "orange2" # # Opening JSON file # f = open('/media/gduret/DATA/dataset/s2rg/Fruits_all_medium/data/1/meta.json') # # returns JSON object as # # a dictionary # data = json.load(f) # # Iterating through the json # # list # id_category = 0 # for i in data['categories']: # print(i) # if i['label'] == wanted_category : # print("Hello fruits") # id_category = i['id'] # print(id_category) # id_instances = [] # for i in data['objects']: # print(i) # if i['category_id'] == id_category : # print("Hello fruits instance") # id_instances.append(i['id']) # print(i['id']) # print(id_instances) # # Closing file # f.close() # return id_instances # def compute_id_good_occ(dataset_src, world, camera, type_data, frame, catergories_instance_array_id_to_cat, catergories_instance_array_cat_to_id, Occ_wanted): # f2 = open(f'{dataset_src}/{world}/grabber_{camera}/{type_data}/occlusion/{frame}.json') # data2 = json.load(f2) # catergories_occ_array = {} # for cat in catergories_instance_array_cat_to_id : # #print(cat) # catergories_occ_array[cat] = [] # for i in data2: # #print('i : ',i) # #print(i['id']) # #print(id_instances) # if i['occlusion_value'] > 0.5 : # catergories_occ_array[catergories_instance_array_id_to_cat[i['id']]].append(i['id']) # # if i['id'] in id_instances : # # print("Hello banana instance occ") # # if i['occlusion_value'] > 0.5 : # # id_instances_good.append(i['id']) # # print(i['id']) # # print(i['occlusion_value']) # print(catergories_occ_array) # # Closing file # f2.close() # return catergories_occ_array # def get_id_good_occ(Occ_wanted): # f2 = open('/media/gduret/DATA/dataset/s2rg/Fruits_all_medium/data/1/grabber_1/ground_truth_rgb/occlusion/4_158000000.json') # data2 = json.load(f2) # id_instances_good = [] # for i in data2: # print('i : ',i) # print(i['id']) # print(id_instances) # if i['id'] in id_instances : # print("Hello banana instance occ") # if i['occlusion_value'] > 0.5 : # id_instances_good.append(i['id']) # print(i['id']) # print(i['occlusion_value']) # print(id_instances_good) # # Closing file # f2.close() if __name__ == '__main__': #dataset_src = "/media/mahmoud/E/Fruits_easy/data" # futur parameters : Categories = [] # to read Nb_instance = 1 occ_target = 0.5 #catergories_instance_array_id_to_cat, catergories_instance_array_cat_to_id = compute_categories_id(dataset_name, 1) dataset_src = "/media/gduret/DATA/dataset/s2rg/Fruits_all_medium/data" choice = "low" data_options = {"high": "ground_truth_rgb", "low": "ground_truth_depth"} dataset_type = data_options[choice] #compute_id_good_occ(dataset_src, 1, 1, dataset_type, "1_926000000", catergories_instance_array_id_to_cat, catergories_instance_array_cat_to_id, Occ_target) dataset_name = f"GUIMOD_{choice}" list_categories = ["banana1", "kiwi1", "pear2", "strawberry1", "apricot", "orange2", "peach1", "lemon2", "apple2" ] generate_folders(dataset_name, list_categories) for cat in list_categories: src_bbox = f"Models/{cat}/{cat.lower()}.ply" dst_bbox = f"{dataset_name}/Generated/Models/{cat}/{cat.lower()}.ply" shutil.copy(src_bbox, dst_bbox) if choice == 'high': camera = np.matrix([[1386.4138492513919, 0.0, 960.5], [0.0, 1386.4138492513919, 540.5], [0.0, 0.0, 1.0]]) else: camera = np.matrix([[1086.5054444841007, 0.0, 640.5], [0.0, 1086.5054444841007, 360.5], [0.0, 0.0, 1.0]]) np.savetxt(f'{dataset_name}/Generated/camera_{choice}.txt', camera) # frame = "1_600000000" frame = "1_926000000" Nb_camera = 15 Nb_world = 2 reform_data(dataset_src, dataset_name, dataset_type, frame, Nb_camera, Nb_world) transform_pose(dataset_name, Nb_camera, Nb_world, list_categories, occ_target) generate_2d_bbox(dataset_name, Nb_camera, Nb_world, list_categories, occ_target) generate_instance_mask(dataset_name, Nb_camera, Nb_world, list_categories, occ_target) generate_fps(dataset_name, camera, Nb_camera, Nb_world, list_categories, True) #generate_3d_bbox(dataset_name)