Compare commits
8
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a82e1e7d9b | ||
|
|
53b630c787 | ||
|
|
cbfa129999 | ||
|
|
61c15a3ec4 | ||
|
|
408b984b4e | ||
|
|
19cd69295d | ||
|
|
cc723222dc | ||
|
|
54a77273c5 |
@@ -1,8 +1,3 @@
|
||||
nohup python cvae.py --name="lhunor_abl_all_10p_curv_10_r2" > nohup/review/abl_all_10p_curv_10_r2.out 2>&1 &
|
||||
nohup python auto_encoder_curv.py --name="lhunor_ae_curv_1_orig_curv_10_10p_r2" > nohup/review/curv_1_orig_curv_10_10p_r2.out 2>&1 &
|
||||
nohup python auto_encoder_curv.py --name="lhunor_ae_curv_1_orig_curv_25_10p_r2" > nohup/review/curv_1_orig_curv_25_10p_r2.out 2>&1 &
|
||||
nohup python auto_encoder_curv.py --name="lhunor_ae_curv_1_orig_curv_100_10p_r2" > nohup/review/curv_1_orig_curv_100_10p_r2.out 2>&1 &
|
||||
|
||||
one final convolutional layer for smoothing, on the final coordinates
|
||||
|
||||
skirts!!!!
|
||||
|
||||
@@ -19,7 +19,7 @@ config['only_curvatures'] = True
|
||||
ablation_count = [config['use_skinning'], config['remove_global_orientation'], config['use_curvature'], config['use_extra_losses'], config['use_offsets']].count(False)
|
||||
assert ablation_count == 1 or ablation_count == 0
|
||||
|
||||
config['gpu'] = '5'
|
||||
config['gpu'] = '3'
|
||||
config['name'] = 'abl_overfit_jumpsuit_2'
|
||||
config['notes'] = 'remove other conditions from input as well'
|
||||
|
||||
|
||||
@@ -384,9 +384,9 @@ def test(verts, faces, values):
|
||||
|
||||
if __name__ == '__main__':
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("-f", "--folder", help = "end of range", default='/home/workspace/data/dataset/test_skirt_ready_2')
|
||||
parser.add_argument("-f", "--folder", help = "end of range", default='/home/workspace/local-data/valid')
|
||||
parser.add_argument("-s", "--start", help = "start of range", default=0)
|
||||
parser.add_argument("-e", "--end", help = "end of range", default=30000)
|
||||
parser.add_argument("-e", "--end", help = "end of range", default=1500)
|
||||
parser.add_argument("-n", "--name", help = "end of range", default='lhunor')
|
||||
parser.add_argument("-sk", "--skirt", help = "end of range", default=1)
|
||||
args = parser.parse_args()
|
||||
@@ -408,7 +408,7 @@ if __name__ == '__main__':
|
||||
m2uv = np.load('custom_utils/m2uv' + ("_skirt" if args.skirt == 1 else "") + '.npy', allow_pickle=True).item()
|
||||
m2uv = m2uv_array(m2uv)
|
||||
uv_mask = np.load('custom_utils/mask_256x512' + ("_skirt" if args.skirt == 1 else "") + '.npy')
|
||||
curvature_label_type = '6_25 '
|
||||
curvature_label_type = '6_25'
|
||||
|
||||
uv_res = 256
|
||||
uv_mask = (cv2.resize(uv_mask * 255.0, (uv_res, uv_res * 2)) / 255).astype(bool)[:, :, np.newaxis]
|
||||
@@ -436,23 +436,6 @@ if __name__ == '__main__':
|
||||
|
||||
# ids = os.listdir(os.path.join(local_folder, 'mesh_static'))[int(args.start):int(args.end)]
|
||||
# ids = [id.split('.')[0] for id in ids]
|
||||
|
||||
is_skirt = True if args.skirt == 1 else False
|
||||
skirt_modifier = '_skirt' if is_skirt else ''
|
||||
|
||||
folder = args.folder
|
||||
frames_file = 'frames' + skirt_modifier + '_10p.txt'
|
||||
neighbourhood = 10
|
||||
|
||||
# frames = []
|
||||
# with open(os.path.join(folder, frames_file), 'r') as f:
|
||||
# lines = f.readlines()
|
||||
# lines = [line.strip() for line in lines]
|
||||
# frames = lines#[int(args.start):int(args.end)]
|
||||
# ids = [frame.split('_')[0] for frame in frames]
|
||||
|
||||
print(f'params: -f {args.folder} -s {args.start} -e {args.end} -n {args.name} -skirt {args.skirt} -neigh {neighbourhood}')
|
||||
|
||||
ids = os.listdir(os.path.join(local_folder, 'pose_shape'))
|
||||
ids = [id.split('_')[0] for id in ids]
|
||||
ids = sorted(list(set(ids)))[int(args.start):int(args.end)]
|
||||
@@ -469,16 +452,16 @@ if __name__ == '__main__':
|
||||
# plt.show()
|
||||
# pass
|
||||
|
||||
frames_len = glob.glob(os.path.join(local_folder, 'pose_shape', id + '_*'))
|
||||
frames_len = len(frames_len)
|
||||
assert frames_len <= 300
|
||||
frames = glob.glob(os.path.join(local_folder, 'pose_shape', id + '_*'))
|
||||
frames = len(frames)
|
||||
assert frames <= 300
|
||||
|
||||
# offsets = sio.loadmat(os.path.join(folder, id, garment + '_offsets_static.mat'))['label'][:,:3]
|
||||
verts_static = np.load(os.path.join(local_folder, 'mesh_static', id + '.npz'))['mesh_static']
|
||||
mask = np.load(os.path.join(local_folder, 'mesh_mask', id + '.npy')).astype(bool)
|
||||
# body = readPC2(os.path.join(folder, id, 'Body_posed.pc16'), True)['V']
|
||||
# gt = readPC2(os.path.join(folder, id, garment + '_registered.pc16'), True)['V']
|
||||
curvature = np.stack([np.load(os.path.join(local_folder, f'mesh_curvature_{neighbourhood}_2', f'{id}_{i}.npz'))['mesh_curvature'] for i in range(frames_len)])
|
||||
# curvature = np.load(os.path.join(folder, id, 'curvature_label_' + curvature_label_type + '.npy'))
|
||||
# mesh_unposed = [np.load(os.path.join(folder, id, 'mesh_unposed', id + '_' + str(i) + '.npz')) for i in range(gt.shape[0])]
|
||||
# mesh_unposed = np.stack([mesh_unposed[i]['mesh_unposed'] for i in range(gt.shape[0])])
|
||||
# mesh_unposed_no_shape = [np.load(os.path.join(folder, id, 'mesh_unposed_no_shape', id + '_' + str(i) + '.npz')) for i in range(gt.shape[0])]
|
||||
@@ -487,8 +470,8 @@ if __name__ == '__main__':
|
||||
# body_no_orient = np.stack([body_no_orient[i]['mesh_posed_body_no_orient'] for i in range(gt.shape[0])])
|
||||
# mesh_unposed_no_shape_one_hot = [np.load(os.path.join(local_folder, 'mesh_unposed_no_shape_one_hot', id + '_' + str(i) + '.npz')) for i in range(frames)]
|
||||
# mesh_unposed_no_shape_one_hot = [mesh_unposed_no_shape_one_hot[i]['mesh_unposed_no_shape'] for i in range(frames)]
|
||||
# mesh_posed_no_orient = [np.load(os.path.join(local_folder, 'mesh_posed_no_orient', id + '_' + str(i) + '.npz')) for i in range(frames)]
|
||||
# mesh_posed_no_orient = [mesh_posed_no_orient[i]['mesh_posed_no_orient'] for i in range(frames)]
|
||||
mesh_posed_no_orient = [np.load(os.path.join(local_folder, 'mesh_posed_no_orient', id + '_' + str(i) + '.npz')) for i in range(frames)]
|
||||
mesh_posed_no_orient = [mesh_posed_no_orient[i]['mesh_posed_no_orient'] for i in range(frames)]
|
||||
|
||||
|
||||
# verts_dynamic = gt
|
||||
@@ -508,11 +491,11 @@ if __name__ == '__main__':
|
||||
# uv_body = convert_to_uv_batch(uv_res, m2uv, uv_map, body[:, :, :], neighbours=3, mask=None, method='rbf', garment_uv_mask=None, garment_uv_mask_border=garment_uv_mask_border).astype(np.float32)
|
||||
# uv_posed_body_no_orient = convert_to_uv_batch(uv_res, m2uv, uv_map, body_no_orient[:, :, :], neighbours=3, mask=None, method='rbf', garment_uv_mask=None, garment_uv_mask_border=garment_uv_mask_border).astype(np.float32)
|
||||
# uv_gt = convert_to_uv_batch(uv_res, m2uv, uv_map, gt[:, :, :], neighbours=3, mask=mask, method='rbf', garment_uv_mask=garment_uv_mask, garment_uv_mask_border=garment_uv_mask_border).astype(np.float32)
|
||||
uv_curvature = convert_to_uv_batch_label(uv_res, m2uv, uv_map, curvature[:, :], neighbours=3, mask=mask, method='nearest', garment_uv_mask=garment_uv_mask, garment_uv_mask_border=garment_uv_mask_border).astype(np.float32)
|
||||
# uv_curvature = convert_to_uv_batch_label(uv_res, m2uv, uv_map, curvature[:, :], neighbours=3, mask=mask, method='nearest', garment_uv_mask=garment_uv_mask, garment_uv_mask_border=garment_uv_mask_border).astype(np.float32)
|
||||
# uv_unposed = convert_to_uv_batch(uv_res, m2uv, uv_map, mesh_unposed[:, :, :], neighbours=3, mask=mask, method='rbf', garment_uv_mask=garment_uv_mask, garment_uv_mask_border=garment_uv_mask_border).astype(np.float32)
|
||||
# uv_unposed_no_shape = convert_to_uv_batch(uv_res, m2uv, uv_map, mesh_unposed_no_shape[:, :, :], neighbours=3, mask=mask, method='rbf', garment_uv_mask=garment_uv_mask, garment_uv_mask_border=garment_uv_mask_border).astype(np.float32)
|
||||
# uv_unposed_no_shape_one_hot = convert_to_uv_batch(uv_res, m2uv, uv_map, mesh_unposed_no_shape_one_hot, neighbours=3, mask=mask, method='rbf', garment_uv_mask=garment_uv_mask, garment_uv_mask_border=garment_uv_mask_border, id=id)
|
||||
# uv_posed_no_orient = convert_to_uv_batch(uv_res, m2uv, uv_map, mesh_posed_no_orient, neighbours=3, mask=mask, method='rbf', garment_uv_mask=garment_uv_mask, garment_uv_mask_border=garment_uv_mask_border, id=id)
|
||||
uv_posed_no_orient = convert_to_uv_batch(uv_res, m2uv, uv_map, mesh_posed_no_orient, neighbours=3, mask=mask, method='rbf', garment_uv_mask=garment_uv_mask, garment_uv_mask_border=garment_uv_mask_border, id=id)
|
||||
# uv_shaped_body = convert_to_uv(uv_res, m2uv, uv_map, shaped_body, neighbours=3, mask=None, method='rbf', garment_uv_mask=None).astype(np.float32)
|
||||
print(time.perf_counter() - start)
|
||||
|
||||
@@ -533,9 +516,9 @@ if __name__ == '__main__':
|
||||
# for i in range(uv_gt.shape[0]):
|
||||
# np.savez_compressed(os.path.join(folder, id, 'gt_uv', garment + '_' + str(i) + '.npz'), uv_gt=uv_gt[i, :, :, :])
|
||||
|
||||
os.makedirs(os.path.join(folder, f'uv_curvature_{neighbourhood}_2'), exist_ok=True)
|
||||
for i in range(uv_curvature.shape[0]):
|
||||
np.savez_compressed(os.path.join(folder, f'uv_curvature_{neighbourhood}_2', id + '_' + str(i) + '.npz'), curvature_uv=uv_curvature[i, :, :])
|
||||
# os.makedirs(os.path.join(folder, id, 'curvature_uv'), exist_ok=True)
|
||||
# for i in range(uv_curvature.shape[0]):
|
||||
# np.savez_compressed(os.path.join(folder, id, 'curvature_uv', garment + '_' + str(i) + '.npz'), curvature_uv=uv_curvature[i, :, :])
|
||||
|
||||
# os.makedirs(os.path.join(folder, id, 'uv_unposed'), exist_ok=True)
|
||||
# for i in range(uv_unposed.shape[0]):
|
||||
|
||||
+109
-61
@@ -1,5 +1,8 @@
|
||||
import os
|
||||
import sys
|
||||
os.environ["CUDA_VISIBLE_DEVICES"] = '4'
|
||||
|
||||
|
||||
import tqdm
|
||||
import argparse
|
||||
import random
|
||||
@@ -16,9 +19,33 @@ from scipy.sparse import csr_matrix, coo_matrix
|
||||
from scipy.sparse.csgraph import floyd_warshall, dijkstra
|
||||
from plotly.subplots import make_subplots
|
||||
from custom_utils.custom_utils import _maskFaces
|
||||
from postprocessing import fix_collision
|
||||
|
||||
from custom_utils.supersmpl_io import readPC2, readPC2Frame, writePC2, readOBJ
|
||||
from custom_utils.custom_utils import _maskFaces
|
||||
from auto_encoder_curv import dice_dense
|
||||
|
||||
def postprocess(mesh, faces, mask=None, body=None, do_smoothing=True):
|
||||
if body is not None:
|
||||
mesh_fixed = fix_collision(mesh, body[np.newaxis,:,:], mask[np.newaxis,:])[0].numpy()[mask, :]
|
||||
else:
|
||||
mesh_fixed = mesh
|
||||
|
||||
if do_smoothing:
|
||||
m = tm.Trimesh(mesh_fixed, faces, process=False, validate=False)
|
||||
outliers = np.array([len(v) for v in m.vertex_neighbors]) == 0
|
||||
outliers = np.nonzero(outliers)[0]
|
||||
outliers_n_neighbours = get_closest_n_points(mesh_fixed, outliers, 2)
|
||||
outliers_faces = np.concatenate((outliers[:, np.newaxis], outliers_n_neighbours), axis=-1)
|
||||
faces_fixed = np.concatenate((faces, outliers_faces), axis=0)
|
||||
m = tm.Trimesh(mesh_fixed, faces_fixed, process=False, validate=False)
|
||||
tm.smoothing.filter_humphrey(m, iterations=1, alpha=0.6, beta=0.4)
|
||||
|
||||
mesh = m.vertices
|
||||
else:
|
||||
mesh = mesh_fixed
|
||||
|
||||
return mesh
|
||||
|
||||
def export_to_ply(mesh, file):
|
||||
ply = tm.exchange.ply.export_ply(mesh, encoding='binary', vertex_normal=True, include_attributes=True)
|
||||
@@ -67,13 +94,13 @@ def get_bins(values, nr_of_bins):
|
||||
return bins
|
||||
|
||||
|
||||
def generate_curvatures(folder, frame, bins, neighbourhoods=[25], nr_of_labels=[6]):
|
||||
id = frame.split('_')[0]
|
||||
frame_nr = int(frame.split('_')[1].split('.')[0])
|
||||
def generate_curvatures(v, faces, mask, neighbourhood=25, nr_of_labels=6):
|
||||
# id = frame.split('_')[0]
|
||||
# frame_nr = int(frame.split('_')[1].split('.')[0])
|
||||
|
||||
mask = np.load(os.path.join(folder, 'mesh_mask', f'{id}.npy')).astype(bool)
|
||||
_, faces = _maskFaces(np.zeros((14475,3)), F, mask)
|
||||
v = np.load(os.path.join(folder, 'mesh_posed', f'{id}_{frame_nr}.npz'))['mesh_posed'][mask,:]
|
||||
# mask = np.load(os.path.join(folder, 'mesh_mask', f'{id}.npy')).astype(bool)
|
||||
# _, faces = _maskFaces(np.zeros((14475,3)), F, mask)
|
||||
# v = np.load(os.path.join(folder, 'mesh_posed', f'{id}_{frame_nr}.npz'))['mesh_posed'][mask,:]
|
||||
|
||||
m = tm.Trimesh(v, faces, process=False, validate=False)
|
||||
|
||||
@@ -90,39 +117,41 @@ def generate_curvatures(folder, frame, bins, neighbourhoods=[25], nr_of_labels=[
|
||||
|
||||
cloud = PyntCloud.from_file(temp_file)
|
||||
|
||||
curvatures = []
|
||||
for neighbourhood, nr_labels in zip(neighbourhoods, nr_of_labels):
|
||||
k_neighbors = np.argsort(dist[mask, :][:, mask], axis=-1)[:, :neighbourhood] #cloud.get_neighbors(k=neighbourhood)
|
||||
#k_neighbors = k_neighbors_cache[id] # np.argsort(dist[mask, :][:, mask], axis=-1)[:, :neighbourhood] #cloud.get_neighbors(k=neighbourhood)
|
||||
ev = cloud.add_scalar_field("eigen_values", k_neighbors=k_neighbors)
|
||||
cloud.add_scalar_field("curvature", ev=ev)
|
||||
curvature = np.array(cloud.points["curvature(" + str(neighbourhood+1) + ")"])
|
||||
k_neighbors = np.argsort(dist[mask, :][:, mask], axis=-1)[:, :neighbourhood] #cloud.get_neighbors(k=neighbourhood)
|
||||
#k_neighbors = k_neighbors_cache[id] # np.argsort(dist[mask, :][:, mask], axis=-1)[:, :neighbourhood] #cloud.get_neighbors(k=neighbourhood)
|
||||
ev = cloud.add_scalar_field("eigen_values", k_neighbors=k_neighbors)
|
||||
cloud.add_scalar_field("curvature", ev=ev)
|
||||
curvature = np.array(cloud.points["curvature(" + str(neighbourhood+1) + ")"])
|
||||
|
||||
bins_local = bins[neighbourhood] if bins is not None else get_bins(curvature, nr_labels)
|
||||
labels = np.linspace(0, bins_local.shape[0] - 2, bins_local.shape[0] - 1)
|
||||
bins = np.load(f'custom_data/train_bins.npy') # get_bins(curvature, nr_of_labels)
|
||||
labels = np.linspace(0, bins.shape[0] - 2, bins.shape[0] - 1)
|
||||
|
||||
frame_labels = np.zeros((curvature.shape[0]), dtype=np.float32)
|
||||
for j in range(bins_local.shape[0] - 2):
|
||||
frame_labels[(curvature >= bins_local[j]) * (curvature < bins_local[j+1])] = labels[j]
|
||||
frame_labels[curvature >= bins_local[-2]] = labels[-1]
|
||||
frame_labels = np.zeros((curvature.shape[0]), dtype=np.float32)
|
||||
for j in range(bins.shape[0] - 2):
|
||||
frame_labels[(curvature >= bins[j]) * (curvature < bins[j+1])] = labels[j]
|
||||
frame_labels[curvature >= bins[-2]] = labels[-1]
|
||||
|
||||
curvatures.append(frame_labels)
|
||||
return frame_labels
|
||||
|
||||
return curvatures
|
||||
import tensorflow as tf
|
||||
|
||||
|
||||
def visualize_curvature_labels(folder, frame, bins, neighbourhoods, nr_of_labels):
|
||||
def visualize_curvature_labels(folder, results_folder, frame):
|
||||
id = frame.split('_')[0]
|
||||
frame_nr = frame.split('_')[1].split('.')[0]
|
||||
|
||||
mask = np.load(os.path.join(folder, 'mesh_mask', f'{id}.npy')).astype(bool)
|
||||
_, faces = _maskFaces(np.zeros((14475,3)), F, mask)
|
||||
verts = np.load(os.path.join(folder, 'mesh_posed', f'{id}_{frame_nr}.npz'))['mesh_posed'][mask,:]
|
||||
pred = np.load(os.path.join(results_folder, frame + '.npy'))
|
||||
pred = postprocess(pred, faces)
|
||||
|
||||
curvature_labels_all = generate_curvatures(folder, frame, bins, neighbourhoods, nr_of_labels)
|
||||
curvature_labels_gt = generate_curvatures(verts, faces, mask, 25)
|
||||
curvature_labels_pred = generate_curvatures(pred, faces, mask, 25)
|
||||
# dice = dice_dense(curvature_labels_pred[None,:], curvature_labels_gt[None,:])
|
||||
dice = dice_dense(tf.one_hot(curvature_labels_pred, 7)[None,:], tf.one_hot(curvature_labels_gt, 7)[None,:]).numpy()
|
||||
colors_binned_all = []
|
||||
|
||||
for curvature_labels in curvature_labels_all:
|
||||
for curvature_labels in [curvature_labels_gt, curvature_labels_pred]:
|
||||
colors = np.array([cm.color('jet', 1 - i) for i in np.linspace(0, 1, int(curvature_labels.max()+1))])
|
||||
colors_binned = np.zeros((curvature_labels.shape[0], 3))
|
||||
for i in range(int(curvature_labels.max())+1):
|
||||
@@ -130,10 +159,20 @@ def visualize_curvature_labels(folder, frame, bins, neighbourhoods, nr_of_labels
|
||||
colors_binned[curvature_labels == i, :] = colors[i]
|
||||
colors_binned_all.append(colors_binned)
|
||||
|
||||
fig = make_subplots(rows=1, cols=3, start_cell="top-left", specs = [ [{ 'type': 'scene' } for _ in range(3)] ])
|
||||
|
||||
fig = make_subplots(rows=1, cols=len(colors_binned_all)+1, start_cell="top-left", specs = [ [{ 'type': 'scene' } for _ in range(len(colors_binned_all)+1)] ])
|
||||
|
||||
colors = np.ones((verts.shape[0],3))*np.array([255,200,200])[None,:]
|
||||
fig.add_trace(go.Mesh3d(
|
||||
# 8 vertices of a cube
|
||||
x=-pred[:,0],
|
||||
y=pred[:,2],
|
||||
z=pred[:,1],
|
||||
# i, j and k give the vertices of triangles
|
||||
i = faces[:,0],
|
||||
j = faces[:,1],
|
||||
k = faces[:,2],
|
||||
vertexcolor=np.ones((verts.shape[0],3))*np.array([255,200,200])[None,:]
|
||||
),
|
||||
row=1, col=2)
|
||||
|
||||
fig.add_trace(go.Mesh3d(
|
||||
# 8 vertices of a cube
|
||||
@@ -144,32 +183,28 @@ def visualize_curvature_labels(folder, frame, bins, neighbourhoods, nr_of_labels
|
||||
i = faces[:,0],
|
||||
j = faces[:,1],
|
||||
k = faces[:,2],
|
||||
vertexcolor=colors,
|
||||
lighting={ 'ambient':0.9, 'diffuse':0.5, 'roughness':0.5 }
|
||||
vertexcolor=colors_binned_all[0]
|
||||
),
|
||||
row=1, col=1)
|
||||
|
||||
for i, colors_binned in enumerate(colors_binned_all):
|
||||
fig.add_trace(go.Mesh3d(
|
||||
# 8 vertices of a cube
|
||||
x=verts[:,0],
|
||||
y=verts[:,1],
|
||||
z=verts[:,2],
|
||||
# i, j and k give the vertices of triangles
|
||||
i = faces[:,0],
|
||||
j = faces[:,1],
|
||||
k = faces[:,2],
|
||||
vertexcolor=colors_binned,
|
||||
# lighting={ 'ambient':0.8, 'diffuse':0.5, 'roughness':0.5 }
|
||||
),
|
||||
row=1, col=i+2)
|
||||
|
||||
|
||||
fig.add_trace(go.Mesh3d(
|
||||
# 8 vertices of a cube
|
||||
x=-pred[:,0],
|
||||
y=pred[:,2],
|
||||
z=pred[:,1],
|
||||
# i, j and k give the vertices of triangles
|
||||
i = faces[:,0],
|
||||
j = faces[:,1],
|
||||
k = faces[:,2],
|
||||
vertexcolor=colors_binned_all[1],
|
||||
text=f'dice: {dice}'
|
||||
),
|
||||
row=1, col=3)
|
||||
|
||||
fig.update_layout(scene_aspectmode='manual', scene_aspectratio=dict(x=1, y=1, z=1),
|
||||
scene2_aspectmode='manual', scene2_aspectratio=dict(x=1, y=1, z=1),
|
||||
scene3_aspectmode='manual', scene3_aspectratio=dict(x=1, y=1, z=1),
|
||||
scene4_aspectmode='manual', scene4_aspectratio=dict(x=1, y=1, z=1),
|
||||
# scene4_aspectmode='manual', scene4_aspectratio=dict(x=1, y=1, z=1),
|
||||
# scene5_aspectmode='manual', scene5_aspectratio=dict(x=1, y=1, z=1),
|
||||
)
|
||||
helper = dict(xaxis = dict(range=[-1,1], showbackground=False, showticklabels=False, showaxeslabels=False, showspikes=False, visible=False),
|
||||
@@ -179,7 +214,7 @@ def visualize_curvature_labels(folder, frame, bins, neighbourhoods, nr_of_labels
|
||||
fig.update_layout(scene = helper,
|
||||
scene2 = helper,
|
||||
scene3 = helper,
|
||||
scene4 = helper,
|
||||
# scene4 = helper,
|
||||
# scene5 = helper,
|
||||
)
|
||||
|
||||
@@ -203,33 +238,46 @@ def visualize_curvature_labels(folder, frame, bins, neighbourhoods, nr_of_labels
|
||||
# zaxis = dict(nticks=4, range=[-1,1],),)
|
||||
# )
|
||||
|
||||
fig.show()
|
||||
return fig, dice
|
||||
|
||||
print()
|
||||
import wandb
|
||||
|
||||
def init_wandb():
|
||||
run = wandb.init(project='plots', name='review_4', dir='/home/workspace/local-data/temp/')
|
||||
artifact = wandb.Artifact('code', type='code')
|
||||
artifact.add_file('curvature_analysis.py')
|
||||
run.log_artifact(artifact)
|
||||
|
||||
if __name__ == '__main__':
|
||||
# init_wandb()
|
||||
|
||||
is_skirt = True
|
||||
is_skirt = False
|
||||
skirt_modifier = '_skirt' if is_skirt else ''
|
||||
F = np.load("custom_utils/smpl_faces" + skirt_modifier + ".npy").astype(np.int32)
|
||||
# k_neighbours(k=25)
|
||||
|
||||
folder = '/home/workspace/local-data/valid_skirt'
|
||||
bins = dict()
|
||||
bins[10] = np.load(f'custom_data/train_bins_skirt_10.npy')
|
||||
bins[25] = np.load(f'custom_data/train_bins_skirt.npy')
|
||||
bins[100] = np.load(f'custom_data/train_bins_skirt_100.npy')
|
||||
folder = '/home/workspace/local-data/train'
|
||||
results_folder = '/home/workspace/data/results/post/abl_overfit_jumpsuit_2-'
|
||||
|
||||
bins = None
|
||||
frames_file = 'frames_jumpsuit_30k.txt'
|
||||
frames = []
|
||||
with open(os.path.join(folder, frames_file), 'r') as f:
|
||||
lines = f.readlines()
|
||||
lines = [line.strip() for line in lines]
|
||||
frames = lines
|
||||
|
||||
|
||||
nr_of_labels = 6
|
||||
neighbourhood = 50
|
||||
temp_file = '/home/workspace/local-data/temp/' + ''.join(random.choice(string.ascii_lowercase) for i in range(10)) + '.ply'
|
||||
if not is_skirt:
|
||||
dist = np.load('custom_data/dijkstra.npy')
|
||||
else:
|
||||
dist = np.load('custom_data/dijkstra_skirt.npy')
|
||||
|
||||
visualize_curvature_labels(folder, '02572_1', bins, neighbourhoods=[25, 25, 25], nr_of_labels=[3,6,12])
|
||||
i = 0
|
||||
while True:
|
||||
frame = np.random.choice(frames)
|
||||
# frame = '03265_193'
|
||||
frame = '03102_49'
|
||||
fig, dice = visualize_curvature_labels(folder, results_folder, frame)
|
||||
wandb.log({f'{frame}-dice:{dice}': fig}, step=i)
|
||||
i += 1
|
||||
print(frame)
|
||||
@@ -4,17 +4,15 @@ import os
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
# folder = '/home/workspace/data/dataset/test_skirt_ready_2'
|
||||
# folder = '/home/workspace/data/dataset/local-cache/train_skirt'
|
||||
folder = '/home/workspace/local-data/valid_skirt'
|
||||
ids = os.listdir(folder + '/mesh_posed')
|
||||
folder = '/home/workspace/local-data/cape/train/male'
|
||||
out_folder = '/home/workspace/local-data/cape_processed/train/male'
|
||||
ids = os.listdir(folder)
|
||||
|
||||
count = 0
|
||||
step = 10000
|
||||
step = 1
|
||||
|
||||
while count < 20*step:
|
||||
# while count < 10000:
|
||||
while count < len(ids):
|
||||
# os.system('nohup python MeshUtils/curvature_labels.py -f ' + folder + ' -s ' + str(count) + ' -e ' + str(count + step) + ' -n ' + 'curv_train_' + str(count) + '_' + str(count+step) + ' > curv_train_' + str(count) + '_' + str(count+step) + '.out' + ' 2>&1 &')
|
||||
os.system('nohup python curvature_labels.py -f ' + folder + ' -s ' + str(0) + ' -e ' + str(0 + step) + ' -n ' + 'speed_test_' + str(count) + '_' + str(count+step) + ' > nohup/speed/speed_test_' + str(count) + '_' + str(count+step) + '.out' + ' 2>&1 &')
|
||||
os.system('nohup python curvature_labels_cape.py -if ' + folder + ' -of ' + out_folder + ' -s ' + str(count) + ' -e ' + str(count + step) + ' -n ' + 'curv_gen_2_cape_train_male_' + str(count) + '_' + str(count+step) + ' > nohup/curv_gen_2_cape_train_male_' + str(count) + '_' + str(count+step) + '.out' + ' 2>&1 &')
|
||||
# os.system('python Data/convert_to_uv.py -f ' + folder + ' -s ' + str(count) + ' -e ' + str(count + step) + '')
|
||||
count += step
|
||||
|
||||
+104
-91
@@ -4,7 +4,6 @@ import tqdm
|
||||
import argparse
|
||||
import random
|
||||
import string
|
||||
import time
|
||||
import numpy as np
|
||||
import trimesh as tm
|
||||
import cmapy as cm
|
||||
@@ -41,8 +40,6 @@ def export_to_ply(mesh, file):
|
||||
output_file.close()
|
||||
|
||||
|
||||
|
||||
|
||||
def get_closest_n_points(verts, idx, n):
|
||||
dist = sp.spatial.distance.cdist(verts[idx, :], verts)
|
||||
dist[dist == 0] = 1e9
|
||||
@@ -83,65 +80,67 @@ def k_neighbours(k):
|
||||
pass
|
||||
|
||||
|
||||
def calculate_dist(folder, neighbourhood, frames):
|
||||
out = dict()
|
||||
# frames = frames[int(args.start):int(args.end)]
|
||||
def generate_curvatures(folder, neighbourhood):
|
||||
|
||||
for frame in tqdm.tqdm(frames):
|
||||
id = frame.split('_')[0]
|
||||
if id in out.keys():
|
||||
ids = os.listdir(folder)[int(args.start):int(args.end)]
|
||||
|
||||
curvatures_all = []
|
||||
|
||||
for id in tqdm.tqdm(ids):
|
||||
garment_dir = os.path.join(folder, id)
|
||||
|
||||
if not os.path.isdir(garment_dir):
|
||||
continue
|
||||
|
||||
mask = np.load(os.path.join(folder, 'mesh_mask', f'{id}.npy')).astype(bool)
|
||||
k_neighbors = np.argsort(dist[mask, :][:, mask], axis=-1)[:, :neighbourhood] #cloud.get_neighbors(k=neighbourhood)
|
||||
out[id] = k_neighbors
|
||||
# if os.path.exists(garment_dir + '/curvature_25_raw.npy'):
|
||||
# continue
|
||||
|
||||
return out
|
||||
curvatures_garment = []
|
||||
|
||||
def generate_curvatures(folder, neighbourhood, frames):
|
||||
garments = [f.replace('.pc16','') for f in os.listdir(garment_dir) if f.find('_') == -1 and f != 'info.mat' and not f.endswith('.obj')]
|
||||
# assert len (garments) == 1
|
||||
if len (garments) != 1:
|
||||
continue
|
||||
garment = garments[0]
|
||||
|
||||
# ids = os.listdir(folder)[int(args.start):int(args.end)]
|
||||
# frames = frames[int(args.start):int(args.end)]
|
||||
os.makedirs(os.path.join(folder, f'mesh_curvature_raw_{neighbourhood}'), exist_ok=True)
|
||||
bodies = readPC2(os.path.join(folder, id, 'Body_posed.pc16'), True)['V']
|
||||
offsetss = readPC2(os.path.join(folder, id, garment + '_registered.pc16'), True)['V']
|
||||
mask = np.squeeze(sio.loadmat(os.path.join(garment_dir, garment + '_mask.mat'))['mask'].astype(bool))
|
||||
|
||||
k_neighbors_cache = calculate_dist(folder, neighbourhood, frames)
|
||||
_, faces = _maskFaces(bodies[0, :, :], F, mask)
|
||||
v = bodies[0, mask, :] + offsetss[0, mask, :]
|
||||
m = tm.Trimesh(v, faces, process=False, validate=False)
|
||||
|
||||
# for frame in tqdm.tqdm(frames):
|
||||
outliers = np.array([len(v) for v in m.vertex_neighbors]) == 0
|
||||
outliers = np.nonzero(outliers)[0]
|
||||
outliers_n_neighbours = get_closest_n_points(v, outliers, 2)
|
||||
outliers_faces = np.concatenate((outliers[:, np.newaxis], outliers_n_neighbours), axis=-1)
|
||||
faces = np.concatenate((faces, outliers_faces), axis=0)
|
||||
|
||||
# id = frame.split('_')[0]
|
||||
# frame_nr = frame.split('_')[1].split('.')[0]
|
||||
step = 0
|
||||
for body, offsets in zip(bodies, offsetss):
|
||||
verts = body + offsets
|
||||
verts = verts[mask, :]
|
||||
|
||||
# # bodies = readPC2(os.path.join(folder, id, 'Body_posed.pc16'), True)['V']
|
||||
# # offsetss = readPC2(os.path.join(folder, id, garment + '_registered.pc16'), True)['V']
|
||||
# mask = np.load(os.path.join(folder, 'mesh_mask', f'{id}.npy')).astype(bool)
|
||||
# _, faces = _maskFaces(np.zeros((14475,3)), F, mask) #np.load(os.path.join(folder, 'faces', f'{id}.npy'))
|
||||
# v = np.load(os.path.join(folder, 'mesh_posed', f'{id}_{frame_nr}.npz'))['mesh_posed'][mask,:]
|
||||
m = tm.Trimesh(verts, faces, process=False, validate=False)
|
||||
export_to_ply(m, temp_file)
|
||||
|
||||
# m = tm.Trimesh(v, faces, process=False, validate=False)
|
||||
cloud = PyntCloud.from_file(temp_file)
|
||||
# cloud.plot(mesh=True)
|
||||
|
||||
# outliers = np.array([len(v) for v in m.vertex_neighbors]) == 0
|
||||
# outliers = np.nonzero(outliers)[0]
|
||||
# outliers_n_neighbours = get_closest_n_points(v, outliers, 2)
|
||||
# outliers_faces = np.concatenate((outliers[:, np.newaxis], outliers_n_neighbours), axis=-1)
|
||||
# faces = np.concatenate((faces, outliers_faces), axis=0)
|
||||
k_neighbors = np.argsort(dist[mask, :][:, mask], axis=-1)[:, :neighbourhood] #cloud.get_neighbors(k=neighbourhood)
|
||||
ev = cloud.add_scalar_field("eigen_values", k_neighbors=k_neighbors)
|
||||
cloud.add_scalar_field("curvature", ev=ev)
|
||||
curvature = np.array(cloud.points["curvature(" + str(neighbourhood+1) + ")"])
|
||||
curvatures_garment.append(curvature)
|
||||
|
||||
# verts = v
|
||||
print(step)
|
||||
step += 1
|
||||
|
||||
# m = tm.Trimesh(verts, faces, process=False, validate=False)
|
||||
# export_to_ply(m, temp_file)
|
||||
# curvatures_all.append(np.array(curvatures_garment))
|
||||
np.save(garment_dir + '/curvature_25_raw.npy', np.array(curvatures_garment))
|
||||
|
||||
# cloud = PyntCloud.from_file(temp_file)
|
||||
|
||||
# k_neighbors = k_neighbors_cache[id] # np.argsort(dist[mask, :][:, mask], axis=-1)[:, :neighbourhood] #cloud.get_neighbors(k=neighbourhood)
|
||||
# ev = cloud.add_scalar_field("eigen_values", k_neighbors=k_neighbors)
|
||||
# cloud.add_scalar_field("curvature", ev=ev)
|
||||
# curvature = np.array(cloud.points["curvature(" + str(neighbourhood+1) + ")"])
|
||||
# out = np.zeros((14475), dtype=np.float32)
|
||||
# out[mask] = curvature
|
||||
|
||||
# np.savez_compressed(os.path.join(folder, f'mesh_curvature_raw_{neighbourhood}', f'{id}_{frame_nr}.npz'), mesh_curvature_raw=out)
|
||||
|
||||
return None
|
||||
return curvatures_all
|
||||
|
||||
|
||||
def get_bins(values, nr_of_bins):
|
||||
@@ -153,23 +152,41 @@ def get_bins(values, nr_of_bins):
|
||||
return bins
|
||||
|
||||
|
||||
def generate_curvature_labels(folder, bins, curvatures, frames, neighbourhood):
|
||||
def generate_curvature_labels(folder, bins, curvatures):
|
||||
|
||||
os.makedirs(os.path.join(folder, f'mesh_curvature_{neighbourhood}_2'), exist_ok=True)
|
||||
ids = os.listdir(folder)#[:10]
|
||||
labels = np.linspace(0, bins.shape[0] - 2, bins.shape[0] - 1)
|
||||
|
||||
for i, frame in enumerate(tqdm.tqdm(frames)):
|
||||
# id = frame.split('_')[0]
|
||||
# mask = np.load(os.path.join(folder, 'mesh_mask', f'{id}.npy'))
|
||||
# print(i)
|
||||
i = 0
|
||||
for id in tqdm.tqdm(ids):
|
||||
garment_dir = os.path.join(folder, id)
|
||||
|
||||
if not os.path.isdir(garment_dir):
|
||||
continue
|
||||
|
||||
garments = [f.replace('.pc16','') for f in os.listdir(garment_dir) if f.find('_') == -1 and f != 'info.mat' and not f.endswith('.obj')]
|
||||
# assert len (garments) == 1
|
||||
if len (garments) != 1:
|
||||
continue
|
||||
garment = garments[0]
|
||||
mask = np.squeeze(sio.loadmat(os.path.join(garment_dir, garment + '_mask.mat'))['mask'].astype(bool))
|
||||
|
||||
curvature = curvatures[i]
|
||||
i += 1
|
||||
|
||||
frame_labels = np.zeros((curvature.shape[0]), dtype=np.float32)
|
||||
for j in range(bins.shape[0] - 2):
|
||||
frame_labels[(curvature >= bins[j]) * (curvature < bins[j+1])] = labels[j]
|
||||
frame_labels[curvature >= bins[-2]] = labels[-1]
|
||||
curvature_label = np.zeros((curvature.shape[0], curvature.shape[1]))
|
||||
frame = 0
|
||||
for frame in range(curvature.shape[0]):
|
||||
frame_labels = np.zeros((curvature.shape[1]), dtype=np.float32)
|
||||
for j in range(bins.shape[0] - 2):
|
||||
frame_labels[(curvature[frame, :] >= bins[j]) * (curvature[frame, :] < bins[j+1])] = labels[j]
|
||||
frame_labels[curvature[frame, :] >= bins[-2]] = labels[-1]
|
||||
curvature_label[frame, :] = frame_labels
|
||||
frame += 1
|
||||
|
||||
np.savez_compressed(os.path.join(folder, f'mesh_curvature_{neighbourhood}_2', f'{frame}.npz'), mesh_curvature=frame_labels)
|
||||
unmasked_label = np.zeros((curvature.shape[0], 14475), dtype=np.float32)
|
||||
unmasked_label[:, mask] = curvature_label
|
||||
np.save(os.path.join(garment_dir, "curvature_label_" + str(nr_of_labels) + "_" + str(neighbourhood) + ".npy"), unmasked_label)
|
||||
# writePC2(os.path.join(garment_dir, "curvature_label_" + str(nr_of_labels) + "_" + str(neighbourhood) + ".pc16"), unmasked_label, True)
|
||||
|
||||
|
||||
@@ -240,10 +257,24 @@ def visualize_curvature_labels(folder):
|
||||
print()
|
||||
|
||||
|
||||
def read_raw_curvatures(folder, frames, neighbourhood):
|
||||
def read_raw_curvatures(folder):
|
||||
|
||||
ids = os.listdir(folder)[int(args.start):int(args.end)]
|
||||
|
||||
curvatures_all = []
|
||||
for frame in tqdm.tqdm(frames):
|
||||
curv = np.load(os.path.join(folder, f'mesh_curvature_raw_{neighbourhood}', f'{frame}.npz'))['mesh_curvature_raw']
|
||||
|
||||
for id in tqdm.tqdm(ids):
|
||||
garment_dir = os.path.join(folder, id)
|
||||
|
||||
if not os.path.isdir(garment_dir):
|
||||
continue
|
||||
|
||||
garments = [f.replace('.pc16','') for f in os.listdir(garment_dir) if f.find('_') == -1 and f != 'info.mat' and not f.endswith('.obj')]
|
||||
# assert len (garments) == 1
|
||||
if len (garments) != 1:
|
||||
continue
|
||||
|
||||
curv = np.load(garment_dir + '/curvature_25_raw.npy')
|
||||
curvatures_all.append(curv)
|
||||
|
||||
return curvatures_all
|
||||
@@ -251,46 +282,28 @@ def read_raw_curvatures(folder, frames, neighbourhood):
|
||||
|
||||
if __name__ == '__main__':
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("-f", "--folder", help = "process the given folder", default=r'/home/workspace/data/dataset/local-cache/train_skirt')
|
||||
parser.add_argument("-f", "--folder", help = "process the given folder", default=r'/home/workspace/data/dataset/test')
|
||||
parser.add_argument("-s", "--start", help = "start of range", default=0)
|
||||
parser.add_argument("-e", "--end", help = "end of range", default=30000)
|
||||
parser.add_argument("-e", "--end", help = "end of range", default=1500)
|
||||
parser.add_argument("-n", "--name", help = "end of range", default="lhunor")
|
||||
args = parser.parse_args()
|
||||
|
||||
is_skirt = True
|
||||
skirt_modifier = '_skirt' if is_skirt else ''
|
||||
F = np.load("custom_utils/smpl_faces" + skirt_modifier + ".npy").astype(np.int32)
|
||||
F = np.load("FeatureLines/superSMPL/smpl_faces.npy")
|
||||
# k_neighbours(k=25)
|
||||
|
||||
folder = args.folder
|
||||
frames_file = 'frames' + skirt_modifier + '_10p.txt'
|
||||
|
||||
nr_of_labels = 6
|
||||
neighbourhood = 100
|
||||
temp_file = '/home/workspace/local-data/temp/' + ''.join(random.choice(string.ascii_lowercase) for i in range(10)) + '.ply'
|
||||
if not is_skirt:
|
||||
dist = np.load('custom_data/dijkstra.npy')
|
||||
else:
|
||||
dist = np.load('custom_data/dijkstra_skirt.npy')
|
||||
neighbourhood = 25
|
||||
temp_file = 'temp/' + ''.join(random.choice(string.ascii_lowercase) for i in range(10)) + '.ply'
|
||||
dist = np.load('MeshUtils/dijsktra.npy')
|
||||
# dist = np.load('MeshUtils/dijkstra_skirt.npy')
|
||||
|
||||
print('SKIRT' if is_skirt else 'NOT SKIRT')
|
||||
print(f'params: -f {args.folder} -s {args.start} -e {args.end} -n {args.name} -skirt {is_skirt} -neigh {neighbourhood}')
|
||||
|
||||
frames = sorted(os.listdir(os.path.join(folder, 'mesh_posed')))[int(args.start):int(args.end)]
|
||||
frames = [frame.split('.')[0] for frame in frames]
|
||||
|
||||
# frames = []
|
||||
# with open(os.path.join(folder, frames_file), 'r') as f:
|
||||
# lines = f.readlines()
|
||||
# lines = [line.strip() for line in lines]
|
||||
# frames = lines[int(args.start):int(args.end)]
|
||||
|
||||
generate_curvatures(folder, neighbourhood, frames)
|
||||
# curvatures = read_raw_curvatures(folder, frames, neighbourhood)
|
||||
generate_curvatures(folder, neighbourhood)
|
||||
# curvatures = read_raw_curvatures(folder)
|
||||
# bins = get_bins(curvatures, nr_of_labels)
|
||||
# np.save(f'custom_data/train_bins_skirt_{neighbourhood}.npy', bins)
|
||||
# bins = np.load(f'custom_data/train_bins_skirt_{neighbourhood}.npy')
|
||||
# generate_curvature_labels(folder, bins, curvatures, frames, neighbourhood)
|
||||
# np.save('train_bins_skirt.npy', bins)
|
||||
# bins = np.load('train_bins.npy')
|
||||
# generate_curvature_labels(folder, bins, curvatures)
|
||||
# visualize_curvature_labels(folder)
|
||||
|
||||
pass
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,6 +1,6 @@
|
||||
import os
|
||||
import sys
|
||||
from configs.config_abl_all_post import config
|
||||
from configs.config_abl_overfit_jumpsuit_2 import config
|
||||
|
||||
os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu']
|
||||
import tensorflow as tf
|
||||
@@ -41,11 +41,11 @@ from losses import collision_loss as collision_penalty
|
||||
from custom_utils.custom_utils import batch_to_dict, load_model, plot_3d, UV2Mesh, get_summary_html, maskFacesBatch, _maskFaces, plot_3d_collision
|
||||
from dataset import DatasetFactory, StaticDataset
|
||||
from custom_utils.smpl import SMPL
|
||||
from models.cvae_model import CVAENew as CVAE
|
||||
from models.cvae_model import CVAE
|
||||
|
||||
|
||||
def init_wandb():
|
||||
run = wandb.init(project='ablation', name=config['name'], notes=config['notes'], dir='/wandb', tags=config['tags'])
|
||||
run = wandb.init(project='ablation', name=config['name'], notes=config['notes'], dir='/wandb')
|
||||
artifact = wandb.Artifact('code', type='code')
|
||||
artifact.add_file('cvae.py')
|
||||
artifact.add_file('models/cvae_model.py')
|
||||
@@ -58,9 +58,7 @@ def init_wandb():
|
||||
artifact.add_file('convnext/models/convnext_tf.py')
|
||||
config_file_names = [key for key in sys.modules.keys() if key.startswith('configs.')]
|
||||
for config_file_name in config_file_names:
|
||||
file_name = '/'.join(config_file_name.split('.')) + '.py'
|
||||
if os.path.exists(file_name):
|
||||
artifact.add_file(file_name)
|
||||
artifact.add_file('/'.join(config_file_name.split('.')) + '.py')
|
||||
run.log_artifact(artifact)
|
||||
|
||||
uv2mesh = UV2Mesh(res=256, is_skirt=config['is_skirt'], is_adaptive=False, is_smpl_orig=config['is_cape'])
|
||||
|
||||
+3
-3
@@ -1,6 +1,6 @@
|
||||
import os
|
||||
import sys
|
||||
from configs.config_abl_all_post import config
|
||||
from configs.config_abl_overfit_jumpsuit_2 import config
|
||||
|
||||
os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu']
|
||||
import tensorflow as tf
|
||||
@@ -42,7 +42,7 @@ from losses import collision_loss as collision_penalty
|
||||
from custom_utils.custom_utils import batch_to_dict, load_model, plot_3d, UV2Mesh, get_summary_html, maskFacesBatch, _maskFaces, plot_3d_collision
|
||||
from dataset import DatasetFactory, StaticDataset
|
||||
from custom_utils.smpl import SMPL
|
||||
from models.cvae_model import CVAENew as CVAE
|
||||
from models.cvae_model import CVAE
|
||||
from custom_utils.supersmpl_io import writeOBJ
|
||||
# from unif_metric import chamfer_and_score
|
||||
|
||||
@@ -104,7 +104,7 @@ if __name__ == '__main__':
|
||||
|
||||
iteration = ''
|
||||
|
||||
load_model(model, 'checkpoints/post/' + checkpoint_name, iteration=iteration)
|
||||
load_model(model, 'checkpoints/' + checkpoint_name, iteration=iteration)
|
||||
# load_model(model, 'checkpoints/' + 'abl_all_120k')
|
||||
|
||||
output_folder = '/home/workspace/data/results/post/' + checkpoint_name + '-' + iteration
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
import os
|
||||
import shutil
|
||||
import tqdm
|
||||
|
||||
if __name__ == '__main__':
|
||||
folder = '/home/workspace/data/dataset/local-cache/train_skirt'
|
||||
is_skirt = True
|
||||
skirt_modifier = '_skirt' if is_skirt else ''
|
||||
frames_file = 'frames' + skirt_modifier + '_10p.txt'
|
||||
neighbourhood = 10
|
||||
|
||||
frames = []
|
||||
with open(os.path.join(folder, frames_file), 'r') as f:
|
||||
lines = f.readlines()
|
||||
lines = [line.strip() for line in lines]
|
||||
frames = lines
|
||||
|
||||
os.makedirs(os.path.join(folder, f'uv_curvature_{neighbourhood}'), exist_ok=True)
|
||||
for frame in tqdm.tqdm(frames):
|
||||
id = frame.split('_')[0]
|
||||
src = os.path.join(folder, f'{id}', 'curvature_uv_10', f'{frame}.npz')
|
||||
dst = os.path.join(folder, f'uv_curvature_{neighbourhood}', f'{frame}.npz')
|
||||
shutil.move(src, dst)
|
||||
+4
-6
@@ -4,26 +4,24 @@ import os
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
# folder = '/home/workspace/data/dataset/local-cache/train_skirt'
|
||||
folder = '/home/workspace/data/dataset/test_skirt_ready_2'
|
||||
# folder = '/home/workspace/local-data/valid_skirt'
|
||||
# folder = '/home/workspace/local-data/cape_processed/train/male'
|
||||
# folder = '/home/workspace/local-data/valid_skirt'
|
||||
# folder = '/home/workspace/local-data/valid'
|
||||
# ids = os.listdir(folder)
|
||||
# ids = os.listdir(folder + '/mesh_posed_no_orient')#[280000:]
|
||||
ids = os.listdir(folder + '/mesh_posed_no_orient')#[280000:]
|
||||
skirt = 0
|
||||
|
||||
count = 0
|
||||
step = 20
|
||||
step = 2000
|
||||
|
||||
# !!!!!!! change skirt parameter in script
|
||||
|
||||
while count < 150:
|
||||
while count < len(ids):
|
||||
# os.system('nohup python convert_to_uv_cape.py -f ' + folder + ' -s ' + str(count) + ' -e ' + str(count + step) + ' -n ' + 'to_uv_2_cape_train_male_' + str(count) + '_' + str(count+step) + ' > nohup/to_uv_2_cape_train_male_' + str(count) + '_' + str(count+step) + '.out' + ' 2>&1 &')
|
||||
# os.system('nohup python convert_to_uv.py -f ' + folder + ' -s ' + str(count) + ' -e ' + str(count + step) + ' -n ' + 'to_uv_train_unposed_onehot_' + str(count) + '_' + str(count+step) + ' > nohup/to_uv_train_unposed_onehot_' + str(count) + '_' + str(count+step) + '.out' + ' 2>&1 &')
|
||||
# os.system('nohup python convert_to_uv_local.py -f ' + folder + ' -s ' + str(count) + ' -e ' + str(count + step) + ' -n ' + 'to_uv_train_local_unposed_onehot_' + str(count) + '_' + str(count+step) + ' > nohup/to_uv_train_local_unposed_onehot_' + str(count) + '_' + str(count+step) + '.out' + ' 2>&1 &')
|
||||
os.system('nohup python convert_to_uv_local_single.py -f ' + folder + ' -s ' + str(count) + ' -e ' + str(count + step) + ' -n ' + 'to_uv_curv_2_10_test_skirt_' + str(count) + '_' + str(count+step) + ' > nohup/to_uv_curv_2_10_test_skirt_' + str(count) + '_' + str(count+step) + '.out' + ' 2>&1 &')
|
||||
os.system('nohup python convert_to_uv_local_single.py -f ' + folder + ' -s ' + str(count) + ' -e ' + str(count + step) + ' -n ' + 'to_uv_posed_no_orient_test_skirt_ready_' + str(count) + '_' + str(count+step) + ' > nohup/to_uv_posed_no_orient_test_skirt_ready_' + str(count) + '_' + str(count+step) + '.out' + ' 2>&1 &')
|
||||
# os.system('nohup python convert_to_uv_local_single.py -f ' + folder + ' -s ' + str(count) + ' -e ' + str(count + step) + ' -n ' + 'to_uv_train_skirt_local_unposed_onehot_3_' + str(count) + '_' + str(count+step) + ' > nohup/to_uv_train_skirt_local_unposed_onehot_3_' + str(count) + '_' + str(count+step) + '.out' + ' 2>&1 &')
|
||||
# os.system('nohup python convert_to_uv_local_single.py -f ' + folder + ' -s ' + str(count) + ' -e ' + str(count + step) + ' -n ' + 'to_uv_valid_skirt_local_unposed_onehot_3_' + str(count) + '_' + str(count+step) + ' > nohup/to_uv_valid_skirt_local_unposed_onehot_' + str(count) + '_' + str(count+step) + '.out' + ' 2>&1 &')
|
||||
# os.system('nohup python downscale.py -f ' + folder + ' -s ' + str(count) + ' -e ' + str(count + step) + ' -n ' + 'downscale_valid_posed_no_orient_' + str(count) + '_' + str(count+step) + ' > nohup/downscale_valid_posed_no_orient_' + str(count) + '_' + str(count+step) + '.out' + ' 2>&1 &')
|
||||
|
||||
Reference in New Issue
Block a user