no shape preprocessing
This commit is contained in:
+77
-2
@@ -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')
|
||||||
|
|||||||
Reference in New Issue
Block a user