297 lines
10 KiB
Python
297 lines
10 KiB
Python
from utils.convnext_utils import CNBlockConfig
|
|
|
|
config_1 = dict()
|
|
|
|
config_1['gpu'] = '2'
|
|
config_1['name'] = 'pyr_iccvw_64_128_cape_f_2'
|
|
config_1['notes'] = 'add a scaling to the new level'
|
|
config_1['tags'] = ['pyr', 'iccv', 'torch']
|
|
config_1['script'] = 'scripts/cvae_pyramid.py'
|
|
|
|
config_1['batch_size'] = 4
|
|
config_1['is_skirt'] = False
|
|
config_1['is_cape'] = True
|
|
config_1['device'] = 'cuda'
|
|
|
|
|
|
config_1['use_skinning'] = True # and deshaping
|
|
config_1['use_extra_losses'] = True # edge, collision, 3d mesh
|
|
config_1['use_norm_loss'] = True
|
|
config_1['use_normals'] = True
|
|
|
|
config_1['pretrained_model'] = ''
|
|
config_1['pretrained_model_iteration'] = ''
|
|
|
|
config_1['pyramid'] = dict()
|
|
config_1['pyramid']['resolutions'] = [64, 128]
|
|
config_1['pyramid']['pretrained_pyramid'] = 'checkpoints/iccvw/pyr_iccvw_64_cape_f'
|
|
config_1['pyramid']['pretrained_pyramid_iteration'] = ''
|
|
config_1['pyramid']['final_upscale_enhancer'] = ''
|
|
|
|
config_1['train_dir'] = '/data-local/127_2/cape_processed/train/female'
|
|
config_1['valid_dir'] = '/data-local/127_2/cape_processed/test/female'
|
|
config_1['test_dir'] = '/data-local/127_2/cape_processed/test/female'
|
|
config_1['train_frames'] = None
|
|
config_1['valid_frames'] = None
|
|
config_1['test_frames'] = None
|
|
|
|
config_1['dataset_in_memory'] = False
|
|
config_1['resolution'] = None
|
|
|
|
config_1['smpl_res'] = 14475
|
|
if config_1['is_cape']:
|
|
config_1['smpl_res'] = 3638
|
|
|
|
config_1['lr'] = 0.0001
|
|
config_1['starting_balancing_coeff'] = 0.001
|
|
config_1['balancing_activation_limit'] = 0.012
|
|
config_1['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision
|
|
config_1['avg_garment_path'] = ''
|
|
config_1['bottleneck_scale'] = 2
|
|
|
|
config_1['signature']: set = { 'id',
|
|
'frame_nr',
|
|
'pose_shape',
|
|
'uv_body_posed',
|
|
'mesh_body_posed',
|
|
'mesh_posed',
|
|
'mesh_unposed',
|
|
'uv_unposed',
|
|
'uv_normals',
|
|
'uv_static',
|
|
'mesh_mask',
|
|
'uv_mask',
|
|
}
|
|
|
|
config_1['pyramid']['is_label'] = False
|
|
# config['pyramid']['add_noise'] = False
|
|
# config['pyramid']['noise_amount'] = 0.0
|
|
|
|
config_1['pyramid']['loss_weights'] = [1,1,1,1,1]
|
|
|
|
for res in config_1['pyramid']['resolutions']:
|
|
if res != 512:
|
|
res_modifier = '_' + str(res)
|
|
config_1['signature'].add('uv_body_posed' + res_modifier)
|
|
config_1['signature'].add('uv_unposed' + res_modifier)
|
|
config_1['signature'].add('uv_normals' + res_modifier)
|
|
config_1['signature'].add('uv_static' + res_modifier)
|
|
config_1['signature'].add('uv_mask' + res_modifier)
|
|
|
|
|
|
config_1['static_model'] = 'checkpoints/iccvw/static_iccvw_cape_f'
|
|
config_1['body_model'] = 'checkpoints/iccvw/body_iccvw_cape_f'
|
|
config_1['normals_model'] = 'checkpoints/iccvw/norm_iccvw_cape_f'
|
|
config_1['freeze_encoders'] = True
|
|
|
|
|
|
config_1['pyramid']['levels'] = []
|
|
for res in config_1['pyramid']['resolutions']:
|
|
if res == 512:
|
|
level = dict()
|
|
level['resolution'] = 512
|
|
level['bottleneck_size'] = 64 * config_1['bottleneck_scale']
|
|
level['kernel_size'] = 7
|
|
level['upscale_enhancer'] = ''
|
|
level['input_features'] = 3+3+3+3 if config_1['use_normals'] else 3+3+3
|
|
|
|
block_setting = [
|
|
CNBlockConfig(16, 32, 3),
|
|
CNBlockConfig(32, 64, 3),
|
|
CNBlockConfig(64, 128, 3),
|
|
CNBlockConfig(128, level['bottleneck_size'], 9),
|
|
CNBlockConfig(level['bottleneck_size'], None, 3),
|
|
]
|
|
|
|
block_setting_reverse = [
|
|
CNBlockConfig(level['bottleneck_size'] * 2, 128, 3),
|
|
CNBlockConfig(128, 64, 9),
|
|
CNBlockConfig(64, 32, 3),
|
|
CNBlockConfig(32, 16, 3),
|
|
CNBlockConfig(16, 3, 3),
|
|
]
|
|
|
|
level['encoder_block_settings'] = block_setting
|
|
level['decoder_block_settings'] = block_setting_reverse
|
|
config_1['pyramid']['levels'].append(level)
|
|
elif res == 256:
|
|
level = dict()
|
|
level['resolution'] = 256
|
|
level['kernel_size'] = 5
|
|
level['upscale_enhancer'] = 'checkpoints/iccvw/iccv_256_cape_f'
|
|
level['upscale_enhancer_freeze'] = True
|
|
level['bottleneck_size'] = 64 * config_1['bottleneck_scale']
|
|
level['input_features'] = 3+3+3+3 if config_1['use_normals'] else 3+3+3
|
|
|
|
block_setting = [
|
|
CNBlockConfig(64, 128, 3),
|
|
CNBlockConfig(128, 128, 3),
|
|
CNBlockConfig(128, level['bottleneck_size'], 9),
|
|
CNBlockConfig(level['bottleneck_size'], None, 3),
|
|
]
|
|
|
|
block_setting_reverse = [
|
|
CNBlockConfig(level['bottleneck_size'] * 2, 128, 3),
|
|
CNBlockConfig(128, 128, 9),
|
|
CNBlockConfig(128, 64, 3),
|
|
CNBlockConfig(64, 3, 3),
|
|
]
|
|
|
|
level['encoder_block_settings'] = block_setting
|
|
level['decoder_block_settings'] = block_setting_reverse
|
|
config_1['pyramid']['levels'].append(level)
|
|
elif res == 128:
|
|
level = dict()
|
|
level['resolution'] = 128
|
|
level['kernel_size'] = 5
|
|
level['scaling'] = 0.01
|
|
level['upscale_enhancer'] = 'checkpoints/iccvw/iccv_128_cape_f'
|
|
level['upscale_enhancer_freeze'] = True
|
|
level['bottleneck_size'] = 64 * config_1['bottleneck_scale']
|
|
level['input_features'] = 3+3+3+3 if config_1['use_normals'] else 3+3+3
|
|
|
|
block_setting = [
|
|
CNBlockConfig(64, 128, 9),
|
|
CNBlockConfig(128, level['bottleneck_size'], 9),
|
|
CNBlockConfig(level['bottleneck_size'], None, 9),
|
|
]
|
|
|
|
block_setting_reverse = [
|
|
CNBlockConfig(level['bottleneck_size'] * 2, 128, 9),
|
|
CNBlockConfig(128, 64, 9),
|
|
CNBlockConfig(64, 3, 9),
|
|
]
|
|
|
|
level['encoder_block_settings'] = block_setting
|
|
level['decoder_block_settings'] = block_setting_reverse
|
|
config_1['pyramid']['levels'].append(level)
|
|
elif res == 64:
|
|
level = dict()
|
|
level['resolution'] = 64
|
|
level['kernel_size'] = 3
|
|
level['upscale_enhancer'] = 'checkpoints/iccvw/iccv_64_cape_f'
|
|
level['upscale_enhancer_freeze'] = True
|
|
level['bottleneck_size'] = 64 * config_1['bottleneck_scale']
|
|
level['input_features'] = 3+3+3+3 if config_1['use_normals'] else 3+3+3
|
|
|
|
block_setting = [
|
|
CNBlockConfig(64, level['bottleneck_size'], 9),
|
|
CNBlockConfig(level['bottleneck_size'], None, 9),
|
|
]
|
|
|
|
block_setting_reverse = [
|
|
CNBlockConfig(level['bottleneck_size'] * 2, 64, 9),
|
|
CNBlockConfig(64, 3, 9),
|
|
]
|
|
|
|
level['encoder_block_settings'] = block_setting
|
|
level['decoder_block_settings'] = block_setting_reverse
|
|
config_1['pyramid']['levels'].append(level)
|
|
elif res == 32:
|
|
level = dict()
|
|
level['resolution'] = 32
|
|
level['kernel_size'] = 3
|
|
level['upscale_enhancer'] = 'checkpoints/iccvw/iccv_32'
|
|
level['upscale_enhancer_freeze'] = True
|
|
level['bottleneck_size'] = 64 * config_1['bottleneck_scale']
|
|
level['input_features'] = 3+3+3+3 if config_1['use_normals'] else 3+3+3
|
|
|
|
block_setting = [
|
|
CNBlockConfig(level['bottleneck_size'], None, 16),
|
|
]
|
|
|
|
block_setting_reverse = [
|
|
CNBlockConfig(level['bottleneck_size'] * 2, 3, 16),
|
|
]
|
|
|
|
level['encoder_block_settings'] = block_setting
|
|
level['decoder_block_settings'] = block_setting_reverse
|
|
config_1['pyramid']['levels'].append(level)
|
|
else:
|
|
raise NotImplementedError
|
|
|
|
|
|
####################### cond_ae_norm ############################
|
|
config_1['cond_ae_norm'] = dict()
|
|
config_1['cond_ae_norm']['device'] = config_1['device']
|
|
config_1['cond_ae_norm']['is_label'] = False
|
|
# config['cond_ae_norm']['latent_dim'] = config['latent_dim']
|
|
config_1['cond_ae_norm']['kernel_size'] = 7
|
|
config_1['cond_ae_norm']['bottleneck_size'] = 40 * config_1['bottleneck_scale']
|
|
|
|
block_setting = [
|
|
CNBlockConfig(16, 32, 3),
|
|
CNBlockConfig(32, 64, 3),
|
|
CNBlockConfig(64, 128, 9),
|
|
CNBlockConfig(128, config_1['cond_ae_norm']['bottleneck_size'], 9),
|
|
CNBlockConfig(config_1['cond_ae_norm']['bottleneck_size'], None, 3),
|
|
]
|
|
|
|
block_setting_reverse = [
|
|
CNBlockConfig(config_1['cond_ae_norm']['bottleneck_size'], 128, 3),
|
|
CNBlockConfig(128, 64, 9),
|
|
CNBlockConfig(64, 32, 9),
|
|
CNBlockConfig(32, 16, 3),
|
|
CNBlockConfig(16, 3, 3),
|
|
]
|
|
|
|
config_1['cond_ae_norm']['encoder_block_settings'] = block_setting
|
|
config_1['cond_ae_norm']['decoder_block_settings'] = block_setting_reverse
|
|
config_1['cond_ae_norm']['activation'] = 'tanh'
|
|
|
|
|
|
####################### cond_ae_body ############################
|
|
config_1['cond_ae_body'] = dict()
|
|
config_1['cond_ae_body']['device'] = config_1['device']
|
|
config_1['cond_ae_body']['is_label'] = False
|
|
# config['cond_ae_body']['latent_dim'] = config['latent_dim']
|
|
config_1['cond_ae_body']['kernel_size'] = 7
|
|
config_1['cond_ae_body']['bottleneck_size'] = 16 * config_1['bottleneck_scale']
|
|
|
|
block_setting = [
|
|
CNBlockConfig(16, 32, 3),
|
|
CNBlockConfig(32, 64, 3),
|
|
CNBlockConfig(64, 128, 9),
|
|
CNBlockConfig(128, config_1['cond_ae_body']['bottleneck_size'], 9),
|
|
CNBlockConfig(config_1['cond_ae_body']['bottleneck_size'], None, 3),
|
|
]
|
|
|
|
block_setting_reverse = [
|
|
CNBlockConfig(config_1['cond_ae_body']['bottleneck_size'], 128, 3),
|
|
CNBlockConfig(128, 64, 9),
|
|
CNBlockConfig(64, 32, 9),
|
|
CNBlockConfig(32, 16, 3),
|
|
CNBlockConfig(16, 3, 3),
|
|
]
|
|
|
|
config_1['cond_ae_body']['encoder_block_settings'] = block_setting
|
|
config_1['cond_ae_body']['decoder_block_settings'] = block_setting_reverse
|
|
config_1['cond_ae_body']['activation'] = 'tanh'
|
|
|
|
####################### cond_ae_static ############################
|
|
config_1['cond_ae_static'] = dict()
|
|
config_1['cond_ae_static']['device'] = config_1['device']
|
|
config_1['cond_ae_static']['is_label'] = False
|
|
# config['cond_ae_static']['latent_dim'] = config['latent_dim']
|
|
config_1['cond_ae_static']['kernel_size'] = 7
|
|
config_1['cond_ae_static']['bottleneck_size'] = 8 * config_1['bottleneck_scale']
|
|
|
|
block_setting = [
|
|
CNBlockConfig(8, 16, 3),
|
|
CNBlockConfig(16, 32, 3),
|
|
CNBlockConfig(32, 64, 3),
|
|
CNBlockConfig(64, config_1['cond_ae_static']['bottleneck_size'], 9),
|
|
CNBlockConfig(config_1['cond_ae_static']['bottleneck_size'], None, 3),
|
|
]
|
|
|
|
block_setting_reverse = [
|
|
CNBlockConfig(config_1['cond_ae_static']['bottleneck_size'], 64, 3),
|
|
CNBlockConfig(64, 32, 9),
|
|
CNBlockConfig(32, 16, 3),
|
|
CNBlockConfig(16, 8, 3),
|
|
CNBlockConfig(8, 3, 3),
|
|
]
|
|
|
|
config_1['cond_ae_static']['encoder_block_settings'] = block_setting
|
|
config_1['cond_ae_static']['decoder_block_settings'] = block_setting_reverse
|
|
config_1['cond_ae_static']['activation'] = 'tanh' |