save
This commit is contained in:
+29
-18
@@ -1,5 +1,5 @@
|
||||
import os
|
||||
os.environ["CUDA_VISIBLE_DEVICES"] = "5"
|
||||
os.environ["CUDA_VISIBLE_DEVICES"] = "4"
|
||||
|
||||
import tensorflow as tf
|
||||
|
||||
@@ -30,15 +30,15 @@ from plotly.subplots import make_subplots
|
||||
from scipy.spatial.transform import Rotation
|
||||
|
||||
from dataset import DatasetFactory, StaticDataset
|
||||
from custom_utils.custom_utils import batch_to_dict, UV2Mesh, _maskFaces, load_model, group_inputs_for_levels
|
||||
from custom_utils.custom_utils import batch_to_dict, UV2Mesh, _maskFaces, load_model, group_inputs_for_levels, save_stl
|
||||
from custom_utils.smpl import SMPL
|
||||
from convert_to_uv_api import convert_to_uv_api
|
||||
from models.upscaler import UpscalerBasicConv as Upscaler
|
||||
from postprocessing import fix_collision
|
||||
from models.pyramid_model_optimized import Pyramid
|
||||
from models.pyramid_model_optimized import PyramidNew as Pyramid
|
||||
|
||||
from configs.config_abl_2_pyr_32_64_128_256_512 import config as config_regular
|
||||
from configs.config_abl_2_pyr_32_64_128_256_512_skirt import config as config_skirt
|
||||
from configs.iccv.config_abl_pyr_32_64_128_256_512 import config as config_regular
|
||||
from configs.iccv.config_abl_pyr_32_64_128_256_512_skirt import config as config_skirt
|
||||
|
||||
|
||||
def color_labels(img):
|
||||
@@ -182,7 +182,7 @@ def convert_to_mesh(uvs, is_skirt, mask):
|
||||
out = []
|
||||
for i in range(len(uvs)):
|
||||
if uvs[i].shape[1] != 512:
|
||||
uvs[i] = tf.image.resize(uvs[i], (512, 256), tf.image.ResizeMethod.LANCZOS5)
|
||||
uvs[i] = tf.image.resize(uvs[i], (512, 256), tf.image.ResizeMethod.BILINEAR)
|
||||
if is_skirt:
|
||||
mesh = uv2mesh_skirt(uvs[i])
|
||||
else:
|
||||
@@ -239,9 +239,9 @@ def get_closest_n_points(verts, idx, n):
|
||||
|
||||
def get_experiment_plots(frames, skirt_mods, bodies, faces, masks, cameras):
|
||||
model: Pyramid = Pyramid(config_regular)
|
||||
load_model(model, 'checkpoints/' + config_regular['name'])
|
||||
load_model(model, 'checkpoints/iccv/' + config_regular['name'])
|
||||
model_skirt: Pyramid = Pyramid(config_skirt)
|
||||
load_model(model_skirt, 'checkpoints/' + config_skirt['name'])
|
||||
load_model(model_skirt, 'checkpoints/iccv/' + config_skirt['name'])
|
||||
result = []
|
||||
for frame in frames:
|
||||
id = frame.split('_')[0]
|
||||
@@ -267,6 +267,10 @@ def get_experiment_plots(frames, skirt_mods, bodies, faces, masks, cameras):
|
||||
img = cv2.imread('/tmp/exp_temp.png')
|
||||
frame_out.append(img[:, 50:-50, :])
|
||||
|
||||
for i, mesh in enumerate(meshes):
|
||||
save_stl(os.path.join(output_folder, f'{frame}_{i+1}.stl'), mesh, faces[id].astype(np.int32))
|
||||
save_stl(os.path.join(output_folder, f'{frame}_final.stl'), final_mesh_fixed, faces[id].astype(np.int32))
|
||||
|
||||
# fig = plot_fixed(final_mesh, faces[id], cameras[frame], bodies[frame])
|
||||
# fig.write_image('/tmp/exp_temp.png')
|
||||
# img = cv2.imread('/tmp/exp_temp.png')
|
||||
@@ -297,6 +301,10 @@ def get_gt_image(frames, bodies, faces, cameras, skirt_mods):
|
||||
fig.write_image('/tmp/exp_temp.png')
|
||||
img_unposed = cv2.imread('/tmp/exp_temp.png')
|
||||
|
||||
save_stl(os.path.join(output_folder, f'{frame}_gt.stl'), gt_unposed[mask,:], faces[id].astype(np.int32))
|
||||
save_stl(os.path.join(output_folder, f'{frame}_gt_unposed.stl'), gt[mask,:], faces[id].astype(np.int32))
|
||||
save_stl(os.path.join(output_folder, f'{frame}_body.stl'), bodies[frame], F)
|
||||
|
||||
out.append(np.concatenate((img[:, 50:-50, :], img_unposed[:, 50:-50, :]), axis=1))
|
||||
|
||||
return out
|
||||
@@ -322,33 +330,36 @@ if __name__ == '__main__':
|
||||
# garment_type_table = np.load('custom_data/garment_type_table_test.npy', allow_pickle=True).item()
|
||||
garment_type_table = np.load('custom_data/garment_type_table_train.npy', allow_pickle=True).item()
|
||||
|
||||
camera_1 = dict(up=dict(x=0, y=0, z=1), center=dict(x=0, y=0, z=-0.05), eye=dict(x=0.3, y=1.0, z=0.05))
|
||||
camera_2 = dict(up=dict(x=0, y=0, z=1), center=dict(x=0, y=0, z=-0.05), eye=dict(x=-0.9, y=0.7, z=0.05))
|
||||
|
||||
frames = ['05656_221', '00300_69', '06955_117']
|
||||
frames = ['01070_13']
|
||||
cameras = {'01070_13': camera_1}
|
||||
# frames = ['05656_221', '00300_69', '06955_117']
|
||||
# frames = ['02184_157', '02241_142', '06955_117', '06804_192']
|
||||
# frames = ['01763_259', '007292_282', '00539_296', '00075_4']
|
||||
# frames = [ '01763_259']
|
||||
camera_1 = dict(up=dict(x=0, y=0, z=1), center=dict(x=0, y=0, z=-0.05), eye=dict(x=0.3, y=1.0, z=0.05))
|
||||
camera_2 = dict(up=dict(x=0, y=0, z=1), center=dict(x=0, y=0, z=-0.05), eye=dict(x=-0.9, y=0.7, z=0.05))
|
||||
# cameras = {'01763_259': camera_1, '007292_282': camera_1, '00539_296': camera_1, '00075_4': camera_2}
|
||||
cameras = {'05656_221': camera_1, '00300_69': camera_1, '06955_117': camera_1}
|
||||
# cameras = {'05656_221': camera_1, '00300_69': camera_1, '06955_117': camera_1}
|
||||
# cameras = {'02184_157': camera_1, '02241_142': camera_1, '06955_117': camera_1, '06804_192': camera_1}
|
||||
|
||||
# abl_all replace abl_norm maybe
|
||||
experiment = 'abl_2_pyr_32_64_128_256_512'
|
||||
experiment = 'abl_pyr_32_64_128_256_512'
|
||||
skirt_mods = { frame.split('_')[0]: ('_skirt' if (garment_type_table[frame.split('_')[0]] == 'Skirt' or garment_type_table[frame.split('_')[0]] == 'Dress') else '') for frame in frames }
|
||||
|
||||
data_folder = '/home/workspace/local-data/train'
|
||||
data_folder_skirt = '/home/workspace/local-data/train_skirt'
|
||||
data_folder_skirt = '/home/workspace/local-data_128/train_skirt'
|
||||
|
||||
results_folder_base = 'examples/pyramid'
|
||||
|
||||
output_folder = os.path.join(results_folder_base)
|
||||
os.makedirs(output_folder, exist_ok=True)
|
||||
|
||||
bodies = get_bodies(frames, skirt_mods)
|
||||
masks = get_masks(frames)
|
||||
faces = { frame.split('_')[0]: _maskFaces(np.zeros((14475,3)), F_skirt if skirt_mods[frame.split('_')[0]] == '_skirt' else F, masks[frame.split('_')[0]])[1] for frame in frames }
|
||||
gts = get_gt_image(frames, bodies, faces, cameras, skirt_mods)
|
||||
|
||||
results_folder_base = '/home/workspace/data/results'
|
||||
|
||||
output_folder = os.path.join(results_folder_base, 'ablation_plots')
|
||||
os.makedirs(output_folder, exist_ok=True)
|
||||
|
||||
images = get_experiment_plots(frames, skirt_mods, bodies, faces, masks, cameras)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user