add pose verification and filtering to preprocess
This commit is contained in:
+33
-3
@@ -1,4 +1,6 @@
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
|
from custom_utils.supersmpl_io import readPC2
|
||||||
os.environ["CUDA_VISIBLE_DEVICES"] = "1"
|
os.environ["CUDA_VISIBLE_DEVICES"] = "1"
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
@@ -28,6 +30,9 @@ def create_no_orient_body(folder):
|
|||||||
if not os.path.isdir(os.path.join(folder, id)):
|
if not os.path.isdir(os.path.join(folder, id)):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
if os.path.exists(os.path.join(folder, id, 'mesh_posed_body_no_orient')):
|
||||||
|
continue
|
||||||
|
|
||||||
info = sio.loadmat(os.path.join(folder, id, 'info.mat'))
|
info = sio.loadmat(os.path.join(folder, id, 'info.mat'))
|
||||||
|
|
||||||
pose, shape, gender = info['poses'], info['shape'], info['gender']
|
pose, shape, gender = info['poses'], info['shape'], info['gender']
|
||||||
@@ -114,6 +119,9 @@ def create_no_shape_unposed(folder):
|
|||||||
garment_dir = os.path.join(folder, id)
|
garment_dir = os.path.join(folder, id)
|
||||||
if not os.path.isdir(garment_dir):
|
if not os.path.isdir(garment_dir):
|
||||||
continue
|
continue
|
||||||
|
if os.path.exists(os.path.join(folder, id, 'mesh_unposed_no_shape')):
|
||||||
|
continue
|
||||||
|
|
||||||
|
|
||||||
info = sio.loadmat(os.path.join(folder, id, 'info.mat'))
|
info = sio.loadmat(os.path.join(folder, id, 'info.mat'))
|
||||||
|
|
||||||
@@ -173,14 +181,36 @@ def gather_ids(folder, file_name):
|
|||||||
f.write('\n'.join(to_print))
|
f.write('\n'.join(to_print))
|
||||||
|
|
||||||
|
|
||||||
|
def verify_poses(folder):
|
||||||
|
ids = os.listdir(folder)
|
||||||
|
|
||||||
|
for id in tqdm.tqdm(ids):
|
||||||
|
if not os.path.isdir(os.path.join(folder, id)):
|
||||||
|
continue
|
||||||
|
|
||||||
|
garments = [f.replace('_registered.pc16','') for f in os.listdir(os.path.join(folder, id)) if f.endswith('_registered.pc16') and not f.startswith('Combined')]
|
||||||
|
assert len (garments) == 1
|
||||||
|
|
||||||
|
info = sio.loadmat(os.path.join(folder, id, 'info.mat'))
|
||||||
|
poses = info['poses']
|
||||||
|
verts = readPC2(os.path.join(folder, id, garments[0] + '_registered.pc16'), True)['V']
|
||||||
|
# print(id)
|
||||||
|
# assert type(poses) == np.ndarray and poses.shape[0] == 72 and poses.shape[1] == verts.shape[0], 'mv ' + os.path.join(folder, id) + ' /home/workspace/data/dataset/invalid/'
|
||||||
|
if not (type(poses) == np.ndarray and poses.shape[0] == 72 and poses.shape[1] == verts.shape[0]):
|
||||||
|
shutil.move(os.path.join(folder, id), '/home/workspace/data/dataset/invalid/')
|
||||||
|
print(id)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
||||||
src_folder = '/home/workspace/data/dataset/train_skirt'
|
src_folder = '/home/workspace/data/dataset/test_skirt' #cloth3d_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(src_folder)
|
# create_no_orient_body(src_folder)
|
||||||
# create_no_shape_unposed(src_folder)
|
create_no_shape_unposed(src_folder)
|
||||||
# check_if_skirt(src_folder)
|
# check_if_skirt(src_folder)
|
||||||
# gather_ids(src_folder, 'ids/test_non_skirt_ids.txt')
|
# gather_ids(src_folder, 'ids/test_non_skirt_ids.txt')
|
||||||
|
# verify_poses(src_folder)
|
||||||
|
|||||||
Reference in New Issue
Block a user