fix body downscaling
This commit is contained in:
+23
-11
@@ -28,6 +28,8 @@ def fill(img, mask):
|
|||||||
img_data = img[img_idx[:,0], img_idx[:,1], :]
|
img_data = img[img_idx[:,0], img_idx[:,1], :]
|
||||||
|
|
||||||
interpolator = spi.NearestNDInterpolator(x=img_idx, y=img_data)
|
interpolator = spi.NearestNDInterpolator(x=img_idx, y=img_data)
|
||||||
|
# interpolator = spi.RBFInterpolator(y=img_idx, d=img_data, neighbors=5, kernel='linear')
|
||||||
|
|
||||||
img_2 = interpolator(coords)
|
img_2 = interpolator(coords)
|
||||||
res = np.zeros((512,256,3), dtype=np.float32)
|
res = np.zeros((512,256,3), dtype=np.float32)
|
||||||
res[coords[:,0], coords[:,1], :] = img_2
|
res[coords[:,0], coords[:,1], :] = img_2
|
||||||
@@ -81,20 +83,19 @@ class UVMaskStore():
|
|||||||
|
|
||||||
def downscale_uv_maps_posed_body(folder, type, sizes):
|
def downscale_uv_maps_posed_body(folder, type, sizes):
|
||||||
for size in sizes:
|
for size in sizes:
|
||||||
os.makedirs(os.path.join(folder, type + '_' + str(size)), exist_ok=True)
|
os.makedirs(os.path.join(folder, type + '_2_' + str(size)), exist_ok=True)
|
||||||
|
|
||||||
frames = os.listdir(os.path.join(folder, type))[int(args.start):int(args.end)]
|
frames = os.listdir(os.path.join(folder, type))[int(args.start):int(args.end)]
|
||||||
|
|
||||||
for frame in tqdm.tqdm(frames):
|
for frame in tqdm.tqdm(frames):
|
||||||
id, _ = frame.split('_')
|
id, _ = frame.split('_')
|
||||||
img = np.load(os.path.join(folder, type, frame)); img = img['uv_posed_body_no_orient']
|
img = np.load(os.path.join(folder, type, frame)); img = img['uv_posed_body_no_orient']
|
||||||
mask_full = uv_mask_store[512][id]
|
img = fill(img, uv_masks_body[512])
|
||||||
img = fill(img, mask_full)
|
|
||||||
for size in sizes:
|
for size in sizes:
|
||||||
mask = uv_mask_store[size][id]
|
mask = uv_masks_body[size]
|
||||||
down = tf.image.resize(img, size=(size, int(size/2)), method=tf.image.ResizeMethod.LANCZOS5)
|
down = tf.image.resize(img, size=(size, int(size/2)), method=tf.image.ResizeMethod.LANCZOS5)
|
||||||
down = down * mask[:,:,np.newaxis]
|
down = down * mask[:,:,np.newaxis]
|
||||||
np.savez_compressed(os.path.join(folder, type + '_' + str(size), frame), uv_posed_body_no_orient = down)
|
np.savez_compressed(os.path.join(folder, type + '_2_' + str(size), frame), uv_posed_body_no_orient = down)
|
||||||
|
|
||||||
|
|
||||||
def downscale_uv_maps_curv(folder, type, sizes):
|
def downscale_uv_maps_curv(folder, type, sizes):
|
||||||
@@ -169,16 +170,26 @@ def downscale_uv_maps_mask(folder, type, size):
|
|||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
parser.add_argument("-f", "--folder", help = "end of range", default='/home/workspace/local-data/valid')
|
parser.add_argument("-f", "--folder", help = "end of range", default='/home/workspace/local-data/train')
|
||||||
parser.add_argument("-s", "--start", help = "start of range", default=0)
|
parser.add_argument("-s", "--start", help = "start of range", default=280000)
|
||||||
parser.add_argument("-e", "--end", help = "end of range", default=1000)
|
parser.add_argument("-e", "--end", help = "end of range", default=10000000)
|
||||||
parser.add_argument("-n", "--name", help = "end of range", default='lhunor')
|
parser.add_argument("-n", "--name", help = "end of range", default='lhunor')
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
sizes = [32, 64, 128, 256]
|
sizes = [32, 64, 128, 256]
|
||||||
folder = args.folder
|
folder = args.folder
|
||||||
|
|
||||||
|
is_skirt = True
|
||||||
|
uv_masks_body = dict()
|
||||||
|
uv_mask_body = np.load('custom_utils/mask_256x512' + ('_skirt' if is_skirt else '') + '.npy')
|
||||||
|
uv_mask_body = cv2.dilate(uv_mask_body.astype(np.float32), cv2.getStructuringElement(cv2.MORPH_RECT, (2 * 2 + 1, 2 * 2 + 1), (2, 2)), iterations=2)
|
||||||
|
uv_masks_body[512] = uv_mask_body
|
||||||
|
for res in [32, 64, 128, 256]:
|
||||||
|
down = tf.image.resize(uv_mask_body[:,:,tf.newaxis].astype(np.int32), size=(res, int(res/2)), method=tf.image.ResizeMethod.NEAREST_NEIGHBOR)
|
||||||
|
down = np.squeeze(down.numpy().astype(bool))
|
||||||
|
uv_masks_body[res] = down
|
||||||
|
|
||||||
|
|
||||||
uv_mask_store = { size: UVMaskStore(folder, size=size) for size in sizes }
|
uv_mask_store = { size: UVMaskStore(folder, size=size) for size in sizes }
|
||||||
uv_mask_store[512] = UVMaskStore(folder, size=512)
|
uv_mask_store[512] = UVMaskStore(folder, size=512)
|
||||||
|
|
||||||
@@ -187,9 +198,10 @@ if __name__ == '__main__':
|
|||||||
# downscale_uv_maps_mask(folder=folder, type='uv_mask', size=128)
|
# downscale_uv_maps_mask(folder=folder, type='uv_mask', size=128)
|
||||||
# downscale_uv_maps_mask(folder=folder, type='uv_mask', size=256)
|
# downscale_uv_maps_mask(folder=folder, type='uv_mask', size=256)
|
||||||
# downscale_uv_maps_static(folder=folder, type='uv_static', sizes=sizes)
|
# 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_unposed(folder=folder, type='uv_unposed_no_shape', sizes=sizes)
|
||||||
downscale_uv_maps_curv(folder=folder, type='uv_curvature', 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_posed_body(folder=folder, type='uv_posed_body_no_orient', sizes=sizes)
|
||||||
|
|
||||||
|
|
||||||
print()
|
print()
|
||||||
Reference in New Issue
Block a user