From d3d18380492acc8258ba897ff96d1871a7395d3a Mon Sep 17 00:00:00 2001 From: Gduret <guillaume.duret@ec-lyon.fr> Date: Fri, 24 Feb 2023 23:21:33 +0100 Subject: [PATCH] optimising FPS too --- compute_features.py | 36 ++++++++++++++++++++++++++++++++++-- fps_alg.py | 22 ++++------------------ main.py | 8 ++++---- 3 files changed, 42 insertions(+), 24 deletions(-) diff --git a/compute_features.py b/compute_features.py index d9cfb2a..6ce63fc 100644 --- a/compute_features.py +++ b/compute_features.py @@ -10,9 +10,11 @@ from bbox_2d import bbox_2d import cv2 from instance_mask import instance from pose import convert2 +from matplotlib import image +from fps_alg import process2 -def process_compute(data_name, Nb_camera, Nb_world, list_categories, occ_target): +def process_compute(data_name, camera, Nb_camera, Nb_world, list_categories, occ_target, vis): transformation = np.matrix([[0.0000000, -1.0000000, 0.0000000], [0.0000000, 0.0000000, -1.0000000], [1.0000000, 0.0000000, 0.0000000]]) @@ -31,7 +33,7 @@ def process_compute(data_name, Nb_camera, Nb_world, list_categories, occ_target) with open(f'{data_name}/Pose/{p}.json', 'r') as f: data_3D_pose = json.load(f) #print(data) - print("len(data)", len(data_3D_pose)) + #print("len(data)", len(data_3D_pose)) ### 2D BBox ### with open(f"{data_name}/Bbox_2d/{p}.json", 'r') as f: @@ -75,6 +77,36 @@ def process_compute(data_name, Nb_camera, Nb_world, list_categories, occ_target) instance_img = instance(img, id) cv2.imwrite(f"{data_name}/Generated/Instance_Mask/{categories}/{p}.png", 255*instance_img) + + img = image.imread(f"{data_name}/RGB/{p}.png") + + np.set_printoptions(precision=15) + pose = np.load(f'{data_name}/Generated/Pose_transformed/{categories}/{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/FPS/{categories}_fps_3d.txt') + # 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] = catergories_occ_array[categories] #obj_id #len have to be 1 !! + 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}/Generated/FPS/{categories}/{p}.txt', out) + #print("stop") + + print(cont1, cont2, cont3) diff --git a/fps_alg.py b/fps_alg.py index 365a3e0..3d5f14c 100644 --- a/fps_alg.py +++ b/fps_alg.py @@ -97,29 +97,15 @@ def apply_fps(pcd, fps_num): def process2(pcd, R_exp, tVec, camera, img, vis= True): - # point_cloud_in_numpy = np.asarray(pcd.points) - # center = point_cloud_in_numpy.mean(0) - # - # new_point = fps(point_cloud_in_numpy, center, fps_num) - # print(new_point) - - # pcd_fps = o3d.geometry.PointCloud() - # 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')) - for n in range(len(pcd_fps_numpy)): - print(pcd_fps_numpy[n], '==>', keypoint_2d[0][n]) + # for n in range(len(pcd_fps_numpy)): + # print(pcd_fps_numpy[n], '==>', keypoint_2d[0][n]) if vis: out = np.zeros((img.shape[0], img.shape[1], 16)) @@ -195,11 +181,11 @@ def generate_fps(data_name, camera, Nb_camera, Nb_world, list_categories, occ_ta np.set_printoptions(precision=15) pose = np.load(f'{data_name}/Generated/Pose_transformed/{categories}/{p}.npy') - print(pose) + #print(pose) R_exp = pose[0:3, 0:3] tVec = pose[0:3, 3] - print(tVec) + #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/main.py b/main.py index 3273fab..5ac90da 100644 --- a/main.py +++ b/main.py @@ -5,7 +5,7 @@ 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 generate_fps, apply_fps +from fps_alg import apply_fps from bbox_3d import generate_3d_bbox from compute_features import process_compute import shutil @@ -54,7 +54,7 @@ if __name__ == '__main__': point_cloud = f'{dataset_name}/Generated/Models/{categories}/{categories.lower()}.ply' pcd = o3d.io.read_point_cloud(point_cloud) - print("pcd", pcd) + #print("pcd", pcd) fps_points = apply_fps(pcd, 200) #print(fps_points) @@ -74,9 +74,9 @@ if __name__ == '__main__': reform_data(dataset_src, dataset_name, dataset_type, frame, Nb_camera, Nb_world) - process_compute(dataset_name, Nb_camera, Nb_world, list_categories, occ_target) + process_compute(dataset_name, camera, Nb_camera, Nb_world, 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_fps(dataset_name, camera, Nb_camera, Nb_world, list_categories, occ_target, True) #generate_3d_bbox(dataset_name) -- GitLab