66 lines
2.4 KiB
Python
66 lines
2.4 KiB
Python
import os
|
|
import sys
|
|
import numpy as np
|
|
import trimesh as tm
|
|
from stl import mesh
|
|
|
|
# os.environ["CUDA_VISIBLE_DEVICES"] = '1'
|
|
# import tensorflow as tf
|
|
|
|
# gpus = tf.config.experimental.list_physical_devices('GPU')
|
|
# if gpus:
|
|
# try:
|
|
# # Currently, memory growth needs to be the same across GPUs
|
|
# for gpu in gpus:
|
|
# tf.config.experimental.set_memory_growth(gpu, True)
|
|
# logical_gpus = tf.config.experimental.list_logical_devices('GPU')
|
|
# print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPUs")
|
|
# except RuntimeError as e:
|
|
# # Memory growth must be set before GPUs have been initialized
|
|
# print(e)
|
|
|
|
# from losses import collision_loss, normal_loss
|
|
|
|
|
|
# from losses import edge_loss_skirt as edge_loss
|
|
# from losses import edge_loss
|
|
|
|
|
|
if __name__ == '__main__':
|
|
frame = '04173_193' # '02276_232', '02978_242', '04173_193'
|
|
folder = 'examples/sampling_analysis'
|
|
# original_folder = '/home/workspace/data/dataset/local-cache/train_skirt'
|
|
original_folder = '/home/workspace/local-data/train'
|
|
# folder = 'examples/sampling'
|
|
|
|
id = frame.split('_')[0]
|
|
mask = np.load(os.path.join(original_folder, 'mesh_mask', f'{id}.npy'))
|
|
gt = np.load(os.path.join(folder, frame, f'{frame}_gt.npy'))
|
|
faces = np.load(os.path.join(folder, frame, f'{frame}_faces.npy'))
|
|
edges = tm.Trimesh(vertices=gt, faces=faces, validate=False, process=False).edges
|
|
edges_gt = np.linalg.norm(gt[edges[:, 0]] - gt[edges[:, 1]], axis=1)
|
|
area_gt = np.sum(np.linalg.norm(np.cross(gt[faces[:, 0]] - gt[faces[:, 1]], gt[faces[:, 0]] - gt[faces[:, 2]]), axis=1))
|
|
|
|
errors = []
|
|
vars = []
|
|
area_diffs = []
|
|
# for i in [1,2,4,10]:
|
|
for i in range(15):
|
|
sample = np.load(os.path.join(folder, frame, f'{frame}_{i}.npy'))
|
|
edges_sample = np.linalg.norm(sample[edges[:, 0]] - sample[edges[:, 1]], axis=1)
|
|
error = np.mean(np.abs(edges_sample - edges_gt))
|
|
var = np.var(np.abs(edges_sample - edges_gt))
|
|
errors.append(error)
|
|
vars.append(var)
|
|
|
|
area_sample = np.sum(np.linalg.norm(np.cross(sample[faces[:, 0]] - sample[faces[:, 1]], sample[faces[:, 0]] - sample[faces[:, 2]]), axis=1))
|
|
area_diff = np.abs(area_sample - area_gt)
|
|
area_diffs.append(area_diff)
|
|
|
|
print(np.array(errors).mean())
|
|
print(np.array(vars).mean())
|
|
print(np.array(area_diffs).mean())
|
|
print(area_gt)
|
|
|
|
|