# Norm of the CNN features for each layer feat_norm = np.array([np.linalg.norm(features[layer]) for layer in layers], dtype='float32') # Use the inverse of the squared norm of the CNN features as the weight for each layer weights = 1. / (feat_norm ** 2) # Normalise the weights such that the sum of the weights = 1 weights = weights / weights.sum() layer_weight = dict(zip(layers, weights)) opts.update({'layer_weight': layer_weight}) # Reconstruction snapshots_dir = os.path.join(save_dir, 'snapshots', 'image-%s' % image_label) recon_img, loss_list = reconstruct_image(features, net, save_intermediate=True, save_intermediate_path=snapshots_dir, **opts) # Save the results # Save the raw reconstructed image save_name = 'recon_img' + '-' + image_label + '.mat' sio.savemat(os.path.join(save_dir, save_name), {'recon_img': recon_img}) # To better display the image, clip pixels with extreme values (0.02% of # pixels with extreme low values and 0.02% of the pixels with extreme high # values). And then normalise the image by mapping the pixel value to be # within [0,255]. save_name = 'recon_img_normalized' + '-' + image_label + '.jpg' PIL.Image.fromarray(normalise_img(clip_extreme_value(recon_img, pct=0.04))).save(os.path.join(save_dir, save_name))
# Weight of each layer in the total loss function num_of_layer = len(layers) feat_norm_list = np.zeros(num_of_layer, dtype='float32') for j, layer in enumerate(layers): # Norm of the CNN features for each layer feat_norm_list[j] = np.linalg.norm(features[layer]) # Use the inverse of the squared norm of the CNN features as the weight for each layer weights = 1. / (feat_norm_list**2) # Normalise the weights such that the sum of the weights = 1 weights = weights / weights.sum() layer_weight = {} for j, layer in enumerate(layers): layer_weight[layer] = weights[j] opts['layer_weight'] = layer_weight # Reconstruction recon_img, loss_list = reconstruct_image(features, net, **opts) # Save the results save_name = 'recon_img' + '_' + subject + '_' + roi + '_' + combination_name + '_Img%04d.mat' % image_label # Save the raw reconstructed image sio.savemat(os.path.join(save_path, save_name), {'recon_img': recon_img}) # To better display the image, clip pixels with extreme values (0.02% of # pixels with extreme low values and 0.02% of the pixels with extreme high # values). And then normalise the image by mapping the pixel value to be # within [0,255]. save_name = 'recon_img' + '_' + subject + '_' + roi + '_' + combination_name + '_Img%04d.jpg' % image_label PIL.Image.fromarray(normalise_img(clip_extreme_value(recon_img, pct=0.04))).save(os.path.join(save_path, save_name))