From c1531d6d90ae2f57d1d1df1323af9951a878178a Mon Sep 17 00:00:00 2001
From: Guillaume-Duret <guillaume.duret@ec-lyon.fr>
Date: Thu, 18 May 2023 04:00:34 +0200
Subject: [PATCH] evaluation running

---
 eval_pose.py | 65 +++++++++++++++++++++++++++++++++-------------------
 1 file changed, 42 insertions(+), 23 deletions(-)

diff --git a/eval_pose.py b/eval_pose.py
index 467a4d0..73b5b98 100644
--- a/eval_pose.py
+++ b/eval_pose.py
@@ -8,13 +8,14 @@ import open3d as o3d
 import argparse
 import os
 import sys
-
+from plyfile import PlyData, PlyElement
 
 def read_diameter(object_name):
-    filename = f'Generated_Worlds_/Generated/{class_name}/diameter.txt'
+    filename = f'Generated_Worlds_/Generated/{class_name}/{class_name}_diameter.txt'
     with open(filename) as f:
         diameter_in_cm = float(f.readline())
-    return diameter_in_cm * 0.01
+    #return diameter_in_cm * 0.01
+    return diameter_in_cm
 
 
 def transform_pts_Rt(pts, R, t):
@@ -245,6 +246,7 @@ def eval_pose(r_est, t_est, r_gt, t_gt, pc, k, diameter, sym=False):
 
 if __name__ == '__main__':
     ap = argparse.ArgumentParser()
+    ap.add_argument("--path_evaluation", type=str, required=True)
     ap.add_argument("-cls_name", "--class_name", type=str,
                     default='kiwi1',
                     help="[apple2, apricot, banana1, kiwi1, lemon2, orange2, peach1, pear2]")
@@ -252,57 +254,74 @@ if __name__ == '__main__':
                     default=False)
 
     args = vars(ap.parse_args())
-
+ 
     class_name = args["class_name"]
     symmetry = args["symmetry"]
 
-    basePath = os.path.dirname(
-        os.path.realpath(__file__)) + '/Generated_Worlds_/Generated_Worlds_Evaluating/' + class_name
 
-    images_ls, labels_ls, mask_ls, choice_ls = data.getAllValData(class_name)
-    print(len(images_ls))
+    basePath = args["path_evaluation"] + "/" + args["class_name"]
+
+    #basePath = os.path.dirname(
+    #    os.path.realpath(__file__)) + '/Generated_Worlds_/Generated_Worlds_Evaluating/' + class_name
+
+    #images_ls, labels_ls, mask_ls, choice_ls = data.getAllValData(class_name)
+    #print(len(images_ls))
+
+    pc_path = f'/gpfswork/rech/uli/ubn15wo/guimod/Models/{class_name}/{class_name}.ply'
+    #pcd = o3d.io.read_point_cloud(pc_path)
+    #pc = np.asarray(pcd.points)
+
+    plydata = PlyData.read(pc_path)
+    elm = plydata.elements
+    data = np.asarray(elm[0][:])
+    pc = np.zeros((len(data), 3))
+    print("len(data)", len(data))
+    print("len(pc)", len(pc))
+
+    diameter = read_diameter(class_name)
+    print(diameter)
+    for i in range(len(data)):
+        pc[i][0], pc[i][1], pc[i][2] = data[i][0], data[i][1], data[i][2]
 
-    pc_path = f'/{basePath}/Models/{class_name}.ply'
-    pcd = o3d.io.read_point_cloud(pc_path)
-    pc = np.asarray(pcd.points)
 
     add_res_ls = []
     proj_res_ls = []
     count_add = 0
     count_iadd = 0
     count_proj = 0
+    
+    length_data=len(os.listdir(f"{basePath}/Pose_prediction"))
+    print("number of evaluating data :", length_data)
 
-
-
-    for idx in range(len(images_ls)):
+    for files in os.listdir(f"{basePath}/Pose_prediction"):
         #  ============== Loading Pose ===============
-        pose_est = np.load(f'{basePath}/Pose_prediction/{idx}.npy')
+        pose_est = np.load(f'{basePath}/Pose_prediction/{files}')
         r_est = pose_est[:3, :3]
-        t_est = pose_est[:3, 3]
+        t_est = np.array(pose_est[:3, 3]).reshape(3, 1)
+        print("t_est", t_est)
 
-        pose_gt = np.load(f'{basePath}/Pose_transformed/{idx}.npy')
+        pose_gt = np.load(f'{basePath}/Pose_transformed/{files}')
         r_gt = np.array(pose_gt[0:3, 0:3], dtype='float64')
         t_gt = np.array(pose_gt[0:3, 3], dtype='float64').reshape(3, 1)
+        print("t_gt", t_gt)
 
         #  ============== Evaluation ===============
         k = np.array([[543.25272224, 0., 320.25],
                       [0., 724.33696299, 240.33333333],
-                      [0., 0., 1.]])
-        diameter = read_diameter(class_name)
+                      [0., 0., 1.]])    
 
         add_res, is_add, proj_res, is_proj, adi_res, is_adi = eval_pose(r_est, t_est, r_gt, t_gt, pc, k, diameter, symmetry)
 
         if is_add:
             count_add += 1
-
         if is_proj:
             count_proj += 1
         if is_adi:
             count_iadd += 1
 
-    print(f"ADD_Res: {count_add / len(images_ls)}")
-    print(f"ADI_Res: {count_iadd / len(images_ls)}")
-    print(f"Proj_Res: {count_proj / len(images_ls)}")
+    print(f"ADD_Res: {count_add / length_data}")
+    print(f"ADI_Res: {count_iadd / length_data}")
+    print(f"Proj_Res: {count_proj / length_data}")
     print(f"======================")
 
     print("Done")
-- 
GitLab