no shape preprocessing

This commit is contained in:
2022-09-30 21:55:04 +00:00
parent d4a1310a06
commit 119c4a3bb0
+77 -2
View File
@@ -1,4 +1,6 @@
import os import os
os.environ["CUDA_VISIBLE_DEVICES"] = "1"
import sys import sys
import shutil import shutil
import tqdm import tqdm
@@ -13,6 +15,10 @@ from custom_utils.smpl import SMPL
import plotly.graph_objects as go import plotly.graph_objects as go
def create_no_orient_body(folder): def create_no_orient_body(folder):
ids = os.listdir(folder) ids = os.listdir(folder)
F = np.load("custom_utils/smpl_faces.npy") F = np.load("custom_utils/smpl_faces.npy")
@@ -99,13 +105,82 @@ def create_no_orient_body(folder):
def create_no_shape_unposed(folder):
import tensorflow as tf
ids = os.listdir(folder)
smpl = SMPL()
for id in tqdm.tqdm(ids):
garment_dir = os.path.join(folder, id)
if not os.path.isdir(garment_dir):
continue
info = sio.loadmat(os.path.join(folder, id, 'info.mat'))
shape = info['shape']
gender = int(info['gender'][0,0] > 0)
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
assert gender == info['gender'][0,0]
# if len (garments) != 1:
# continue
garment = garments[0]
mask = np.load(os.path.join(folder, id, garment + '_mask.npy'))
shape_offsets = tf.tensordot(shape.astype(np.float32), smpl.shapedirs[gender], axes=[[1], [2]]).numpy()
os.makedirs(os.path.join(folder, id, 'mesh_unposed_no_shape'), exist_ok=True)
for i in range(info['poses'].shape[1]):
mesh_unposed = np.load(os.path.join(garment_dir, 'mesh_unposed', id + '_' + str(i) + '.npz'))
mesh_unposed = mesh_unposed['mesh_unposed']
mesh_unposed[mask, :] = mesh_unposed[mask, :] - np.squeeze(shape_offsets)[smpl.to_keep, :][mask, :]
np.savez_compressed(os.path.join(folder, id, 'mesh_unposed_no_shape', id + '_' + str(i) + '.npz'), mesh_unposed_no_shape = mesh_unposed)
def check_if_skirt(folder):
ids = os.listdir(folder)
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
# garment = garments[0]
# assert garment != 'Skirt'
assert "Skirt" not in garments
def gather_ids(folder, file_name):
ids = os.listdir(folder)
to_print = []
for id in tqdm.tqdm(ids):
garment_dir = os.path.join(folder, id)
if not os.path.isdir(garment_dir):
continue
if len(id) == 5:
to_print.append(id)
to_print.sort()
with open(file_name, 'w') as f:
f.write('\n'.join(to_print))
if __name__ == '__main__': if __name__ == '__main__':
os.environ["CUDA_VISIBLE_DEVICES"] = "1"
src_folder = '/home/workspace/data/dataset/train_skirt' src_folder = '/home/workspace/data/dataset/train_skirt'
# src_folder = r'D:\Work\Dataset\validation_2' # src_folder = r'D:\Work\Dataset\validation_2'
dest_folder = '/home/workspace/data/dataset/validation' dest_folder = '/home/workspace/data/dataset/validation'
create_no_orient_body('/home/workspace/data/dataset/train_100') create_no_orient_body(src_folder)
# create_no_shape_unposed(src_folder)
# check_if_skirt(src_folder)
# gather_ids(src_folder, 'ids/test_non_skirt_ids.txt')