def resnet152(pretrained=False, **kwargs): """Constructs a ResNet-152 model. Args: pretrained (bool): If True, returns a model pre-trained on ImageNet """ model = ResNet(Bottleneck, [3, 8, 36, 3], **kwargs) if pretrained: print("resnet_low_level: Loading image net weights...") utils_train.transfer_partial_weights(model_zoo.load_url(model_urls['resnet152']), model) print("resnet_low_level: Done loading image net weights...") #model.load_state_dict(model_zoo.load_url(model_urls['resnet152'])) return model
def resnet101(pretrained=False, **kwargs): """Constructs a ResNet-101 model. Args: pretrained (bool): If True, returns a model pre-trained on ImageNet """ model = ResNetTwoStream(Bottleneck, [3, 4, 23, 1], **kwargs) if pretrained: print("Loading image net weights...") utils_train.transfer_partial_weights( model_zoo.load_url(model_urls['resnet101']), model) print("Done image net weights...") # model.load_state_dict(model_zoo.load_url(model_urls['resnet101'])) return model
def load_network(config_dict): output_types= config_dict['output_types'] use_billinear_upsampling = 'upsampling_bilinear' in config_dict.keys() and config_dict['upsampling_bilinear'] lower_billinear = 'upsampling_bilinear' in config_dict.keys() and config_dict['upsampling_bilinear'] == 'half' upper_billinear = 'upsampling_bilinear' in config_dict.keys() and config_dict['upsampling_bilinear'] == 'upper' from_latent_hidden_layers = config_dict.get('from_latent_hidden_layers', 0) num_encoding_layers = config_dict.get('num_encoding_layers', 4) num_cameras = 4 if config_dict['active_cameras']: # for H36M it is set to False num_cameras = len(config_dict['active_cameras']) if lower_billinear: use_billinear_upsampling = False network_single = unet_encode3D.unet(dimension_bg=config_dict['latent_bg'], dimension_fg=config_dict['latent_fg'], dimension_3d=config_dict['latent_3d'], feature_scale=config_dict['feature_scale'], shuffle_fg=config_dict['shuffle_fg'], shuffle_3d=config_dict['shuffle_3d'], latent_dropout=config_dict['latent_dropout'], in_resolution=config_dict['inputDimension'], encoderType=config_dict['encoderType'], is_deconv=not use_billinear_upsampling, upper_billinear=upper_billinear, lower_billinear=lower_billinear, from_latent_hidden_layers=from_latent_hidden_layers, n_hidden_to3Dpose=config_dict['n_hidden_to3Dpose'], num_encoding_layers=num_encoding_layers, output_types=output_types, subbatch_size=config_dict['useCamBatches'], implicit_rotation=config_dict['implicit_rotation'], skip_background=config_dict['skip_background'], num_cameras=num_cameras, ) if 'pretrained_network_path' in config_dict.keys(): # automatic if config_dict['pretrained_network_path'] == 'MPII2Dpose': pretrained_network_path = '/cvlabdata1/home/rhodin/code/humanposeannotation/output_save/CVPR18_H36M/TransferLearning2DNetwork/h36m_23d_crop_relative_s1_s5_aug_from2D_2017-08-22_15-52_3d_resnet/models/network_000000.pth' print("Loading weights from MPII2Dpose") pretrained_states = torch.load(pretrained_network_path) utils_train.transfer_partial_weights(pretrained_states, network_single, submodule=0, add_prefix='encoder.') # last argument is to remove "network.single" prefix in saved network else: print("Loading weights from config_dict['pretrained_network_path']") pretrained_network_path = config_dict['pretrained_network_path'] pretrained_states = torch.load(pretrained_network_path) utils_train.transfer_partial_weights(pretrained_states, network_single, submodule=0) # last argument is to remove "network.single" prefix in saved network print("Done loading weights from config_dict['pretrained_network_path']") if 'pretrained_posenet_network_path' in config_dict.keys(): # automatic print("Loading weights from config_dict['pretrained_posenet_network_path']") pretrained_network_path = config_dict['pretrained_posenet_network_path'] pretrained_states = torch.load(pretrained_network_path) utils_train.transfer_partial_weights(pretrained_states, network_single.to_pose, submodule=0) # last argument is to remove "network.single" prefix in saved network print("Done loading weights from config_dict['pretrained_posenet_network_path']") return network_single
def load_network(self, config_dict): output_types = config_dict['output_types'] use_billinear_upsampling = config_dict.get('upsampling_bilinear', False) lower_billinear = 'upsampling_bilinear' in config_dict.keys( ) and config_dict['upsampling_bilinear'] == 'half' upper_billinear = 'upsampling_bilinear' in config_dict.keys( ) and config_dict['upsampling_bilinear'] == 'upper' if lower_billinear: use_billinear_upsampling = False network_single = detect_encode_decode.detect_encode_decode( dimension_bg=config_dict['latent_bg'], dimension_fg=config_dict['latent_fg'], dimension_3d=config_dict['latent_3d'], feature_scale=config_dict['feature_scale'], shuffle_fg=config_dict['shuffle_fg'], shuffle_3d=config_dict['shuffle_3d'], latent_dropout=config_dict['latent_dropout'], in_resolution=config_dict['inputDimension'], is_deconv=not use_billinear_upsampling, upper_billinear=upper_billinear, lower_billinear=lower_billinear, num_encoding_layers=config_dict.get('num_encoding_layers', 4), output_types=output_types, subbatch_size=config_dict['useCamBatches'], implicit_rotation=config_dict['implicit_rotation'], mode=config_dict['training_mode'], spatial_transformer=config_dict.get('spatial_transformer', False), ST_size=config_dict.get('spatial_transformer_num', 1), spatial_transformer_bounds=config_dict.get( 'spatial_transformer_bounds', { 'border_factor': 1, 'min_size': 0.1, 'max_size': 1 }), masked_blending=config_dict.get('masked_blending', True), scale_mask_max_to_1=config_dict.get('scale_mask_max_to_1', True), predict_transformer_depth=config_dict.get( 'predict_transformer_depth', False), normalize_mask_density=config_dict.get('normalize_mask_density', False), match_crops=config_dict.get('match_crops', False), offset_crop=config_dict.get('offset_crop', False), similarity_bandwidth=config_dict.get('similarity_bandwidth', 10), disable_detector=config_dict.get('disable_detector', False), ) if 'pretrained_network_path' in config_dict.keys(): # automatic print( "Loading weights from config_dict['pretrained_network_path']") pretrained_network_path = config_dict['pretrained_network_path'] pretrained_states = torch.load(pretrained_network_path, map_location=device) utils_train.transfer_partial_weights( pretrained_states, network_single, submodule=0 ) # last argument is to remove "network.single" prefix in saved network print( "Done loading weights from config_dict['pretrained_network_path']" ) if 'pretrained_detector_path' in config_dict.keys(): # automatic print( "Loading weights from config_dict['pretrained_detector_path']") pretrained_network_path = config_dict['pretrained_detector_path'] pretrained_states = torch.load(pretrained_network_path, map_location=device) utils_train.transfer_partial_weights( pretrained_states, network_single, submodule=0, prefix='detector' ) # last argument is to remove "network.single" prefix in saved network print( "Done loading weights from config_dict['pretrained_detector_path']" ) return network_single