Skip to content
Snippets Groups Projects
Commit 43ec855a authored by Guillaume Duret's avatar Guillaume Duret
Browse files

optimisation masks ok

parent 42cb938c
No related branches found
No related tags found
No related merge requests found
...@@ -7,15 +7,9 @@ import json ...@@ -7,15 +7,9 @@ import json
from utils import compute_categories_id, compute_id_good_occ from utils import compute_categories_id, compute_id_good_occ
from scipy.spatial.transform import Rotation from scipy.spatial.transform import Rotation
from bbox_2d import bbox_2d from bbox_2d import bbox_2d
import cv2
from instance_mask import instance
def convert2(xyz): from pose import convert2
(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
def process_compute(data_name, Nb_camera, Nb_world, list_categories, occ_target): 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) ...@@ -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) : if len(data_Bbox_2d) != len(data_3D_pose) :
raise TypeError("size of datas are differents !!") 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]: if data_3D_pose[k]['id'] == catergories_occ_array[categories][0]:
cont1 += 1 cont1 += 1
...@@ -75,6 +69,16 @@ def process_compute(data_name, Nb_camera, Nb_world, list_categories, occ_target) ...@@ -75,6 +69,16 @@ def process_compute(data_name, Nb_camera, Nb_world, list_categories, occ_target)
else: else:
continue 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) print(cont1, cont2, cont3)
...@@ -5,95 +5,6 @@ from pathlib import Path ...@@ -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): def instance(im, id):
#im = im * 255 #im = im * 255
im[im == id] = 255 im[im == id] = 255
...@@ -104,36 +15,36 @@ def instance(im, id): ...@@ -104,36 +15,36 @@ def instance(im, id):
return im 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 # for j in range(1, Nb_camera+1): # cameras
p = ((i-1)*Nb_camera) + j # 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] # id = catergories_occ_array[categories][0]
print("iddd : ",id) # print("iddd : ",id)
img = cv2.imread(f"{data_name}/Instance_Segmentation/{p}.png", cv2.IMREAD_UNCHANGED) # plt.imread(path) # 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[817][308] : ", img[817][308])
print("img[308][817] : ", img[308][817]) # print("img[308][817] : ", img[308][817])
instance_img = instance(img, id) # instance_img = instance(img, id)
print("instance_img[308][817] : ", instance_img[308][817]) # 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)
...@@ -4,13 +4,12 @@ import json ...@@ -4,13 +4,12 @@ import json
from prepare_data import reform_data from prepare_data import reform_data
#from pose import transform_pose #from pose import transform_pose
#from bbox_2d import generate_2d_bbox #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 fps_alg import generate_fps
from bbox_3d import generate_3d_bbox from bbox_3d import generate_3d_bbox
from compute_features import process_compute from compute_features import process_compute
import shutil import shutil
def generate_folders(name, list_categories): def generate_folders(name, list_categories):
is_exist = os.path.exists(name) is_exist = os.path.exists(name)
if not is_exist: if not is_exist:
...@@ -66,6 +65,6 @@ if __name__ == '__main__': ...@@ -66,6 +65,6 @@ if __name__ == '__main__':
process_compute(dataset_name, Nb_camera, Nb_world, list_categories, occ_target) process_compute(dataset_name, Nb_camera, Nb_world, list_categories, occ_target)
#transform_pose(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_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_fps(dataset_name, camera, Nb_camera, Nb_world, list_categories, True)
#generate_3d_bbox(dataset_name) #generate_3d_bbox(dataset_name)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment