diff --git a/bbox_2d.py b/bbox_2d.py
index f039ae370c38ba61b32b6da0f5bf534bd48dcd2b..4da8cb51db3ab9ae2d50ad3e1941548a45b25398 100644
--- a/bbox_2d.py
+++ b/bbox_2d.py
@@ -19,11 +19,11 @@ def bbox_2d(data_sample):
     return bbox_res
 
 
-def generate_2d_bbox(data_name):
+def generate_2d_bbox(data_name, Nb_camera, Nb_world):
 
     cont1, cont2, cont3 = 0, 0, 0
     num_arr = 0
-    for p in range(4995):
+    for p in range(1, Nb_camera*Nb_world +1 ):
         with open(f"{data_name}/Bbox_2d/{p}.json", 'r') as f:
           data = json.load(f)
 
@@ -31,17 +31,17 @@ def generate_2d_bbox(data_name):
             if data[i]['id'] == 4:
                 cont1 += 1
                 bbox = bbox_2d(data[i])
-                np.savetxt(f'{data_name}/Bbox/Banana/{p}.txt', np.array(bbox).reshape((1, 4)))  # save
+                np.savetxt(f'{data_name}/Bbox/banana1/{p}.txt', np.array(bbox).reshape((1, 4)))  # save
 
             elif data[i]['id'] == 5:
                 cont2 += 1
                 bbox = bbox_2d(data[i])
-                np.savetxt(f'{data_name}/Bbox/Orange/{p}.txt', np.array(bbox).reshape((1, 4)))  # save
+                np.savetxt(f'{data_name}/Bbox/orange2/{p}.txt', np.array(bbox).reshape((1, 4)))  # save
 
             elif data[i]['id'] == 6:
                 cont3 += 1
                 bbox = bbox_2d(data[i])
-                np.savetxt(f'{data_name}/Bbox/Pear/{p}.txt', np.array(bbox).reshape((1, 4)))  # save
+                np.savetxt(f'{data_name}/Bbox/pear2/{p}.txt', np.array(bbox).reshape((1, 4)))  # save
 
             else:
                 continue
diff --git a/data_label.py b/data_label.py
index 02cf8367cb8bfd629aa39de861aa5ac576cce527..919376f2c51012a7a5145827120aee0c856ee5ad 100644
--- a/data_label.py
+++ b/data_label.py
@@ -5,7 +5,7 @@ import numpy as np
 for im in range(4995):
     id_obj = 0.0
     res_all = []
-    for obj in ['banana_mask', 'orange_mask', 'pear_mask']:
+    for obj in ['banana1_mask', 'orange2_mask', 'pear2_mask']:
         res = [id_obj]
         image = cv2.imread(f"{obj}/{im}.png", 0)
         image = image/255.0
diff --git a/fps_alg.py b/fps_alg.py
index 68632a80b2eff2e8553d936f0a41198e886a3fd3..1ba47529e55094f0d36c438685ec96831946b4e5 100644
--- a/fps_alg.py
+++ b/fps_alg.py
@@ -4,6 +4,7 @@ from matplotlib import pyplot as plt
 from matplotlib import image
 import cv2
 from skimage.io import imshow
+from pathlib import Path
 
 
 def fps(points, centroid, n_samples):
@@ -162,37 +163,42 @@ def process(pcd_box, pcd2, R_exp, tVec, camera, img):
 
 # ==============================================================================
 
-def generate_fps(data_name, camera, vis=False):
+def generate_fps(data_name, camera, Nb_camera, Nb_world, list_objects, vis=False):
     # Read the point cloud
-    for obj in ["Banana", "Orange", "Pear"]:
+    for obj in list_objects:
         obj_id = 1
         point_cloud = f'{data_name}/Models/{obj}/{obj.lower()}.ply'
         pcd = o3d.io.read_point_cloud(point_cloud)
 
-        fps_points = apply_fps(pcd, 8)
+        print("pcd", pcd)
+
+
+        fps_points = apply_fps(pcd, 200)
         np.savetxt(f'{data_name}/FPS/{obj}_fps_3d.txt', fps_points)
 
-        for i in range(4995):
-            img = image.imread(f"{data_name}/RGB/{i}.png")
-
-            pose = np.load(f'{data_name}/Pose_transformed/{obj}/{i}.npy')
-            R_exp = pose[0:3, 0:3]
-            tVec = pose[0:3, 3]
-
-            # camera = np.matrix([[1386.4138492513919, 0.0, 960.5],
-            #                     [0.0, 1386.4138492513919, 540.5],
-            #                     [0.0, 0.0, 1.0]])
-
-            # process(pcd_bbox, pcd, R_exp, tVec, camera, img)
-            points = process2(fps_points, R_exp, tVec, camera, img, vis)
-            out = np.zeros((1, 17))
-
-            out[0] = obj_id
-            ind = 1
-            for point in points:
-                out[0][ind] = point[0][0] / img.shape[1]
-                out[0][ind + 1] = point[0][1] / img.shape[0]
-                ind += 2
-            np.savetxt(f'{data_name}/FPS/{obj}/{i}.txt', out)
-            print("stop")
+        for i in range(1, Nb_camera*Nb_world +1):
+            path = Path(f'{data_name}/Pose_transformed/{obj}/{i}.npy') 
+            if path.is_file():
+                img = image.imread(f"{data_name}/RGB/{i}.png")
+
+                pose = np.load(f'{data_name}/Pose_transformed/{obj}/{i}.npy')
+                R_exp = pose[0:3, 0:3]
+                tVec = pose[0:3, 3]
+
+                # camera = np.matrix([[1386.4138492513919, 0.0, 960.5],
+                #                     [0.0, 1386.4138492513919, 540.5],
+                #                     [0.0, 0.0, 1.0]])
+
+                # process(pcd_bbox, pcd, R_exp, tVec, camera, img)
+                points = process2(fps_points, R_exp, tVec, camera, img, vis)
+                out = np.zeros((1, 401))
+
+                out[0] = obj_id
+                ind = 1
+                for point in points:
+                    out[0][ind] = point[0][0] / img.shape[1]
+                    out[0][ind + 1] = point[0][1] / img.shape[0]
+                    ind += 2
+                np.savetxt(f'{data_name}/FPS/{obj}/{i}.txt', out)
+                print("stop")
     obj_id += 1
diff --git a/instance_mask.py b/instance_mask.py
index ead299034d3419bbdd6b77cd3162c25cc3f3c5f4..f4429bc87a9dedd5f35be5aa89727982f803afa2 100644
--- a/instance_mask.py
+++ b/instance_mask.py
@@ -1,24 +1,135 @@
 from matplotlib import pyplot as plt
 import cv2
+import json
+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 * 255
     im[im == id] = 255
     im[im < 255] = 0
     im = im / 255
-    # plt.imshow(im, cmap='gray')
-    # plt.show()
+    #plt.imshow(im, cmap='gray')
+    #plt.show()
     return im
 
 
-def generate_instance_mask(data_name):
-    ids = {"Banana": 108, "Orange": 117, "Pear": 121}
+def generate_instance_mask(data_name, Nb_camera, Nb_world):
+    ids = {"banana1": 25, "orange2": 36, "pear2": 121}
+    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)
+        
+
+
+        for j in range(1, Nb_camera+1): # cameras
+            k = ((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)
+            
+            for key in ids.keys():
+                id = ids[key]
+                path = Path(f"{data_name}/Instance_Segmentation/{k}.png") 
+                if path.is_file():
+                    print("iddd : ",id)
+                    img = cv2.imread(f"{data_name}/Instance_Segmentation/{k}.png", cv2.IMREAD_UNCHANGED) # plt.imread(path)
+
+                    #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])
 
-    for i in range(4995):
-        for key in ids.keys():
-            id = ids[key]
-            img = plt.imread(f"{data_name}/Mask/{i}.png")
-            instance_img = instance(img, id)
-            cv2.imwrite(f"{data_name}/Instance_Mask/{key}/{i}.png", instance_img)
+                    cv2.imwrite(f"{data_name}/Instance_Mask/{key}/{k}.png", 255*instance_img)
 
diff --git a/main.py b/main.py
index 90c471b4d07237ef0dd9c8aca06a528d74d2b2c1..4e8a37f6801c7c6e2033524001c85f6022bb373f 100644
--- a/main.py
+++ b/main.py
@@ -1,5 +1,6 @@
 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
@@ -14,31 +15,213 @@ def generate_folders(name):
     if not is_exist:
         os.mkdir(name)
 
-    folders = ["RGB", "Depth", "Mask", "Pose", "Bbox_2d", "Instance_Mask", "Models", "Pose_transformed", "Bbox", "FPS"]
+    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 ["Instance_Mask", "Models", "Pose_transformed", "Bbox", "FPS"]:
                 os.mkdir(f"{name}/{f}")
             else:
-                os.makedirs(f"{name}/{f}/Banana")
-                os.makedirs(f"{name}/{f}/Orange")
-                os.makedirs(f"{name}/{f}/Pear")
+                os.makedirs(f"{name}/{f}/banana1")
+                os.makedirs(f"{name}/{f}/orange2")
+                os.makedirs(f"{name}/{f}/pear2")
+
+
+
+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"
+    #dataset_src = "/media/mahmoud/E/Fruits_easy/data"
+
+    # futur parameters : 
+
+
+
+    Categories = [] # to read
+    Nb_instance = 1
+    Occ_target = 0.5
+
+
+    #Category = 'banana1'
+    Category = 'pear2'
+    #Category = "orange2"
+
+    dataset_src = "/media/gduret/DATA/dataset/s2rg/Fruits_all_medium/data"
+
+
+    catergories_instance_array_id_to_cat, catergories_instance_array_cat_to_id = compute_categories_id(dataset_src, 1)
+
+
+
     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}"
     generate_folders(dataset_name)
 
-    list_obj = ["Banana", "Orange", "Pear"]
+    list_obj = ["banana1", "orange2", "pear2"]
     for obj in list_obj:
         src_bbox = f"Models/{obj}/{obj.lower()}.ply"
         dst_bbox = f"{dataset_name}/Models/{obj}/{obj.lower()}.ply"
@@ -55,9 +238,16 @@ if __name__ == '__main__':
 
     np.savetxt(f'{dataset_name}/camera_{choice}.txt', camera)
 
-    reform_data(dataset_src, dataset_name, dataset_type)
-    transform_pose(dataset_name)
-    generate_2d_bbox(dataset_name)
-    generate_instance_mask(dataset_name)
-    generate_fps(dataset_name, camera, False)
-    generate_3d_bbox(dataset_name)
+    # 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, Occ_target)
+    generate_2d_bbox(dataset_name, Nb_camera, Nb_world)
+    generate_instance_mask(dataset_name, Nb_camera, Nb_world)
+    generate_fps(dataset_name, camera, Nb_camera, Nb_world, list_obj, True)
+    #generate_3d_bbox(dataset_name)
diff --git a/pose.py b/pose.py
index ee0fd8bef453aba5508fc95e07dedf31047cbc49..0e4b6c258543bf3a22d44e3b25a7e6726fd5a13a 100644
--- a/pose.py
+++ b/pose.py
@@ -4,6 +4,73 @@ import json
 from scipy.spatial.transform import Rotation
 
 
+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:
+        if i['occlusion_value'] > 0.5 :
+            catergories_occ_array[catergories_instance_array_id_to_cat[i['id']]].append(i['id'])
+
+    print(catergories_occ_array)
+
+    # Closing file
+    f2.close()
+
+    return catergories_occ_array
+
+
 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()
@@ -13,54 +80,67 @@ def convert2(xyz):
     return rotation
 
 
-def transform_pose(data_name):
+def transform_pose(data_name, Nb_camera, Nb_world, occ_target):
     transformation = np.matrix([[0.0000000, -1.0000000, 0.0000000],
                                 [0.0000000, 0.0000000, -1.0000000],
                                 [1.0000000, 0.0000000, 0.0000000]])
     cont1, cont2, cont3 = 0, 0, 0
-    for p in range(4995):
-        with open(f'{data_name}/Pose/{p}.json', 'r') as f:
-          data = json.load(f)
-
-        for i in range(len(data)):
-            if data[i]['id'] == 4:
-                cont1 += 1
-                rpy = data[i]['pose']['rpy']
-                rot = convert2(rpy)
-                R_exp = transformation @ rot
-                R_exp = np.array(R_exp)
-
-                xyz = data[i]['pose']['xyz']
-                T_exp = transformation @ xyz
-                T_exp = np.array(T_exp)
-                num_arr = np.c_[R_exp, T_exp[0]]
-                np.save(f'{data_name}/Pose_transformed/Banana/{p}.npy', num_arr)  # save
-
-            elif data[i]['id'] == 5:
-                cont2 += 1
-                rpy = data[i]['pose']['rpy']
-                rot = convert2(rpy)
-                R_exp = transformation @ rot
-                R_exp = np.array(R_exp)
-
-                xyz = data[i]['pose']['xyz']
-                T_exp = transformation @ xyz
-                T_exp = np.array(T_exp)
-                num_arr = np.c_[R_exp, T_exp[0]]
-                np.save(f'{data_name}/Pose_transformed/Orange/{p}.npy', num_arr)  # save
-            elif data[i]['id'] == 6:
-                cont3 += 1
-                rpy = data[i]['pose']['rpy']
-                rot = convert2(rpy)
-                R_exp = transformation @ rot
-                R_exp = np.array(R_exp)
-
-                xyz = data[i]['pose']['xyz']
-                T_exp = transformation @ xyz
-                T_exp = np.array(T_exp)
-                num_arr = np.c_[R_exp, T_exp[0]]
-                np.save(f'{data_name}/Pose_transformed/Pear/{p}.npy', num_arr)  # save
-            else:
-                continue
+    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)
+        
+        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)
+
+            with open(f'{data_name}/Pose/{p}.json', 'r') as f:
+                data = json.load(f)
+                #print(data)
+                print("len(data)", len(data))
+
+            for k in range(len(data)):
+
+  
+                if len(catergories_occ_array['banana1']) == 1 and data[k]['id'] == catergories_occ_array['banana1'][0]:
+                    cont1 += 1
+                    rpy = data[k]['pose']['rpy']
+                    rot = convert2(rpy)
+                    R_exp = transformation @ rot
+                    R_exp = np.array(R_exp)
+
+                    xyz = data[k]['pose']['xyz']
+                    T_exp = transformation @ xyz
+                    T_exp = np.array(T_exp)
+                    num_arr = np.c_[R_exp, T_exp[0]]
+                    np.save(f'{data_name}/Pose_transformed/banana1/{p}.npy', num_arr)  # save
+
+                elif len(catergories_occ_array['orange2']) == 1 and data[k]['id'] == catergories_occ_array['orange2'][0]:
+                    cont2 += 1
+                    rpy = data[k]['pose']['rpy']
+                    rot = convert2(rpy)
+                    R_exp = transformation @ rot
+                    R_exp = np.array(R_exp)
+
+                    xyz = data[k]['pose']['xyz']
+                    T_exp = transformation @ xyz
+                    T_exp = np.array(T_exp)
+                    num_arr = np.c_[R_exp, T_exp[0]]
+                    np.save(f'{data_name}/Pose_transformed/orange2/{p}.npy', num_arr)  # save
+
+                elif len(catergories_occ_array['pear2']) == 1 and data[k]['id'] == catergories_occ_array['pear2'][0]:
+                    cont3 += 1
+                    rpy = data[k]['pose']['rpy']
+                    rot = convert2(rpy)
+                    R_exp = transformation @ rot
+                    R_exp = np.array(R_exp)
+
+                    xyz = data[k]['pose']['xyz']
+                    T_exp = transformation @ xyz
+                    T_exp = np.array(T_exp)
+                    num_arr = np.c_[R_exp, T_exp[0]]
+                    np.save(f'{data_name}/Pose_transformed/pear2/{p}.npy', num_arr)  # save
+                else:
+                    continue
     print(cont1, cont2, cont3)
 
diff --git a/prepare_data.py b/prepare_data.py
index 394d8bf83c939a7adcefc60b91ff857c101d871d..42ec5802d0cf65b28162f07ae9ea6682aea98c48 100644
--- a/prepare_data.py
+++ b/prepare_data.py
@@ -1,39 +1,48 @@
 import shutil
 
 
-def reform_data(src, data_name, data_option):
-    k = 0
-    for i in range(1, 1000):
-        g = 0
-        for j in range(1, 6):
-            count = (k*5) + g
-
+def reform_data(src, data_name, data_option, frame, Nb_camera, Nb_world):
+    for i in range(1, Nb_world + 1): # worlds
+        src_meta = f"{src}/{i}/meta.json"
+        dst_meta = f"{data_name}/Meta/{i}.json"
+        shutil.copy(src_meta, dst_meta)
+        for j in range(1, Nb_camera+1): # cameras
+            count = ((i-1)*Nb_camera) + j
             if data_option == "ground_truth_rgb":
-                src_img = f"{src}/{i}/grabber_{j}/color/image/0_0.png"
+                src_img = f"{src}/{i}/grabber_{j}/color/image/{frame}.png"
                 dst_img = f"{data_name}/RGB/{count}.png"
             else:
-                src_img = f"{src}/{i}/grabber_{j}/depth/image/0_0.png"
+                src_img = f"{src}/{i}/grabber_{j}/depth/image/{frame}.png"
                 dst_img = f"{data_name}/RGB/{count}.png"
             shutil.copy(src_img, dst_img)
 
-            src_mask = f"{src}/{i}/grabber_{j}/{data_option}/semantic_map/0_0.png"
-            dst_mask = f"{data_name}/Mask/{count}.png"
-            shutil.copy(src_mask, dst_mask)
+            src_id = f"{src}/{i}/grabber_{j}/{data_option}/id_map/{frame}.png"
+            dst_id = f"{data_name}/Instance_Segmentation/{count}.png"
+            shutil.copy(src_id, dst_id)
+
+            src_semantic = f"{src}/{i}/grabber_{j}/{data_option}/semantic_map/{frame}.png"
+            dst_semantic = f"{data_name}/Semantic_Segmentation/{count}.png"
+            shutil.copy(src_semantic, dst_semantic)
 
-            src_path_pose = f"{src}/{i}/grabber_{j}/{data_option}/3d_pose/0_0.json"
+            src_path_pose = f"{src}/{i}/grabber_{j}/{data_option}/3d_pose/{frame}.json"
             dst_path_pose = f"{data_name}/Pose/{count}.json"
             shutil.copy(src_path_pose, dst_path_pose)
 
-            src_depth = f"{src}/{i}/grabber_{j}/depth/depth_map/0_0.tiff"
+            src_path_occlusion = f"{src}/{i}/grabber_{j}/{data_option}/occlusion/{frame}.json"
+            dst_path_occlusion = f"{data_name}/Occlusion/{count}.json"
+            shutil.copy(src_path_occlusion, dst_path_occlusion)
+
+            src_depth = f"{src}/{i}/grabber_{j}/depth/depth_map/{frame}.tiff"
             dst_depth = f"{data_name}/Depth/{count}.tiff"
             shutil.copy(src_depth, dst_depth)
 
-            src_bbox = f"{src}/{i}/grabber_{j}/{data_option}/2d_detection/0_0.json"
+            src_bbox = f"{src}/{i}/grabber_{j}/{data_option}/2d_detection/{frame}.json"
             dst_bbox = f"{data_name}/Bbox_2d/{count}.json"
             shutil.copy(src_bbox, dst_bbox)
 
-            g += 1
-        k += 1
+            src_bbox_loose = f"{src}/{i}/grabber_{j}/{data_option}/2d_detection_loose/{frame}.json"
+            dst_bbox_loose = f"{data_name}/Bbox_2d_loose/{count}.json"
+            shutil.copy(src_bbox_loose, dst_bbox_loose)
 
 
 
diff --git a/read_dataset.py b/read_dataset.py
index a2057cb224cd33a321a0799afc194c27fd16e3e9..a9da4c8469afa32680453747a3e682cc0b8360c4 100644
--- a/read_dataset.py
+++ b/read_dataset.py
@@ -26,9 +26,9 @@ import json
 
 #Category = 'banana1'
 Category = 'pear2'
-  
+#Category = "orange2"
 # Opening JSON file
-f = open('/media/gduret/DATA/dataset/s2rg/Fruits_all_medium/data/6/meta.json')
+f = open('/media/gduret/DATA/dataset/s2rg/Fruits_all_medium/data/1/meta.json')
   
 # returns JSON object as 
 # a dictionary
@@ -60,7 +60,7 @@ print(id_instances)
 # Closing file
 f.close()
 
-f2 = open('/media/gduret/DATA/dataset/s2rg/Fruits_all_medium/data/6/grabber_1/ground_truth_rgb/occlusion/4_158000000.json')
+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)
 
diff --git a/resize.py b/resize.py
index 7060013971359c71f2cc04630ddaaf33e16b7f16..70cc608640bcb86bab7e2941ba3b7e98659a96c6 100644
--- a/resize.py
+++ b/resize.py
@@ -38,14 +38,14 @@ if __name__ == '__main__':
 
         depth = cv2.resize(cv2.imread(f"{dataset_name}/Depth/{i}.tiff"), new_size)
 
-        banana_mask = cv2.resize(cv2.imread(f"{dataset_name}/Instance_Mask/Banana/{i}.png"), new_size)
-        cv2.imwrite(f"banana_mask/{i}.png", banana_mask*255)
+        banana_mask = cv2.resize(cv2.imread(f"{dataset_name}/Instance_Mask/banana1/{i}.png"), new_size)
+        cv2.imwrite(f"banana1_mask/{i}.png", banana_mask*255)
 
-        orange_mask = cv2.resize(cv2.imread(f"{dataset_name}/Instance_Mask/Orange/{i}.png"), new_size)
-        cv2.imwrite(f"orange_mask/{i}.png", orange_mask*255)
+        orange_mask = cv2.resize(cv2.imread(f"{dataset_name}/Instance_Mask/orange2/{i}.png"), new_size)
+        cv2.imwrite(f"orange2_mask/{i}.png", orange_mask*255)
 
-        Pear_mask = cv2.resize(cv2.imread(f"{dataset_name}/Instance_Mask/Pear/{i}.png"), new_size)
-        cv2.imwrite(f"pear_mask/{i}.png", Pear_mask*255)
+        Pear_mask = cv2.resize(cv2.imread(f"{dataset_name}/Instance_Mask/pear2/{i}.png"), new_size)
+        cv2.imwrite(f"pear2_mask/{i}.png", Pear_mask*255)
 
 
         print("Done")
diff --git a/test_resize.py b/test_resize.py
index c014c5975f1ef22a590f3e70f8476481789afea2..58177e3b28c9f070922cbad2000c4f8b2bf8d505 100644
--- a/test_resize.py
+++ b/test_resize.py
@@ -166,6 +166,7 @@ def generate_fps(data_name, camera, vis=False, resize=False):
     # Read the point cloud
 
     for obj in ["Banana"]:
+        sfefcij
         obj_id = 0
         point_cloud = f'{data_name}/Models/{obj}/{obj.lower()}.ply'
         pcd = o3d.io.read_point_cloud(point_cloud)