From 43ec855a1e5e579af99a5fc852ce15021f44185b Mon Sep 17 00:00:00 2001 From: Gduret <guillaume.duret@ec-lyon.fr> Date: Fri, 24 Feb 2023 14:28:57 +0100 Subject: [PATCH] optimisation masks ok --- compute_features.py | 28 +++++----- instance_mask.py | 121 ++++++-------------------------------------- main.py | 5 +- 3 files changed, 34 insertions(+), 120 deletions(-) diff --git a/compute_features.py b/compute_features.py index 3630f12..b9e1063 100644 --- a/compute_features.py +++ b/compute_features.py @@ -7,15 +7,9 @@ import json from utils import compute_categories_id, compute_id_good_occ from scipy.spatial.transform import Rotation from bbox_2d import bbox_2d - - -def convert2(xyz): - (R, P, Y) = (xyz[0], xyz[1], xyz[2]) - Q = Rotation.from_euler(seq='xyz', angles=[R, P, Y], degrees=False).as_quat() - r = Rotation.from_quat(Q) - rotation = r.as_matrix() - - return rotation +import cv2 +from instance_mask import instance +from pose import convert2 def process_compute(data_name, Nb_camera, Nb_world, list_categories, occ_target): @@ -46,11 +40,11 @@ def process_compute(data_name, Nb_camera, Nb_world, list_categories, occ_target) if len(data_Bbox_2d) != len(data_3D_pose) : raise TypeError("size of datas are differents !!") - for k in range(len(data_3D_pose)): + for categories in list_categories: - for categories in list_categories: + if len(catergories_occ_array[categories]) == 1 : - if len(catergories_occ_array[categories]) == 1 : + for k in range(len(data_3D_pose)): if data_3D_pose[k]['id'] == catergories_occ_array[categories][0]: cont1 += 1 @@ -75,6 +69,16 @@ def process_compute(data_name, Nb_camera, Nb_world, list_categories, occ_target) else: continue + + id = catergories_occ_array[categories][0] + img = cv2.imread(f"{data_name}/Instance_Segmentation/{p}.png", cv2.IMREAD_UNCHANGED) # plt.imread(path) + + instance_img = instance(img, id) + cv2.imwrite(f"{data_name}/Generated/Instance_Mask/{categories}/{p}.png", 255*instance_img) + + + + print(cont1, cont2, cont3) diff --git a/instance_mask.py b/instance_mask.py index 28c9072..30da404 100644 --- a/instance_mask.py +++ b/instance_mask.py @@ -5,95 +5,6 @@ from pathlib import Path -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 compute_id_good_occ(data_name, count, catergories_instance_array_id_to_cat, catergories_instance_array_cat_to_id, Occ_wanted): - - f2 = open(f'{data_name}/Occlusion/{count}.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 instance(im, id): #im = im * 255 im[im == id] = 255 @@ -104,36 +15,36 @@ def instance(im, id): return im -def generate_instance_mask(data_name, Nb_camera, Nb_world,list_categories, occ_target): +# def generate_instance_mask(data_name, Nb_camera, Nb_world,list_categories, occ_target): - for i in range(1, Nb_world + 1): # worlds +# for i in range(1, Nb_world + 1): # worlds - catergories_instance_array_id_to_cat, catergories_instance_array_cat_to_id = compute_categories_id(data_name, i) +# catergories_instance_array_id_to_cat, catergories_instance_array_cat_to_id = compute_categories_id(data_name, i) - for j in range(1, Nb_camera+1): # cameras - p = ((i-1)*Nb_camera) + j +# for j in range(1, Nb_camera+1): # cameras +# p = ((i-1)*Nb_camera) + j - catergories_occ_array = compute_id_good_occ(data_name, p, catergories_instance_array_id_to_cat, catergories_instance_array_cat_to_id, occ_target) +# catergories_occ_array = compute_id_good_occ(data_name, p, catergories_instance_array_id_to_cat, catergories_instance_array_cat_to_id, occ_target) - for categories in list_categories: +# for categories in list_categories: - if len(catergories_occ_array[categories]) == 1 : +# if len(catergories_occ_array[categories]) == 1 : - id = catergories_occ_array[categories][0] - print("iddd : ",id) - img = cv2.imread(f"{data_name}/Instance_Segmentation/{p}.png", cv2.IMREAD_UNCHANGED) # plt.imread(path) +# id = catergories_occ_array[categories][0] +# print("iddd : ",id) +# img = cv2.imread(f"{data_name}/Instance_Segmentation/{p}.png", cv2.IMREAD_UNCHANGED) # plt.imread(path) - #print("img[817][308] : ", img[817][308]) - print("img[308][817] : ", img[308][817]) +# #print("img[817][308] : ", img[817][308]) +# print("img[308][817] : ", img[308][817]) - instance_img = instance(img, id) - print("instance_img[308][817] : ", instance_img[308][817]) +# instance_img = instance(img, id) +# print("instance_img[308][817] : ", instance_img[308][817]) - cv2.imwrite(f"{data_name}/Generated/Instance_Mask/{categories}/{p}.png", 255*instance_img) +# cv2.imwrite(f"{data_name}/Generated/Instance_Mask/{categories}/{p}.png", 255*instance_img) diff --git a/main.py b/main.py index 5b84ac8..08cc388 100644 --- a/main.py +++ b/main.py @@ -4,13 +4,12 @@ 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 instance_mask import generate_instance_mask from fps_alg import generate_fps from bbox_3d import generate_3d_bbox from compute_features import process_compute import shutil - def generate_folders(name, list_categories): is_exist = os.path.exists(name) if not is_exist: @@ -66,6 +65,6 @@ if __name__ == '__main__': process_compute(dataset_name, Nb_camera, Nb_world, list_categories, occ_target) #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_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) -- GitLab