diff --git a/bbox_2d.py b/bbox_2d.py
index c8513ae7ee994af979c4282d559ffb1eb52c69ef..451286288c8844f0b8aa533bd86034f21d1a4d2c 100644
--- a/bbox_2d.py
+++ b/bbox_2d.py
@@ -3,6 +3,95 @@ import numpy as np
 import json
 
 
+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 bbox_2d(data_sample):
 
     center = data_sample['bbox']['center']
@@ -19,31 +108,34 @@ def bbox_2d(data_sample):
     return bbox_res
 
 
-def generate_2d_bbox(data_name, Nb_camera, Nb_world):
+def generate_2d_bbox(data_name, Nb_camera, Nb_world, list_categories, occ_target):
 
     cont1, cont2, cont3 = 0, 0, 0
     num_arr = 0
-    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)
-
-        for i in range(len(data)):
-            if data[i]['id'] == 4:
-                cont1 += 1
-                bbox = bbox_2d(data[i])
-                np.savetxt(f'{data_name}/Generated/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}/Generated/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}/Generated/Bbox/pear2/{p}.txt', np.array(bbox).reshape((1, 4)))  # 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}/Bbox_2d/{p}.json", 'r') as f:
+                data = json.load(f)
+
+            for k in range(len(data)):
+
+                for categories in list_categories:
+                    
+                    if len(catergories_occ_array[categories]) == 1 and data[k]['id'] == catergories_occ_array[categories][0]:
+
+                        cont1 += 1
+                        bbox = bbox_2d(data[k])
+                        np.savetxt(f'{data_name}/Generated/Bbox/{categories}/{p}.txt', np.array(bbox).reshape((1, 4)))  # save
+                    else:
+                        continue
     print(cont1, cont2, cont3)
 
diff --git a/fps_alg.py b/fps_alg.py
index 6ab1870191ebaf7a61a1355ef614309ed94092f3..a1f035f5468e029c48882960fd2935b8989de4cd 100644
--- a/fps_alg.py
+++ b/fps_alg.py
@@ -106,8 +106,13 @@ def process2(pcd, R_exp, tVec, camera, img, vis= True):
     # pcd_fps.points = o3d.utility.Vector3dVector(pcd)
 
     camera = np.array(camera)
+    print(R_exp)
     R_exp = np.array(R_exp, dtype="float64")
+    print(R_exp)
+    print(tVec)
     tVec = np.array(tVec, dtype="float64")
+    print(tVec)
+
 
     pcd_fps_numpy = np.asarray(pcd)
     keypoint_2d = cv2.projectPoints(pcd_fps_numpy, R_exp, tVec, camera, np.zeros(shape=[5, 1], dtype='float64'))
@@ -132,7 +137,10 @@ def process(pcd_box, pcd2, R_exp, tVec, camera, img):
 
     camera = np.array(camera)
     R_exp = np.array(R_exp, dtype="float64")
+    print(R_exp)
     tVec = np.array(tVec, dtype="float64")
+    print(tVec)
+
 
     pcd2_in_numpy2 = np.asarray(pcd2.points)
     pcd2_in_numpy = pcd_box
@@ -181,10 +189,16 @@ def generate_fps(data_name, camera, Nb_camera, Nb_world, list_objects, vis=False
             if path.is_file():
                 img = image.imread(f"{data_name}/RGB/{i}.png")
 
+
+                np.set_printoptions(precision=15)
                 pose = np.load(f'{data_name}/Generated/Pose_transformed/{obj}/{i}.npy')
+                print(pose)
                 R_exp = pose[0:3, 0:3]
                 tVec = pose[0:3, 3]
 
+                print(tVec)
+
+
                 # camera = np.matrix([[1386.4138492513919, 0.0, 960.5],
                 #                     [0.0, 1386.4138492513919, 540.5],
                 #                     [0.0, 0.0, 1.0]])
diff --git a/instance_mask.py b/instance_mask.py
index 6e7b7e2056c9d76c1b582eb20f931a6c0550d380..5ad4d4eb81cab7ce958f4c790a9fa9f6e96f36ea 100644
--- a/instance_mask.py
+++ b/instance_mask.py
@@ -104,33 +104,39 @@ def instance(im, id):
     return im
 
 
-def generate_instance_mask(data_name, Nb_camera, Nb_world):
-    ids = {"banana1": 25, "orange2": 36, "pear2": 121}
+def generate_instance_mask(data_name, Nb_camera, Nb_world,list_categories, occ_target):
+
     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
             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)
+            catergories_occ_array = compute_id_good_occ(data_name, k, catergories_instance_array_id_to_cat, catergories_instance_array_cat_to_id, occ_target)
+
+
+            for categories in list_categories:
+
+                if len(catergories_occ_array[categories]) == 1 :
+
+
+                    path = Path(f"{data_name}/Instance_Segmentation/{k}.png") 
+                    if path.is_file():
+                        id = catergories_occ_array[categories][0]
+                        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])
 
-                    #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}/{k}.png", 255*instance_img)
 
-                    cv2.imwrite(f"{data_name}/Generated/Instance_Mask/{key}/{k}.png", 255*instance_img)
 
diff --git a/main.py b/main.py
index f62320abd6b79515c64d11865f0248d23c74d679..e5d7d92dd5e63166e8e162d47049ec831ccc4bc6 100644
--- a/main.py
+++ b/main.py
@@ -10,30 +10,14 @@ from bbox_3d import generate_3d_bbox
 import shutil
 
 
-def generate_folders(name):
-    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:
-                os.makedirs(f"{name}/Generated/{f}/banana1")
-                os.makedirs(f"{name}/Generated/{f}/orange2")
-                os.makedirs(f"{name}/Generated/{f}/pear2")
 
 
-
-def compute_categories_id(dataset_src, world):
+def compute_categories_id(data_name, world):
     #Category = 'banana1'
     #Category = 'pear2'
     #Category = "orange2"
     # Opening JSON file
-    f = open(f'{dataset_src}/{world}/meta.json')
+    f = open(f'{data_name}/Meta/{world}.json')
     
     # returns JSON object as 
     # a dictionary
@@ -42,29 +26,28 @@ def compute_categories_id(dataset_src, world):
     # 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 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 i in data['objects']:
-        print(i)
+    for k in data['objects']:
+        #print(k)
         #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'])
+        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)
+    # 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
@@ -73,115 +56,178 @@ def compute_categories_id(dataset_src, world):
 
     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 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')
+
+
+# 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)
+#     # returns JSON object as 
+#     # a dictionary
+#     data = json.load(f)
     
-    # Iterating through the json
-    # list
+#     # Iterating through the json
+#     # list
 
-    id_category = 0
+#     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']:
-        print(i)
-        if i['label'] == wanted_category :
-            print("Hello fruits")
-            id_category = i['id']
-            print(id_category)
+#     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']]=[]
 
-    id_instances = []
+#     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']) 
 
-    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("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)
 
-    print(id_instances)
 
-    # Closing file
-    f.close()
+#     # Closing file
+#     f.close()
 
-    return id_instances
 
+#     return catergories_instance_array_id_to_cat, catergories_instance_array_cat_to_id
 
-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')
+# 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
 
-    data2 = json.load(f2)
+#     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)
 
-    catergories_occ_array = {}
+#     id_instances = []
 
-    for cat in catergories_instance_array_cat_to_id :
-        #print(cat)
+#     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'])
 
-        catergories_occ_array[cat] = []
+#     print(id_instances)
 
-    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'])
+#     # Closing file
+#     f.close()
 
+#     return 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'])
+# 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):
 
-    print(catergories_occ_array)
+#     f2 = open(f'{dataset_src}/{world}/grabber_{camera}/{type_data}/occlusion/{frame}.json')
 
+#     data2 = json.load(f2)
 
 
+#     catergories_occ_array = {}
 
-    # Closing file
-    f2.close()
+#     for cat in catergories_instance_array_cat_to_id :
+#         #print(cat)
 
-    return catergories_occ_array
+#         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'])
 
-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)
+#         # 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'])
 
-    id_instances_good = []
+#     print(catergories_occ_array)
 
-    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()
 
+#     return catergories_occ_array
 
 
-    # Closing file
-    f2.close()
+# 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__':
@@ -191,16 +237,13 @@ if __name__ == '__main__':
 
     Categories = [] # to read
     Nb_instance = 1
-    Occ_target = 0.5
+    occ_target = 0.5
 
+    #catergories_instance_array_id_to_cat, catergories_instance_array_cat_to_id = compute_categories_id(dataset_name, 1)
 
-    #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",
@@ -208,15 +251,17 @@ if __name__ == '__main__':
 
     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)
+    #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 = ["banana1", "orange2", "pear2"]
-    for obj in list_obj:
-        src_bbox = f"Models/{obj}/{obj.lower()}.ply"
-        dst_bbox = f"{dataset_name}/Generated/Models/{obj}/{obj.lower()}.ply"
+    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':
@@ -236,8 +281,8 @@ if __name__ == '__main__':
     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, False)
+    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)
diff --git a/pose.py b/pose.py
index 4f0293e529d1908cab06e52ddeaebf406abc7b09..6f8e477f506260722826c2b3d63b9c6fcc6379bc 100644
--- a/pose.py
+++ b/pose.py
@@ -80,7 +80,7 @@ def convert2(xyz):
     return rotation
 
 
-def transform_pose(data_name, Nb_camera, Nb_world, occ_target):
+def transform_pose(data_name, Nb_camera, Nb_world, list_categories, occ_target):
     transformation = np.matrix([[0.0000000, -1.0000000, 0.0000000],
                                 [0.0000000, 0.0000000, -1.0000000],
                                 [1.0000000, 0.0000000, 0.0000000]])
@@ -94,6 +94,9 @@ def transform_pose(data_name, Nb_camera, Nb_world, 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)
 
+
+            ### Generate Poses ###
+
             with open(f'{data_name}/Pose/{p}.json', 'r') as f:
                 data = json.load(f)
                 #print(data)
@@ -101,46 +104,22 @@ def transform_pose(data_name, Nb_camera, Nb_world, occ_target):
 
             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}/Generated/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}/Generated/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}/Generated/Pose_transformed/pear2/{p}.npy', num_arr)  # save
-                else:
-                    continue
+                for categories in list_categories:
+
+                    if len(catergories_occ_array[categories]) == 1 and data[k]['id'] == catergories_occ_array[categories][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}/Generated/Pose_transformed/{categories}/{p}.npy', num_arr)  # save
+                    else:
+                        continue
+
     print(cont1, cont2, cont3)