From 2dd008d3840d644bc69ab1daff456762adddac3c Mon Sep 17 00:00:00 2001 From: Hunor Laczko Date: Wed, 22 Feb 2023 16:09:54 +0000 Subject: [PATCH] started condition trainings --- aaa_helpers.txt | 8 ++ auto_encoder_body.py | 38 +++--- auto_encoder_curv.py | 44 ++++--- auto_encoder_static.py | 37 ++++-- configs/{ => archive}/config_abl_10p.py | 0 configs/{ => archive}/config_abl_10p_skin.py | 0 configs/{ => archive}/config_abl_25p.py | 0 configs/{ => archive}/config_abl_25p_skin.py | 0 configs/{ => archive}/config_abl_2_pyr_32.py | 0 .../{ => archive}/config_abl_2_pyr_32_64.py | 0 .../config_abl_2_pyr_32_64_128.py | 0 .../config_abl_2_pyr_32_64_128_256.py | 0 .../config_abl_2_pyr_32_64_128_256_512.py | 0 ...config_abl_2_pyr_32_64_128_256_512_norm.py | 0 ...onfig_abl_2_pyr_32_64_128_256_512_skirt.py | 0 ...config_abl_2_pyr_32_64_128_256_512_test.py | 0 .../config_abl_2_pyr_32_64_128_256_skirt.py | 0 .../config_abl_2_pyr_32_64_128_skirt.py | 0 .../{ => archive}/config_abl_2_pyr_32_64_2.py | 0 .../config_abl_2_pyr_32_64_skirt.py | 0 .../{ => archive}/config_abl_2_pyr_32_skin.py | 0 .../config_abl_2_pyr_32_skin_2.py | 0 .../config_abl_2_pyr_32_skin_norm.py | 0 .../config_abl_2_pyr_32_skirt.py | 0 .../config_abl_2_pyr_32_skirt_extra_loss.py | 0 .../config_abl_2_pyr_64_128_256_512_cape_f.py | 0 .../config_abl_2_pyr_64_128_256_512_cape_m.py | 0 .../config_abl_2_pyr_64_128_256_cape_f.py | 0 .../config_abl_2_pyr_64_128_256_cape_m.py | 0 ...ig_abl_2_pyr_64_128_256_cape_m_00032_SL.py | 0 .../config_abl_2_pyr_64_128_cape_f.py | 0 .../config_abl_2_pyr_64_128_cape_m.py | 0 ...config_abl_2_pyr_64_128_cape_m_00032_SL.py | 0 .../config_abl_2_pyr_64_cape_f.py | 0 .../config_abl_2_pyr_64_cape_f_03223_SS.py | 0 .../config_abl_2_pyr_64_cape_m.py | 0 .../config_abl_2_pyr_64_cape_m_00032_SL.py | 0 configs/{ => archive}/config_abl_50p_skin.py | 0 configs/{ => archive}/config_abl_abs.py | 0 configs/{ => archive}/config_abl_abs_skirt.py | 0 configs/{ => archive}/config_abl_all copy.py | 0 configs/{ => archive}/config_abl_all.py | 0 configs/{ => archive}/config_abl_all_post.py | 0 configs/{ => archive}/config_abl_all_skirt.py | 0 configs/{ => archive}/config_abl_curv.py | 0 .../{ => archive}/config_abl_curv_skirt.py | 0 .../{ => archive}/config_abl_extra_loss.py | 0 .../config_abl_extra_loss_skirt.py | 0 .../config_abl_extra_loss_skirt_2.py | 0 configs/{ => archive}/config_abl_norm.py | 0 .../{ => archive}/config_abl_norm_skirt.py | 0 .../{ => archive}/config_abl_one_hot_skirt.py | 0 configs/{ => archive}/config_abl_orient.py | 0 .../{ => archive}/config_abl_orient_skirt.py | 0 configs/{ => archive}/config_abl_overfit.py | 0 .../{ => archive}/config_abl_overfit_dress.py | 0 .../config_abl_overfit_dress_var.py | 0 .../config_abl_overfit_dress_var_2.py | 0 .../config_abl_overfit_dress_var_3.py | 0 .../config_abl_overfit_jumpsuit.py | 0 .../config_abl_overfit_jumpsuit_2.py | 0 configs/{ => archive}/config_abl_pyr_32.py | 0 configs/{ => archive}/config_abl_pyr_32_2.py | 0 configs/{ => archive}/config_abl_pyr_32_64.py | 0 .../{ => archive}/config_abl_pyr_32_64_2.py | 0 .../config_abl_pyr_32_64_skirt.py | 0 .../config_abl_pyr_32_64_skirt_2.py | 0 .../{ => archive}/config_abl_pyr_32_cape_f.py | 0 .../{ => archive}/config_abl_pyr_32_cape_m.py | 0 .../config_abl_pyr_32_extra_loss_skirt.py | 0 .../{ => archive}/config_abl_pyr_32_skin.py | 0 .../config_abl_pyr_32_skin_offset.py | 0 .../{ => archive}/config_abl_pyr_32_skirt.py | 0 .../config_abl_pyr_64_128_256_512_cape_f.py | 0 .../config_abl_pyr_64_128_256_512_cape_f_2.py | 0 .../config_abl_pyr_64_128_256_cape_f.py | 0 .../config_abl_pyr_64_128_cape_f.py | 0 .../config_abl_pyr_64_128_cape_m.py | 0 .../{ => archive}/config_abl_pyr_64_cape_f.py | 0 .../{ => archive}/config_abl_pyr_64_cape_m.py | 0 configs/{ => archive}/config_abl_skin.py | 0 .../config_abl_skin_no_orient.py | 0 configs/{ => archive}/config_abl_skin_norm.py | 0 .../{ => archive}/config_abl_skin_skirt.py | 0 configs/{ => archive}/config_abl_skin_var.py | 0 .../{ => archive}/config_abl_skin_var_2.py | 0 .../{ => archive}/config_abl_skin_var_3.py | 0 .../{ => archive}/config_abl_skin_var_4.py | 0 configs/{ => archive}/config_ae_body.py | 0 configs/{ => archive}/config_ae_body_post.py | 0 configs/{ => archive}/config_ae_curv.py | 0 configs/{ => archive}/config_ae_curv_post.py | 0 configs/{ => archive}/config_ae_static.py | 0 configs/{ => archive}/config_base.py | 0 .../{ => archive}/config_cape_f_03223_SL_2.py | 0 .../{ => archive}/config_cape_f_03223_SS.py | 0 .../{ => archive}/config_cape_f_03223_SS_2.py | 0 .../{ => archive}/config_cape_m_00032_SL.py | 0 .../{ => archive}/config_cape_m_00032_SL_2.py | 0 configs/{ => archive}/config_cvae.json | 0 configs/{ => archive}/config_cvae.py | 0 configs/{ => archive}/config_cvae_2.json | 0 configs/{ => archive}/config_cvae_curv.py | 0 configs/{ => archive}/config_cvae_test.py | 0 configs/{ => archive}/config_pyramid.py | 0 configs/iccv/config_abl_all.py | 117 ++++++++++++++++++ configs/iccv/config_ae_body.py | 52 ++++++++ configs/iccv/config_ae_body_cape_f.py | 52 ++++++++ configs/iccv/config_ae_body_skirt.py | 52 ++++++++ configs/iccv/config_ae_curv.py | 51 ++++++++ configs/iccv/config_ae_curv_cape_f.py | 51 ++++++++ configs/iccv/config_ae_curv_skirt.py | 51 ++++++++ configs/iccv/config_ae_static.py | 51 ++++++++ configs/iccv/config_ae_static_cape_f.py | 51 ++++++++ configs/iccv/config_ae_static_skirt.py | 51 ++++++++ custom_utils/custom_utils.py | 24 +++- cvae.py | 6 +- 117 files changed, 689 insertions(+), 47 deletions(-) rename configs/{ => archive}/config_abl_10p.py (100%) rename configs/{ => archive}/config_abl_10p_skin.py (100%) rename configs/{ => archive}/config_abl_25p.py (100%) rename configs/{ => archive}/config_abl_25p_skin.py (100%) rename configs/{ => archive}/config_abl_2_pyr_32.py (100%) rename configs/{ => archive}/config_abl_2_pyr_32_64.py (100%) rename configs/{ => archive}/config_abl_2_pyr_32_64_128.py (100%) rename configs/{ => archive}/config_abl_2_pyr_32_64_128_256.py (100%) rename configs/{ => archive}/config_abl_2_pyr_32_64_128_256_512.py (100%) rename configs/{ => archive}/config_abl_2_pyr_32_64_128_256_512_norm.py (100%) rename configs/{ => archive}/config_abl_2_pyr_32_64_128_256_512_skirt.py (100%) rename configs/{ => archive}/config_abl_2_pyr_32_64_128_256_512_test.py (100%) rename configs/{ => archive}/config_abl_2_pyr_32_64_128_256_skirt.py (100%) rename configs/{ => archive}/config_abl_2_pyr_32_64_128_skirt.py (100%) rename configs/{ => archive}/config_abl_2_pyr_32_64_2.py (100%) rename configs/{ => archive}/config_abl_2_pyr_32_64_skirt.py (100%) rename configs/{ => archive}/config_abl_2_pyr_32_skin.py (100%) rename configs/{ => archive}/config_abl_2_pyr_32_skin_2.py (100%) rename configs/{ => archive}/config_abl_2_pyr_32_skin_norm.py (100%) rename configs/{ => archive}/config_abl_2_pyr_32_skirt.py (100%) rename configs/{ => archive}/config_abl_2_pyr_32_skirt_extra_loss.py (100%) rename configs/{ => archive}/config_abl_2_pyr_64_128_256_512_cape_f.py (100%) rename configs/{ => archive}/config_abl_2_pyr_64_128_256_512_cape_m.py (100%) rename configs/{ => archive}/config_abl_2_pyr_64_128_256_cape_f.py (100%) rename configs/{ => archive}/config_abl_2_pyr_64_128_256_cape_m.py (100%) rename configs/{ => archive}/config_abl_2_pyr_64_128_256_cape_m_00032_SL.py (100%) rename configs/{ => archive}/config_abl_2_pyr_64_128_cape_f.py (100%) rename configs/{ => archive}/config_abl_2_pyr_64_128_cape_m.py (100%) rename configs/{ => archive}/config_abl_2_pyr_64_128_cape_m_00032_SL.py (100%) rename configs/{ => archive}/config_abl_2_pyr_64_cape_f.py (100%) rename configs/{ => archive}/config_abl_2_pyr_64_cape_f_03223_SS.py (100%) rename configs/{ => archive}/config_abl_2_pyr_64_cape_m.py (100%) rename configs/{ => archive}/config_abl_2_pyr_64_cape_m_00032_SL.py (100%) rename configs/{ => archive}/config_abl_50p_skin.py (100%) rename configs/{ => archive}/config_abl_abs.py (100%) rename configs/{ => archive}/config_abl_abs_skirt.py (100%) rename configs/{ => archive}/config_abl_all copy.py (100%) rename configs/{ => archive}/config_abl_all.py (100%) rename configs/{ => archive}/config_abl_all_post.py (100%) rename configs/{ => archive}/config_abl_all_skirt.py (100%) rename configs/{ => archive}/config_abl_curv.py (100%) rename configs/{ => archive}/config_abl_curv_skirt.py (100%) rename configs/{ => archive}/config_abl_extra_loss.py (100%) rename configs/{ => archive}/config_abl_extra_loss_skirt.py (100%) rename configs/{ => archive}/config_abl_extra_loss_skirt_2.py (100%) rename configs/{ => archive}/config_abl_norm.py (100%) rename configs/{ => archive}/config_abl_norm_skirt.py (100%) rename configs/{ => archive}/config_abl_one_hot_skirt.py (100%) rename configs/{ => archive}/config_abl_orient.py (100%) rename configs/{ => archive}/config_abl_orient_skirt.py (100%) rename configs/{ => archive}/config_abl_overfit.py (100%) rename configs/{ => archive}/config_abl_overfit_dress.py (100%) rename configs/{ => archive}/config_abl_overfit_dress_var.py (100%) rename configs/{ => archive}/config_abl_overfit_dress_var_2.py (100%) rename configs/{ => archive}/config_abl_overfit_dress_var_3.py (100%) rename configs/{ => archive}/config_abl_overfit_jumpsuit.py (100%) rename configs/{ => archive}/config_abl_overfit_jumpsuit_2.py (100%) rename configs/{ => archive}/config_abl_pyr_32.py (100%) rename configs/{ => archive}/config_abl_pyr_32_2.py (100%) rename configs/{ => archive}/config_abl_pyr_32_64.py (100%) rename configs/{ => archive}/config_abl_pyr_32_64_2.py (100%) rename configs/{ => archive}/config_abl_pyr_32_64_skirt.py (100%) rename configs/{ => archive}/config_abl_pyr_32_64_skirt_2.py (100%) rename configs/{ => archive}/config_abl_pyr_32_cape_f.py (100%) rename configs/{ => archive}/config_abl_pyr_32_cape_m.py (100%) rename configs/{ => archive}/config_abl_pyr_32_extra_loss_skirt.py (100%) rename configs/{ => archive}/config_abl_pyr_32_skin.py (100%) rename configs/{ => archive}/config_abl_pyr_32_skin_offset.py (100%) rename configs/{ => archive}/config_abl_pyr_32_skirt.py (100%) rename configs/{ => archive}/config_abl_pyr_64_128_256_512_cape_f.py (100%) rename configs/{ => archive}/config_abl_pyr_64_128_256_512_cape_f_2.py (100%) rename configs/{ => archive}/config_abl_pyr_64_128_256_cape_f.py (100%) rename configs/{ => archive}/config_abl_pyr_64_128_cape_f.py (100%) rename configs/{ => archive}/config_abl_pyr_64_128_cape_m.py (100%) rename configs/{ => archive}/config_abl_pyr_64_cape_f.py (100%) rename configs/{ => archive}/config_abl_pyr_64_cape_m.py (100%) rename configs/{ => archive}/config_abl_skin.py (100%) rename configs/{ => archive}/config_abl_skin_no_orient.py (100%) rename configs/{ => archive}/config_abl_skin_norm.py (100%) rename configs/{ => archive}/config_abl_skin_skirt.py (100%) rename configs/{ => archive}/config_abl_skin_var.py (100%) rename configs/{ => archive}/config_abl_skin_var_2.py (100%) rename configs/{ => archive}/config_abl_skin_var_3.py (100%) rename configs/{ => archive}/config_abl_skin_var_4.py (100%) rename configs/{ => archive}/config_ae_body.py (100%) rename configs/{ => archive}/config_ae_body_post.py (100%) rename configs/{ => archive}/config_ae_curv.py (100%) rename configs/{ => archive}/config_ae_curv_post.py (100%) rename configs/{ => archive}/config_ae_static.py (100%) rename configs/{ => archive}/config_base.py (100%) rename configs/{ => archive}/config_cape_f_03223_SL_2.py (100%) rename configs/{ => archive}/config_cape_f_03223_SS.py (100%) rename configs/{ => archive}/config_cape_f_03223_SS_2.py (100%) rename configs/{ => archive}/config_cape_m_00032_SL.py (100%) rename configs/{ => archive}/config_cape_m_00032_SL_2.py (100%) rename configs/{ => archive}/config_cvae.json (100%) rename configs/{ => archive}/config_cvae.py (100%) rename configs/{ => archive}/config_cvae_2.json (100%) rename configs/{ => archive}/config_cvae_curv.py (100%) rename configs/{ => archive}/config_cvae_test.py (100%) rename configs/{ => archive}/config_pyramid.py (100%) create mode 100644 configs/iccv/config_abl_all.py create mode 100644 configs/iccv/config_ae_body.py create mode 100644 configs/iccv/config_ae_body_cape_f.py create mode 100644 configs/iccv/config_ae_body_skirt.py create mode 100644 configs/iccv/config_ae_curv.py create mode 100644 configs/iccv/config_ae_curv_cape_f.py create mode 100644 configs/iccv/config_ae_curv_skirt.py create mode 100644 configs/iccv/config_ae_static.py create mode 100644 configs/iccv/config_ae_static_cape_f.py create mode 100644 configs/iccv/config_ae_static_skirt.py diff --git a/aaa_helpers.txt b/aaa_helpers.txt index 55f27c7..63aa28e 100644 --- a/aaa_helpers.txt +++ b/aaa_helpers.txt @@ -1,5 +1,13 @@ 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 & skirts!!!! pyramid next week diff --git a/auto_encoder_body.py b/auto_encoder_body.py index 4a197e5..564da76 100644 --- a/auto_encoder_body.py +++ b/auto_encoder_body.py @@ -1,6 +1,6 @@ import os import sys -from configs.config_ae_body_post import config +from configs.iccv.config_ae_body_cape_f import config os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu'] import tensorflow as tf @@ -31,10 +31,11 @@ from losses import edge_loss, uv_mask_loss from dataset import DatasetFactory, StaticDataset from custom_utils.custom_utils import batch_to_dict, plot_3d from models.cond_encoder import AutoEncoderNew as AutoEncoder +from custom_utils.custom_utils import Accumulator def init_wandb(): - run = wandb.init(project='ae', name=config['name'], notes=config['notes'], dir='/home/workspace/local-data/temp') + run = wandb.init(project='ae', name=config['name'], notes=config['notes'], dir='/tmp', tags=config['tags']) artifact = wandb.Artifact('code', type='code') artifact.add_file('auto_encoder_body.py') artifact.add_file('losses.py') @@ -44,7 +45,9 @@ def init_wandb(): artifact.add_file('convnext/models/convnext_tf.py') config_file_names = [key for key in sys.modules.keys() if key.startswith('configs.')] for config_file_name in config_file_names: - artifact.add_file('/'.join(config_file_name.split('.')) + '.py') + file_name = '/'.join(config_file_name.split('.')) + '.py' + if os.path.exists(file_name): + artifact.add_file(file_name) run.log_artifact(artifact) uv2mesh = UV2Mesh(res=256, is_smpl_orig=config['is_cape'], is_skirt=config['is_skirt']) @@ -124,20 +127,26 @@ def train(): for batch in dataset_train: batch = static_dataset_train.expand_batch(batch_to_dict(batch, config['signature_dynamic'])) train_loss = train_step(batch) + train_accumulator.update(train_loss) data_valid = valid_iterator.get_next() data_valid = static_dataset_valid.expand_batch(batch_to_dict(data_valid, config['signature_dynamic'])) valid_loss = valid_step(data_valid) + valid_accumulator.update(valid_loss) - to_log = { **train_loss, **valid_loss, **{ 'current_step': step} } - if step % 5000 == 0 or (step < 5000 and step % 500 == 0): - train_figs = plot_everything(batch, 'train') - valid_figs = plot_everything(data_valid, 'valid') - to_log = { **to_log, **train_figs, **valid_figs } - if step == 0: - to_log = { **to_log, **{ 'model/summary': wandb.Html(get_summary_html(model)) } } + if step % 1000 == 0 or (step < 1000 and step % 10 == 0): + to_log = dict({ **train_loss, **valid_loss, **{ 'current_step': step } }) + if step % 5000 == 0 or (step < 5000 and step % 1000 == 0): + train_figs = plot_everything(batch, 'train') + valid_figs = plot_everything(data_valid, 'valid') + to_log = { **to_log, **train_figs, **valid_figs } + if step == 0: + 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: manager_enc.save(checkpoint_number=step) @@ -150,7 +159,6 @@ def train(): if __name__ == '__main__': init_wandb() - allow_memory_growth() parser = argparse.ArgumentParser(description='') parser.add_argument('--name', type=str) args = vars(parser.parse_args()) @@ -196,13 +204,15 @@ if __name__ == '__main__': model = AutoEncoder(config['cond_ae']) 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.decoder, 'checkpoints/body_1_skirt_2_dec') ckpt_enc = tf.train.Checkpoint(model=model.encoder) - manager_enc = tf.train.CheckpointManager(ckpt_enc, 'checkpoints/post/' + config['name'] + '_enc', max_to_keep=20) + manager_enc = tf.train.CheckpointManager(ckpt_enc, 'checkpoints/iccv/' + config['name'] + '_enc', max_to_keep=20) ckpt_dec = tf.train.Checkpoint(model=model.decoder) - manager_dec = tf.train.CheckpointManager(ckpt_dec, 'checkpoints/post/' + config['name'] + '_dec', max_to_keep=20) + manager_dec = tf.train.CheckpointManager(ckpt_dec, 'checkpoints/iccv/' + config['name'] + '_dec', max_to_keep=20) train() \ No newline at end of file diff --git a/auto_encoder_curv.py b/auto_encoder_curv.py index 2756698..51fcaf7 100644 --- a/auto_encoder_curv.py +++ b/auto_encoder_curv.py @@ -1,6 +1,6 @@ import os import sys -from configs.config_ae_curv_post import config +from configs.iccv.config_ae_curv_cape_f import config os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu'] import tensorflow as tf @@ -32,12 +32,13 @@ from tf_utils import check_tf_version, allow_memory_growth from dataset import DatasetFactory, StaticDataset from custom_utils.custom_utils import batch_to_dict from models.cond_encoder import AutoEncoderNew as AutoEncoder +from custom_utils.custom_utils import Accumulator testing = False def init_wandb(): if not testing: - run = wandb.init(project='ae', name=config['name'], notes=config['notes'], dir='/home/workspace/local-data/temp/') + run = wandb.init(project='ae', name=config['name'], notes=config['notes'], dir='/tmp', tags=config['tags']) artifact = wandb.Artifact('code', type='code') artifact.add_file('auto_encoder_curv.py') artifact.add_file('losses.py') @@ -47,7 +48,9 @@ def init_wandb(): artifact.add_file('convnext/models/convnext_tf.py') config_file_names = [key for key in sys.modules.keys() if key.startswith('configs.')] for config_file_name in config_file_names: - artifact.add_file('/'.join(config_file_name.split('.')) + '.py') + file_name = '/'.join(config_file_name.split('.')) + '.py' + if os.path.exists(file_name): + artifact.add_file(file_name) run.log_artifact(artifact) uv2mesh = UV2MeshLabel(res=256, is_skirt=config['is_skirt'], is_smpl_orig=config['is_cape']) @@ -164,21 +167,26 @@ def train(): batch = static_dataset_train.expand_batch(batch_to_dict(batch, config['signature_dynamic'])) train_loss = train_step(batch) + train_accumulator.update(train_loss) data_valid = valid_iterator.get_next() data_valid = static_dataset_valid.expand_batch(batch_to_dict(data_valid, config['signature_dynamic'])) valid_loss = valid_step(data_valid) + valid_accumulator.update(valid_loss) - to_log = { **train_loss, **valid_loss } - if step % 5000 == 0 or (step < 5000 and step % 500 == 0): - train_figs = plot_everything(batch, 'train') - valid_figs = plot_everything(data_valid, 'valid') - to_log = { **to_log, **train_figs, **valid_figs } - if step == 0: - to_log = { **to_log, **{ 'model/summary': wandb.Html(get_summary_html(model)) } } - - wandb.log(to_log, step=step) - print(step) + if step % 1000 == 0 or (step < 1000 and step % 10 == 0): + to_log = dict({ **train_loss, **valid_loss, **{ 'current_step': step } }) + if step % 5000 == 0 or (step < 5000 and step % 1000 == 0): + train_figs = plot_everything(batch, 'train') + valid_figs = plot_everything(data_valid, 'valid') + to_log = { **to_log, **train_figs, **valid_figs } + if step == 0: + to_log = { **to_log, **{ 'model/summary': wandb.Html(get_summary_html(model)) } } + + + wandb.log(to_log, step=step) + train_accumulator.reset() + valid_accumulator.reset() if step % 10000 == 0: manager_enc.save(checkpoint_number=step) @@ -231,7 +239,7 @@ if __name__ == '__main__': signature=config['signature_static'], resolutions=[config['resolution']], in_memory=True, - is_cape=config['is_cape']) + is_cape=config['is_cape']) dataset_valid = factory.get_dataset(folder=config['valid_dir'], batch_size=config['batch_size'], @@ -245,15 +253,17 @@ if __name__ == '__main__': signature=config['signature_static'], resolutions=[config['resolution']], in_memory=True, - is_cape=config['is_cape']) + is_cape=config['is_cape']) model = AutoEncoder(config['cond_ae']) optimizer = tf.optimizers.Adam(learning_rate=config['lr']) + train_accumulator = Accumulator() + valid_accumulator = Accumulator() ckpt_enc = tf.train.Checkpoint(model=model.encoder) - manager_enc = tf.train.CheckpointManager(ckpt_enc, 'checkpoints/post/' + config['name'] + '_enc', max_to_keep=20) + manager_enc = tf.train.CheckpointManager(ckpt_enc, 'checkpoints/iccv/' + config['name'] + '_enc', max_to_keep=20) ckpt_dec = tf.train.Checkpoint(model=model.decoder) - manager_dec = tf.train.CheckpointManager(ckpt_dec, 'checkpoints/post/' + config['name'] + '_dec', max_to_keep=20) + manager_dec = tf.train.CheckpointManager(ckpt_dec, 'checkpoints/iccv/' + config['name'] + '_dec', max_to_keep=20) if testing: test() diff --git a/auto_encoder_static.py b/auto_encoder_static.py index 9de1574..cc7af10 100644 --- a/auto_encoder_static.py +++ b/auto_encoder_static.py @@ -1,6 +1,6 @@ import os import sys -from configs.config_ae_static import config +from configs.iccv.config_ae_static_cape_f import config os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu'] import tensorflow as tf @@ -34,10 +34,11 @@ from tf_utils import check_tf_version, allow_memory_growth from dataset import DatasetFactory, StaticDataset from custom_utils.custom_utils import batch_to_dict, plot_3d from models.cond_encoder import AutoEncoderNew as AutoEncoder +from custom_utils.custom_utils import Accumulator def init_wandb(): - run = wandb.init(project='ae', name=config['name'], notes=config['notes'], dir='/home/workspace/local-data/temp') + run = wandb.init(project='ae', name=config['name'], notes=config['notes'], dir='/tmp', tags=config['tags']) artifact = wandb.Artifact('code', type='code') artifact.add_file('auto_encoder_static.py') artifact.add_file('losses.py') @@ -47,7 +48,9 @@ def init_wandb(): artifact.add_file('convnext/models/convnext_tf.py') config_file_names = [key for key in sys.modules.keys() if key.startswith('configs.')] for config_file_name in config_file_names: - artifact.add_file('/'.join(config_file_name.split('.')) + '.py') + file_name = '/'.join(config_file_name.split('.')) + '.py' + if os.path.exists(file_name): + artifact.add_file(file_name) run.log_artifact(artifact) uv2mesh = UV2Mesh(res=256, is_skirt=config['is_skirt'], is_smpl_orig=config['is_cape']) @@ -125,27 +128,32 @@ def train(): for batch in dataset_train: batch = static_dataset_train.expand_batch(batch_to_dict(batch, config['signature_dynamic'])) train_loss = train_step(batch) + train_accumulator.update(train_loss) data_valid = valid_iterator.get_next() data_valid = static_dataset_valid.expand_batch(batch_to_dict(data_valid, config['signature_dynamic'])) valid_loss = valid_step(data_valid) + valid_accumulator.update(valid_loss) - to_log = dict({ **train_loss, **valid_loss, **{ 'current_step': step } }) - if step % 5000 == 0 or (step < 5000 and step % 500 == 0): - train_figs = plot_everything(batch, 'train') - valid_figs = plot_everything(data_valid, 'valid') - to_log = { **to_log, **train_figs, **valid_figs } - if step == 0: - to_log = { **to_log, **{ 'model/summary': wandb.Html(get_summary_html(model)) } } + if step % 1000 == 0 or (step < 1000 and step % 10 == 0): + to_log = dict({ **train_loss, **valid_loss, **{ 'current_step': step } }) + if step % 5000 == 0 or (step < 5000 and step % 1000 == 0): + train_figs = plot_everything(batch, 'train') + valid_figs = plot_everything(data_valid, 'valid') + to_log = { **to_log, **train_figs, **valid_figs } + if step == 0: + 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: manager_enc.save(checkpoint_number=step) manager_dec.save(checkpoint_number=step) - print(step) + print(step) step += 1 @@ -231,6 +239,9 @@ if __name__ == '__main__': model : AutoEncoder = AutoEncoder(config['cond_ae']) optimizer = tf.optimizers.Adam(learning_rate=config['lr']) + train_accumulator = Accumulator() + valid_accumulator = Accumulator() + if config['pretrained_model'] != '': load_model(model.encoder, config['pretrained_model'] + '_enc') load_model(model.decoder, config['pretrained_model'] + '_dec') diff --git a/configs/config_abl_10p.py b/configs/archive/config_abl_10p.py similarity index 100% rename from configs/config_abl_10p.py rename to configs/archive/config_abl_10p.py diff --git a/configs/config_abl_10p_skin.py b/configs/archive/config_abl_10p_skin.py similarity index 100% rename from configs/config_abl_10p_skin.py rename to configs/archive/config_abl_10p_skin.py diff --git a/configs/config_abl_25p.py b/configs/archive/config_abl_25p.py similarity index 100% rename from configs/config_abl_25p.py rename to configs/archive/config_abl_25p.py diff --git a/configs/config_abl_25p_skin.py b/configs/archive/config_abl_25p_skin.py similarity index 100% rename from configs/config_abl_25p_skin.py rename to configs/archive/config_abl_25p_skin.py diff --git a/configs/config_abl_2_pyr_32.py b/configs/archive/config_abl_2_pyr_32.py similarity index 100% rename from configs/config_abl_2_pyr_32.py rename to configs/archive/config_abl_2_pyr_32.py diff --git a/configs/config_abl_2_pyr_32_64.py b/configs/archive/config_abl_2_pyr_32_64.py similarity index 100% rename from configs/config_abl_2_pyr_32_64.py rename to configs/archive/config_abl_2_pyr_32_64.py diff --git a/configs/config_abl_2_pyr_32_64_128.py b/configs/archive/config_abl_2_pyr_32_64_128.py similarity index 100% rename from configs/config_abl_2_pyr_32_64_128.py rename to configs/archive/config_abl_2_pyr_32_64_128.py diff --git a/configs/config_abl_2_pyr_32_64_128_256.py b/configs/archive/config_abl_2_pyr_32_64_128_256.py similarity index 100% rename from configs/config_abl_2_pyr_32_64_128_256.py rename to configs/archive/config_abl_2_pyr_32_64_128_256.py diff --git a/configs/config_abl_2_pyr_32_64_128_256_512.py b/configs/archive/config_abl_2_pyr_32_64_128_256_512.py similarity index 100% rename from configs/config_abl_2_pyr_32_64_128_256_512.py rename to configs/archive/config_abl_2_pyr_32_64_128_256_512.py diff --git a/configs/config_abl_2_pyr_32_64_128_256_512_norm.py b/configs/archive/config_abl_2_pyr_32_64_128_256_512_norm.py similarity index 100% rename from configs/config_abl_2_pyr_32_64_128_256_512_norm.py rename to configs/archive/config_abl_2_pyr_32_64_128_256_512_norm.py diff --git a/configs/config_abl_2_pyr_32_64_128_256_512_skirt.py b/configs/archive/config_abl_2_pyr_32_64_128_256_512_skirt.py similarity index 100% rename from configs/config_abl_2_pyr_32_64_128_256_512_skirt.py rename to configs/archive/config_abl_2_pyr_32_64_128_256_512_skirt.py diff --git a/configs/config_abl_2_pyr_32_64_128_256_512_test.py b/configs/archive/config_abl_2_pyr_32_64_128_256_512_test.py similarity index 100% rename from configs/config_abl_2_pyr_32_64_128_256_512_test.py rename to configs/archive/config_abl_2_pyr_32_64_128_256_512_test.py diff --git a/configs/config_abl_2_pyr_32_64_128_256_skirt.py b/configs/archive/config_abl_2_pyr_32_64_128_256_skirt.py similarity index 100% rename from configs/config_abl_2_pyr_32_64_128_256_skirt.py rename to configs/archive/config_abl_2_pyr_32_64_128_256_skirt.py diff --git a/configs/config_abl_2_pyr_32_64_128_skirt.py b/configs/archive/config_abl_2_pyr_32_64_128_skirt.py similarity index 100% rename from configs/config_abl_2_pyr_32_64_128_skirt.py rename to configs/archive/config_abl_2_pyr_32_64_128_skirt.py diff --git a/configs/config_abl_2_pyr_32_64_2.py b/configs/archive/config_abl_2_pyr_32_64_2.py similarity index 100% rename from configs/config_abl_2_pyr_32_64_2.py rename to configs/archive/config_abl_2_pyr_32_64_2.py diff --git a/configs/config_abl_2_pyr_32_64_skirt.py b/configs/archive/config_abl_2_pyr_32_64_skirt.py similarity index 100% rename from configs/config_abl_2_pyr_32_64_skirt.py rename to configs/archive/config_abl_2_pyr_32_64_skirt.py diff --git a/configs/config_abl_2_pyr_32_skin.py b/configs/archive/config_abl_2_pyr_32_skin.py similarity index 100% rename from configs/config_abl_2_pyr_32_skin.py rename to configs/archive/config_abl_2_pyr_32_skin.py diff --git a/configs/config_abl_2_pyr_32_skin_2.py b/configs/archive/config_abl_2_pyr_32_skin_2.py similarity index 100% rename from configs/config_abl_2_pyr_32_skin_2.py rename to configs/archive/config_abl_2_pyr_32_skin_2.py diff --git a/configs/config_abl_2_pyr_32_skin_norm.py b/configs/archive/config_abl_2_pyr_32_skin_norm.py similarity index 100% rename from configs/config_abl_2_pyr_32_skin_norm.py rename to configs/archive/config_abl_2_pyr_32_skin_norm.py diff --git a/configs/config_abl_2_pyr_32_skirt.py b/configs/archive/config_abl_2_pyr_32_skirt.py similarity index 100% rename from configs/config_abl_2_pyr_32_skirt.py rename to configs/archive/config_abl_2_pyr_32_skirt.py diff --git a/configs/config_abl_2_pyr_32_skirt_extra_loss.py b/configs/archive/config_abl_2_pyr_32_skirt_extra_loss.py similarity index 100% rename from configs/config_abl_2_pyr_32_skirt_extra_loss.py rename to configs/archive/config_abl_2_pyr_32_skirt_extra_loss.py diff --git a/configs/config_abl_2_pyr_64_128_256_512_cape_f.py b/configs/archive/config_abl_2_pyr_64_128_256_512_cape_f.py similarity index 100% rename from configs/config_abl_2_pyr_64_128_256_512_cape_f.py rename to configs/archive/config_abl_2_pyr_64_128_256_512_cape_f.py diff --git a/configs/config_abl_2_pyr_64_128_256_512_cape_m.py b/configs/archive/config_abl_2_pyr_64_128_256_512_cape_m.py similarity index 100% rename from configs/config_abl_2_pyr_64_128_256_512_cape_m.py rename to configs/archive/config_abl_2_pyr_64_128_256_512_cape_m.py diff --git a/configs/config_abl_2_pyr_64_128_256_cape_f.py b/configs/archive/config_abl_2_pyr_64_128_256_cape_f.py similarity index 100% rename from configs/config_abl_2_pyr_64_128_256_cape_f.py rename to configs/archive/config_abl_2_pyr_64_128_256_cape_f.py diff --git a/configs/config_abl_2_pyr_64_128_256_cape_m.py b/configs/archive/config_abl_2_pyr_64_128_256_cape_m.py similarity index 100% rename from configs/config_abl_2_pyr_64_128_256_cape_m.py rename to configs/archive/config_abl_2_pyr_64_128_256_cape_m.py diff --git a/configs/config_abl_2_pyr_64_128_256_cape_m_00032_SL.py b/configs/archive/config_abl_2_pyr_64_128_256_cape_m_00032_SL.py similarity index 100% rename from configs/config_abl_2_pyr_64_128_256_cape_m_00032_SL.py rename to configs/archive/config_abl_2_pyr_64_128_256_cape_m_00032_SL.py diff --git a/configs/config_abl_2_pyr_64_128_cape_f.py b/configs/archive/config_abl_2_pyr_64_128_cape_f.py similarity index 100% rename from configs/config_abl_2_pyr_64_128_cape_f.py rename to configs/archive/config_abl_2_pyr_64_128_cape_f.py diff --git a/configs/config_abl_2_pyr_64_128_cape_m.py b/configs/archive/config_abl_2_pyr_64_128_cape_m.py similarity index 100% rename from configs/config_abl_2_pyr_64_128_cape_m.py rename to configs/archive/config_abl_2_pyr_64_128_cape_m.py diff --git a/configs/config_abl_2_pyr_64_128_cape_m_00032_SL.py b/configs/archive/config_abl_2_pyr_64_128_cape_m_00032_SL.py similarity index 100% rename from configs/config_abl_2_pyr_64_128_cape_m_00032_SL.py rename to configs/archive/config_abl_2_pyr_64_128_cape_m_00032_SL.py diff --git a/configs/config_abl_2_pyr_64_cape_f.py b/configs/archive/config_abl_2_pyr_64_cape_f.py similarity index 100% rename from configs/config_abl_2_pyr_64_cape_f.py rename to configs/archive/config_abl_2_pyr_64_cape_f.py diff --git a/configs/config_abl_2_pyr_64_cape_f_03223_SS.py b/configs/archive/config_abl_2_pyr_64_cape_f_03223_SS.py similarity index 100% rename from configs/config_abl_2_pyr_64_cape_f_03223_SS.py rename to configs/archive/config_abl_2_pyr_64_cape_f_03223_SS.py diff --git a/configs/config_abl_2_pyr_64_cape_m.py b/configs/archive/config_abl_2_pyr_64_cape_m.py similarity index 100% rename from configs/config_abl_2_pyr_64_cape_m.py rename to configs/archive/config_abl_2_pyr_64_cape_m.py diff --git a/configs/config_abl_2_pyr_64_cape_m_00032_SL.py b/configs/archive/config_abl_2_pyr_64_cape_m_00032_SL.py similarity index 100% rename from configs/config_abl_2_pyr_64_cape_m_00032_SL.py rename to configs/archive/config_abl_2_pyr_64_cape_m_00032_SL.py diff --git a/configs/config_abl_50p_skin.py b/configs/archive/config_abl_50p_skin.py similarity index 100% rename from configs/config_abl_50p_skin.py rename to configs/archive/config_abl_50p_skin.py diff --git a/configs/config_abl_abs.py b/configs/archive/config_abl_abs.py similarity index 100% rename from configs/config_abl_abs.py rename to configs/archive/config_abl_abs.py diff --git a/configs/config_abl_abs_skirt.py b/configs/archive/config_abl_abs_skirt.py similarity index 100% rename from configs/config_abl_abs_skirt.py rename to configs/archive/config_abl_abs_skirt.py diff --git a/configs/config_abl_all copy.py b/configs/archive/config_abl_all copy.py similarity index 100% rename from configs/config_abl_all copy.py rename to configs/archive/config_abl_all copy.py diff --git a/configs/config_abl_all.py b/configs/archive/config_abl_all.py similarity index 100% rename from configs/config_abl_all.py rename to configs/archive/config_abl_all.py diff --git a/configs/config_abl_all_post.py b/configs/archive/config_abl_all_post.py similarity index 100% rename from configs/config_abl_all_post.py rename to configs/archive/config_abl_all_post.py diff --git a/configs/config_abl_all_skirt.py b/configs/archive/config_abl_all_skirt.py similarity index 100% rename from configs/config_abl_all_skirt.py rename to configs/archive/config_abl_all_skirt.py diff --git a/configs/config_abl_curv.py b/configs/archive/config_abl_curv.py similarity index 100% rename from configs/config_abl_curv.py rename to configs/archive/config_abl_curv.py diff --git a/configs/config_abl_curv_skirt.py b/configs/archive/config_abl_curv_skirt.py similarity index 100% rename from configs/config_abl_curv_skirt.py rename to configs/archive/config_abl_curv_skirt.py diff --git a/configs/config_abl_extra_loss.py b/configs/archive/config_abl_extra_loss.py similarity index 100% rename from configs/config_abl_extra_loss.py rename to configs/archive/config_abl_extra_loss.py diff --git a/configs/config_abl_extra_loss_skirt.py b/configs/archive/config_abl_extra_loss_skirt.py similarity index 100% rename from configs/config_abl_extra_loss_skirt.py rename to configs/archive/config_abl_extra_loss_skirt.py diff --git a/configs/config_abl_extra_loss_skirt_2.py b/configs/archive/config_abl_extra_loss_skirt_2.py similarity index 100% rename from configs/config_abl_extra_loss_skirt_2.py rename to configs/archive/config_abl_extra_loss_skirt_2.py diff --git a/configs/config_abl_norm.py b/configs/archive/config_abl_norm.py similarity index 100% rename from configs/config_abl_norm.py rename to configs/archive/config_abl_norm.py diff --git a/configs/config_abl_norm_skirt.py b/configs/archive/config_abl_norm_skirt.py similarity index 100% rename from configs/config_abl_norm_skirt.py rename to configs/archive/config_abl_norm_skirt.py diff --git a/configs/config_abl_one_hot_skirt.py b/configs/archive/config_abl_one_hot_skirt.py similarity index 100% rename from configs/config_abl_one_hot_skirt.py rename to configs/archive/config_abl_one_hot_skirt.py diff --git a/configs/config_abl_orient.py b/configs/archive/config_abl_orient.py similarity index 100% rename from configs/config_abl_orient.py rename to configs/archive/config_abl_orient.py diff --git a/configs/config_abl_orient_skirt.py b/configs/archive/config_abl_orient_skirt.py similarity index 100% rename from configs/config_abl_orient_skirt.py rename to configs/archive/config_abl_orient_skirt.py diff --git a/configs/config_abl_overfit.py b/configs/archive/config_abl_overfit.py similarity index 100% rename from configs/config_abl_overfit.py rename to configs/archive/config_abl_overfit.py diff --git a/configs/config_abl_overfit_dress.py b/configs/archive/config_abl_overfit_dress.py similarity index 100% rename from configs/config_abl_overfit_dress.py rename to configs/archive/config_abl_overfit_dress.py diff --git a/configs/config_abl_overfit_dress_var.py b/configs/archive/config_abl_overfit_dress_var.py similarity index 100% rename from configs/config_abl_overfit_dress_var.py rename to configs/archive/config_abl_overfit_dress_var.py diff --git a/configs/config_abl_overfit_dress_var_2.py b/configs/archive/config_abl_overfit_dress_var_2.py similarity index 100% rename from configs/config_abl_overfit_dress_var_2.py rename to configs/archive/config_abl_overfit_dress_var_2.py diff --git a/configs/config_abl_overfit_dress_var_3.py b/configs/archive/config_abl_overfit_dress_var_3.py similarity index 100% rename from configs/config_abl_overfit_dress_var_3.py rename to configs/archive/config_abl_overfit_dress_var_3.py diff --git a/configs/config_abl_overfit_jumpsuit.py b/configs/archive/config_abl_overfit_jumpsuit.py similarity index 100% rename from configs/config_abl_overfit_jumpsuit.py rename to configs/archive/config_abl_overfit_jumpsuit.py diff --git a/configs/config_abl_overfit_jumpsuit_2.py b/configs/archive/config_abl_overfit_jumpsuit_2.py similarity index 100% rename from configs/config_abl_overfit_jumpsuit_2.py rename to configs/archive/config_abl_overfit_jumpsuit_2.py diff --git a/configs/config_abl_pyr_32.py b/configs/archive/config_abl_pyr_32.py similarity index 100% rename from configs/config_abl_pyr_32.py rename to configs/archive/config_abl_pyr_32.py diff --git a/configs/config_abl_pyr_32_2.py b/configs/archive/config_abl_pyr_32_2.py similarity index 100% rename from configs/config_abl_pyr_32_2.py rename to configs/archive/config_abl_pyr_32_2.py diff --git a/configs/config_abl_pyr_32_64.py b/configs/archive/config_abl_pyr_32_64.py similarity index 100% rename from configs/config_abl_pyr_32_64.py rename to configs/archive/config_abl_pyr_32_64.py diff --git a/configs/config_abl_pyr_32_64_2.py b/configs/archive/config_abl_pyr_32_64_2.py similarity index 100% rename from configs/config_abl_pyr_32_64_2.py rename to configs/archive/config_abl_pyr_32_64_2.py diff --git a/configs/config_abl_pyr_32_64_skirt.py b/configs/archive/config_abl_pyr_32_64_skirt.py similarity index 100% rename from configs/config_abl_pyr_32_64_skirt.py rename to configs/archive/config_abl_pyr_32_64_skirt.py diff --git a/configs/config_abl_pyr_32_64_skirt_2.py b/configs/archive/config_abl_pyr_32_64_skirt_2.py similarity index 100% rename from configs/config_abl_pyr_32_64_skirt_2.py rename to configs/archive/config_abl_pyr_32_64_skirt_2.py diff --git a/configs/config_abl_pyr_32_cape_f.py b/configs/archive/config_abl_pyr_32_cape_f.py similarity index 100% rename from configs/config_abl_pyr_32_cape_f.py rename to configs/archive/config_abl_pyr_32_cape_f.py diff --git a/configs/config_abl_pyr_32_cape_m.py b/configs/archive/config_abl_pyr_32_cape_m.py similarity index 100% rename from configs/config_abl_pyr_32_cape_m.py rename to configs/archive/config_abl_pyr_32_cape_m.py diff --git a/configs/config_abl_pyr_32_extra_loss_skirt.py b/configs/archive/config_abl_pyr_32_extra_loss_skirt.py similarity index 100% rename from configs/config_abl_pyr_32_extra_loss_skirt.py rename to configs/archive/config_abl_pyr_32_extra_loss_skirt.py diff --git a/configs/config_abl_pyr_32_skin.py b/configs/archive/config_abl_pyr_32_skin.py similarity index 100% rename from configs/config_abl_pyr_32_skin.py rename to configs/archive/config_abl_pyr_32_skin.py diff --git a/configs/config_abl_pyr_32_skin_offset.py b/configs/archive/config_abl_pyr_32_skin_offset.py similarity index 100% rename from configs/config_abl_pyr_32_skin_offset.py rename to configs/archive/config_abl_pyr_32_skin_offset.py diff --git a/configs/config_abl_pyr_32_skirt.py b/configs/archive/config_abl_pyr_32_skirt.py similarity index 100% rename from configs/config_abl_pyr_32_skirt.py rename to configs/archive/config_abl_pyr_32_skirt.py diff --git a/configs/config_abl_pyr_64_128_256_512_cape_f.py b/configs/archive/config_abl_pyr_64_128_256_512_cape_f.py similarity index 100% rename from configs/config_abl_pyr_64_128_256_512_cape_f.py rename to configs/archive/config_abl_pyr_64_128_256_512_cape_f.py diff --git a/configs/config_abl_pyr_64_128_256_512_cape_f_2.py b/configs/archive/config_abl_pyr_64_128_256_512_cape_f_2.py similarity index 100% rename from configs/config_abl_pyr_64_128_256_512_cape_f_2.py rename to configs/archive/config_abl_pyr_64_128_256_512_cape_f_2.py diff --git a/configs/config_abl_pyr_64_128_256_cape_f.py b/configs/archive/config_abl_pyr_64_128_256_cape_f.py similarity index 100% rename from configs/config_abl_pyr_64_128_256_cape_f.py rename to configs/archive/config_abl_pyr_64_128_256_cape_f.py diff --git a/configs/config_abl_pyr_64_128_cape_f.py b/configs/archive/config_abl_pyr_64_128_cape_f.py similarity index 100% rename from configs/config_abl_pyr_64_128_cape_f.py rename to configs/archive/config_abl_pyr_64_128_cape_f.py diff --git a/configs/config_abl_pyr_64_128_cape_m.py b/configs/archive/config_abl_pyr_64_128_cape_m.py similarity index 100% rename from configs/config_abl_pyr_64_128_cape_m.py rename to configs/archive/config_abl_pyr_64_128_cape_m.py diff --git a/configs/config_abl_pyr_64_cape_f.py b/configs/archive/config_abl_pyr_64_cape_f.py similarity index 100% rename from configs/config_abl_pyr_64_cape_f.py rename to configs/archive/config_abl_pyr_64_cape_f.py diff --git a/configs/config_abl_pyr_64_cape_m.py b/configs/archive/config_abl_pyr_64_cape_m.py similarity index 100% rename from configs/config_abl_pyr_64_cape_m.py rename to configs/archive/config_abl_pyr_64_cape_m.py diff --git a/configs/config_abl_skin.py b/configs/archive/config_abl_skin.py similarity index 100% rename from configs/config_abl_skin.py rename to configs/archive/config_abl_skin.py diff --git a/configs/config_abl_skin_no_orient.py b/configs/archive/config_abl_skin_no_orient.py similarity index 100% rename from configs/config_abl_skin_no_orient.py rename to configs/archive/config_abl_skin_no_orient.py diff --git a/configs/config_abl_skin_norm.py b/configs/archive/config_abl_skin_norm.py similarity index 100% rename from configs/config_abl_skin_norm.py rename to configs/archive/config_abl_skin_norm.py diff --git a/configs/config_abl_skin_skirt.py b/configs/archive/config_abl_skin_skirt.py similarity index 100% rename from configs/config_abl_skin_skirt.py rename to configs/archive/config_abl_skin_skirt.py diff --git a/configs/config_abl_skin_var.py b/configs/archive/config_abl_skin_var.py similarity index 100% rename from configs/config_abl_skin_var.py rename to configs/archive/config_abl_skin_var.py diff --git a/configs/config_abl_skin_var_2.py b/configs/archive/config_abl_skin_var_2.py similarity index 100% rename from configs/config_abl_skin_var_2.py rename to configs/archive/config_abl_skin_var_2.py diff --git a/configs/config_abl_skin_var_3.py b/configs/archive/config_abl_skin_var_3.py similarity index 100% rename from configs/config_abl_skin_var_3.py rename to configs/archive/config_abl_skin_var_3.py diff --git a/configs/config_abl_skin_var_4.py b/configs/archive/config_abl_skin_var_4.py similarity index 100% rename from configs/config_abl_skin_var_4.py rename to configs/archive/config_abl_skin_var_4.py diff --git a/configs/config_ae_body.py b/configs/archive/config_ae_body.py similarity index 100% rename from configs/config_ae_body.py rename to configs/archive/config_ae_body.py diff --git a/configs/config_ae_body_post.py b/configs/archive/config_ae_body_post.py similarity index 100% rename from configs/config_ae_body_post.py rename to configs/archive/config_ae_body_post.py diff --git a/configs/config_ae_curv.py b/configs/archive/config_ae_curv.py similarity index 100% rename from configs/config_ae_curv.py rename to configs/archive/config_ae_curv.py diff --git a/configs/config_ae_curv_post.py b/configs/archive/config_ae_curv_post.py similarity index 100% rename from configs/config_ae_curv_post.py rename to configs/archive/config_ae_curv_post.py diff --git a/configs/config_ae_static.py b/configs/archive/config_ae_static.py similarity index 100% rename from configs/config_ae_static.py rename to configs/archive/config_ae_static.py diff --git a/configs/config_base.py b/configs/archive/config_base.py similarity index 100% rename from configs/config_base.py rename to configs/archive/config_base.py diff --git a/configs/config_cape_f_03223_SL_2.py b/configs/archive/config_cape_f_03223_SL_2.py similarity index 100% rename from configs/config_cape_f_03223_SL_2.py rename to configs/archive/config_cape_f_03223_SL_2.py diff --git a/configs/config_cape_f_03223_SS.py b/configs/archive/config_cape_f_03223_SS.py similarity index 100% rename from configs/config_cape_f_03223_SS.py rename to configs/archive/config_cape_f_03223_SS.py diff --git a/configs/config_cape_f_03223_SS_2.py b/configs/archive/config_cape_f_03223_SS_2.py similarity index 100% rename from configs/config_cape_f_03223_SS_2.py rename to configs/archive/config_cape_f_03223_SS_2.py diff --git a/configs/config_cape_m_00032_SL.py b/configs/archive/config_cape_m_00032_SL.py similarity index 100% rename from configs/config_cape_m_00032_SL.py rename to configs/archive/config_cape_m_00032_SL.py diff --git a/configs/config_cape_m_00032_SL_2.py b/configs/archive/config_cape_m_00032_SL_2.py similarity index 100% rename from configs/config_cape_m_00032_SL_2.py rename to configs/archive/config_cape_m_00032_SL_2.py diff --git a/configs/config_cvae.json b/configs/archive/config_cvae.json similarity index 100% rename from configs/config_cvae.json rename to configs/archive/config_cvae.json diff --git a/configs/config_cvae.py b/configs/archive/config_cvae.py similarity index 100% rename from configs/config_cvae.py rename to configs/archive/config_cvae.py diff --git a/configs/config_cvae_2.json b/configs/archive/config_cvae_2.json similarity index 100% rename from configs/config_cvae_2.json rename to configs/archive/config_cvae_2.json diff --git a/configs/config_cvae_curv.py b/configs/archive/config_cvae_curv.py similarity index 100% rename from configs/config_cvae_curv.py rename to configs/archive/config_cvae_curv.py diff --git a/configs/config_cvae_test.py b/configs/archive/config_cvae_test.py similarity index 100% rename from configs/config_cvae_test.py rename to configs/archive/config_cvae_test.py diff --git a/configs/config_pyramid.py b/configs/archive/config_pyramid.py similarity index 100% rename from configs/config_pyramid.py rename to configs/archive/config_pyramid.py diff --git a/configs/iccv/config_abl_all.py b/configs/iccv/config_abl_all.py new file mode 100644 index 0000000..1ec8467 --- /dev/null +++ b/configs/iccv/config_abl_all.py @@ -0,0 +1,117 @@ +config = dict() + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK AVG GARMENT USED + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_curvature'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = True + +config['use_norm_loss'] = True + +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 + +config['gpu'] = '0' +config['name'] = 'abl_all' +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 +if config['use_skinning']: + assert (config['use_offsets'] and config['avg_garment_path'] != '') or (not config['use_offsets'] and config['avg_garment_path'] == '') + +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision + +config['batch_size'] = 4 +config['resolution'] = 512 +config['is_skirt'] = False +config['dataset_in_memory'] = False +config['is_cape'] = False + +config['train_dir'] = '/home/workspace/local-data/train' +config['valid_dir'] = '/home/workspace/local-data/valid' +config['test_dir'] = '/home/workspace/data/dataset/test_ready' + +config['static_model'] = 'checkpoints/static_1' +config['body_model'] = 'checkpoints/body_1' +config['curvature_model'] = 'checkpoints/curv_1' + + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['latent_dim'] = 128 + +config['pretrained_model'] = '' + +############### +config['lr'] = 0.0001# 0.0001 +############### +config['starting_balancing_coeff'] = 0.0001 + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (14475, 3,), + 'mesh_posed': (14475, 3,), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (14475,), + 'uv_mask': (512, 256,), + } + +if config['use_skinning']: + config['signature_dynamic']['uv_unposed'] = (512, 256, 3) + config['signature_dynamic']['mesh_unposed'] = (14475, 3,) +else: + config['signature_dynamic']['uv_posed'] = (512, 256, 3) + + +config['upscale_enhancer'] = '' +config['freeze_encoders'] = True +config['use_one_hot'] = False + +config['cvae'] = dict() +config['cvae']['is_label'] = False +config['cvae']['latent_dim'] = config['latent_dim'] +config['cvae']['add_noise'] = True +config['cvae']['noise_amount'] = 0.025 + +config['cvae']['kernel_size'] = 7 +config['cvae']['encoder_depths'] = [3, 3, 9, 3] +config['cvae']['encoder_dims'] = [32, 64, 128, 256] +config['cvae']['decoder_input'] = (16, 8, 80) +config['cvae']['decoder_depths'] = [3, 3, 9, 3] +config['cvae']['decoder_dims'] = [256, 128, 64, 16] + + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 64 +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [32, 64, 128, 256, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_input'] = (8, 4, config['cond_ae']['bottleneck_size']) +config['cond_ae']['decoder_depths'] = [3, 3, 9, 3, 3] +config['cond_ae']['decoder_dims'] = [config['cond_ae']['bottleneck_size'], 256, 128, 64, 16] + +config['cond_ae_body'] = dict() +config['cond_ae_body']['latent_dim'] = config['latent_dim'] +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['upscale_output'] = True +config['cond_ae_body']['bottleneck_size'] = 512 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3, 3] +config['cond_ae_body']['encoder_dims'] = [32, 64, 128, 256, 256, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_input'] = (4, 2, config['cond_ae_body']['bottleneck_size']) +config['cond_ae_body']['decoder_depths'] = [3, 3, 9, 3] +config['cond_ae_body']['decoder_dims'] = [config['cond_ae_body']['bottleneck_size'], 128, 64, 16] diff --git a/configs/iccv/config_ae_body.py b/configs/iccv/config_ae_body.py new file mode 100644 index 0000000..abf1adf --- /dev/null +++ b/configs/iccv/config_ae_body.py @@ -0,0 +1,52 @@ +config = dict() + + +config['batch_size'] = 4 +config['train_dir'] = '/home/workspace/local-data/train' +config['valid_dir'] = '/home/workspace/local-data/valid' +config['test_dir'] = '/home/workspace/data/dataset/test_ready' +config['use_filled'] = False +config['resolution'] = 512 +config['is_skirt'] = False +config['dataset_in_memory'] = False +config['is_cape'] = False +config['remove_global_orientation'] = True + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['latent_dim'] = 128 +config['bottleneck_scale'] = 2 + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 16 * config['bottleneck_scale'] +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [16, 32, 64, 128, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_depths'] = config['cond_ae']['encoder_depths'] +config['cond_ae']['decoder_dims'] = config['cond_ae']['encoder_dims'] +config['cond_ae']['activation'] = 'tanh' + + +config['gpu'] = '4' +config['lr'] = 0.0001 +config['name'] = 'body_iccv_1' +config['notes'] = '' +config['tags'] = ['iccv', 'body'] + +config['cond_ae']['upscale_output'] = False +config['pretrained_model'] = '' + + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (3, 512, 256,), + 'mesh_body_posed': (config['smpl_res'], 3,), + } +config['signature_static'] = { + 'mesh_mask': (config['smpl_res'],), + } \ No newline at end of file diff --git a/configs/iccv/config_ae_body_cape_f.py b/configs/iccv/config_ae_body_cape_f.py new file mode 100644 index 0000000..7421f9f --- /dev/null +++ b/configs/iccv/config_ae_body_cape_f.py @@ -0,0 +1,52 @@ +config = dict() + + +config['batch_size'] = 4 +config['train_dir'] = '/home/workspace/local-data/cape_processed/train/female' +config['valid_dir'] = '/home/workspace/local-data/cape_processed/test/female' +config['test_dir'] = '/home/workspace/local-data/cape_processed/test/female' +config['use_filled'] = False +config['resolution'] = 512 +config['is_skirt'] = False +config['dataset_in_memory'] = False +config['is_cape'] = True +config['remove_global_orientation'] = True + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['latent_dim'] = 128 +config['bottleneck_scale'] = 2 + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 16 * config['bottleneck_scale'] +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [16, 32, 64, 128, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_depths'] = config['cond_ae']['encoder_depths'] +config['cond_ae']['decoder_dims'] = config['cond_ae']['encoder_dims'] +config['cond_ae']['activation'] = 'tanh' + + +config['gpu'] = '7' +config['lr'] = 0.0001 +config['name'] = 'body_iccv_1_cape_f' +config['notes'] = '' +config['tags'] = ['iccv', 'body', 'cape_f'] + +config['cond_ae']['upscale_output'] = False +config['pretrained_model'] = '' + + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (3, 512, 256,), + 'mesh_body_posed': (config['smpl_res'], 3,), + } +config['signature_static'] = { + 'mesh_mask': (config['smpl_res'],), + } \ No newline at end of file diff --git a/configs/iccv/config_ae_body_skirt.py b/configs/iccv/config_ae_body_skirt.py new file mode 100644 index 0000000..9cd1b54 --- /dev/null +++ b/configs/iccv/config_ae_body_skirt.py @@ -0,0 +1,52 @@ +config = dict() + + +config['batch_size'] = 4 +config['train_dir'] = '/home/workspace/data/dataset/local-cache/train_skirt' +config['valid_dir'] = '/home/workspace/local-data/valid_skirt' +config['test_dir'] = '/home/workspace/data/dataset/test_skirt_ready_2' +config['use_filled'] = False +config['resolution'] = 512 +config['is_skirt'] = True +config['dataset_in_memory'] = False +config['is_cape'] = False +config['remove_global_orientation'] = True + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['latent_dim'] = 128 +config['bottleneck_scale'] = 2 + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 16 * config['bottleneck_scale'] +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [16, 32, 64, 128, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_depths'] = config['cond_ae']['encoder_depths'] +config['cond_ae']['decoder_dims'] = config['cond_ae']['encoder_dims'] +config['cond_ae']['activation'] = 'tanh' + + +config['gpu'] = '4' +config['lr'] = 0.0001 +config['name'] = 'body_iccv_1_skirt' +config['notes'] = '' +config['tags'] = ['iccv', 'body'] + +config['cond_ae']['upscale_output'] = False +config['pretrained_model'] = '' + + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (3, 512, 256,), + 'mesh_body_posed': (config['smpl_res'], 3,), + } +config['signature_static'] = { + 'mesh_mask': (config['smpl_res'],), + } \ No newline at end of file diff --git a/configs/iccv/config_ae_curv.py b/configs/iccv/config_ae_curv.py new file mode 100644 index 0000000..2f6daf6 --- /dev/null +++ b/configs/iccv/config_ae_curv.py @@ -0,0 +1,51 @@ +config = dict() + + +config['batch_size'] = 4 +config['train_dir'] = '/home/workspace/local-data/train' +config['valid_dir'] = '/home/workspace/local-data/valid' +config['test_dir'] = '/home/workspace/data/dataset/test_ready' +config['use_filled'] = False +config['resolution'] = 512 +config['is_skirt'] = False +config['dataset_in_memory'] = False +config['is_cape'] = False +config['remove_global_orientation'] = True + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['latent_dim'] = 128 +config['bottleneck_scale'] = 2 + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = True +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 40 * config['bottleneck_scale'] +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [16, 32, 64, 128, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_depths'] = config['cond_ae']['encoder_depths'] +config['cond_ae']['decoder_dims'] = config['cond_ae']['encoder_dims'] +config['cond_ae']['activation'] = 'tanh' + + +config['gpu'] = '1' +config['lr'] = 0.001 +config['name'] = 'curv_iccv_1' +config['notes'] = '' +config['tags'] = ['iccv', 'curv'] + +config['cond_ae']['upscale_output'] = False +config['pretrained_model'] = '' + + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'uv_curvature': (512, 256, 7), + 'mesh_curvature': (config['smpl_res']) + } +config['signature_static'] = { 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } \ No newline at end of file diff --git a/configs/iccv/config_ae_curv_cape_f.py b/configs/iccv/config_ae_curv_cape_f.py new file mode 100644 index 0000000..2f52a52 --- /dev/null +++ b/configs/iccv/config_ae_curv_cape_f.py @@ -0,0 +1,51 @@ +config = dict() + + +config['batch_size'] = 4 +config['train_dir'] = '/home/workspace/local-data/cape_processed/train/female' +config['valid_dir'] = '/home/workspace/local-data/cape_processed/test/female' +config['test_dir'] = '/home/workspace/local-data/cape_processed/test/female' +config['use_filled'] = False +config['resolution'] = 512 +config['is_skirt'] = False +config['dataset_in_memory'] = False +config['is_cape'] = True +config['remove_global_orientation'] = True + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['latent_dim'] = 128 +config['bottleneck_scale'] = 2 + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = True +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 40 * config['bottleneck_scale'] +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [16, 32, 64, 128, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_depths'] = config['cond_ae']['encoder_depths'] +config['cond_ae']['decoder_dims'] = config['cond_ae']['encoder_dims'] +config['cond_ae']['activation'] = 'tanh' + + +config['gpu'] = '6' +config['lr'] = 0.001 +config['name'] = 'curv_iccv_1_cape_f' +config['notes'] = '' +config['tags'] = ['iccv', 'curv', 'cape_f'] + +config['cond_ae']['upscale_output'] = False +config['pretrained_model'] = '' + + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'uv_curvature': (512, 256, 7), + 'mesh_curvature': (config['smpl_res']) + } +config['signature_static'] = { 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } \ No newline at end of file diff --git a/configs/iccv/config_ae_curv_skirt.py b/configs/iccv/config_ae_curv_skirt.py new file mode 100644 index 0000000..3e3b890 --- /dev/null +++ b/configs/iccv/config_ae_curv_skirt.py @@ -0,0 +1,51 @@ +config = dict() + + +config['batch_size'] = 4 +config['train_dir'] = '/home/workspace/data/dataset/local-cache/train_skirt' +config['valid_dir'] = '/home/workspace/local-data/valid_skirt' +config['test_dir'] = '/home/workspace/data/dataset/test_skirt_ready_2' +config['use_filled'] = False +config['resolution'] = 512 +config['is_skirt'] = True +config['dataset_in_memory'] = False +config['is_cape'] = False +config['remove_global_orientation'] = True + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['latent_dim'] = 128 +config['bottleneck_scale'] = 2 + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = True +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 40 * config['bottleneck_scale'] +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [16, 32, 64, 128, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_depths'] = config['cond_ae']['encoder_depths'] +config['cond_ae']['decoder_dims'] = config['cond_ae']['encoder_dims'] +config['cond_ae']['activation'] = 'tanh' + + +config['gpu'] = '2' +config['lr'] = 0.001 +config['name'] = 'curv_iccv_1_skirt' +config['notes'] = '' +config['tags'] = ['iccv', 'curv'] + +config['cond_ae']['upscale_output'] = False +config['pretrained_model'] = '' + + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'uv_curvature': (512, 256, 7), + 'mesh_curvature': (config['smpl_res']) + } +config['signature_static'] = { 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } \ No newline at end of file diff --git a/configs/iccv/config_ae_static.py b/configs/iccv/config_ae_static.py new file mode 100644 index 0000000..05dcfd3 --- /dev/null +++ b/configs/iccv/config_ae_static.py @@ -0,0 +1,51 @@ +config = dict() + + +config['batch_size'] = 4 +config['train_dir'] = '/home/workspace/local-data/train' +config['valid_dir'] = '/home/workspace/local-data/valid' +config['test_dir'] = '/home/workspace/data/dataset/test_ready' +config['use_filled'] = False +config['resolution'] = 512 +config['is_skirt'] = False +config['dataset_in_memory'] = True +config['is_cape'] = False +config['remove_global_orientation'] = True + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['latent_dim'] = 128 + +config['bottleneck_scale'] = 2 + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 8 * config['bottleneck_scale'] +config['cond_ae']['encoder_depths'] = [3, 3, 3, 27, 3] +config['cond_ae']['encoder_dims'] = [8, 16, 32, 64, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_depths'] = config['cond_ae']['encoder_depths'] +config['cond_ae']['decoder_dims'] = config['cond_ae']['encoder_dims'] +config['cond_ae']['activation'] = 'tanh' + + +config['gpu'] = '5' +config['lr'] = 0.0005 +config['name'] = 'static_iccv_1' +config['notes'] = ' ' +config['tags'] = ['iccv', 'static'] + +config['cond_ae']['upscale_output'] = False +config['pretrained_model'] = '' + + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_static': (config['smpl_res'], 3,), + 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } \ No newline at end of file diff --git a/configs/iccv/config_ae_static_cape_f.py b/configs/iccv/config_ae_static_cape_f.py new file mode 100644 index 0000000..c46ae08 --- /dev/null +++ b/configs/iccv/config_ae_static_cape_f.py @@ -0,0 +1,51 @@ +config = dict() + + +config['batch_size'] = 4 +config['train_dir'] = '/home/workspace/local-data/cape_processed/train/female' +config['valid_dir'] = '/home/workspace/local-data/cape_processed/test/female' +config['test_dir'] = '/home/workspace/local-data/cape_processed/test/female' +config['use_filled'] = False +config['resolution'] = 512 +config['is_skirt'] = False +config['dataset_in_memory'] = True +config['is_cape'] = True +config['remove_global_orientation'] = True + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['latent_dim'] = 128 + +config['bottleneck_scale'] = 2 + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 8 * config['bottleneck_scale'] +config['cond_ae']['encoder_depths'] = [3, 3, 3, 27, 3] +config['cond_ae']['encoder_dims'] = [8, 16, 32, 64, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_depths'] = config['cond_ae']['encoder_depths'] +config['cond_ae']['decoder_dims'] = config['cond_ae']['encoder_dims'] +config['cond_ae']['activation'] = 'tanh' + + +config['gpu'] = '5' +config['lr'] = 0.0005 +config['name'] = 'static_iccv_1_cape_f' +config['notes'] = ' ' +config['tags'] = ['iccv', 'static', 'cape_f'] + +config['cond_ae']['upscale_output'] = False +config['pretrained_model'] = '' + + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_static': (config['smpl_res'], 3,), + 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } \ No newline at end of file diff --git a/configs/iccv/config_ae_static_skirt.py b/configs/iccv/config_ae_static_skirt.py new file mode 100644 index 0000000..4d765df --- /dev/null +++ b/configs/iccv/config_ae_static_skirt.py @@ -0,0 +1,51 @@ +config = dict() + + +config['batch_size'] = 4 +config['train_dir'] = '/home/workspace/data/dataset/local-cache/train_skirt' +config['valid_dir'] = '/home/workspace/local-data/valid_skirt' +config['test_dir'] = '/home/workspace/data/dataset/test_skirt_ready_2' +config['use_filled'] = False +config['resolution'] = 512 +config['is_skirt'] = True +config['dataset_in_memory'] = True +config['is_cape'] = False +config['remove_global_orientation'] = True + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['latent_dim'] = 128 + +config['bottleneck_scale'] = 2 + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 8 * config['bottleneck_scale'] +config['cond_ae']['encoder_depths'] = [3, 3, 3, 27, 3] +config['cond_ae']['encoder_dims'] = [8, 16, 32, 64, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_depths'] = config['cond_ae']['encoder_depths'] +config['cond_ae']['decoder_dims'] = config['cond_ae']['encoder_dims'] +config['cond_ae']['activation'] = 'tanh' + + +config['gpu'] = '3' +config['lr'] = 0.0005 +config['name'] = 'static_iccv_1_skirt' +config['notes'] = ' ' +config['tags'] = ['iccv', 'static'] + +config['cond_ae']['upscale_output'] = False +config['pretrained_model'] = '' + + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_static': (config['smpl_res'], 3,), + 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } \ No newline at end of file diff --git a/custom_utils/custom_utils.py b/custom_utils/custom_utils.py index 77508c1..4aed3a4 100644 --- a/custom_utils/custom_utils.py +++ b/custom_utils/custom_utils.py @@ -402,4 +402,26 @@ def group_inputs_for_levels(batch, config): uv_orig = batch['uv_posed' + res_modifier] levels_input.append([uv_orig, batch['uv_static' + res_modifier], batch['uv_body_posed' + res_modifier], batch['uv_curvature' + res_modifier], batch['uv_mask' + res_modifier], batch['uv_mask']]) conds = [batch['uv_static'], batch['uv_body_posed'], batch['uv_curvature']] - return levels_input, conds \ No newline at end of file + return levels_input, conds + + + +class Accumulator(): + def __init__(self): + self.dict = dict() + + def update(self, dict): + for key in dict.keys(): + if key in self.dict.keys(): + self.dict[key].append(dict[key]) + else: + self.dict[key] = [dict[key]] + + def get(self): + result = dict() + for key in self.dict.keys(): + result[key] = np.mean(self.dict[key]) + return result + + def reset(self): + self.dict = dict() diff --git a/cvae.py b/cvae.py index 59d7c75..f79cdd1 100644 --- a/cvae.py +++ b/cvae.py @@ -45,7 +45,7 @@ from models.cvae_model import CVAENew as CVAE def init_wandb(): - run = wandb.init(project='ablation', name=config['name'], notes=config['notes'], dir='/wandb') + run = wandb.init(project='ablation', name=config['name'], notes=config['notes'], dir='/tmp', tags=config['tags']) artifact = wandb.Artifact('code', type='code') artifact.add_file('cvae.py') artifact.add_file('models/cvae_model.py') @@ -58,7 +58,9 @@ def init_wandb(): artifact.add_file('convnext/models/convnext_tf.py') config_file_names = [key for key in sys.modules.keys() if key.startswith('configs.')] for config_file_name in config_file_names: - artifact.add_file('/'.join(config_file_name.split('.')) + '.py') + file_name = '/'.join(config_file_name.split('.')) + '.py' + if os.path.exists(file_name): + artifact.add_file(file_name) run.log_artifact(artifact) uv2mesh = UV2Mesh(res=256, is_skirt=config['is_skirt'], is_adaptive=False, is_smpl_orig=config['is_cape'])