diff --git a/compute_features.py b/compute_features.py index a252f82ef1d07d909ac3145ec4a48bff9420d239..bbd857d040ce849311da3b3b3557990f6ddaf61d 100644 --- a/compute_features.py +++ b/compute_features.py @@ -1,7 +1,4 @@ - - -import math import numpy as np import json from utils import compute_categories_id, compute_id_good_occ @@ -51,7 +48,6 @@ def process_compute(data_name, camera, camera_resized, new_size, Nb_camera, Worl with open(f'{data_name}/Generated/Count_{p-1}.json') as f: list_count_categories = json.load(f) - for categories in list_categories: if categories in catergories_occ_array.keys(): if len(catergories_occ_array[categories]) == 1 : @@ -73,7 +69,6 @@ def process_compute(data_name, camera, camera_resized, new_size, Nb_camera, Worl meta['occlusion'] = occ_target meta['Nb_instance_category'] = 1 - if not os.path.isfile(f'{data_name}/Generated/{categories}/Meta_Gen/{categories}.json'): with open(f'{data_name}/Generated/{categories}/Meta_Gen/{categories}.json', mode='w') as f: feeds = {} @@ -86,9 +81,6 @@ def process_compute(data_name, camera, camera_resized, new_size, Nb_camera, Worl with open(f'{data_name}/Generated/{categories}/Meta_Gen/{categories}.json', mode='w') as f: f.write(json.dumps(feeds, indent=4)) - # with open(f'{data_name}/Generated/Meta_Gen/{categories}/{categories}.json', "a") as meta_file: - # json.dump(meta, meta_file, indent=4) - for k in range(len(data_3D_pose)): if data_3D_pose[k]['id'] == catergories_occ_array[categories][0]: @@ -122,73 +114,44 @@ def process_compute(data_name, camera, camera_resized, new_size, Nb_camera, Worl instance_img = instance(img, id) cv2.imwrite(f"{data_name}/Generated/{categories}/Instance_Mask/{p}.png", 255*instance_img) - cat_mask = cv2.resize(instance_img, new_size) - cv2.imwrite(f"{data_name}/Generated/{categories}/Instance_Mask_resized/{p}.png", 255*cat_mask) + instance_img_resized = cv2.resize(instance_img, new_size) + cv2.imwrite(f"{data_name}/Generated/{categories}/Instance_Mask_resized/{p}.png", 255*instance_img_resized) img = cv2.imread(f"{data_name}/RGB/{p}.png") cv2.imwrite(f"{data_name}/Generated/{categories}/RGB_Gen/{p}.png", img) - img_resized = cv2.resize(img, new_size) cv2.imwrite(f"{data_name}/Generated/{categories}/RGB_resized/{p}.png", img_resized) np.set_printoptions(precision=15) pose = np.load(f'{data_name}/Generated/{categories}/Pose_transformed/{p}.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]]) - - fps_points = np.loadtxt(f'{data_name}/Generated/{categories}/{categories}_fps_3d.txt') - # process(pcd_bbox, pcd, R_exp, tVec, camera, img) center = fps_points.mean(0) fps_points = np.append(fps_points, [center], axis=0) - - points = process2(fps_points, R_exp, tVec, camera, img, vis) - #out = np.zeros((1, )) - - out = [int(catergories_occ_array[categories][0])]# [catergories_occ_array[categories][0]] #obj_id #len have to be 1 !! - print(out) - - + out = [int(catergories_occ_array[categories][0])] #len have to be 1 !! ind = 1 for point in points: - #out[0][ind] = point[0][0] / img.shape[1] - #[0][ind + 1] = point[0][1] / img.shape[0] x = point[0][0] / img.shape[1] y = point[0][1] / img.shape[0] out.append(x) out.append(y) ind += 2 - np.savetxt(f'{data_name}/Generated/{categories}/FPS/{p}.txt', np.array(out).reshape(1, len(out))) - #print("stop") points_resized = process2(fps_points, R_exp, tVec, camera_resized, img_resized, vis) - #out = np.zeros((1, )) - - out_resized = [int(catergories_occ_array[categories][0])]# [catergories_occ_array[categories][0]] #obj_id #len have to be 1 !! - print(out) - - + out_resized = [int(catergories_occ_array[categories][0])] #len have to be 1 ! ind_resized = 1 for point_resized in points_resized: - #out[0][ind] = point[0][0] / img.shape[1] - #[0][ind + 1] = point[0][1] / img.shape[0] x_resized = point_resized[0][0] / img_resized.shape[1] y_resized = point_resized[0][1] / img_resized.shape[0] out_resized.append(x_resized) out_resized.append(y_resized) ind_resized += 2 - np.savetxt(f'{data_name}/Generated/{categories}/FPS_resized/{p}.txt', np.array(out_resized).reshape(1, len(out_resized))) - #print("stop") - + with open(f'{data_name}/Generated/Count_{p}.json', mode='w') as f: f.write(json.dumps(list_count_categories, indent=4)) print(list_count_categories) diff --git a/main.py b/main.py index 1642cbfbcb03eed209a229c0372ecf3cd8b18b0c..5b3349a2dd4d229ae36a407252d331b6cb3cdc21 100644 --- a/main.py +++ b/main.py @@ -1,19 +1,12 @@ 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 -#from instance_mask import generate_instance_mask from fps_alg import apply_fps from bbox_3d import get_3D_bbox from compute_features import process_compute -from utils import compute_categories_id, compute_id_good_occ -import shutil import open3d as o3d -# Import the library -import argparse from scipy.spatial import distance +import argparse def generate_folders(name, list_categories): is_exist = os.path.exists(name) @@ -52,31 +45,20 @@ if __name__ == '__main__': # Parse the argument args = parser.parse_args() - ### parameters ### Categories = [] # to read Nb_instance = 1 occ_target = 0.5 dataset_src = "/media/gduret/DATA/dataset/s2rg/Fruits_all_medium/data" - #dataset_src = "/media/mahmoud/E/Fruits_easy/data" choice = "low" # depth of rgb resolution datas data_options = {"high": "ground_truth_rgb", "low": "ground_truth_depth"} dataset_type = data_options[choice] dataset_name = f"GUIMOD_{choice}" list_categories = ["banana1", "kiwi1", "pear2", "strawberry1", "apricot", "orange2", "peach1", "lemon2", "apple2" ] - # frame = "1_600000000" - #frame = "1_926000000" Nb_camera = 15 - #Nb_world = 2 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/{cat}/{cat.lower()}.ply" - # shutil.copy(src_bbox, dst_bbox) - - if choice == 'high': camera = np.matrix([[1386.4138492513919, 0.0, 960.5], @@ -94,13 +76,11 @@ if __name__ == '__main__': [0.0, 0.0, 1.0]]) new_camera = trans @ camera - np.savetxt(f'{dataset_name}/Generated/camera_{choice}.txt', camera) reform_data(dataset_src, dataset_name, dataset_type, Nb_camera, args.World_begin, args.Nb_worlds) list_categories = ["banana1", "kiwi1", "pear2", "strawberry1", "apricot", "orange2", "peach1", "lemon2", "apple2" ] - objs = {"banana1": [ 0.02949700132012367249, 0.1511049866676330566, 0.06059300713241100311 ], "kiwi1": [ 0.04908600077033042908, 0.07206099480390548706, 0.04909799993038177490 ], "pear2": [ 0.06601099669933319092, 0.1287339925765991211, 0.06739201396703720093 ], @@ -115,49 +95,17 @@ if __name__ == '__main__': point_cloud = f"Models/{categories}/{categories.lower()}.ply" pcd = o3d.io.read_point_cloud(point_cloud) - #print("pcd", pcd) - fps_points = apply_fps(pcd, 8) - #print(fps_points) np.savetxt(f'{dataset_name}/Generated/{categories}/{categories}_fps_3d.txt', fps_points) - #point_cloud = f'/home/mahmoud/PycharmProjects/data/GUIMOD_low/Models/{obj}/{obj.lower()}.ply' - #pcd = o3d.io.read_point_cloud(point_cloud) point_cloud_in_numpy = np.asarray(pcd.points) dim = calc_pts_diameter2(point_cloud_in_numpy) * 100 - - print(dim) - np.savetxt(f'{dataset_name}/Generated/{categories}/{categories}_diameter.txt', np.array([dim])) size_bb = objs[categories] - ext = [x / 2 for x in size_bb] bbox = get_3D_bbox(ext) np.savetxt(f'{dataset_name}/Generated/{categories}/{categories}_bbox_3d.txt', bbox) # save - # json_num = 2 - # catergories_instance_array_id_to_cat, catergories_instance_array_cat_to_id, catergories_label_to_id = compute_categories_id(dataset_name, json_num) - # print(f'{dataset_name}/Bbox_3d/{json_num}.json') - # with open(f"{dataset_name}/Bbox_3d/{json_num}.json", 'r') as f: - # data_Bbox_3d = json.load(f) - - # print("catergories_instance_array_cat_to_id : ", catergories_instance_array_cat_to_id) - # print("data_Bbox_3d : ", data_Bbox_3d) - - # for k in range(len(data_Bbox_3d)): - # if data_Bbox_3d[k]['id'] in catergories_instance_array_cat_to_id[categories]: - # print(data_Bbox_3d) - # size_bb = data_Bbox_3d[k]["bbox"]["size"] - # ext = [x / 2 for x in size_bb] - # bbox = get_3D_bbox(ext) - # np.savetxt(f'{dataset_name}/Generated/{categories}/{categories}_bbox_3d.txt', bbox) # save - # break - - process_compute(dataset_name, camera, new_camera, new_size, Nb_camera, args.World_begin, args.Nb_worlds, list_categories, occ_target, 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, occ_target, True) - #generate_3d_bbox(dataset_name) +