'channel': None, # A python dictionary consists of masks for the traget CNN features, # arranged in pairs of layer name (key) and mask (value); the mask selects # units for each layer to be used in the loss function (1: using the uint; # 0: excluding the unit); mask can be 3D or 2D numpy array; use all the # units if some layer not in the dictionary; setting to None for using all #units for all layers; 'mask': None, } # Save the optional parameters save_name = 'options.pkl' with open(os.path.join(save_path, save_name), 'w') as f: pickle.dump(opts, f) # Reconstruction recon_img, loss_list = reconstruct_image(features, net, net_gen, **opts) # Save the results ------------------------------------------------------------ save_name = 'recon_img' + '.mat' sio.savemat(os.path.join(save_path, save_name), {'recon_img': recon_img}) save_name = 'recon_img' + '.jpg' PIL.Image.fromarray(normalise_img(recon_img)).save( os.path.join(save_path, save_name)) save_name = 'loss_list' + '.mat' sio.savemat(os.path.join(save_path, save_name), {'loss_list': loss_list})
# 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)) print('Done')
# for using all channels for all layers; 'channel': None, # A python dictionary consists of masks for the traget CNN features, # arranged in pairs of layer name (key) and mask (value); the mask selects # units for each layer to be used in the loss function (1: using the uint; # 0: excluding the unit); mask can be 3D or 2D numpy array; use all the # units if some layer not in the dictionary; setting to None for using all #units for all layers; 'mask': None, } # Save the optional parameters save_name = 'options.pkl' with open(os.path.join(save_path, save_name), 'w') as f: pickle.dump(opts, f) # Reconstruction recon_img, loss_list = reconstruct_image(features, net, **opts) # Save the results ------------------------------------------------------------ save_name = 'recon_img' + '.mat' sio.savemat(os.path.join(save_path, save_name), {'recon_img': recon_img}) save_name = 'recon_img' + '.jpg' PIL.Image.fromarray(normalise_img(recon_img)).save(os.path.join(save_path, save_name)) save_name = 'loss_list' + '.mat' sio.savemat(os.path.join(save_path, save_name), {'loss_list': loss_list})