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