4 Commits
Author SHA1 Message Date
luni 25c108fe83 get error 2023-01-27 14:08:39 +00:00
luni 970aeaf5b9 calculate error 2023-01-26 19:23:37 +00:00
luni bda4582c3c run evaluation 2023-01-26 16:20:39 +00:00
luni 0bc5633b6c retraining original abl_all_post 2023-01-25 22:30:46 +00:00
122 changed files with 65 additions and 793 deletions
+4 -10
View File
@@ -1,14 +1,8 @@
nohup python cvae.py --name="lhunor_abl_all_post_r7" > nohup/post/abl_all_post_r7.out 2>&1 &
nohup python evaluate_ae.py --name lhunor_abl_all_post_r7_70k > nohup/evaluate/abl_all_post_r7_70k.out 2>&1 &
nohup python calculate_error.py --name error_abl_all_post_r7_70k > nohup/error/abl_all_post_r7_70k.out 2>&1 &
one final convolutional layer for smoothing, on the final coordinates one final convolutional layer for smoothing, on the final coordinates
nohup python calculate_error.py --name error_al_all_150k > nohup/error/post_al_all_150k.out 2>&1 &
nohup python auto_encoder_static.py --name="lhunor_static_iccv_1" > nohup/iccv/encoders/static_iccv_1.out 2>&1 &
nohup python auto_encoder_static.py --name="lhunor_static_iccv_1_skirt" > nohup/iccv/encoders/static_iccv_1_skirt.out 2>&1 &
nohup python auto_encoder_static.py --name="lhunor_static_iccv_1_cape_f" > nohup/iccv/encoders/static_iccv_1_cape_f.out 2>&1 &
nohup python auto_encoder_body.py --name="lhunor_body_iccv_1" > nohup/iccv/encoders/body_iccv_1.out 2>&1 &
nohup python auto_encoder_body.py --name="lhunor_body_iccv_1_skirt" > nohup/iccv/encoders/body_iccv_1_skirt.out 2>&1 &
nohup python auto_encoder_curv.py --name="lhunor_curv_iccv_1 " > nohup/iccv/encoders/curv_iccv_1.out 2>&1 &
nohup python auto_encoder_curv.py --name="lhunor_curv_iccv_1_skirt" > nohup/iccv/encoders/curv_iccv_1_skirt.out 2>&1 &
nohup python auto_encoder_curv.py --name="lhunor_curv_iccv_1_cape_f" > nohup/iccv/encoders/curv_iccv_1_cape_f.out 2>&1 &
nohup python cvae.py --name="lhunor_cvae_iccv_gnn_5" > nohup/iccv/cvae_iccv_gnn_5.out 2>&1 &
skirts!!!! skirts!!!!
pyramid next week pyramid next week
+14 -24
View File
@@ -1,6 +1,6 @@
import os import os
import sys import sys
from configs.iccv.config_ae_body_cape_f import config from configs.config_ae_body_post import config
os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu'] os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu']
import tensorflow as tf import tensorflow as tf
@@ -31,11 +31,10 @@ from losses import edge_loss, uv_mask_loss
from dataset import DatasetFactory, StaticDataset from dataset import DatasetFactory, StaticDataset
from custom_utils.custom_utils import batch_to_dict, plot_3d from custom_utils.custom_utils import batch_to_dict, plot_3d
from models.cond_encoder import AutoEncoderNew as AutoEncoder from models.cond_encoder import AutoEncoderNew as AutoEncoder
from custom_utils.custom_utils import Accumulator
def init_wandb(): def init_wandb():
run = wandb.init(project='ae', name=config['name'], notes=config['notes'], dir='/tmp', tags=config['tags']) run = wandb.init(project='ae', name=config['name'], notes=config['notes'], dir='/home/workspace/local-data/temp')
artifact = wandb.Artifact('code', type='code') artifact = wandb.Artifact('code', type='code')
artifact.add_file('auto_encoder_body.py') artifact.add_file('auto_encoder_body.py')
artifact.add_file('losses.py') artifact.add_file('losses.py')
@@ -45,9 +44,7 @@ def init_wandb():
artifact.add_file('convnext/models/convnext_tf.py') artifact.add_file('convnext/models/convnext_tf.py')
config_file_names = [key for key in sys.modules.keys() if key.startswith('configs.')] config_file_names = [key for key in sys.modules.keys() if key.startswith('configs.')]
for config_file_name in config_file_names: for config_file_name in config_file_names:
file_name = '/'.join(config_file_name.split('.')) + '.py' artifact.add_file('/'.join(config_file_name.split('.')) + '.py')
if os.path.exists(file_name):
artifact.add_file(file_name)
run.log_artifact(artifact) run.log_artifact(artifact)
uv2mesh = UV2Mesh(res=256, is_smpl_orig=config['is_cape'], is_skirt=config['is_skirt']) uv2mesh = UV2Mesh(res=256, is_smpl_orig=config['is_cape'], is_skirt=config['is_skirt'])
@@ -127,26 +124,20 @@ def train():
for batch in dataset_train: for batch in dataset_train:
batch = static_dataset_train.expand_batch(batch_to_dict(batch, config['signature_dynamic'])) batch = static_dataset_train.expand_batch(batch_to_dict(batch, config['signature_dynamic']))
train_loss = train_step(batch) train_loss = train_step(batch)
train_accumulator.update(train_loss)
data_valid = valid_iterator.get_next() data_valid = valid_iterator.get_next()
data_valid = static_dataset_valid.expand_batch(batch_to_dict(data_valid, config['signature_dynamic'])) data_valid = static_dataset_valid.expand_batch(batch_to_dict(data_valid, config['signature_dynamic']))
valid_loss = valid_step(data_valid) valid_loss = valid_step(data_valid)
valid_accumulator.update(valid_loss)
if step % 1000 == 0 or (step < 1000 and step % 10 == 0): to_log = { **train_loss, **valid_loss, **{ 'current_step': step} }
to_log = dict({ **train_loss, **valid_loss, **{ 'current_step': step } }) if step % 5000 == 0 or (step < 5000 and step % 500 == 0):
if step % 5000 == 0 or (step < 5000 and step % 1000 == 0): train_figs = plot_everything(batch, 'train')
train_figs = plot_everything(batch, 'train') valid_figs = plot_everything(data_valid, 'valid')
valid_figs = plot_everything(data_valid, 'valid') to_log = { **to_log, **train_figs, **valid_figs }
to_log = { **to_log, **train_figs, **valid_figs } if step == 0:
if step == 0: to_log = { **to_log, **{ 'model/summary': wandb.Html(get_summary_html(model)) } }
to_log = { **to_log, **{ 'model/summary': wandb.Html(get_summary_html(model)) } }
wandb.log(to_log, step=step)
wandb.log(to_log, step=step)
train_accumulator.reset()
valid_accumulator.reset()
if step % 10000 == 0: if step % 10000 == 0:
manager_enc.save(checkpoint_number=step) manager_enc.save(checkpoint_number=step)
@@ -159,6 +150,7 @@ def train():
if __name__ == '__main__': if __name__ == '__main__':
init_wandb() init_wandb()
allow_memory_growth()
parser = argparse.ArgumentParser(description='') parser = argparse.ArgumentParser(description='')
parser.add_argument('--name', type=str) parser.add_argument('--name', type=str)
args = vars(parser.parse_args()) args = vars(parser.parse_args())
@@ -204,15 +196,13 @@ if __name__ == '__main__':
model = AutoEncoder(config['cond_ae']) model = AutoEncoder(config['cond_ae'])
optimizer = tf.optimizers.Adam(learning_rate=config['lr']) optimizer = tf.optimizers.Adam(learning_rate=config['lr'])
train_accumulator = Accumulator()
valid_accumulator = Accumulator()
# load_model(model.encoder, 'checkpoints/body_1_skirt_2_enc') # load_model(model.encoder, 'checkpoints/body_1_skirt_2_enc')
# load_model(model.decoder, 'checkpoints/body_1_skirt_2_dec') # load_model(model.decoder, 'checkpoints/body_1_skirt_2_dec')
ckpt_enc = tf.train.Checkpoint(model=model.encoder) ckpt_enc = tf.train.Checkpoint(model=model.encoder)
manager_enc = tf.train.CheckpointManager(ckpt_enc, 'checkpoints/iccv/' + config['name'] + '_enc', max_to_keep=20) manager_enc = tf.train.CheckpointManager(ckpt_enc, 'checkpoints/post/' + config['name'] + '_enc', max_to_keep=20)
ckpt_dec = tf.train.Checkpoint(model=model.decoder) ckpt_dec = tf.train.Checkpoint(model=model.decoder)
manager_dec = tf.train.CheckpointManager(ckpt_dec, 'checkpoints/iccv/' + config['name'] + '_dec', max_to_keep=20) manager_dec = tf.train.CheckpointManager(ckpt_dec, 'checkpoints/post/' + config['name'] + '_dec', max_to_keep=20)
train() train()
+16 -26
View File
@@ -1,6 +1,6 @@
import os import os
import sys import sys
from configs.iccv.config_ae_curv_cape_f import config from configs.config_ae_curv_post import config
os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu'] os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu']
import tensorflow as tf import tensorflow as tf
@@ -32,13 +32,12 @@ from tf_utils import check_tf_version, allow_memory_growth
from dataset import DatasetFactory, StaticDataset from dataset import DatasetFactory, StaticDataset
from custom_utils.custom_utils import batch_to_dict from custom_utils.custom_utils import batch_to_dict
from models.cond_encoder import AutoEncoderNew as AutoEncoder from models.cond_encoder import AutoEncoderNew as AutoEncoder
from custom_utils.custom_utils import Accumulator
testing = False testing = False
def init_wandb(): def init_wandb():
if not testing: if not testing:
run = wandb.init(project='ae', name=config['name'], notes=config['notes'], dir='/tmp', tags=config['tags']) run = wandb.init(project='ae', name=config['name'], notes=config['notes'], dir='/home/workspace/local-data/temp/')
artifact = wandb.Artifact('code', type='code') artifact = wandb.Artifact('code', type='code')
artifact.add_file('auto_encoder_curv.py') artifact.add_file('auto_encoder_curv.py')
artifact.add_file('losses.py') artifact.add_file('losses.py')
@@ -48,9 +47,7 @@ def init_wandb():
artifact.add_file('convnext/models/convnext_tf.py') artifact.add_file('convnext/models/convnext_tf.py')
config_file_names = [key for key in sys.modules.keys() if key.startswith('configs.')] config_file_names = [key for key in sys.modules.keys() if key.startswith('configs.')]
for config_file_name in config_file_names: for config_file_name in config_file_names:
file_name = '/'.join(config_file_name.split('.')) + '.py' artifact.add_file('/'.join(config_file_name.split('.')) + '.py')
if os.path.exists(file_name):
artifact.add_file(file_name)
run.log_artifact(artifact) run.log_artifact(artifact)
uv2mesh = UV2MeshLabel(res=256, is_skirt=config['is_skirt'], is_smpl_orig=config['is_cape']) uv2mesh = UV2MeshLabel(res=256, is_skirt=config['is_skirt'], is_smpl_orig=config['is_cape'])
@@ -167,26 +164,21 @@ def train():
batch = static_dataset_train.expand_batch(batch_to_dict(batch, config['signature_dynamic'])) batch = static_dataset_train.expand_batch(batch_to_dict(batch, config['signature_dynamic']))
train_loss = train_step(batch) train_loss = train_step(batch)
train_accumulator.update(train_loss)
data_valid = valid_iterator.get_next() data_valid = valid_iterator.get_next()
data_valid = static_dataset_valid.expand_batch(batch_to_dict(data_valid, config['signature_dynamic'])) data_valid = static_dataset_valid.expand_batch(batch_to_dict(data_valid, config['signature_dynamic']))
valid_loss = valid_step(data_valid) valid_loss = valid_step(data_valid)
valid_accumulator.update(valid_loss)
if step % 1000 == 0 or (step < 1000 and step % 10 == 0): to_log = { **train_loss, **valid_loss }
to_log = dict({ **train_loss, **valid_loss, **{ 'current_step': step } }) if step % 5000 == 0 or (step < 5000 and step % 500 == 0):
if step % 5000 == 0 or (step < 5000 and step % 1000 == 0): train_figs = plot_everything(batch, 'train')
train_figs = plot_everything(batch, 'train') valid_figs = plot_everything(data_valid, 'valid')
valid_figs = plot_everything(data_valid, 'valid') to_log = { **to_log, **train_figs, **valid_figs }
to_log = { **to_log, **train_figs, **valid_figs } if step == 0:
if step == 0: to_log = { **to_log, **{ 'model/summary': wandb.Html(get_summary_html(model)) } }
to_log = { **to_log, **{ 'model/summary': wandb.Html(get_summary_html(model)) } }
wandb.log(to_log, step=step)
wandb.log(to_log, step=step) print(step)
train_accumulator.reset()
valid_accumulator.reset()
if step % 10000 == 0: if step % 10000 == 0:
manager_enc.save(checkpoint_number=step) manager_enc.save(checkpoint_number=step)
@@ -239,7 +231,7 @@ if __name__ == '__main__':
signature=config['signature_static'], signature=config['signature_static'],
resolutions=[config['resolution']], resolutions=[config['resolution']],
in_memory=True, in_memory=True,
is_cape=config['is_cape']) is_cape=config['is_cape'])
dataset_valid = factory.get_dataset(folder=config['valid_dir'], dataset_valid = factory.get_dataset(folder=config['valid_dir'],
batch_size=config['batch_size'], batch_size=config['batch_size'],
@@ -253,17 +245,15 @@ if __name__ == '__main__':
signature=config['signature_static'], signature=config['signature_static'],
resolutions=[config['resolution']], resolutions=[config['resolution']],
in_memory=True, in_memory=True,
is_cape=config['is_cape']) is_cape=config['is_cape'])
model = AutoEncoder(config['cond_ae']) model = AutoEncoder(config['cond_ae'])
optimizer = tf.optimizers.Adam(learning_rate=config['lr']) optimizer = tf.optimizers.Adam(learning_rate=config['lr'])
train_accumulator = Accumulator()
valid_accumulator = Accumulator()
ckpt_enc = tf.train.Checkpoint(model=model.encoder) ckpt_enc = tf.train.Checkpoint(model=model.encoder)
manager_enc = tf.train.CheckpointManager(ckpt_enc, 'checkpoints/iccv/' + config['name'] + '_enc', max_to_keep=20) manager_enc = tf.train.CheckpointManager(ckpt_enc, 'checkpoints/post/' + config['name'] + '_enc', max_to_keep=20)
ckpt_dec = tf.train.Checkpoint(model=model.decoder) ckpt_dec = tf.train.Checkpoint(model=model.decoder)
manager_dec = tf.train.CheckpointManager(ckpt_dec, 'checkpoints/iccv/' + config['name'] + '_dec', max_to_keep=20) manager_dec = tf.train.CheckpointManager(ckpt_dec, 'checkpoints/post/' + config['name'] + '_dec', max_to_keep=20)
if testing: if testing:
test() test()
+12 -23
View File
@@ -1,6 +1,6 @@
import os import os
import sys import sys
from configs.iccv.config_ae_static_cape_f import config from configs.config_ae_static import config
os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu'] os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu']
import tensorflow as tf import tensorflow as tf
@@ -34,11 +34,10 @@ from tf_utils import check_tf_version, allow_memory_growth
from dataset import DatasetFactory, StaticDataset from dataset import DatasetFactory, StaticDataset
from custom_utils.custom_utils import batch_to_dict, plot_3d from custom_utils.custom_utils import batch_to_dict, plot_3d
from models.cond_encoder import AutoEncoderNew as AutoEncoder from models.cond_encoder import AutoEncoderNew as AutoEncoder
from custom_utils.custom_utils import Accumulator
def init_wandb(): def init_wandb():
run = wandb.init(project='ae', name=config['name'], notes=config['notes'], dir='/tmp', tags=config['tags']) run = wandb.init(project='ae', name=config['name'], notes=config['notes'], dir='/home/workspace/local-data/temp')
artifact = wandb.Artifact('code', type='code') artifact = wandb.Artifact('code', type='code')
artifact.add_file('auto_encoder_static.py') artifact.add_file('auto_encoder_static.py')
artifact.add_file('losses.py') artifact.add_file('losses.py')
@@ -48,9 +47,7 @@ def init_wandb():
artifact.add_file('convnext/models/convnext_tf.py') artifact.add_file('convnext/models/convnext_tf.py')
config_file_names = [key for key in sys.modules.keys() if key.startswith('configs.')] config_file_names = [key for key in sys.modules.keys() if key.startswith('configs.')]
for config_file_name in config_file_names: for config_file_name in config_file_names:
file_name = '/'.join(config_file_name.split('.')) + '.py' artifact.add_file('/'.join(config_file_name.split('.')) + '.py')
if os.path.exists(file_name):
artifact.add_file(file_name)
run.log_artifact(artifact) run.log_artifact(artifact)
uv2mesh = UV2Mesh(res=256, is_skirt=config['is_skirt'], is_smpl_orig=config['is_cape']) uv2mesh = UV2Mesh(res=256, is_skirt=config['is_skirt'], is_smpl_orig=config['is_cape'])
@@ -128,32 +125,27 @@ def train():
for batch in dataset_train: for batch in dataset_train:
batch = static_dataset_train.expand_batch(batch_to_dict(batch, config['signature_dynamic'])) batch = static_dataset_train.expand_batch(batch_to_dict(batch, config['signature_dynamic']))
train_loss = train_step(batch) train_loss = train_step(batch)
train_accumulator.update(train_loss)
data_valid = valid_iterator.get_next() data_valid = valid_iterator.get_next()
data_valid = static_dataset_valid.expand_batch(batch_to_dict(data_valid, config['signature_dynamic'])) data_valid = static_dataset_valid.expand_batch(batch_to_dict(data_valid, config['signature_dynamic']))
valid_loss = valid_step(data_valid) valid_loss = valid_step(data_valid)
valid_accumulator.update(valid_loss)
if step % 1000 == 0 or (step < 1000 and step % 10 == 0): to_log = dict({ **train_loss, **valid_loss, **{ 'current_step': step } })
to_log = dict({ **train_loss, **valid_loss, **{ 'current_step': step } }) if step % 5000 == 0 or (step < 5000 and step % 500 == 0):
if step % 5000 == 0 or (step < 5000 and step % 1000 == 0): train_figs = plot_everything(batch, 'train')
train_figs = plot_everything(batch, 'train') valid_figs = plot_everything(data_valid, 'valid')
valid_figs = plot_everything(data_valid, 'valid') to_log = { **to_log, **train_figs, **valid_figs }
to_log = { **to_log, **train_figs, **valid_figs } if step == 0:
if step == 0: to_log = { **to_log, **{ 'model/summary': wandb.Html(get_summary_html(model)) } }
to_log = { **to_log, **{ 'model/summary': wandb.Html(get_summary_html(model)) } }
wandb.log(to_log, step=step) wandb.log(to_log, step=step)
train_accumulator.reset()
valid_accumulator.reset()
if step % 10000 == 0: if step % 10000 == 0:
manager_enc.save(checkpoint_number=step) manager_enc.save(checkpoint_number=step)
manager_dec.save(checkpoint_number=step) manager_dec.save(checkpoint_number=step)
print(step) print(step)
step += 1 step += 1
@@ -239,9 +231,6 @@ if __name__ == '__main__':
model : AutoEncoder = AutoEncoder(config['cond_ae']) model : AutoEncoder = AutoEncoder(config['cond_ae'])
optimizer = tf.optimizers.Adam(learning_rate=config['lr']) optimizer = tf.optimizers.Adam(learning_rate=config['lr'])
train_accumulator = Accumulator()
valid_accumulator = Accumulator()
if config['pretrained_model'] != '': if config['pretrained_model'] != '':
load_model(model.encoder, config['pretrained_model'] + '_enc') load_model(model.encoder, config['pretrained_model'] + '_enc')
load_model(model.decoder, config['pretrained_model'] + '_dec') load_model(model.decoder, config['pretrained_model'] + '_dec')
+1 -1
View File
@@ -59,7 +59,7 @@ if __name__ == '__main__':
folder = config['test_dir'] folder = config['test_dir']
checkpoint_name = config['name'] checkpoint_name = config['name']
iteration = '' iteration = '70000'
F = np.load("custom_utils/smpl_faces" + skirt_modifier + ".npy").astype(np.int32) F = np.load("custom_utils/smpl_faces" + skirt_modifier + ".npy").astype(np.int32)
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_test.npy', allow_pickle=True).item()
@@ -19,8 +19,8 @@ config['only_curvatures'] = False
ablation_count = [config['use_skinning'], config['remove_global_orientation'], config['use_curvature'], config['use_extra_losses'], config['use_offsets']].count(False) ablation_count = [config['use_skinning'], config['remove_global_orientation'], config['use_curvature'], config['use_extra_losses'], config['use_offsets']].count(False)
assert ablation_count == 1 or ablation_count == 0 assert ablation_count == 1 or ablation_count == 0
config['gpu'] = '4' config['gpu'] = '0'
config['name'] = 'al_all_post' config['name'] = 'abl_all_post_r7'
config['notes'] = '' config['notes'] = ''
config['avg_garment_path'] = 'custom_data/train_no_shape_avg_uv.npy' #custom_data/train_no_shape_avg_uv.npy # train_no_shape_avg_uv train_no_shape_one_hot_avg_uv config['avg_garment_path'] = 'custom_data/train_no_shape_avg_uv.npy' #custom_data/train_no_shape_avg_uv.npy # train_no_shape_avg_uv train_no_shape_one_hot_avg_uv

Some files were not shown because too many files have changed in this diff Show More