diff --git a/preprocessing/generate_gt.py b/preprocessing/generate_gt.py
new file mode 100644
index 0000000000000000000000000000000000000000..5259ef468ff1d0f2c41329fd6cc1948e4c364bea
--- /dev/null
+++ b/preprocessing/generate_gt.py
@@ -0,0 +1,29 @@
+import json
+import os
+
+bbox_path = f'/home/Downloads/Datasets/BOP_format/test'
+output = "/home/Downloads/Datasets/BOP_format/test/test_bboxes/"
+os.makedirs(output, exist_ok=True)
+output_file = f"{output}gt_all_fruits_fruitbin_pbr_fruitbin_bop_test.json"
+
+directories = [d for d in os.listdir(bbox_path) if os.path.isdir(os.path.join(bbox_path, d))]
+directories = sorted(directories)
+
+updated_data = {}
+obj_id = 1
+
+for scene_id, folder in enumerate(directories):
+    file_path = os.path.join(bbox_path, folder, "scene_gt_info.json")
+    if os.path.exists(file_path):
+        with open(file_path, 'r') as file:
+            bbox_data = json.load(file)
+
+        for key, values in bbox_data.items():
+            updated_key = f"{scene_id}/{key}"
+            updated_data[updated_key] = [{"bbox": val["bbox_visib"], "obj_id": obj_id} for val in values]
+        obj_id += 1
+
+with open(output_file, 'w') as outfile:
+    json.dump(updated_data, outfile, indent=2)
+
+print(f"The file was successfully created: {output_file}")
diff --git a/preprocessing/generate_image_sets_file.py b/preprocessing/generate_image_sets_file.py
new file mode 100644
index 0000000000000000000000000000000000000000..97d45ba769a1584b1d6efaa75e0b2ee8d2b96625
--- /dev/null
+++ b/preprocessing/generate_image_sets_file.py
@@ -0,0 +1,28 @@
+import re
+import os
+
+
+def convert_numbers(input_file, output_file, scene):
+    os.makedirs(output_file, exist_ok=True)
+    with open(input_file, 'r') as infile, open(output_file + "/keyframe.txt", 'a') as outfile:
+        for line in infile:
+            number = int(line.strip().split('.')[0])
+            outfile.write(f"000{scene}/{number}\n")
+
+"""
+Possible scenarios:
+    _world_occ_07.txt, _world_occ_05.txt, _world_occ_03.txt, _world_occ_01.txt, 
+    _camera_occ_07.txt, _camera_occ_05.txt, _camera_occ_03.txt, _camera_occ_01.txt
+"""
+
+scenario = "_world_occ_07.txt"
+scenario1 = scenario.split('.')[0]
+objects = ["apple2", "apricot", "banana1", "kiwi1", "lemon2", "orange2", "peach1", "pear2"]
+cleaned_objects = [re.sub(r'\d$', '', item) for item in objects]
+for i, object in enumerate(objects):
+    fruit = objects[i]
+    scene = i
+    convert_numbers(f'/home/Downloads/Datasets/FruitBin/{object}/Splitting/splitting_occ_01_worlds/test_{fruit}{scenario}',
+                f'/home/Downloads/Datasets/BOP_format/image_sets', scene)
+    print(f"Data for scene {scene} ({object}) is ready")
+
diff --git a/preprocessing/generate_test_targets_file.py b/preprocessing/generate_test_targets_file.py
new file mode 100644
index 0000000000000000000000000000000000000000..abd96ae9ea567bc567243f551dd8af01a16a0b0f
--- /dev/null
+++ b/preprocessing/generate_test_targets_file.py
@@ -0,0 +1,34 @@
+import json
+import os
+
+path = '/home/Downloads/Datasets/BOP_format/test'
+
+selected_images = []
+
+directories = [d for d in os.listdir(path) if os.path.isdir(os.path.join(path, d))]
+directories = sorted(directories)
+
+for scene_id, fruit_folder in enumerate(directories):
+    print(scene_id)
+    fruit_path = os.path.join(path, fruit_folder)
+    print(fruit_path)
+    if os.path.isdir(fruit_path):
+        scene_gt_path = os.path.join(fruit_path, 'scene_gt.json')
+        if os.path.isfile(scene_gt_path):
+            with open(scene_gt_path, 'r') as file:
+                scene_gt_data = json.load(file)
+
+                for im_id, objects in scene_gt_data.items():
+                    for obj in objects:
+                        selected_images.append({
+                            "im_id": int(im_id),
+                            "inst_count": 1,
+                            "obj_id": obj["obj_id"],
+                            "scene_id": scene_id
+                        })
+
+output_path = os.path.join('/home/Downloads/Datasets/BOP_format/test_targets_bop19.json')
+with open(output_path, 'w') as outfile:
+    json.dump(selected_images, outfile, indent=4)
+
+print(f'File "test_targets_bop19.json" has been created with {len(selected_images)} entries.')
diff --git a/preprocessing/preprocess_fruitbin.py b/preprocessing/preprocess_fruitbin.py
new file mode 100644
index 0000000000000000000000000000000000000000..62c0179758a9ddc6387ce972d44b5ae8f7476993
--- /dev/null
+++ b/preprocessing/preprocess_fruitbin.py
@@ -0,0 +1,169 @@
+import os
+import shutil
+import numpy as np
+import json
+import re
+import argparse
+
+
+def parse_args():
+    parser = argparse.ArgumentParser(description="Preprocess data for different scenarios and categories.")
+    parser.add_argument('--src_directory', type=str, required=True, help='Source directory path.')
+    parser.add_argument('--dst_directory', type=str, required=True, help='Destination directory path.')
+    parser.add_argument('--scenario', type=str, default='_world_occ_07.txt', help='Scenario file.')
+    parser.add_argument('--categories', type=str, nargs='+', default=['train', 'test'], help='Data categories.')
+    return parser.parse_args()
+
+
+def splitting(splitting_path, scenario, category, folder):
+    file_ids = []
+
+    fruit = re.sub(r'\d+$', '', folder)
+
+    split_file = os.path.join(splitting_path, f"{category}_{fruit}{scenario}")
+    if os.path.exists(split_file):
+        with open(split_file, 'r') as f:
+            lines = f.readlines()
+            for line in lines:
+                line = line.strip().split('.')[0]
+                if line:
+                    file_ids.append(line)
+
+    return file_ids
+
+
+def copy_specific_folder(dst_directory, src_directory, old_folder, new_folder, category, scenario):
+    os.makedirs(dst_directory, exist_ok=True)
+
+    folders_in_src = [d for d in os.listdir(src_directory) if os.path.isdir(os.path.join(src_directory, d))]
+
+    for folder in folders_in_src:
+        if category == "train":
+            new_folder_path = os.path.join(dst_directory, "train_pbr", folder)
+        else:
+            new_folder_path = os.path.join(dst_directory, category, folder)
+
+        os.makedirs(new_folder_path, exist_ok=True)
+
+        splitting_path = os.path.join(src_directory, folder, "Splitting")
+        file_names_to_copy = splitting(splitting_path, scenario, category, folder)
+
+        src_subfolder = os.path.join(src_directory, folder)
+        dst_subfolder = os.path.join(new_folder_path, new_folder)
+        os.makedirs(dst_subfolder, exist_ok=True)
+
+        for file_name in file_names_to_copy:
+            src_file_path = os.path.join(src_subfolder, old_folder, file_name + ".png")
+            if os.path.exists(src_file_path):
+                dst_file_path = os.path.join(dst_subfolder, file_name + ".png")
+                shutil.copy(src_file_path, dst_file_path)
+
+                new_file_name = f"{int(file_name):06}.png"
+                new_dst_file_path = os.path.join(dst_subfolder, new_file_name)
+                os.rename(dst_file_path, new_dst_file_path)
+
+        if not os.path.exists(os.path.join(new_folder_path, "scene_gt.json")):
+            process_directory(new_folder_path, src_directory, file_names_to_copy, folder)
+
+
+def process_directory(new_folder_path, src_subfolder, file_names_to_copy, folder):
+    matrix = [543.25272224, 0., 320.25, 0., 724.33696299, 240.33333333, 0., 0., 1.]
+
+    obj_ids = {"apple2": 1, "apricot": 2, "banana1": 3, "kiwi1": 4, "lemon2": 5, "orange2": 6, "peach1": 7, "pear2": 8}
+
+    pose_transformed_path = os.path.join(src_subfolder, folder, "Pose_transformed")
+
+    all_objects_data = {}
+    if os.path.exists(pose_transformed_path):
+        for filename in os.listdir(pose_transformed_path):
+            if filename.endswith('.npy'):
+                id_file = filename.split(".")[0]
+                if id_file not in file_names_to_copy:
+                    continue
+                file_path = os.path.join(pose_transformed_path, filename)
+                data = np.load(file_path)
+                cam_R_m2c = np.concatenate((data[0, :3], data[1, :3], data[2, :3]), axis=0).tolist()
+                cam_t_m2c = np.array(
+                    (float(data[0, 3]) * 1000.0, float(data[1, 3]) * 1000.0, float(data[2, 3]) * 1000.0)).tolist()
+                all_objects_data[id_file] = {
+                    "cam_R_m2c": cam_R_m2c,
+                    "cam_t_m2c": cam_t_m2c,
+                    "obj_id": obj_ids[folder]
+                }
+
+    path_to_scene_gt_json = os.path.join(new_folder_path, "scene_gt.json")
+
+    with open(path_to_scene_gt_json, 'w') as json_file:
+        json_file.write('{\n')
+        total_items = len(all_objects_data)
+        for idx, (id_file, object_data) in enumerate(all_objects_data.items()):
+            object_data_list = [object_data]
+            object_data_str = json.dumps(object_data_list, separators=(',', ':'))
+            json_file.write(f'  "{id_file}": {object_data_str}')
+            if idx < total_items - 1:
+                json_file.write(',\n')
+        json_file.write('\n}')
+
+    bbox_path = os.path.join(src_subfolder, folder, "Bbox_resized")
+
+    all_bbox_data = {}
+    for filename in os.listdir(bbox_path):
+        if filename.endswith('.txt'):
+            id_file = filename.split(".")[0]
+            if id_file not in file_names_to_copy:
+                continue
+            file_path = os.path.join(bbox_path, filename)
+            bbox_data = np.loadtxt(file_path).reshape(-1)
+            top_left_x, top_left_y, bottom_right_x, bottom_right_y = bbox_data
+            width = bottom_right_x - top_left_x
+            height = bottom_right_y - top_left_y
+            all_bbox_data[id_file] = {
+                "bbox_visib": [int(top_left_x), int(top_left_y), int(width), int(height)]
+            }
+
+    path_to_scene_gt_info_json = os.path.join(new_folder_path, "scene_gt_info.json")
+
+    with open(path_to_scene_gt_info_json, 'w') as json_file:
+        json_file.write('{\n')
+        total_count = len(all_bbox_data)
+        for idx, (id_file, bbox_info) in enumerate(all_bbox_data.items()):
+            bbox_info_list = [bbox_info]
+            json_file.write(f'  "{id_file}": {json.dumps(bbox_info_list, separators=(",", ":"))}')
+            if idx < total_count - 1:
+                json_file.write(',\n')
+            else:
+                json_file.write('\n')
+        json_file.write('}')
+
+    all_camera_data = {str(id_file): {"cam_K": matrix, "depth_scale": 0.1} for id_file in all_objects_data.keys()}
+    path_to_scene_camera_json = os.path.join(new_folder_path, "scene_camera.json")
+    with open(path_to_scene_camera_json, 'w') as json_file:
+        json_file.write('{\n')
+        for idx, (id_file, camera_info) in enumerate(all_camera_data.items()):
+            camera_info_str = json.dumps(camera_info, separators=(',', ':'))
+            json_file.write(f'  "{id_file}": {camera_info_str}')
+            if idx < len(all_camera_data) - 1:
+                json_file.write(',\n')
+            else:
+                json_file.write('\n')
+        json_file.write('}')
+
+    return {"objects_data": all_objects_data, "bbox_data": all_bbox_data, "camera_data": all_camera_data}
+
+
+if __name__ == "__main__":
+    args = parse_args()
+    src_directory = args.src_directory
+    dst_directory = args.dst_directory
+    scenario = args.scenario
+    categories = args.categories
+
+    for category in categories:
+        copy_specific_folder(dst_directory, src_directory, "RGB_resized", "rgb", category, scenario)
+        print(f"RGB files for the {category}ing dataset have been copied")
+        print(f".json gt files for the {category}ing dataset have been copied")
+        copy_specific_folder(dst_directory, src_directory, "Instance_Mask_resized", "mask_visib", category, scenario)
+        print(f"Masks for the {category}ing dataset have been copied")
+        copy_specific_folder(dst_directory, src_directory, "Depth_resized", "depth", category, scenario)
+        print(f"Depth files for the {category}ing dataset have been copied")
+        print(f"The {category}ing dataset is ready\n")
diff --git a/preprocessing/resize_bbox.py b/preprocessing/resize_bbox.py
new file mode 100644
index 0000000000000000000000000000000000000000..ee1640f34db3f9e324c43f68ae1b71e1c8087ec0
--- /dev/null
+++ b/preprocessing/resize_bbox.py
@@ -0,0 +1,27 @@
+import os
+
+
+def adjust_bbox(input_dir, output_dir):
+    for filename in os.listdir(input_dir):
+        if filename.endswith(".txt"):
+            input_file_path = os.path.join(input_dir, filename)
+            output_file_path = os.path.join(output_dir, filename)
+
+            with open(input_file_path, 'r') as f:
+                coords = f.readline().split()
+
+                x1, y1, x2, y2 = map(float, coords)
+
+                x1_new = x1 * (1 / 2)
+                y1_new = y1 * (2 / 3)
+                x2_new = x2 * (1 / 2)
+                y2_new = y2 * (2 / 3)
+
+                with open(output_file_path, 'w') as out_f:
+                    out_f.write(f"{x1_new} {y1_new} {x2_new} {y2_new}\n")
+
+
+input_dir = '/home/Downloads/Datasets/FruitBin/banana1/Bbox'
+output_dir = '/home/Downloads/Datasets/FruitBin/banana1/Bbox_resized'
+adjust_bbox(input_dir, output_dir)
+