diff --git a/downscale.py b/downscale.py index 450753d..411615f 100644 --- a/downscale.py +++ b/downscale.py @@ -1,3 +1,4 @@ +import argparse import os import tqdm import cv2 @@ -7,7 +8,7 @@ import numpy as np import plotly.graph_objects as go import plotly.express as ex -os.environ["CUDA_VISIBLE_DEVICES"] = "4" +os.environ["CUDA_VISIBLE_DEVICES"] = "1" gpus = tf.config.experimental.list_physical_devices('GPU') if gpus: @@ -67,75 +68,84 @@ class UVMaskStore(): return self.store[id] -def downscale_uv_maps_posed_body(folder, type, size: int): - os.makedirs(os.path.join(folder, type + '_' + str(size)), exist_ok=True) +def downscale_uv_maps_posed_body(folder, type, sizes): + for size in sizes: + os.makedirs(os.path.join(folder, type + '_' + str(size)), exist_ok=True) - frames = os.listdir(os.path.join(folder, type)) + frames = os.listdir(os.path.join(folder, type))[int(args.start):int(args.end)] for frame in tqdm.tqdm(frames): id, _ = frame.split('_') img = np.load(os.path.join(folder, type, frame)); img = img['uv_posed_body_no_orient'] - mask_full = uv_mask_store_full[id] + mask_full = uv_mask_store[512][id] img = fill(img, mask_full) - mask = uv_mask_store_low[id] - down = tf.image.resize(img, size=(size, int(size/2)), method=tf.image.ResizeMethod.LANCZOS5) - down = down * mask[:,:,np.newaxis] - np.savez_compressed(os.path.join(folder, type + '_' + str(size), frame), uv_posed_body_no_orient = down) + for size in sizes: + mask = uv_mask_store[size][id] + down = tf.image.resize(img, size=(size, int(size/2)), method=tf.image.ResizeMethod.LANCZOS5) + down = down * mask[:,:,np.newaxis] + np.savez_compressed(os.path.join(folder, type + '_' + str(size), frame), uv_posed_body_no_orient = down) -def downscale_uv_maps_curv(folder, type, size): - os.makedirs(os.path.join(folder, type + '_' + str(size)), exist_ok=True) +def downscale_uv_maps_curv(folder, type, sizes): + for size in sizes: + os.makedirs(os.path.join(folder, type + '_' + str(size)), exist_ok=True) - frames = os.listdir(os.path.join(folder, type)) + frames = os.listdir(os.path.join(folder, type))[int(args.start):int(args.end)] for frame in tqdm.tqdm(frames): id, _ = frame.split('_') img = np.load(os.path.join(folder, type, frame)); img = img['curvature_uv'] - mask_full = uv_mask_store_full[id] + mask_full = uv_mask_store[512][id] img = fill_label(img, mask_full) - mask = uv_mask_store_low[id] - down = tf.image.resize(img[:,:,tf.newaxis], size=(size, int(size/2)), method=tf.image.ResizeMethod.NEAREST_NEIGHBOR) - down = np.squeeze(down) * mask[:,:] - np.savez_compressed(os.path.join(folder, type + '_' + str(size), frame), uv_curvature = down) + for size in sizes: + mask = uv_mask_store[size][id] + down = tf.image.resize(img[:,:,tf.newaxis], size=(size, int(size/2)), method=tf.image.ResizeMethod.NEAREST_NEIGHBOR) + down = np.squeeze(down) * mask[:,:] + np.savez_compressed(os.path.join(folder, type + '_' + str(size), frame), uv_curvature = down) -def downscale_uv_maps_unposed(folder, type, size): - os.makedirs(os.path.join(folder, type + '_' + str(size)), exist_ok=True) +def downscale_uv_maps_unposed(folder, type, sizes): + for size in sizes: + os.makedirs(os.path.join(folder, type + '_' + str(size)), exist_ok=True) - frames = os.listdir(os.path.join(folder, type)) + frames = os.listdir(os.path.join(folder, type))[int(args.start):int(args.end)] for frame in tqdm.tqdm(frames): id, _ = frame.split('_') img = np.load(os.path.join(folder, type, frame)); img = img['uv_unposed_no_shape'] - mask_full = uv_mask_store_full[id] + mask_full = uv_mask_store[512][id] img = fill(img, mask_full) - mask = uv_mask_store_low[id] - down = tf.image.resize(img, size=(size, int(size/2)), method=tf.image.ResizeMethod.LANCZOS5) - down = down * mask[:,:,np.newaxis] - np.savez_compressed(os.path.join(folder, type + '_' + str(size), frame), uv_unposed_no_shape = down) + for size in sizes: + mask = uv_mask_store[size][id] + down = tf.image.resize(img, size=(size, int(size/2)), method=tf.image.ResizeMethod.LANCZOS5) + down = down * mask[:,:,np.newaxis] + np.savez_compressed(os.path.join(folder, type + '_' + str(size), frame), uv_unposed_no_shape = down) -def downscale_uv_maps_static(folder, type, size): - os.makedirs(os.path.join(folder, type + '_' + str(size)), exist_ok=True) +def downscale_uv_maps_static(folder, type, sizes): + for size in sizes: + os.makedirs(os.path.join(folder, type + '_' + str(size)), exist_ok=True) - frames = os.listdir(os.path.join(folder, type)) + frames = os.listdir(os.path.join(folder, type))[int(args.start):int(args.end)] for frame in tqdm.tqdm(frames): id, _ = frame.split('.') img = np.load(os.path.join(folder, type, frame)); img = img['uv_static'] - mask_full = uv_mask_store_full[id] + mask_full = uv_mask_store[512][id] img = fill(img, mask_full) - down = tf.image.resize(img, size=(size, int(size/2)), method=tf.image.ResizeMethod.LANCZOS5) - mask = uv_mask_store_low[id] - down = down * mask[:,:,np.newaxis] - np.savez_compressed(os.path.join(folder, type + '_' + str(size), frame), uv_static = down) + + for size in sizes: + down = tf.image.resize(img, size=(size, int(size/2)), method=tf.image.ResizeMethod.LANCZOS5) + mask = uv_mask_store[size][id] + down = down * mask[:,:,np.newaxis] + np.savez_compressed(os.path.join(folder, type + '_' + str(size), frame), uv_static = down) def downscale_uv_maps_mask(folder, type, size): os.makedirs(os.path.join(folder, type + '_' + str(size)), exist_ok=True) - frames = os.listdir(os.path.join(folder, type)) + frames = os.listdir(os.path.join(folder, type))[int(args.start):int(args.end)] for frame in tqdm.tqdm(frames): id, _ = frame.split('.') @@ -147,20 +157,25 @@ def downscale_uv_maps_mask(folder, type, size): if __name__ == '__main__': - size = 32 - folder = '/home/workspace/local-data/train' + parser = argparse.ArgumentParser() + parser.add_argument("-f", "--folder", help = "end of range", default='/home/workspace/data/dataset/train_skirt') + parser.add_argument("-s", "--start", help = "start of range", default=0) + parser.add_argument("-e", "--end", help = "end of range", default=1) + parser.add_argument("-n", "--name", help = "end of range", default='lhunor') + args = parser.parse_args() - uv_mask_store_full = UVMaskStore(folder, size=512) - uv_mask_store_low = UVMaskStore(folder, size=size) + + sizes = [32, 64, 128, 256] + folder = args.folder + + uv_mask_store = { size: UVMaskStore(folder, size=size) for size in sizes } + uv_mask_store[512] = UVMaskStore(folder, size=512) # downscale_uv_maps_mask(folder=folder, type='uv_mask', size=size) - # downscale_uv_maps_unposed(folder=folder, type='uv_unposed_no_shape', size=size) - # downscale_uv_maps_curv(folder=folder, type='uv_curvature', size=size) - # downscale_uv_maps_posed_body(folder=folder, type='uv_posed_body_no_orient', size=size) + # downscale_uv_maps_static(folder=folder, type='uv_static', sizes=sizes) + # downscale_uv_maps_unposed(folder=folder, type='uv_unposed_no_shape', sizes=sizes) + downscale_uv_maps_curv(folder=folder, type='uv_curvature', sizes=sizes) + # downscale_uv_maps_posed_body(folder=folder, type='uv_posed_body_no_orient', sizes=sizes) - downscale_uv_maps_static(folder=folder, type='uv_static', size=32) - downscale_uv_maps_static(folder=folder, type='uv_static', size=64) - downscale_uv_maps_static(folder=folder, type='uv_static', size=128) - downscale_uv_maps_static(folder=folder, type='uv_static', size=256) print() \ No newline at end of file