├── .gitignore ├── 1_reconstruct_natural_image.py ├── 2_reconstruct_natural_image_without_DGN.py ├── 3_reconstruct_natural_image_different_combinations_of_CNN_layers.py ├── 4_reconstruct_shape_image.py ├── 5_reconstruct_shape_image_different_ROI.py ├── 6_reconstruct_alphabet_image.py ├── 7_reconstruct_imagined_image.py ├── README.md ├── data ├── .gitignore ├── README.md ├── act_range │ ├── 1x │ │ ├── conv3.txt │ │ ├── conv5.txt │ │ ├── fc6.txt │ │ ├── fc7.txt │ │ ├── fc8.txt │ │ └── pool5.txt │ ├── 2x │ │ ├── conv3.txt │ │ ├── conv5.txt │ │ ├── fc6.txt │ │ ├── fc7.txt │ │ ├── fc8.txt │ │ └── pool5.txt │ ├── 3x │ │ ├── conv1.txt │ │ ├── conv2.txt │ │ ├── conv3.txt │ │ ├── conv4.txt │ │ ├── conv5.txt │ │ ├── fc6.txt │ │ ├── fc7.txt │ │ └── fc8.txt │ └── README.md ├── downloaddata.sh ├── file_list.csv ├── fmri │ ├── README.md │ └── download.sh └── orig_img.jpg └── net ├── .gitignore ├── README.md ├── VGG_ILSVRC_19_layers ├── VGG_ILSVRC_19_layers.prototxt ├── VGG_ILSVRC_19_layers_lrelu_avePool.prototxt └── readme.md ├── downloadnet.sh └── generator_for_inverting_fc7 ├── README.md └── generator.prototxt /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | ._* 3 | 4 | *.pyc 5 | 6 | result*/ 7 | results*/ 8 | tmp/ 9 | 10 | icnn 11 | -------------------------------------------------------------------------------- /1_reconstruct_natural_image.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Reconstruct natural images from the CNN features decoded from the brain with deep generator network (DGN). 3 | 4 | - ROI: VC 5 | - Layers: all conv and fc layers 6 | - Reconstruction algorithm: DGN + GD 7 | ''' 8 | 9 | 10 | import os 11 | import pickle 12 | from datetime import datetime 13 | from itertools import product 14 | 15 | import caffe 16 | import numpy as np 17 | import PIL.Image 18 | import scipy.io as sio 19 | 20 | from icnn.icnn_dgn_gd import reconstruct_image 21 | from icnn.utils import clip_extreme_value, estimate_cnn_feat_std, normalise_img 22 | 23 | 24 | # Settings ################################################################### 25 | 26 | # GPU usage settings 27 | caffe.set_mode_gpu() 28 | caffe.set_device(0) 29 | 30 | # Decoded features settings 31 | decoded_features_dir = './data/decodedfeatures' 32 | decode_feature_filename = lambda net, layer, subject, roi, image_type, image_label: os.path.join(decoded_features_dir, image_type, net, layer, subject, roi, 33 | '%s-%s-%s-%s-%s-%s.mat' % (image_type, net, layer, subject, roi, image_label)) 34 | 35 | # Data settings 36 | results_dir = './results' 37 | 38 | subjects_list = ['S1', 'S2', 'S3'] 39 | 40 | rois_list = ['VC'] 41 | 42 | network = 'VGG19' 43 | 44 | # Images in figure 2 45 | image_type = 'natural' 46 | 47 | image_label_list = ['Img0009', 48 | 'Img0002', 49 | 'Img0001', 50 | 'Img0005', 51 | 'Img0036', 52 | 'Img0045', 53 | 'Img0031', 54 | 'Img0043'] 55 | 56 | n_iteration = 200 57 | 58 | 59 | # Main ####################################################################### 60 | 61 | # Initialize CNN ------------------------------------------------------------- 62 | 63 | # Average image of ImageNet 64 | img_mean_file = './data/ilsvrc_2012_mean.npy' 65 | img_mean = np.load(img_mean_file) 66 | img_mean = np.float32([img_mean[0].mean(), img_mean[1].mean(), img_mean[2].mean()]) 67 | 68 | # CNN model 69 | model_file = './net/VGG_ILSVRC_19_layers/VGG_ILSVRC_19_layers.caffemodel' 70 | prototxt_file = './net/VGG_ILSVRC_19_layers/VGG_ILSVRC_19_layers.prototxt' 71 | channel_swap = (2, 1, 0) 72 | net = caffe.Classifier(prototxt_file, model_file, mean=img_mean, channel_swap=channel_swap) 73 | h, w = net.blobs['data'].data.shape[-2:] 74 | net.blobs['data'].reshape(1, 3, h, w) 75 | 76 | # Generator network 77 | model_file = './net/generator_for_inverting_fc7/generator.caffemodel' 78 | prototxt_file = './net/generator_for_inverting_fc7/generator.prototxt' 79 | net_gen = caffe.Net(prototxt_file, model_file, caffe.TEST) 80 | input_layer_gen = 'feat' # Input layer for generator net 81 | output_layer_gen = 'generated' # Output layer for generator net 82 | 83 | # Feature size for input layer of the generator net 84 | feat_size_gen = net_gen.blobs[input_layer_gen].data.shape[1:] 85 | num_of_unit = net_gen.blobs[input_layer_gen].data[0].size 86 | 87 | # Upper bound for input layer of the generator net 88 | bound_file = './data/act_range/3x/fc7.txt' 89 | upper_bound = np.loadtxt(bound_file, delimiter=' ', usecols=np.arange(0, num_of_unit), unpack=True) 90 | upper_bound = upper_bound.reshape(feat_size_gen) 91 | 92 | # Initial features for the input layer of the generator (we use a 0 vector as initial features) 93 | initial_gen_feat = np.zeros_like(net_gen.blobs[input_layer_gen].data[0]) 94 | 95 | # Feature SD estimated from true CNN features of 10000 images 96 | feat_std_file = './data/estimated_vgg19_cnn_feat_std.mat' 97 | feat_std0 = sio.loadmat(feat_std_file) 98 | 99 | # CNN Layers (all conv and fc layers) 100 | layers = [layer for layer in net.blobs.keys() if 'conv' in layer or 'fc' in layer] 101 | 102 | # Setup results directory ---------------------------------------------------- 103 | 104 | save_dir_root = os.path.join(results_dir, os.path.splitext(__file__)[0]) 105 | if not os.path.exists(save_dir_root): 106 | os.makedirs(save_dir_root) 107 | 108 | # Set reconstruction options ------------------------------------------------- 109 | 110 | opts = { 111 | # The loss function type: {'l2','l1','inner','gram'} 112 | 'loss_type': 'l2', 113 | 114 | # The total number of iterations for gradient descend 115 | 'iter_n': n_iteration, 116 | 117 | # Learning rate 118 | 'lr_start': 2., 119 | 'lr_end': 1e-10, 120 | 121 | # Gradient with momentum 122 | 'momentum_start': 0.9, 123 | 'momentum_end': 0.9, 124 | 125 | # Decay for the features of the input layer of the generator after each 126 | # iteration 127 | 'decay_start': 0.01, 128 | 'decay_end': 0.01, 129 | 130 | # Name of the input layer of the generator (str) 131 | 'input_layer_gen': input_layer_gen, 132 | 133 | # Name of the output layer of the generator (str) 134 | 'output_layer_gen': output_layer_gen, 135 | 136 | # Upper and lower boundary for the input layer of the generator 137 | 'feat_upper_bound': upper_bound, 138 | 'feat_lower_bound': 0., 139 | 140 | # The initial features of the input layer of the generator (setting to 141 | # None will use random noise as initial features) 142 | 'initial_gen_feat': initial_gen_feat, 143 | 144 | # Display the information on the terminal for every n iterations 145 | 'disp_every': 1 146 | } 147 | 148 | # Save the optional parameters 149 | with open(os.path.join(save_dir_root, 'options.pkl'), 'w') as f: 150 | pickle.dump(opts, f) 151 | 152 | # Reconstrucion -------------------------------------------------------------- 153 | 154 | for subject, roi, image_label in product(subjects_list, rois_list, image_label_list): 155 | 156 | print('') 157 | print('Subject: ' + subject) 158 | print('ROI: ' + roi) 159 | print('Image label: ' + image_label) 160 | print('') 161 | 162 | save_dir = os.path.join(save_dir_root, subject, roi) 163 | if not os.path.exists(save_dir): 164 | os.makedirs(save_dir) 165 | 166 | # Load the decoded CNN features 167 | features = {} 168 | for layer in layers: 169 | # The file full name depends on the data structure for decoded CNN features 170 | file_name = decode_feature_filename(network, layer, subject, roi, image_type, image_label) 171 | feat = sio.loadmat(file_name)['feat'] 172 | if 'fc' in layer: 173 | feat = feat.reshape(feat.size) 174 | 175 | # Correct the norm of the decoded CNN features 176 | feat_std = estimate_cnn_feat_std(feat) 177 | feat = (feat / feat_std) * feat_std0[layer] 178 | 179 | features.update({layer: feat}) 180 | 181 | # Weight of each layer in the total loss function 182 | 183 | # Norm of the CNN features for each layer 184 | feat_norm = np.array([np.linalg.norm(features[layer]) for layer in layers], dtype='float32') 185 | 186 | # Use the inverse of the squared norm of the CNN features as the weight for each layer 187 | weights = 1. / (feat_norm ** 2) 188 | 189 | # Normalise the weights such that the sum of the weights = 1 190 | weights = weights / weights.sum() 191 | layer_weight = dict(zip(layers, weights)) 192 | 193 | opts.update({'layer_weight': layer_weight}) 194 | 195 | # Reconstruction 196 | snapshots_dir = os.path.join(save_dir, 'snapshots', 'image-%s' % image_label) 197 | recon_img, loss_list = reconstruct_image(features, net, net_gen, 198 | save_intermediate=True, 199 | save_intermediate_path=snapshots_dir, 200 | **opts) 201 | 202 | # Save the results 203 | 204 | # Save the raw reconstructed image 205 | save_name = 'recon_img' + '-' + image_label + '.mat' 206 | sio.savemat(os.path.join(save_dir, save_name), {'recon_img': recon_img}) 207 | 208 | # To better display the image, clip pixels with extreme values (0.02% of 209 | # pixels with extreme low values and 0.02% of the pixels with extreme high 210 | # values). And then normalise the image by mapping the pixel value to be 211 | # within [0,255]. 212 | save_name = 'recon_img_normalized' + '-' + image_label + '.jpg' 213 | PIL.Image.fromarray(normalise_img(clip_extreme_value(recon_img, pct=4))).save(os.path.join(save_dir, save_name)) 214 | 215 | print('Done') 216 | -------------------------------------------------------------------------------- /2_reconstruct_natural_image_without_DGN.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Reconstruct natural images from CNN features decoded from the brain without deep generator network (DGN). 3 | 4 | - ROI: VC 5 | - Layers: all conv and fc layers 6 | - Reconstruction algorithm: Without DGN + LBFGS 7 | ''' 8 | 9 | 10 | import os 11 | import pickle 12 | from datetime import datetime 13 | from itertools import product 14 | 15 | import caffe 16 | import numpy as np 17 | import PIL.Image 18 | import scipy.io as sio 19 | 20 | from icnn.icnn_lbfgs import reconstruct_image # Without DGN 21 | from icnn.utils import clip_extreme_value, estimate_cnn_feat_std, normalise_img 22 | 23 | 24 | # Settings ################################################################### 25 | 26 | # GPU usage settings 27 | caffe.set_mode_gpu() 28 | caffe.set_device(0) 29 | 30 | # Decoded features settings 31 | decoded_features_dir = './data/decodedfeatures' 32 | decode_feature_filename = lambda net, layer, subject, roi, image_type, image_label: os.path.join(decoded_features_dir, image_type, net, layer, subject, roi, 33 | '%s-%s-%s-%s-%s-%s.mat' % (image_type, net, layer, subject, roi, image_label)) 34 | 35 | # Data settings 36 | results_dir = './results' 37 | 38 | subjects_list = ['S1', 'S2', 'S3'] 39 | 40 | rois_list = ['VC'] 41 | 42 | network = 'VGG19' 43 | 44 | # Images in figure 3A 45 | image_type = 'natural' 46 | image_label_list = ['Img0002', 47 | 'Img0011', 48 | 'Img0045', 49 | 'Img0048'] 50 | 51 | max_iteration = 200 52 | 53 | 54 | # Main ####################################################################### 55 | 56 | # Initialize CNN ------------------------------------------------------------- 57 | 58 | # Average image of ImageNet 59 | img_mean_file = './data/ilsvrc_2012_mean.npy' 60 | img_mean = np.load(img_mean_file) 61 | img_mean = np.float32([img_mean[0].mean(), img_mean[1].mean(), img_mean[2].mean()]) 62 | 63 | # CNN model 64 | model_file = './net/VGG_ILSVRC_19_layers/VGG_ILSVRC_19_layers.caffemodel' 65 | prototxt_file = './net/VGG_ILSVRC_19_layers/VGG_ILSVRC_19_layers.prototxt' 66 | channel_swap = (2, 1, 0) 67 | net = caffe.Classifier(prototxt_file, model_file, mean=img_mean, channel_swap=channel_swap) 68 | h, w = net.blobs['data'].data.shape[-2:] 69 | net.blobs['data'].reshape(1, 3, h, w) 70 | 71 | # Initial image for the optimization (here we use the mean of ilsvrc_2012_mean.npy as RGB values) 72 | initial_image = np.zeros((h, w, 3), dtype='float32') 73 | initial_image[:, :, 0] = img_mean[2].copy() 74 | initial_image[:, :, 1] = img_mean[1].copy() 75 | initial_image[:, :, 2] = img_mean[0].copy() 76 | 77 | # Feature SD estimated from true CNN features of 10000 images 78 | feat_std_file = './data/estimated_vgg19_cnn_feat_std.mat' 79 | feat_std0 = sio.loadmat(feat_std_file) 80 | 81 | # CNN Layers (all conv and fc layers) 82 | layers = [layer for layer in net.blobs.keys() if 'conv' in layer or 'fc' in layer] 83 | 84 | # Setup results directory ---------------------------------------------------- 85 | 86 | save_dir_root = os.path.join(results_dir, os.path.splitext(__file__)[0]) 87 | if not os.path.exists(save_dir_root): 88 | os.makedirs(save_dir_root) 89 | 90 | # Set reconstruction options ------------------------------------------------- 91 | 92 | opts = { 93 | # The loss function type: {'l2','l1','inner','gram'} 94 | 'loss_type': 'l2', 95 | 96 | # The maximum number of iterations 97 | 'maxiter': max_iteration, 98 | 99 | # The initial image for the optimization (setting to None will use random noise as initial image) 100 | 'initial_image': initial_image, 101 | 102 | # Display the information on the terminal or not 103 | 'disp': True 104 | } 105 | 106 | # Save the optional parameters 107 | with open(os.path.join(save_dir_root, 'options.pkl'), 'w') as f: 108 | pickle.dump(opts, f) 109 | 110 | # Reconstrucion -------------------------------------------------------------- 111 | 112 | for subject, roi, image_label in product(subjects_list, rois_list, image_label_list): 113 | 114 | print('') 115 | print('Subject: ' + subject) 116 | print('ROI: ' + roi) 117 | print('Image label: ' + image_label) 118 | print('') 119 | 120 | save_dir = os.path.join(save_dir_root, subject, roi) 121 | if not os.path.exists(save_dir): 122 | os.makedirs(save_dir) 123 | 124 | # Load the decoded CNN features 125 | features = {} 126 | for layer in layers: 127 | # The file full name depends on the data structure for decoded CNN features 128 | file_name = decode_feature_filename(network, layer, subject, roi, image_type, image_label) 129 | feat = sio.loadmat(file_name)['feat'] 130 | if 'fc' in layer: 131 | feat = feat.reshape(feat.size) 132 | 133 | # Correct the norm of the decoded CNN features 134 | feat_std = estimate_cnn_feat_std(feat) 135 | feat = (feat / feat_std) * feat_std0[layer] 136 | 137 | features.update({layer: feat}) 138 | 139 | # Weight of each layer in the total loss function 140 | 141 | # Norm of the CNN features for each layer 142 | feat_norm = np.array([np.linalg.norm(features[layer]) for layer in layers], dtype='float32') 143 | 144 | # Use the inverse of the squared norm of the CNN features as the weight for each layer 145 | weights = 1. / (feat_norm ** 2) 146 | 147 | # Normalise the weights such that the sum of the weights = 1 148 | weights = weights / weights.sum() 149 | layer_weight = dict(zip(layers, weights)) 150 | 151 | opts.update({'layer_weight': layer_weight}) 152 | 153 | # Reconstruction 154 | snapshots_dir = os.path.join(save_dir, 'snapshots', 'image-%s' % image_label) 155 | recon_img, loss_list = reconstruct_image(features, net, 156 | save_intermediate=True, 157 | save_intermediate_path=snapshots_dir, 158 | **opts) 159 | 160 | # Save the results 161 | 162 | # Save the raw reconstructed image 163 | save_name = 'recon_img' + '-' + image_label + '.mat' 164 | sio.savemat(os.path.join(save_dir, save_name), {'recon_img': recon_img}) 165 | 166 | # To better display the image, clip pixels with extreme values (0.02% of 167 | # pixels with extreme low values and 0.02% of the pixels with extreme high 168 | # values). And then normalise the image by mapping the pixel value to be 169 | # within [0,255]. 170 | save_name = 'recon_img_normalized' + '-' + image_label + '.jpg' 171 | PIL.Image.fromarray(normalise_img(clip_extreme_value(recon_img, pct=4))).save(os.path.join(save_dir, save_name)) 172 | 173 | print('Done') 174 | -------------------------------------------------------------------------------- /3_reconstruct_natural_image_different_combinations_of_CNN_layers.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Reconstruct natural images from CNN features decoded from the brain with different combinations of CNN layers. 3 | 4 | - ROI: VC 5 | - Layers: different combinations of CNN layers 6 | - Reconstruction algorithm: Without DGN + LBFGS 7 | ''' 8 | 9 | 10 | import os 11 | import pickle 12 | from datetime import datetime 13 | from itertools import product 14 | 15 | import caffe 16 | import numpy as np 17 | import PIL.Image 18 | import scipy.io as sio 19 | 20 | from icnn.icnn_lbfgs import reconstruct_image # Without DGN 21 | from icnn.utils import clip_extreme_value, estimate_cnn_feat_std, normalise_img 22 | 23 | 24 | # Settings ################################################################### 25 | 26 | # GPU usage settings 27 | caffe.set_mode_gpu() 28 | caffe.set_device(0) 29 | 30 | # Decoded features settings 31 | decoded_features_dir = './data/decodedfeatures' 32 | decode_feature_filename = lambda net, layer, subject, roi, image_type, image_label: os.path.join(decoded_features_dir, image_type, net, layer, subject, roi, 33 | '%s-%s-%s-%s-%s-%s.mat' % (image_type, net, layer, subject, roi, image_label)) 34 | 35 | # Data settings 36 | results_dir = './results' 37 | 38 | subjects_list = ['S1', 'S2', 'S3'] 39 | 40 | rois_list = ['VC'] 41 | 42 | network = 'VGG19' 43 | 44 | # DNN layer combinations 45 | layers_sets = {'layers-1to1' : ['conv1_1', 'conv1_2'], 46 | 'layers-1to3' : ['conv1_1', 'conv1_2', 'conv2_1', 'conv2_2', 47 | 'conv3_1', 'conv3_2', 'conv3_3', 'conv3_4'], 48 | 'layers-1to5' : ['conv1_1', 'conv1_2', 'conv2_1', 'conv2_2', 49 | 'conv3_1', 'conv3_2', 'conv3_3', 'conv3_4', 50 | 'conv4_1', 'conv4_2', 'conv4_3', 'conv4_4', 51 | 'conv5_1', 'conv5_2', 'conv5_3', 'conv5_4'], 52 | 'layers-1to7' : ['conv1_1', 'conv1_2', 'conv2_1', 'conv2_2', 53 | 'conv3_1', 'conv3_2', 'conv3_3', 'conv3_4', 54 | 'conv4_1', 'conv4_2', 'conv4_3', 'conv4_4', 55 | 'conv5_1', 'conv5_2', 'conv5_3', 'conv5_4', 56 | 'fc6', 'fc7']} 57 | 58 | # Images in figure 4 59 | image_type = 'natural' 60 | image_label_list = ['Img0016', 61 | 'Img0036', 62 | 'Img0042'] 63 | 64 | max_iteration = 200 65 | 66 | 67 | # Main ####################################################################### 68 | 69 | # Initialize CNN ------------------------------------------------------------- 70 | 71 | # Average image of ImageNet 72 | img_mean_file = './data/ilsvrc_2012_mean.npy' 73 | img_mean = np.load(img_mean_file) 74 | img_mean = np.float32([img_mean[0].mean(), img_mean[1].mean(), img_mean[2].mean()]) 75 | 76 | # CNN model 77 | model_file = './net/VGG_ILSVRC_19_layers/VGG_ILSVRC_19_layers.caffemodel' 78 | prototxt_file = './net/VGG_ILSVRC_19_layers/VGG_ILSVRC_19_layers.prototxt' 79 | channel_swap = (2, 1, 0) 80 | net = caffe.Classifier(prototxt_file, model_file, mean=img_mean, channel_swap=channel_swap) 81 | h, w = net.blobs['data'].data.shape[-2:] 82 | net.blobs['data'].reshape(1, 3, h, w) 83 | 84 | # Initial image for the optimization (here we use the mean of ilsvrc_2012_mean.npy as RGB values) 85 | initial_image = np.zeros((h, w, 3), dtype='float32') 86 | initial_image[:, :, 0] = img_mean[2].copy() 87 | initial_image[:, :, 1] = img_mean[1].copy() 88 | initial_image[:, :, 2] = img_mean[0].copy() 89 | 90 | # Feature SD estimated from true CNN features of 10000 images 91 | feat_std_file = './data/estimated_vgg19_cnn_feat_std.mat' 92 | feat_std0 = sio.loadmat(feat_std_file) 93 | 94 | # CNN Layers (all conv and fc layers) 95 | #layers = [layer for layer in net.blobs.keys() if 'conv' in layer or 'fc' in layer] 96 | 97 | # Setup results directory ---------------------------------------------------- 98 | 99 | save_dir_root = os.path.join(results_dir, os.path.splitext(__file__)[0]) 100 | if not os.path.exists(save_dir_root): 101 | os.makedirs(save_dir_root) 102 | 103 | # Set reconstruction options ------------------------------------------------- 104 | 105 | opts = { 106 | # The loss function type: {'l2','l1','inner','gram'} 107 | 'loss_type': 'l2', 108 | 109 | # The maximum number of iterations 110 | 'maxiter': max_iteration, 111 | 112 | # The initial image for the optimization (setting to None will use random noise as initial image) 113 | 'initial_image': initial_image, 114 | 115 | # Display the information on the terminal or not 116 | 'disp': True 117 | } 118 | 119 | # Save the optional parameters 120 | with open(os.path.join(save_dir_root, 'options.pkl'), 'w') as f: 121 | pickle.dump(opts, f) 122 | 123 | # Reconstrucion -------------------------------------------------------------- 124 | 125 | for subject, roi, image_label, (layers_set, layers) in product(subjects_list, rois_list, image_label_list, layers_sets.items()): 126 | 127 | print('') 128 | print('Subject: ' + subject) 129 | print('ROI: ' + roi) 130 | print('Image label: ' + image_label) 131 | print('') 132 | 133 | save_dir = os.path.join(save_dir_root, layers_set, subject, roi) 134 | if not os.path.exists(save_dir): 135 | os.makedirs(save_dir) 136 | 137 | # Load the decoded CNN features 138 | features = {} 139 | for layer in layers: 140 | # The file full name depends on the data structure for decoded CNN features 141 | file_name = decode_feature_filename(network, layer, subject, roi, image_type, image_label) 142 | feat = sio.loadmat(file_name)['feat'] 143 | if 'fc' in layer: 144 | feat = feat.reshape(feat.size) 145 | 146 | # Correct the norm of the decoded CNN features 147 | feat_std = estimate_cnn_feat_std(feat) 148 | feat = (feat / feat_std) * feat_std0[layer] 149 | 150 | features.update({layer: feat}) 151 | 152 | # Weight of each layer in the total loss function 153 | 154 | # Norm of the CNN features for each layer 155 | feat_norm = np.array([np.linalg.norm(features[layer]) for layer in layers], dtype='float32') 156 | 157 | # Use the inverse of the squared norm of the CNN features as the weight for each layer 158 | weights = 1. / (feat_norm ** 2) 159 | 160 | # Normalise the weights such that the sum of the weights = 1 161 | weights = weights / weights.sum() 162 | layer_weight = dict(zip(layers, weights)) 163 | 164 | opts.update({'layer_weight': layer_weight}) 165 | 166 | # Reconstruction 167 | snapshots_dir = os.path.join(save_dir, 'snapshots', 'image-%s' % image_label) 168 | recon_img, loss_list = reconstruct_image(features, net, 169 | save_intermediate=True, 170 | save_intermediate_path=snapshots_dir, 171 | **opts) 172 | 173 | # Save the results 174 | 175 | # Save the raw reconstructed image 176 | save_name = 'recon_img' + '-' + image_label + '.mat' 177 | sio.savemat(os.path.join(save_dir, save_name), {'recon_img': recon_img}) 178 | 179 | # To better display the image, clip pixels with extreme values (0.02% of 180 | # pixels with extreme low values and 0.02% of the pixels with extreme high 181 | # values). And then normalise the image by mapping the pixel value to be 182 | # within [0,255]. 183 | save_name = 'recon_img_normalized' + '-' + image_label + '.jpg' 184 | PIL.Image.fromarray(normalise_img(clip_extreme_value(recon_img, pct=4))).save(os.path.join(save_dir, save_name)) 185 | 186 | print('Done') 187 | -------------------------------------------------------------------------------- /4_reconstruct_shape_image.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Reconstruct colored artificial shapes from CNN features decoded from the brain. 3 | 4 | - ROI: VC 5 | - Layers: all conv and fc layers 6 | - Reconstruction algorithm: Without DGN + LBFGS 7 | ''' 8 | 9 | 10 | import os 11 | import pickle 12 | from datetime import datetime 13 | from itertools import product 14 | 15 | import caffe 16 | import numpy as np 17 | import PIL.Image 18 | import scipy.io as sio 19 | 20 | from icnn.icnn_lbfgs import reconstruct_image # Without DGN 21 | from icnn.utils import clip_extreme_value, estimate_cnn_feat_std, normalise_img 22 | 23 | 24 | # Settings ################################################################### 25 | 26 | # GPU usage settings 27 | caffe.set_mode_gpu() 28 | caffe.set_device(0) 29 | 30 | # Decoded features settings 31 | decoded_features_dir = './data/decodedfeatures' 32 | decode_feature_filename = lambda net, layer, subject, roi, image_type, image_label: os.path.join(decoded_features_dir, image_type, net, layer, subject, roi, 33 | '%s-%s-%s-%s-%s-%s.mat' % (image_type, net, layer, subject, roi, image_label)) 34 | 35 | # Data settings 36 | results_dir = './results' 37 | 38 | subjects_list = ['S1', 'S2', 'S3'] 39 | 40 | rois_list = ['VC'] 41 | 42 | network = 'VGG19' 43 | 44 | # Images in figure 3A 45 | image_type = 'color_shape' 46 | image_label_list = ['Img0001', 47 | 'Img0002', 48 | 'Img0003', 49 | 'Img0004', 50 | 'Img0005', 51 | 'Img0006', 52 | 'Img0007', 53 | 'Img0008', 54 | 'Img0009', 55 | 'Img0010', 56 | 'Img0011', 57 | 'Img0012', 58 | 'Img0013', 59 | 'Img0014', 60 | 'Img0015'] 61 | 62 | max_iteration = 200 63 | 64 | 65 | # Main ####################################################################### 66 | 67 | # Initialize CNN ------------------------------------------------------------- 68 | 69 | # Average image of ImageNet 70 | img_mean_file = './data/ilsvrc_2012_mean.npy' 71 | img_mean = np.load(img_mean_file) 72 | img_mean = np.float32([img_mean[0].mean(), img_mean[1].mean(), img_mean[2].mean()]) 73 | 74 | # CNN model 75 | model_file = './net/VGG_ILSVRC_19_layers/VGG_ILSVRC_19_layers.caffemodel' 76 | prototxt_file = './net/VGG_ILSVRC_19_layers/VGG_ILSVRC_19_layers.prototxt' 77 | channel_swap = (2, 1, 0) 78 | net = caffe.Classifier(prototxt_file, model_file, mean=img_mean, channel_swap=channel_swap) 79 | h, w = net.blobs['data'].data.shape[-2:] 80 | net.blobs['data'].reshape(1, 3, h, w) 81 | 82 | # Initial image for the optimization (here we use the mean of ilsvrc_2012_mean.npy as RGB values) 83 | initial_image = np.zeros((h, w, 3), dtype='float32') 84 | initial_image[:, :, 0] = img_mean[2].copy() 85 | initial_image[:, :, 1] = img_mean[1].copy() 86 | initial_image[:, :, 2] = img_mean[0].copy() 87 | 88 | # Feature SD estimated from true CNN features of 10000 images 89 | feat_std_file = './data/estimated_vgg19_cnn_feat_std.mat' 90 | feat_std0 = sio.loadmat(feat_std_file) 91 | 92 | # CNN Layers (all conv and fc layers) 93 | layers = [layer for layer in net.blobs.keys() if 'conv' in layer or 'fc' in layer] 94 | 95 | # Setup results directory ---------------------------------------------------- 96 | 97 | save_dir_root = os.path.join(results_dir, os.path.splitext(__file__)[0]) 98 | if not os.path.exists(save_dir_root): 99 | os.makedirs(save_dir_root) 100 | 101 | # Set reconstruction options ------------------------------------------------- 102 | 103 | opts = { 104 | # The loss function type: {'l2','l1','inner','gram'} 105 | 'loss_type': 'l2', 106 | 107 | # The maximum number of iterations 108 | 'maxiter': max_iteration, 109 | 110 | # The initial image for the optimization (setting to None will use random noise as initial image) 111 | 'initial_image': initial_image, 112 | 113 | # Display the information on the terminal or not 114 | 'disp': True 115 | } 116 | 117 | # Save the optional parameters 118 | with open(os.path.join(save_dir_root, 'options.pkl'), 'w') as f: 119 | pickle.dump(opts, f) 120 | 121 | # Reconstrucion -------------------------------------------------------------- 122 | 123 | for subject, roi, image_label in product(subjects_list, rois_list, image_label_list): 124 | 125 | print('') 126 | print('Subject: ' + subject) 127 | print('ROI: ' + roi) 128 | print('Image label: ' + image_label) 129 | print('') 130 | 131 | save_dir = os.path.join(save_dir_root, subject, roi) 132 | if not os.path.exists(save_dir): 133 | os.makedirs(save_dir) 134 | 135 | # Load the decoded CNN features 136 | features = {} 137 | for layer in layers: 138 | # The file full name depends on the data structure for decoded CNN features 139 | file_name = decode_feature_filename(network, layer, subject, roi, image_type, image_label) 140 | feat = sio.loadmat(file_name)['feat'] 141 | if 'fc' in layer: 142 | feat = feat.reshape(feat.size) 143 | 144 | # Correct the norm of the decoded CNN features 145 | feat_std = estimate_cnn_feat_std(feat) 146 | feat = (feat / feat_std) * feat_std0[layer] 147 | 148 | features.update({layer: feat}) 149 | 150 | # Weight of each layer in the total loss function 151 | 152 | # Norm of the CNN features for each layer 153 | feat_norm = np.array([np.linalg.norm(features[layer]) for layer in layers], dtype='float32') 154 | 155 | # Use the inverse of the squared norm of the CNN features as the weight for each layer 156 | weights = 1. / (feat_norm ** 2) 157 | 158 | # Normalise the weights such that the sum of the weights = 1 159 | weights = weights / weights.sum() 160 | layer_weight = dict(zip(layers, weights)) 161 | 162 | opts.update({'layer_weight': layer_weight}) 163 | 164 | # Reconstruction 165 | snapshots_dir = os.path.join(save_dir, 'snapshots', 'image-%s' % image_label) 166 | recon_img, loss_list = reconstruct_image(features, net, 167 | save_intermediate=True, 168 | save_intermediate_path=snapshots_dir, 169 | **opts) 170 | 171 | # Save the results 172 | 173 | # Save the raw reconstructed image 174 | save_name = 'recon_img' + '-' + image_label + '.mat' 175 | sio.savemat(os.path.join(save_dir, save_name), {'recon_img': recon_img}) 176 | 177 | # To better display the image, clip pixels with extreme values (0.02% of 178 | # pixels with extreme low values and 0.02% of the pixels with extreme high 179 | # values). And then normalise the image by mapping the pixel value to be 180 | # within [0,255]. 181 | save_name = 'recon_img_normalized' + '-' + image_label + '.jpg' 182 | PIL.Image.fromarray(normalise_img(clip_extreme_value(recon_img, pct=4))).save(os.path.join(save_dir, save_name)) 183 | 184 | print('Done') 185 | -------------------------------------------------------------------------------- /5_reconstruct_shape_image_different_ROI.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Reconstruct colored artificial shapes from CNN features decoded from multiple visual areas in the brain. 3 | 4 | - ROI: V1, V2, V3, V4, HVC, VC 5 | - Layers: all conv and fc layers 6 | - Reconstruction algorithm: Without DGN + LBFGS 7 | ''' 8 | 9 | 10 | import os 11 | import pickle 12 | from datetime import datetime 13 | from itertools import product 14 | 15 | import caffe 16 | import numpy as np 17 | import PIL.Image 18 | import scipy.io as sio 19 | 20 | from icnn.icnn_lbfgs import reconstruct_image # Without DGN 21 | from icnn.utils import clip_extreme_value, estimate_cnn_feat_std, normalise_img 22 | 23 | 24 | # Settings ################################################################### 25 | 26 | # GPU usage settings 27 | caffe.set_mode_gpu() 28 | caffe.set_device(0) 29 | 30 | # Decoded features settings 31 | decoded_features_dir = './data/decodedfeatures' 32 | decode_feature_filename = lambda net, layer, subject, roi, image_type, image_label: os.path.join(decoded_features_dir, image_type, net, layer, subject, roi, 33 | '%s-%s-%s-%s-%s-%s.mat' % (image_type, net, layer, subject, roi, image_label)) 34 | 35 | # Data settings 36 | results_dir = './results' 37 | 38 | subjects_list = ['S1', 'S2', 'S3'] 39 | 40 | rois_list = ['V1', 'V2', 'V3', 'V4', 'HVC', 'VC'] 41 | 42 | network = 'VGG19' 43 | 44 | # Images in figure 3A 45 | image_type = 'color_shape' 46 | image_label_list = ['Img0004', 47 | 'Img0008', 48 | 'Img0011'] 49 | 50 | max_iteration = 200 51 | 52 | 53 | # Main ####################################################################### 54 | 55 | # Initialize CNN ------------------------------------------------------------- 56 | 57 | # Average image of ImageNet 58 | img_mean_file = './data/ilsvrc_2012_mean.npy' 59 | img_mean = np.load(img_mean_file) 60 | img_mean = np.float32([img_mean[0].mean(), img_mean[1].mean(), img_mean[2].mean()]) 61 | 62 | # CNN model 63 | model_file = './net/VGG_ILSVRC_19_layers/VGG_ILSVRC_19_layers.caffemodel' 64 | prototxt_file = './net/VGG_ILSVRC_19_layers/VGG_ILSVRC_19_layers.prototxt' 65 | channel_swap = (2, 1, 0) 66 | net = caffe.Classifier(prototxt_file, model_file, mean=img_mean, channel_swap=channel_swap) 67 | h, w = net.blobs['data'].data.shape[-2:] 68 | net.blobs['data'].reshape(1, 3, h, w) 69 | 70 | # Initial image for the optimization (here we use the mean of ilsvrc_2012_mean.npy as RGB values) 71 | initial_image = np.zeros((h, w, 3), dtype='float32') 72 | initial_image[:, :, 0] = img_mean[2].copy() 73 | initial_image[:, :, 1] = img_mean[1].copy() 74 | initial_image[:, :, 2] = img_mean[0].copy() 75 | 76 | # Feature SD estimated from true CNN features of 10000 images 77 | feat_std_file = './data/estimated_vgg19_cnn_feat_std.mat' 78 | feat_std0 = sio.loadmat(feat_std_file) 79 | 80 | # CNN Layers (all conv and fc layers) 81 | layers = [layer for layer in net.blobs.keys() if 'conv' in layer or 'fc' in layer] 82 | 83 | # Setup results directory ---------------------------------------------------- 84 | 85 | save_dir_root = os.path.join(results_dir, os.path.splitext(__file__)[0]) 86 | if not os.path.exists(save_dir_root): 87 | os.makedirs(save_dir_root) 88 | 89 | # Set reconstruction options ------------------------------------------------- 90 | 91 | opts = { 92 | # The loss function type: {'l2','l1','inner','gram'} 93 | 'loss_type': 'l2', 94 | 95 | # The maximum number of iterations 96 | 'maxiter': max_iteration, 97 | 98 | # The initial image for the optimization (setting to None will use random noise as initial image) 99 | 'initial_image': initial_image, 100 | 101 | # Display the information on the terminal or not 102 | 'disp': True 103 | } 104 | 105 | # Save the optional parameters 106 | with open(os.path.join(save_dir_root, 'options.pkl'), 'w') as f: 107 | pickle.dump(opts, f) 108 | 109 | # Reconstrucion -------------------------------------------------------------- 110 | 111 | for subject, roi, image_label in product(subjects_list, rois_list, image_label_list): 112 | 113 | print('') 114 | print('Subject: ' + subject) 115 | print('ROI: ' + roi) 116 | print('Image label: ' + image_label) 117 | print('') 118 | 119 | save_dir = os.path.join(save_dir_root, subject, roi) 120 | if not os.path.exists(save_dir): 121 | os.makedirs(save_dir) 122 | 123 | # Load the decoded CNN features 124 | features = {} 125 | for layer in layers: 126 | # The file full name depends on the data structure for decoded CNN features 127 | file_name = decode_feature_filename(network, layer, subject, roi, image_type, image_label) 128 | feat = sio.loadmat(file_name)['feat'] 129 | if 'fc' in layer: 130 | feat = feat.reshape(feat.size) 131 | 132 | # Correct the norm of the decoded CNN features 133 | feat_std = estimate_cnn_feat_std(feat) 134 | feat = (feat / feat_std) * feat_std0[layer] 135 | 136 | features.update({layer: feat}) 137 | 138 | # Weight of each layer in the total loss function 139 | 140 | # Norm of the CNN features for each layer 141 | feat_norm = np.array([np.linalg.norm(features[layer]) for layer in layers], dtype='float32') 142 | 143 | # Use the inverse of the squared norm of the CNN features as the weight for each layer 144 | weights = 1. / (feat_norm ** 2) 145 | 146 | # Normalise the weights such that the sum of the weights = 1 147 | weights = weights / weights.sum() 148 | layer_weight = dict(zip(layers, weights)) 149 | 150 | opts.update({'layer_weight': layer_weight}) 151 | 152 | # Reconstruction 153 | snapshots_dir = os.path.join(save_dir, 'snapshots', 'image-%s' % image_label) 154 | recon_img, loss_list = reconstruct_image(features, net, 155 | save_intermediate=True, 156 | save_intermediate_path=snapshots_dir, 157 | **opts) 158 | 159 | # Save the results 160 | 161 | # Save the raw reconstructed image 162 | save_name = 'recon_img' + '-' + image_label + '.mat' 163 | sio.savemat(os.path.join(save_dir, save_name), {'recon_img': recon_img}) 164 | 165 | # To better display the image, clip pixels with extreme values (0.02% of 166 | # pixels with extreme low values and 0.02% of the pixels with extreme high 167 | # values). And then normalise the image by mapping the pixel value to be 168 | # within [0,255]. 169 | save_name = 'recon_img_normalized' + '-' + image_label + '.jpg' 170 | PIL.Image.fromarray(normalise_img(clip_extreme_value(recon_img, pct=4))).save(os.path.join(save_dir, save_name)) 171 | 172 | print('Done') 173 | -------------------------------------------------------------------------------- /6_reconstruct_alphabet_image.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Reconstruct alphabetical letters shapes from CNN features decoded from the brain. 3 | 4 | - ROI: VC 5 | - Layers: all conv and fc layers 6 | - Reconstruction algorithm: Without DGN + LBFGS 7 | ''' 8 | 9 | 10 | import os 11 | import pickle 12 | from datetime import datetime 13 | from itertools import product 14 | 15 | import caffe 16 | import numpy as np 17 | import PIL.Image 18 | import scipy.io as sio 19 | 20 | from icnn.icnn_lbfgs import reconstruct_image # Without DGN 21 | from icnn.utils import clip_extreme_value, estimate_cnn_feat_std, normalise_img 22 | 23 | 24 | # Settings ################################################################### 25 | 26 | # GPU usage settings 27 | caffe.set_mode_gpu() 28 | caffe.set_device(0) 29 | 30 | # Decoded features settings 31 | decoded_features_dir = './data/decodedfeatures' 32 | decode_feature_filename = lambda net, layer, subject, roi, image_type, image_label: os.path.join(decoded_features_dir, image_type, net, layer, subject, roi, 33 | '%s-%s-%s-%s-%s-%s.mat' % (image_type, net, layer, subject, roi, image_label)) 34 | 35 | # Data settings 36 | results_dir = './results' 37 | 38 | subjects_list = ['S1', 'S2', 'S3'] 39 | 40 | rois_list = ['VC'] 41 | 42 | network = 'VGG19' 43 | 44 | # Images in figure 3A 45 | image_type = 'alphabet' 46 | image_label_list = ['Img0005', 47 | 'Img0003', 48 | 'Img0010', 49 | 'Img0007', 50 | 'Img0006'] 51 | 52 | max_iteration = 200 53 | 54 | 55 | # Main ####################################################################### 56 | 57 | # Initialize CNN ------------------------------------------------------------- 58 | 59 | # Average image of ImageNet 60 | img_mean_file = './data/ilsvrc_2012_mean.npy' 61 | img_mean = np.load(img_mean_file) 62 | img_mean = np.float32([img_mean[0].mean(), img_mean[1].mean(), img_mean[2].mean()]) 63 | 64 | # CNN model 65 | model_file = './net/VGG_ILSVRC_19_layers/VGG_ILSVRC_19_layers.caffemodel' 66 | prototxt_file = './net/VGG_ILSVRC_19_layers/VGG_ILSVRC_19_layers.prototxt' 67 | channel_swap = (2, 1, 0) 68 | net = caffe.Classifier(prototxt_file, model_file, mean=img_mean, channel_swap=channel_swap) 69 | h, w = net.blobs['data'].data.shape[-2:] 70 | net.blobs['data'].reshape(1, 3, h, w) 71 | 72 | # Initial image for the optimization (here we use the mean of ilsvrc_2012_mean.npy as RGB values) 73 | initial_image = np.zeros((h, w, 3), dtype='float32') 74 | initial_image[:, :, 0] = img_mean[2].copy() 75 | initial_image[:, :, 1] = img_mean[1].copy() 76 | initial_image[:, :, 2] = img_mean[0].copy() 77 | 78 | # Feature SD estimated from true CNN features of 10000 images 79 | feat_std_file = './data/estimated_vgg19_cnn_feat_std.mat' 80 | feat_std0 = sio.loadmat(feat_std_file) 81 | 82 | # CNN Layers (all conv and fc layers) 83 | layers = [layer for layer in net.blobs.keys() if 'conv' in layer or 'fc' in layer] 84 | 85 | # Setup results directory ---------------------------------------------------- 86 | 87 | save_dir_root = os.path.join(results_dir, os.path.splitext(__file__)[0]) 88 | if not os.path.exists(save_dir_root): 89 | os.makedirs(save_dir_root) 90 | 91 | # Set reconstruction options ------------------------------------------------- 92 | 93 | opts = { 94 | # The loss function type: {'l2','l1','inner','gram'} 95 | 'loss_type': 'l2', 96 | 97 | # The maximum number of iterations 98 | 'maxiter': max_iteration, 99 | 100 | # The initial image for the optimization (setting to None will use random noise as initial image) 101 | 'initial_image': initial_image, 102 | 103 | # Display the information on the terminal or not 104 | 'disp': True 105 | } 106 | 107 | # Save the optional parameters 108 | with open(os.path.join(save_dir_root, 'options.pkl'), 'w') as f: 109 | pickle.dump(opts, f) 110 | 111 | # Reconstrucion -------------------------------------------------------------- 112 | 113 | for subject, roi, image_label in product(subjects_list, rois_list, image_label_list): 114 | 115 | print('') 116 | print('Subject: ' + subject) 117 | print('ROI: ' + roi) 118 | print('Image label: ' + image_label) 119 | print('') 120 | 121 | save_dir = os.path.join(save_dir_root, subject, roi) 122 | if not os.path.exists(save_dir): 123 | os.makedirs(save_dir) 124 | 125 | # Load the decoded CNN features 126 | features = {} 127 | for layer in layers: 128 | # The file full name depends on the data structure for decoded CNN features 129 | file_name = decode_feature_filename(network, layer, subject, roi, image_type, image_label) 130 | feat = sio.loadmat(file_name)['feat'] 131 | if 'fc' in layer: 132 | feat = feat.reshape(feat.size) 133 | 134 | # Correct the norm of the decoded CNN features 135 | feat_std = estimate_cnn_feat_std(feat) 136 | feat = (feat / feat_std) * feat_std0[layer] 137 | 138 | features.update({layer: feat}) 139 | 140 | # Weight of each layer in the total loss function 141 | 142 | # Norm of the CNN features for each layer 143 | feat_norm = np.array([np.linalg.norm(features[layer]) for layer in layers], dtype='float32') 144 | 145 | # Use the inverse of the squared norm of the CNN features as the weight for each layer 146 | weights = 1. / (feat_norm ** 2) 147 | 148 | # Normalise the weights such that the sum of the weights = 1 149 | weights = weights / weights.sum() 150 | layer_weight = dict(zip(layers, weights)) 151 | 152 | opts.update({'layer_weight': layer_weight}) 153 | 154 | # Reconstruction 155 | snapshots_dir = os.path.join(save_dir, 'snapshots', 'image-%s' % image_label) 156 | recon_img, loss_list = reconstruct_image(features, net, 157 | save_intermediate=True, 158 | save_intermediate_path=snapshots_dir, 159 | **opts) 160 | 161 | # Save the results 162 | 163 | # Save the raw reconstructed image 164 | save_name = 'recon_img' + '-' + image_label + '.mat' 165 | sio.savemat(os.path.join(save_dir, save_name), {'recon_img': recon_img}) 166 | 167 | # To better display the image, clip pixels with extreme values (0.02% of 168 | # pixels with extreme low values and 0.02% of the pixels with extreme high 169 | # values). And then normalise the image by mapping the pixel value to be 170 | # within [0,255]. 171 | save_name = 'recon_img_normalized' + '-' + image_label + '.jpg' 172 | PIL.Image.fromarray(normalise_img(clip_extreme_value(recon_img, pct=4))).save(os.path.join(save_dir, save_name)) 173 | 174 | print('Done') 175 | -------------------------------------------------------------------------------- /7_reconstruct_imagined_image.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Reconstruct imagined image from CNN features decoded from the brain. 3 | 4 | - ROI: VC 5 | - CNN: VGG19 with leaky ReLU layers and average pooling layers 6 | - Layers: all conv and fc layers 7 | - Reconstruction algorithm: Without DGN + LBFGS 8 | ''' 9 | 10 | 11 | import os 12 | import pickle 13 | from datetime import datetime 14 | from itertools import product 15 | 16 | import caffe 17 | import numpy as np 18 | import PIL.Image 19 | import scipy.io as sio 20 | 21 | from icnn.icnn_lbfgs import reconstruct_image # Without DGN 22 | from icnn.utils import clip_extreme_value, estimate_cnn_feat_std, normalise_img 23 | 24 | 25 | # Settings ################################################################### 26 | 27 | # GPU usage settings 28 | caffe.set_mode_gpu() 29 | caffe.set_device(0) 30 | 31 | # Decoded features settings 32 | decoded_features_dir = './data/decodedfeatures' 33 | decode_feature_filename = lambda net, layer, subject, roi, image_type, image_label: os.path.join(decoded_features_dir, image_type, net, layer, subject, roi, 34 | '%s-%s-%s-%s-%s-%s.mat' % (image_type, net, layer, subject, roi, image_label)) 35 | 36 | # Data settings 37 | results_dir = './results' 38 | 39 | subjects_list = ['S1', 'S2', 'S3'] 40 | 41 | rois_list = ['VC'] 42 | 43 | network = 'VGG19_leaky' 44 | 45 | # Images in figure 3A 46 | image_type = 'imagery' 47 | image_label_list = ['Img0001', 48 | 'Img0005', 49 | 'Img0009', 50 | 'Img0008', 51 | 'Img0003', 52 | 'Img0010', 53 | 'Img0021', 54 | 'Img0022', 55 | 'Img0020'] 56 | 57 | max_iteration = 200 58 | 59 | 60 | # Main ####################################################################### 61 | 62 | # Initialize CNN ------------------------------------------------------------- 63 | 64 | # Average image of ImageNet 65 | img_mean_file = './data/ilsvrc_2012_mean.npy' 66 | img_mean = np.load(img_mean_file) 67 | img_mean = np.float32([img_mean[0].mean(), img_mean[1].mean(), img_mean[2].mean()]) 68 | 69 | # CNN model 70 | model_file = './net/VGG_ILSVRC_19_layers/VGG_ILSVRC_19_layers.caffemodel' 71 | prototxt_file = './net/VGG_ILSVRC_19_layers/VGG_ILSVRC_19_layers_lrelu_avePool.prototxt' 72 | channel_swap = (2, 1, 0) 73 | net = caffe.Classifier(prototxt_file, model_file, mean=img_mean, channel_swap=channel_swap) 74 | h, w = net.blobs['data'].data.shape[-2:] 75 | net.blobs['data'].reshape(1, 3, h, w) 76 | 77 | # Initial image for the optimization (here we use the mean of ilsvrc_2012_mean.npy as RGB values) 78 | initial_image = np.zeros((h, w, 3), dtype='float32') 79 | initial_image[:, :, 0] = img_mean[2].copy() 80 | initial_image[:, :, 1] = img_mean[1].copy() 81 | initial_image[:, :, 2] = img_mean[0].copy() 82 | 83 | # Feature SD estimated from true CNN features of 10000 images 84 | feat_std_file = './data/estimated_vgg19LeakyReluAvePool_cnn_feat_std.mat' 85 | feat_std0 = sio.loadmat(feat_std_file) 86 | 87 | # CNN Layers (all conv and fc layers) 88 | layers = [layer for layer in net.blobs.keys() if 'conv' in layer or 'fc' in layer] 89 | 90 | # Setup results directory ---------------------------------------------------- 91 | 92 | save_dir_root = os.path.join(results_dir, os.path.splitext(__file__)[0]) 93 | if not os.path.exists(save_dir_root): 94 | os.makedirs(save_dir_root) 95 | 96 | # Set reconstruction options ------------------------------------------------- 97 | 98 | opts = { 99 | # The loss function type: {'l2','l1','inner','gram'} 100 | 'loss_type': 'l2', 101 | 102 | # The maximum number of iterations 103 | 'maxiter': max_iteration, 104 | 105 | # The initial image for the optimization (setting to None will use random noise as initial image) 106 | 'initial_image': initial_image, 107 | 108 | # Display the information on the terminal or not 109 | 'disp': True 110 | } 111 | 112 | # Save the optional parameters 113 | with open(os.path.join(save_dir_root, 'options.pkl'), 'w') as f: 114 | pickle.dump(opts, f) 115 | 116 | # Reconstrucion -------------------------------------------------------------- 117 | 118 | for subject, roi, image_label in product(subjects_list, rois_list, image_label_list): 119 | 120 | print('') 121 | print('Subject: ' + subject) 122 | print('ROI: ' + roi) 123 | print('Image label: ' + image_label) 124 | print('') 125 | 126 | save_dir = os.path.join(save_dir_root, subject, roi) 127 | if not os.path.exists(save_dir): 128 | os.makedirs(save_dir) 129 | 130 | # Load the decoded CNN features 131 | features = {} 132 | for layer in layers: 133 | # The file full name depends on the data structure for decoded CNN features 134 | file_name = decode_feature_filename(network, layer, subject, roi, image_type, image_label) 135 | feat = sio.loadmat(file_name)['feat'] 136 | if 'fc' in layer: 137 | feat = feat.reshape(feat.size) 138 | 139 | # Correct the norm of the decoded CNN features 140 | feat_std = estimate_cnn_feat_std(feat) 141 | feat = (feat / feat_std) * feat_std0[layer] 142 | 143 | features.update({layer: feat}) 144 | 145 | # Weight of each layer in the total loss function 146 | 147 | # Norm of the CNN features for each layer 148 | feat_norm = np.array([np.linalg.norm(features[layer]) for layer in layers], dtype='float32') 149 | 150 | # Use the inverse of the squared norm of the CNN features as the weight for each layer 151 | weights = 1. / (feat_norm ** 2) 152 | 153 | # Normalise the weights such that the sum of the weights = 1 154 | weights = weights / weights.sum() 155 | layer_weight = dict(zip(layers, weights)) 156 | 157 | opts.update({'layer_weight': layer_weight}) 158 | 159 | # Reconstruction 160 | snapshots_dir = os.path.join(save_dir, 'snapshots', 'image-%s' % image_label) 161 | recon_img, loss_list = reconstruct_image(features, net, 162 | save_intermediate=True, 163 | save_intermediate_path=snapshots_dir, 164 | **opts) 165 | 166 | # Save the results 167 | 168 | # Save the raw reconstructed image 169 | save_name = 'recon_img' + '-' + image_label + '.mat' 170 | sio.savemat(os.path.join(save_dir, save_name), {'recon_img': recon_img}) 171 | 172 | # To better display the image, clip pixels with extreme values (0.02% of 173 | # pixels with extreme low values and 0.02% of the pixels with extreme high 174 | # values). And then normalise the image by mapping the pixel value to be 175 | # within [0,255]. 176 | save_name = 'recon_img_normalized' + '-' + image_label + '.jpg' 177 | PIL.Image.fromarray(normalise_img(clip_extreme_value(recon_img, pct=4))).save(os.path.join(save_dir, save_name)) 178 | 179 | print('Done') 180 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Deep Image Reconstruction 2 | 3 | **Note: This demo code works with Python 2 and Caffe. Example code for the reconstruction with Python 3 + PyTorch is available at [brain-decoding-cookbook-public](https://github.com/KamitaniLab/brain-decoding-cookbook-public/tree/main/reconstruction).** 4 | 5 | 6 | Data and demo code for [Shen, Horikawa, Majima, and Kamitani (2019) Deep image reconstruction from human brain activity. PLOS Computational Biology](https://doi.org/10.1371/journal.pcbi.1006633). 7 | The preprint is availabe at bioRxiv ([Shen et al., 2017, Deep image reconstruction from human brain activity](https://www.biorxiv.org/content/early/2017/12/30/240317)). 8 | 9 | ## Dataset 10 | 11 | - Raw fMRI data: [Deep Image Reconstruction@OpenNeuro](https://openneuro.org/datasets/ds001506) 12 | - Preprocessed fMRI data, DNN features extracted from images, and decoded DNN features: [Deep Image Reconstruction@figshare](https://figshare.com/articles/Deep_Image_Reconstruction/7033577) 13 | - Visual images: upon requeset via 14 | 15 | ## Code 16 | 17 | ### Requirements 18 | 19 | - Python 2.7 20 | - [icnn](https://github.com/KamitaniLab/icnn) 21 | - Numpy 22 | - Scipy 23 | - Pillow (PIL) 24 | - Caffe with up-convolutional layer 25 | - https://github.com/dosovits/caffe-fr-chairs (Branch: deepsim) 26 | - Both CPU and GPU installation are OK 27 | 28 | ### Usage 29 | 30 | #### Preparation 31 | 32 | 1. Download data files from figshare (see [data/README.md](data/README.md)). 33 | 2. Download Caffe networks (see [net/README.md](net/README.md)). 34 | 35 | #### DNN feature decoding from brain activity 36 | 37 | You can skip the feature decoding from brain activity since we provide the decoded DNN features used in the original paper (see [data/README.md](data/README.md)). 38 | 39 | We used the same methodology in our previous study for the DNN feature decoding ([Horikawa & Kamitani, 2017, Generic decoding of seen and imagined objects using hierarchical visual features, Nat Commun.](https://www.nature.com/articles/ncomms15037)). 40 | The latest Python code for the DNN feature decoding is available at [GitHub:KamitaniLab/brain-decoding-cookbook-public](https://github.com/KamitaniLab/brain-decoding-cookbook-public). 41 | 42 | #### Image reconstruction from decoded CNN features 43 | 44 | We provide seven scripts that reproduce main figures in the original paper. 45 | 46 | - 1_reconstruct_natural_image.py 47 | - Reconstructing natural images from the CNN features decoded from the brain with deep generator network (DGN); reproducing results in Figure 2. 48 | - 2_reconstruct_natural_image_without_DGN.py 49 | - Reconstructing natural images from CNN features decoded from the brain without deep generator network (DGN); reproducing results in Figure 3A. 50 | - 3_reconstruct_natural_image_different_combinations_of_CNN_layers.py 51 | - Reconstructing natural images from CNN features decoded from the brain with different combinations of CNN layers; reproducing results in Figure 4. 52 | - 4_reconstruct_shape_image.py 53 | - Reconstructing colored artificial shapes from CNN features decoded from the brain; reproducing results in Figure 6A. 54 | - 5_reconstruct_shape_image_different_ROI.py 55 | - Reconstructing colored artificial shapes from CNN features decoded from multiple visual areas in the brain; reproducing results in Figure 7A. 56 | - 6_reconstruct_alphabet_image.py 57 | - Reconstructing alphabetical letters shapes from CNN features decoded from the brain; reproducing results in Figure 6B. 58 | - 7_reconstruct_imagined_image.py 59 | - Reconstructing imagined image from CNN features decoded from the brain; reproducing results in Figure 8. 60 | 61 | PyTorch implementation of the reconstruction is available at [GitHub:KamitaniLab/brain-decoding-cookbook-public](https://github.com/KamitaniLab/brain-decoding-cookbook-public). 62 | 63 | ## Notes 64 | 65 | ### Enable back-propagation in the DNNs 66 | 67 | In the demo code, we use pre-trained [VGG19](http://www.robots.ox.ac.uk/~vgg/software/very_deep/caffe/VGG_ILSVRC_19_layers.caffemodel) and pre-trained [deep generator network (DGN)](https://lmb.informatik.uni-freiburg.de/resources/binaries/arxiv2016_alexnet_inversion_with_gans/release_deepsim_v0.zip) ([Dosovitskiy & Brox, 2016, Generating Images with Perceptual Similarity Metrics based on Deep Networks. arXiv.](https://arxiv.org/abs/1602.02644)). 68 | To enable make back-propagation, the following line should be added to the prototxt files (the file describes the configuration of the DNN): 69 | 70 | ``` 71 | force_backward: true 72 | ``` 73 | 74 | ### Get DNN features before ReLU 75 | 76 | In our study, we defined DNN features of conv layers or fc layers as the output immediately after the convolutional or fully-connected computation (i.e., before applying the Rectified-Linear-Unit (ReLU)). 77 | However, as default setting of the pre-trained DNNs, ReLU operation is an in-place computation, which will override the DNN features we need. 78 | To In order to use the DNN features before the ReLU operation, you need to modify the prototxt file as below (taking the VGG19 prototxt file as an example). 79 | 80 | Original: 81 | 82 | ``` 83 | layers { 84 | bottom: "conv1_1" 85 | top: "conv1_1" 86 | name: "relu1_1" 87 | type: RELU 88 | } 89 | ``` 90 | 91 | Modified: 92 | 93 | ``` 94 | layers { 95 | bottom: "conv1_1" 96 | top: "relu1_1" 97 | name: "relu1_1" 98 | type: RELU 99 | } 100 | ``` 101 | -------------------------------------------------------------------------------- /data/.gitignore: -------------------------------------------------------------------------------- 1 | decoded_vgg19_cnn_feat.mat 2 | estimated_vgg19_cnn_feat_std.mat 3 | estimated_vgg19LeakyReluAvePool_cnn_feat_std.mat 4 | ilsvrc_2012_mean.npy 5 | *.zip 6 | decodedfeatures 7 | junk 8 | -------------------------------------------------------------------------------- /data/README.md: -------------------------------------------------------------------------------- 1 | # Deep Image Reconstruction: data 2 | 3 | You need the following files to run the example scripts. 4 | All files should be saved in this directory. 5 | You can download them at [Deep Image Reconstruction@figshare](https://figshare.com/articles/Deep_Image_Reconstruction/7033577). 6 | The script, `downloaddata.sh`, will download all required data for the example code. The script requires the `unzip` command (for Ubuntu `apt install unzip`). 7 | 8 | - estimated_vgg19_cnn_feat_std.mat 9 | - estimated_vgg19LeakyReluAvePool_cnn_feat_std.mat 10 | - ilsvrc_2012_mean.npy 11 | - Decoded features (decodedfeatures-*.zip files) 12 | -------------------------------------------------------------------------------- /data/act_range/1x/conv5.txt: -------------------------------------------------------------------------------- 1 | 21 18 19 19 18 25 15 11 12 12 10 15 15 13 15 15 12 14 15 14 17 17 14 13 14 13 16 16 13 11 18 16 17 18 16 18 19 19 21 20 19 19 16 16 19 19 16 17 16 16 18 18 16 16 15 14 15 15 14 15 14 12 13 13 12 14 17 14 14 14 14 18 19 18 19 19 17 19 17 14 16 15 13 17 19 15 17 16 14 19 20 15 17 16 14 20 20 15 16 16 14 21 25 19 21 21 18 25 15 14 15 15 14 16 11 13 15 15 13 12 13 16 20 21 17 14 14 18 21 22 18 14 13 16 19 19 16 13 16 17 19 18 17 15 16 14 16 16 14 14 11 12 16 17 14 12 12 14 18 19 17 14 13 15 18 19 17 15 12 12 15 15 15 15 17 16 18 18 17 20 10 12 13 13 11 11 9 14 17 18 15 11 11 17 21 21 18 13 12 17 21 21 17 14 11 15 17 17 15 14 14 16 17 17 17 17 19 17 18 17 15 17 16 13 13 13 11 15 17 14 14 14 13 15 17 14 15 15 14 16 15 12 14 14 13 15 17 15 16 16 15 18 16 15 16 16 15 18 12 13 16 16 13 13 14 16 20 20 16 15 15 17 20 20 16 16 14 15 17 17 14 15 19 17 18 18 16 18 15 15 16 15 14 17 13 13 14 14 11 12 13 14 15 14 12 13 13 15 15 14 12 13 13 14 14 14 12 13 14 15 15 15 15 17 16 15 17 17 15 16 15 14 16 16 14 15 17 15 18 18 16 18 17 16 18 18 16 18 16 15 16 16 14 17 17 15 16 16 15 18 16 16 18 18 16 16 14 15 18 18 14 14 16 18 22 21 17 16 17 19 23 23 19 17 17 18 21 20 17 16 19 20 22 22 20 19 18 16 18 18 16 18 15 16 19 20 16 15 15 17 21 22 18 16 14 17 20 20 17 16 13 16 18 18 16 14 15 15 16 16 15 15 12 13 13 14 13 14 11 12 15 15 13 12 12 14 16 17 15 13 13 15 17 17 16 14 13 15 16 17 16 15 16 16 17 17 16 16 24 19 20 19 18 23 17 12 13 13 12 17 17 12 13 13 12 16 17 11 12 12 11 16 15 10 11 11 10 15 21 16 16 16 16 21 17 19 20 20 19 20 12 12 13 13 12 13 14 15 17 17 15 13 14 17 19 19 17 14 14 16 19 19 16 14 15 17 18 18 16 14 16 15 17 17 15 15 15 16 19 19 16 14 16 18 22 22 18 16 18 19 22 22 19 17 17 17 19 19 17 16 19 17 18 18 17 18 14 18 21 21 17 14 12 17 22 22 16 13 14 18 22 22 17 14 13 15 18 18 15 14 12 12 13 13 12 13 23 16 16 17 16 24 18 18 19 19 19 17 16 16 18 18 16 14 16 16 19 19 17 14 15 15 18 18 16 14 15 13 16 17 14 12 17 13 15 16 14 14 20 18 19 19 18 20 18 15 16 16 15 18 19 17 18 18 16 19 19 17 19 18 17 19 18 16 18 18 16 18 18 18 20 20 18 21 19 15 16 16 15 19 15 16 20 20 17 14 14 16 20 21 17 13 14 15 18 19 16 13 13 13 15 15 13 11 22 15 16 16 15 23 13 16 18 18 16 14 13 17 21 22 18 15 13 18 23 24 19 15 14 17 21 21 18 16 13 15 17 17 15 15 14 14 16 16 15 15 24 22 23 23 21 25 19 17 19 19 16 20 19 18 20 20 18 20 19 17 20 21 18 20 17 16 19 19 17 19 21 19 20 20 19 22 14 14 16 16 15 16 13 13 15 15 13 13 13 14 16 16 14 14 12 13 15 15 13 14 12 13 14 13 12 13 15 16 16 16 16 15 15 11 12 12 11 12 12 11 13 13 11 12 13 12 14 14 12 13 13 12 13 13 12 13 12 11 12 12 11 12 14 13 14 14 13 17 19 16 17 18 17 19 13 14 16 16 14 14 16 17 20 19 17 16 17 17 19 19 17 17 16 15 16 16 15 17 22 18 18 18 18 21 18 16 18 18 17 16 14 18 22 22 19 15 16 21 25 25 21 17 16 20 24 24 21 18 16 17 19 20 18 17 21 21 22 22 21 23 15 16 18 18 16 16 15 17 20 19 16 15 16 18 21 21 17 16 16 17 19 19 17 17 16 15 16 16 15 17 20 18 20 19 18 23 20 19 21 20 18 18 17 17 19 19 16 18 18 18 22 22 19 20 19 19 23 23 20 20 19 18 20 20 18 20 21 19 21 21 19 21 16 14 15 15 14 16 14 15 17 17 14 14 15 18 22 22 18 15 16 20 23 23 20 16 16 18 21 21 19 17 16 17 18 18 18 17 21 18 19 20 19 22 14 14 18 18 15 13 13 15 19 20 17 14 13 14 18 19 16 14 13 13 15 16 14 13 17 13 14 15 14 14 16 15 16 16 15 16 13 12 13 13 12 13 16 14 15 15 14 16 17 15 16 16 15 17 17 15 16 16 15 17 19 19 20 20 19 19 23 21 22 22 21 23 18 15 15 15 15 19 17 14 13 14 14 18 15 13 12 12 12 15 13 11 11 11 10 13 17 15 14 14 15 18 21 16 17 17 16 18 12 11 12 11 11 12 14 13 14 14 13 14 15 14 15 15 14 14 15 13 14 14 13 14 19 17 18 18 17 18 23 20 20 21 20 21 19 16 16 16 16 17 19 17 16 17 16 18 18 16 16 16 16 18 16 15 15 15 15 17 17 16 16 17 17 18 14 12 13 13 13 14 11 11 12 12 11 11 12 12 13 13 12 12 12 12 13 14 13 12 12 12 14 14 13 12 16 16 17 17 16 18 16 14 15 15 13 15 11 16 19 18 14 9 12 18 22 21 17 11 13 17 21 20 17 12 13 15 17 18 15 12 17 16 17 17 16 14 13 14 15 15 14 12 14 17 21 21 17 12 15 21 26 25 20 14 16 20 25 24 19 14 15 17 19 19 17 14 14 15 16 16 15 15 20 16 17 17 16 22 12 11 12 12 11 14 11 12 13 13 12 14 12 12 14 14 13 15 12 12 13 13 12 15 14 12 13 13 12 16 22 15 15 15 14 22 15 12 14 13 10 15 16 14 17 17 13 16 16 14 18 17 14 17 16 13 15 15 13 17 23 21 23 23 22 23 14 14 16 16 14 14 14 14 17 16 14 12 14 15 18 19 16 13 14 15 19 19 16 13 13 15 17 17 15 12 14 15 17 17 15 13 13 16 19 20 19 18 13 15 18 19 17 16 14 16 18 18 17 16 15 17 18 18 16 15 16 17 18 17 15 14 20 20 21 20 18 16 15 15 15 16 16 17 11 11 12 12 11 10 11 12 13 14 12 11 13 13 14 14 14 12 13 14 14 15 14 13 16 17 18 18 17 16 17 17 19 18 17 17 16 16 18 18 16 15 16 17 18 18 16 16 15 17 18 18 16 16 14 15 17 17 15 15 14 16 17 17 16 15 16 13 15 15 13 13 13 12 16 17 14 13 14 15 19 20 16 15 15 15 19 19 16 15 15 14 16 16 14 15 20 16 17 17 16 18 16 15 18 18 15 15 15 17 19 19 15 14 15 18 21 20 16 15 17 17 20 19 16 17 16 15 16 16 15 16 15 14 15 15 14 18 13 16 17 17 15 13 14 17 20 20 17 14 14 18 21 21 18 15 14 18 20 20 18 15 13 15 17 18 16 14 12 14 15 15 13 13 15 16 18 18 16 15 14 17 20 20 17 15 15 19 22 22 18 16 16 19 21 21 18 16 15 18 19 19 17 15 15 17 18 18 17 15 17 16 17 17 15 18 15 15 17 17 15 14 16 17 19 19 16 14 17 17 20 20 16 15 16 16 18 18 16 15 22 19 20 20 18 19 14 16 19 19 16 13 15 19 23 22 18 13 16 20 25 25 20 15 16 20 24 24 20 15 15 18 21 20 17 14 16 18 20 19 17 15 20 18 19 18 16 20 16 15 17 16 14 16 17 17 19 19 15 18 17 16 18 18 16 18 15 13 14 14 13 17 19 17 18 18 17 19 21 20 21 21 20 22 20 18 17 17 18 21 20 16 14 13 15 19 17 13 11 11 12 16 14 10 9 9 10 13 16 15 13 13 14 15 16 15 18 18 15 19 16 15 17 17 14 19 18 16 17 17 15 19 16 14 16 16 14 17 14 13 15 15 13 15 15 15 17 17 16 18 23 16 17 17 16 23 14 13 15 16 13 15 16 16 20 20 17 17 19 18 22 22 19 18 19 17 20 20 18 18 25 20 22 22 21 23 16 15 16 17 16 16 13 15 18 18 16 13 13 16 19 20 17 14 13 16 19 19 17 14 13 15 17 17 16 14 14 15 16 16 15 14 25 20 22 22 20 25 19 18 20 20 18 18 20 19 23 22 19 19 19 18 21 21 18 18 17 16 19 19 16 17 19 17 19 19 17 18 14 15 17 16 14 12 12 19 23 22 17 12 14 21 26 26 20 14 14 20 24 23 20 15 13 16 19 18 16 14 13 15 16 17 15 15 20 17 17 17 16 20 15 14 15 15 13 14 15 16 18 18 15 16 16 16 19 19 17 16 15 15 17 18 15 15 16 16 17 17 15 17 15 14 16 16 16 17 13 13 16 18 17 16 14 14 18 19 19 17 14 14 17 18 17 17 13 13 15 15 15 15 15 14 15 15 14 16 17 16 17 17 16 19 14 11 11 11 11 14 15 12 13 12 12 15 14 12 13 13 12 15 14 12 13 13 12 14 20 19 19 19 18 18 14 14 16 17 15 14 14 17 21 21 17 14 16 20 23 23 19 16 17 20 22 22 19 16 16 17 18 18 16 15 13 13 14 14 13 13 16 16 18 18 16 17 14 17 20 19 16 15 15 19 23 22 18 16 16 19 22 22 18 17 16 18 19 19 16 17 17 16 17 17 16 18 17 15 18 18 17 20 15 12 14 14 13 15 17 13 14 14 13 16 19 16 17 16 15 17 21 20 22 21 18 18 24 25 27 27 23 22 25 20 21 21 20 21 17 15 16 16 15 15 16 14 16 16 14 15 14 13 14 15 13 14 13 11 13 12 11 12 16 13 15 15 14 16 16 16 18 18 16 15 17 17 19 19 16 16 18 19 22 21 18 17 18 19 22 22 19 17 17 18 20 20 17 16 20 20 21 22 20 19 16 14 15 15 13 16 12 13 15 15 13 12 14 15 18 18 16 14 15 17 21 21 18 15 15 17 20 20 17 15 18 19 21 21 18 15 16 17 18 18 17 17 16 15 16 16 16 17 15 15 15 15 15 16 14 14 14 14 14 14 12 13 13 13 13 12 12 13 12 12 12 12 14 17 19 20 17 13 14 18 22 23 19 14 16 20 24 24 20 16 16 19 22 22 19 16 14 16 19 19 17 14 14 16 17 17 16 15 19 18 19 19 18 16 17 19 21 21 19 16 19 21 23 23 20 17 19 19 22 22 19 16 18 17 19 18 16 15 18 18 19 18 17 16 13 15 16 16 14 14 11 14 16 16 14 12 12 15 18 19 16 14 13 16 19 19 16 14 13 15 17 17 15 14 15 16 17 17 15 16 25 22 22 22 21 22 20 15 16 16 15 19 21 16 16 17 15 20 20 16 17 16 15 20 18 14 15 15 14 18 19 19 20 20 18 20 27 18 18 19 18 27 18 12 13 13 12 17 18 14 17 17 15 18 18 15 18 18 16 18 18 14 16 16 14 17 25 20 20 19 19 23 15 15 17 18 15 17 16 18 21 21 18 16 17 20 23 23 20 18 17 19 22 23 20 18 16 17 20 20 18 17 19 19 20 20 19 20 15 14 15 15 14 16 12 11 12 12 11 12 13 13 15 15 13 12 14 15 17 17 15 14 15 15 17 17 15 14 18 18 19 19 17 17 16 19 22 22 20 16 15 19 22 22 19 15 16 19 21 21 19 16 16 18 20 20 19 17 15 16 18 18 17 16 15 17 18 18 17 17 16 14 17 17 13 12 15 15 19 20 15 14 17 18 22 23 18 16 18 18 21 22 18 16 17 16 17 17 15 15 21 17 18 18 17 19 20 18 18 18 17 20 16 14 14 14 13 17 17 15 15 15 14 18 18 15 15 15 14 18 17 14 14 14 14 18 23 19 18 18 17 24 16 13 15 15 14 16 15 14 16 17 15 15 16 16 19 19 17 16 15 16 18 18 15 15 13 14 15 14 13 14 16 15 15 15 14 15 11 15 19 20 17 12 12 19 24 24 20 13 13 20 26 27 22 15 13 18 22 22 19 14 12 14 15 15 14 12 18 17 17 17 17 18 14 15 16 16 15 14 14 16 19 19 16 14 16 18 21 21 18 16 16 18 21 21 18 17 14 16 18 18 16 15 14 15 16 16 14 14 17 16 17 17 16 17 15 16 18 18 15 14 16 18 20 20 17 15 16 17 20 19 17 15 15 15 17 16 14 13 17 16 17 16 16 16 17 16 18 18 16 17 16 16 19 19 17 18 18 18 21 22 19 19 18 18 21 21 19 18 17 16 18 18 16 16 18 16 17 17 17 17 14 14 15 15 14 14 13 15 17 17 14 13 14 17 20 21 17 14 15 18 22 22 18 16 16 17 20 20 17 16 20 17 18 18 17 19 13 15 18 19 15 17 13 16 20 20 17 16 14 17 20 20 17 17 14 17 19 19 16 17 13 15 17 17 14 16 15 16 17 17 15 19 13 16 17 17 15 13 15 17 19 19 17 15 17 20 22 21 19 16 17 20 22 22 19 16 15 17 19 18 17 14 13 14 15 15 14 14 19 17 18 18 17 20 15 17 19 19 17 17 16 18 22 23 20 18 17 19 22 22 19 19 17 18 19 18 16 17 18 17 18 18 16 19 18 16 17 16 16 18 13 14 15 15 13 12 15 17 19 18 15 13 15 17 19 19 16 14 15 16 17 17 15 14 20 16 17 17 16 20 17 14 15 15 14 19 11 12 14 14 12 12 13 14 18 19 15 13 13 14 18 19 16 13 13 14 16 16 14 13 15 15 16 16 15 15 12 14 16 17 15 17 14 15 18 17 15 17 16 18 20 19 17 19 18 19 20 19 17 19 17 18 19 18 16 18 19 18 19 18 17 19 13 16 19 20 17 15 14 17 20 22 19 16 15 18 21 23 20 17 15 17 20 21 19 17 15 17 18 18 17 16 15 16 17 17 16 15 17 16 17 17 17 17 14 14 16 16 15 14 15 16 17 17 16 15 16 16 17 17 16 16 15 14 15 15 13 15 19 17 17 17 16 18 21 19 20 20 19 21 18 16 19 19 16 17 18 18 21 21 18 17 18 18 21 21 18 17 17 16 18 18 16 16 20 18 20 20 19 21 15 14 16 16 14 16 14 14 18 18 15 15 16 16 20 21 17 17 16 16 19 20 17 17 15 14 16 16 14 15 20 17 18 18 17 23 27 23 24 24 23 26 18 13 14 14 13 16 17 13 15 15 14 15 16 13 14 15 13 15 14 12 13 13 12 13 17 14 15 15 14 16 16 14 15 15 15 19 14 14 17 17 14 13 16 17 21 21 17 15 17 17 20 21 17 16 17 15 17 17 15 17 19 14 15 15 14 18 20 17 19 19 17 20 17 16 18 17 14 16 17 17 20 19 15 16 16 16 19 18 15 16 16 14 15 15 13 15 19 15 15 15 14 20 19 18 18 18 18 19 15 11 11 11 11 13 16 11 12 11 11 14 17 12 12 12 12 15 17 13 14 14 13 17 21 18 19 19 18 19 17 16 17 17 15 18 14 15 17 17 14 14 15 17 21 21 17 15 16 17 20 21 17 16 15 16 18 18 15 15 15 15 16 16 14 15 18 18 18 18 17 18 14 13 15 15 13 14 14 14 17 16 13 14 14 13 15 15 13 14 14 12 13 13 11 13 20 17 17 18 17 19 21 18 20 20 19 21 18 15 16 16 16 19 20 15 15 15 15 20 19 13 12 12 12 19 16 10 10 10 10 16 19 16 17 17 16 20 26 24 25 24 23 28 21 16 15 13 14 21 21 16 15 13 14 21 20 16 15 14 14 19 17 15 15 15 14 17 16 15 16 17 15 16 20 15 16 17 16 23 14 16 18 18 16 15 14 18 20 19 17 16 15 17 19 18 16 15 15 15 15 15 14 14 18 16 17 16 16 20 15 17 19 19 17 15 15 17 20 20 17 15 17 18 20 20 17 16 17 17 18 17 16 17 17 16 17 17 15 17 22 19 20 20 19 20 19 17 17 18 18 20 15 14 15 15 14 16 17 17 18 18 17 18 17 18 20 20 18 19 16 17 19 18 16 18 18 17 18 18 17 19 16 15 16 16 15 15 13 14 18 18 16 12 15 18 22 22 19 14 15 19 22 23 20 16 15 18 21 21 18 15 16 16 18 18 16 16 13 12 11 11 11 13 14 12 12 12 11 14 15 12 13 13 12 13 16 13 14 14 13 14 16 14 14 14 13 14 19 18 18 18 17 17 16 16 17 17 16 17 16 14 16 16 15 16 18 15 16 16 15 18 18 14 15 15 14 18 17 13 14 14 13 16 18 15 16 16 15 16 11 14 16 16 14 11 12 16 20 21 18 13 13 19 22 23 20 16 14 19 22 22 20 15 14 17 20 19 18 15 13 16 18 18 17 15 12 14 16 16 13 11 15 20 23 22 18 13 17 22 26 26 22 15 16 21 25 25 21 15 15 18 21 20 18 14 17 18 19 19 17 16 12 13 15 15 14 13 13 16 19 20 17 15 15 19 22 22 19 17 16 19 21 22 19 18 15 16 18 19 17 17 15 17 18 18 17 18 19 17 17 17 17 18 16 15 16 16 15 16 16 16 18 18 16 17 15 16 19 19 17 17 14 15 17 18 16 16 15 15 17 17 17 18 14 14 15 15 14 12 15 16 18 18 16 14 17 19 22 21 18 16 18 20 23 23 19 16 17 18 21 21 18 15 20 20 22 21 19 17 22 16 18 18 17 16 18 13 15 16 15 15 18 15 17 17 16 17 17 15 17 17 15 17 16 14 15 15 13 14 21 16 16 16 16 16 15 16 19 19 16 17 15 18 21 21 18 16 16 19 23 23 19 18 17 18 21 21 18 18 16 16 17 17 15 17 24 19 20 20 19 23 14 14 16 15 13 12 14 16 20 20 17 13 15 19 23 24 20 15 15 18 22 23 20 15 15 16 19 19 17 15 17 18 20 20 19 18 23 21 21 21 21 24 20 16 15 15 15 20 21 16 15 14 15 20 21 15 14 14 14 20 21 16 15 14 14 21 23 21 21 21 21 22 16 17 19 19 17 15 15 18 21 22 19 16 17 20 23 23 21 18 18 19 22 22 19 18 18 17 18 19 17 17 20 18 19 19 18 18 14 14 14 15 14 14 14 14 16 16 14 12 14 16 18 18 15 13 14 16 19 18 15 13 14 14 16 16 14 13 13 12 13 13 13 12 17 16 16 16 15 16 17 17 17 15 14 15 19 20 19 17 16 17 21 21 22 20 17 17 20 20 21 20 17 16 23 22 22 21 19 18 23 19 20 20 19 23 18 13 13 13 13 19 19 13 13 14 13 19 19 13 13 13 13 19 18 13 13 14 13 18 25 22 22 21 21 25 16 16 16 16 15 14 14 15 17 17 15 14 15 18 20 20 18 16 16 18 21 20 18 17 15 16 18 18 16 17 18 17 18 18 18 18 23 20 21 20 19 23 18 16 18 18 17 19 19 18 20 19 18 20 19 18 19 19 18 19 19 17 18 18 17 18 23 20 19 19 19 22 19 16 18 18 16 19 15 13 15 16 13 15 17 15 17 17 15 17 16 15 18 17 16 16 15 14 17 17 14 14 18 18 19 19 17 17 16 16 18 17 15 14 15 15 17 17 14 14 16 15 17 17 15 15 16 14 15 15 14 14 15 13 14 14 12 13 15 14 14 15 14 14 21 19 20 21 19 21 15 13 14 14 13 14 15 12 13 14 13 13 14 12 13 13 12 12 13 12 13 13 12 12 14 13 14 14 13 13 17 16 16 16 15 17 13 13 15 15 13 13 15 16 19 20 17 15 16 19 23 23 19 17 16 19 23 23 19 16 17 19 22 22 20 19 16 17 18 17 16 16 15 14 16 16 14 14 16 16 18 18 17 15 17 17 19 19 18 17 16 16 18 18 18 17 16 16 17 17 17 16 15 16 18 19 17 16 14 16 20 21 17 15 17 18 22 23 19 18 18 17 20 21 19 19 18 15 16 16 16 20 24 20 21 21 20 25 12 14 15 15 15 14 14 14 13 13 14 15 14 12 12 12 13 15 15 13 12 12 14 17 16 15 14 14 16 17 19 20 20 20 20 18 16 13 16 17 14 12 12 12 18 19 15 12 13 14 21 22 18 14 13 14 23 24 20 16 14 14 22 24 20 16 15 16 23 25 21 17 13 16 18 19 16 13 15 22 27 27 23 16 17 25 31 32 25 17 17 22 27 28 22 16 15 17 19 20 17 15 14 14 15 15 14 14 16 15 16 17 16 16 14 15 18 18 15 14 15 17 20 21 18 16 15 19 22 22 19 16 13 19 22 22 19 15 11 15 18 19 16 13 12 13 14 14 13 12 13 16 17 17 16 13 16 18 19 19 19 16 16 19 21 20 18 16 15 17 19 19 17 15 14 15 16 17 15 14 12 15 17 17 15 12 11 15 17 17 15 12 14 17 19 19 17 14 15 17 19 19 18 16 15 18 19 20 18 16 16 19 21 23 21 18 27 21 20 20 20 25 23 21 20 20 19 21 19 18 20 19 17 18 16 16 17 17 15 15 14 14 15 15 13 13 15 15 17 17 14 14 19 20 22 23 21 22 18 17 19 20 18 18 19 18 20 21 18 19 18 17 19 19 17 18 16 16 18 18 15 16 17 18 19 19 17 16 8 10 10 10 9 6 11 17 22 22 17 10 12 20 29 30 22 12 11 19 28 28 21 13 10 16 22 22 17 12 8 12 15 15 13 10 10 12 17 18 15 14 11 16 23 26 22 16 12 18 28 31 24 18 12 17 24 26 21 17 12 14 16 18 16 15 11 11 12 13 13 14 18 20 23 22 20 20 17 22 26 26 21 19 18 23 29 29 23 20 17 21 26 27 22 19 15 17 21 22 18 18 15 15 17 17 17 18 17 19 20 20 19 17 18 21 20 20 20 17 17 19 19 19 19 17 16 18 18 18 18 17 16 18 18 18 18 17 17 19 20 20 19 19 15 21 27 28 21 16 18 26 34 33 26 19 16 23 28 28 22 17 13 16 20 19 16 13 9 10 12 12 11 10 8 10 10 11 10 9 11 14 15 15 12 9 15 19 21 20 17 12 18 21 23 22 19 14 18 20 20 19 17 14 16 16 17 15 14 13 16 15 16 15 15 14 17 17 17 16 16 21 15 13 12 11 11 15 18 15 14 13 13 18 21 18 18 17 17 20 22 21 22 21 19 21 22 22 24 23 22 23 16 15 16 16 15 16 16 16 16 16 17 16 18 18 18 18 18 18 18 18 20 20 18 18 17 18 19 19 18 16 17 18 19 19 18 17 10 13 15 15 12 7 14 21 25 25 19 11 14 22 27 26 20 12 13 17 21 20 16 11 10 12 14 14 12 9 10 12 13 13 11 10 19 25 29 28 23 18 18 24 28 28 24 18 16 20 23 23 20 17 13 15 17 17 16 14 9 12 14 15 13 12 10 12 15 15 13 12 25 21 20 17 14 17 23 25 23 19 15 15 20 22 20 16 14 16 17 18 16 13 13 16 13 13 11 11 11 14 17 16 16 15 15 18 16 18 18 17 16 19 17 17 17 16 14 17 18 17 16 15 14 18 17 16 15 15 15 20 15 15 16 16 17 21 17 16 17 19 20 26 15 18 20 20 20 18 18 21 21 22 22 21 22 22 21 22 23 23 22 21 20 20 21 21 19 18 17 16 17 17 17 16 16 15 15 14 18 17 16 16 16 18 18 18 19 18 18 18 18 19 21 20 19 18 18 18 20 20 18 17 17 17 18 18 17 16 18 17 17 18 17 16 13 15 20 20 16 11 11 14 19 20 15 11 13 15 19 19 15 14 17 18 20 20 18 17 20 22 23 23 21 21 23 26 28 28 26 24 13 15 17 17 14 11 16 23 28 28 22 15 17 25 33 33 25 16 17 22 28 28 22 15 15 18 20 21 18 14 15 16 18 18 17 14 19 16 16 15 15 19 17 13 13 12 12 17 20 16 15 14 15 20 22 17 16 16 18 22 22 17 15 16 18 21 22 16 15 16 17 20 18 20 22 22 19 17 15 18 20 20 17 15 16 20 22 23 19 17 17 20 23 23 20 17 15 18 20 20 17 15 19 20 22 21 20 20 20 19 20 21 20 20 17 17 19 20 17 17 18 19 21 22 19 18 18 20 23 24 21 20 19 20 22 23 21 21 21 21 22 22 22 23 10 10 12 13 11 9 12 15 21 22 18 13 13 17 25 27 22 15 13 16 22 24 20 15 13 14 18 20 18 16 16 16 18 19 18 18 16 17 18 18 17 17 13 11 12 12 11 13 14 14 14 14 14 15 16 17 18 18 17 17 19 21 22 21 20 20 21 21 22 21 21 21 19 17 19 19 17 22 15 16 20 20 16 17 16 17 22 21 16 17 16 18 22 21 17 18 16 17 21 21 16 18 16 17 20 20 17 17 16 19 20 20 18 15 18 23 25 25 23 18 18 23 27 26 23 18 17 19 21 22 19 15 14 14 14 14 13 12 15 13 13 12 12 13 21 22 21 17 13 10 25 26 23 18 13 11 24 24 20 16 12 12 19 17 14 12 11 12 15 12 10 10 9 11 16 16 16 17 17 19 13 18 22 22 18 13 16 23 27 27 22 14 15 20 23 23 19 13 11 14 16 16 14 12 10 11 12 12 11 10 13 15 17 17 15 14 10 15 17 19 16 10 13 21 28 30 24 13 12 21 30 32 23 12 10 16 23 25 18 10 8 11 15 15 12 9 7 9 11 10 9 8 18 22 24 25 22 16 19 24 26 26 23 17 18 20 21 21 20 16 14 14 15 15 15 14 12 11 11 12 11 12 13 13 14 14 13 15 13 17 21 22 19 16 14 20 26 28 24 19 14 20 25 26 22 18 13 15 17 18 16 15 10 11 11 11 12 13 11 11 11 12 12 13 10 13 16 17 13 9 11 17 24 24 17 11 12 19 26 25 19 13 11 17 23 22 18 12 10 16 19 19 17 13 13 18 22 22 19 15 18 19 22 22 19 18 17 20 25 26 20 17 18 22 28 29 22 18 17 21 25 25 20 18 16 17 20 20 17 16 17 16 18 18 17 17 13 12 14 14 13 13 11 13 15 16 13 12 14 16 20 20 17 14 18 20 23 24 20 18 21 23 25 25 22 21 25 26 27 27 25 24 16 18 21 22 18 15 15 21 26 26 21 15 16 22 28 28 22 16 15 21 26 26 20 16 14 17 22 22 18 15 13 16 18 18 16 14 12 12 13 14 12 11 11 10 13 13 11 9 12 14 18 19 15 12 13 20 27 27 20 14 13 21 27 27 21 14 14 18 22 22 19 15 12 13 13 14 15 17 12 15 16 18 18 17 12 16 19 21 20 17 13 17 20 22 21 18 13 17 19 20 20 18 14 16 17 18 19 20 13 15 17 17 16 14 11 13 14 14 13 11 13 16 17 18 16 13 16 20 22 22 20 15 17 23 26 25 22 17 17 23 26 25 22 18 14 16 20 20 18 17 15 18 23 23 21 18 15 18 23 24 21 18 14 17 21 21 19 17 13 14 17 18 16 15 14 14 15 17 15 14 16 17 20 20 18 16 15 13 16 17 15 16 15 12 13 14 13 16 15 12 14 14 13 15 15 13 16 16 13 14 22 19 21 21 20 23 19 21 23 22 19 14 14 17 19 19 16 12 13 15 17 17 15 13 11 13 15 15 15 13 9 11 13 13 13 12 13 15 16 16 16 14 18 15 15 14 11 11 14 17 19 18 14 10 14 19 22 21 16 11 14 19 22 21 16 12 13 16 18 17 14 11 19 16 17 16 15 15 20 25 29 32 30 23 22 26 27 29 30 25 20 22 22 24 25 22 15 16 17 17 17 16 12 12 13 14 13 13 12 13 14 15 15 14 15 18 19 17 13 11 14 20 22 20 16 13 15 18 21 20 17 14 14 17 18 18 16 14 14 15 16 16 15 13 15 14 16 16 15 13 14 15 16 17 16 14 14 16 18 19 17 15 14 17 19 20 18 16 14 16 18 19 18 15 13 14 15 16 14 13 13 13 14 14 13 14 17 17 18 18 17 15 17 18 20 22 19 15 18 19 22 24 20 16 18 17 20 21 18 15 18 15 17 18 15 14 20 18 19 20 18 17 14 14 16 16 14 14 13 15 18 18 16 14 14 18 21 21 18 16 15 19 23 23 19 16 15 19 22 22 18 15 16 18 20 20 18 16 14 13 13 12 11 12 11 9 10 10 11 13 13 11 12 15 17 18 14 12 16 21 23 24 14 14 18 23 26 27 14 16 20 24 27 28 11 11 15 20 23 22 12 10 14 20 24 23 16 13 14 18 22 24 20 18 16 15 18 21 24 20 17 13 14 17 27 23 19 16 14 16 17 17 18 17 17 17 16 16 17 17 15 15 18 19 21 19 17 17 19 21 22 21 18 17 19 21 21 20 18 16 19 20 19 18 17 15 11 17 22 23 19 13 12 18 24 25 21 15 13 18 23 24 21 16 12 14 17 18 17 15 11 11 12 13 13 13 22 19 20 20 20 21 10 15 18 18 14 10 12 21 28 27 20 12 11 22 31 30 20 11 9 17 24 23 16 9 7 10 13 13 10 7 6 8 9 10 9 8 17 11 13 14 13 13 14 11 12 13 12 13 16 13 14 16 17 17 18 15 18 20 22 22 18 15 18 21 23 24 17 14 16 18 21 26 17 19 22 23 20 17 17 19 23 23 20 18 17 19 22 23 20 18 18 17 19 20 19 19 17 15 16 16 16 18 19 18 19 19 19 19 14 13 13 13 13 17 15 15 14 14 12 14 18 19 18 17 15 15 20 21 21 19 16 16 19 20 20 17 15 16 19 18 18 17 17 20 11 15 18 18 15 11 14 20 24 24 20 15 15 21 25 26 22 16 15 19 22 22 20 15 13 16 18 18 16 14 13 14 16 16 15 14 15 16 18 18 17 16 17 18 20 21 19 16 18 21 24 24 21 18 19 20 23 22 21 17 17 18 20 19 18 16 16 17 18 18 16 15 9 11 13 13 11 8 13 18 23 23 18 13 14 21 27 27 20 14 13 19 24 24 19 13 10 15 18 17 14 12 9 11 12 12 11 11 13 15 17 17 16 13 17 21 22 23 20 15 16 20 22 22 20 15 15 17 19 19 17 15 13 15 16 16 14 13 14 13 14 14 12 12 12 11 11 14 15 18 14 11 11 14 15 17 17 14 13 13 14 16 20 17 15 13 12 15 22 18 15 13 12 15 22 19 17 15 15 15 13 13 14 15 13 12 10 10 11 11 10 10 12 13 15 15 14 13 14 18 22 22 19 17 16 21 25 25 22 20 18 22 24 24 23 20 17 17 18 17 16 18 16 18 20 20 17 17 17 21 24 25 21 18 18 22 25 25 22 19 18 21 22 23 20 18 16 18 18 18 18 17 17 14 15 14 14 16 16 17 17 15 14 14 18 19 18 17 16 15 19 19 19 18 18 15 17 18 18 17 17 15 15 16 16 15 14 13 14 14 15 15 13 10 16 19 23 22 18 12 19 23 29 28 21 15 20 23 29 28 21 15 19 20 23 23 18 14 14 15 16 16 14 12 10 15 21 22 16 10 12 21 30 31 22 13 11 20 30 31 22 12 9 15 21 22 17 10 7 9 12 14 11 8 8 8 9 10 9 8 18 16 16 17 17 20 11 10 12 12 11 11 13 14 16 17 14 13 17 19 21 20 18 17 19 22 24 23 21 19 16 18 21 20 18 17 13 14 16 16 14 14 14 17 23 23 19 15 16 20 27 27 21 17 15 18 23 24 19 16 14 15 17 17 16 14 17 17 18 18 17 18 12 15 19 20 17 12 13 18 22 23 19 14 15 20 24 25 21 16 16 19 22 22 20 16 15 18 20 20 18 16 15 17 19 19 18 17 24 21 20 17 14 13 17 17 17 15 13 13 17 17 17 15 14 16 18 18 17 15 14 17 19 18 17 15 13 15 22 21 19 17 14 17 14 19 27 27 19 13 15 21 31 30 21 14 14 19 27 27 19 14 13 15 20 20 15 12 11 12 14 15 12 11 14 14 16 16 14 14 20 13 14 15 15 14 13 10 13 14 12 10 13 13 18 20 17 13 14 16 21 22 18 14 15 15 20 20 18 14 15 15 18 18 16 13 15 19 21 21 19 16 15 20 24 23 21 17 15 19 22 22 20 16 13 15 17 17 16 14 11 12 13 13 12 12 11 10 11 11 11 11 14 17 19 19 17 15 14 17 20 20 17 14 14 19 22 22 18 14 14 18 20 20 17 14 13 16 17 18 16 14 15 16 17 18 16 15 11 15 18 18 14 10 12 17 22 23 18 12 14 20 26 26 21 15 15 19 23 24 20 15 14 16 18 18 17 13 17 16 18 18 17 19 13 13 17 20 21 21 13 14 19 22 22 19 13 14 19 21 21 19 13 12 16 18 17 16 11 10 12 14 14 14 12 11 13 14 14 16 19 15 15 15 15 17 20 16 15 16 17 19 22 19 17 19 20 22 23 19 17 18 20 23 21 17 16 16 17 22 21 16 15 15 15 19 11 15 19 19 15 15 11 17 24 26 19 14 11 16 24 26 19 15 10 13 19 20 16 14 8 9 12 13 11 12 16 13 14 14 13 19 16 16 17 17 16 17 14 16 21 22 18 17 15 18 25 27 22 17 14 17 23 25 21 16 13 15 18 20 18 15 14 14 16 16 15 16 11 11 12 11 10 9 12 14 15 14 11 10 15 17 18 15 12 11 19 20 19 16 14 12 23 23 20 17 14 12 28 23 20 18 15 13 14 14 18 18 15 13 13 17 22 22 17 14 15 20 29 29 21 15 15 20 28 29 21 15 13 17 21 22 17 14 19 18 20 21 19 18 13 13 15 14 12 21 10 11 13 12 9 17 11 14 17 15 10 16 13 18 22 19 13 17 16 23 27 24 16 18 23 30 32 29 19 19 26 20 22 22 20 23 23 17 19 19 17 20 23 19 22 22 19 21 21 19 22 22 18 20 18 16 19 19 15 17 23 18 20 20 18 23 15 14 13 13 14 16 13 13 13 15 17 20 13 13 13 16 20 23 12 11 13 18 22 24 12 11 13 18 21 24 13 15 17 21 24 29 12 11 14 19 24 29 11 11 14 21 27 26 12 11 14 20 24 23 12 10 12 16 19 20 10 9 11 13 15 16 12 11 12 14 15 15 14 14 13 15 16 15 14 15 15 18 20 19 19 18 17 19 22 21 20 18 16 18 20 20 19 16 14 15 16 16 17 15 13 14 14 15 15 18 23 22 18 14 14 19 25 25 19 13 15 19 25 25 19 14 14 16 20 21 16 13 12 12 15 16 14 13 14 15 18 18 16 19 17 19 18 13 10 11 20 23 20 14 10 13 23 25 20 14 12 15 23 22 18 14 14 18 20 18 15 13 14 18 18 17 15 15 16 21 17 23 29 29 23 17 15 21 27 28 21 16 16 21 25 26 21 17 17 20 23 23 20 18 16 18 21 20 18 17 18 18 20 20 18 20 13 12 14 16 15 19 12 11 14 15 14 16 13 13 16 18 17 18 14 14 18 20 19 19 14 15 18 21 20 20 16 15 18 19 19 22 13 15 17 17 14 12 14 16 19 18 14 11 17 20 24 23 18 14 20 23 26 26 21 17 23 24 27 26 23 20 25 24 26 25 23 21 9 14 17 16 13 8 12 23 29 29 22 12 13 24 32 32 23 13 11 19 25 25 19 11 8 12 15 15 13 9 5 8 10 10 10 8 16 17 18 18 16 14 19 21 23 23 21 18 19 22 23 24 22 19 18 20 20 21 20 17 14 15 15 15 15 14 17 17 17 17 17 17 15 14 14 15 16 17 16 14 15 15 16 18 18 16 16 16 18 20 18 16 17 16 18 20 17 15 15 15 16 20 19 17 17 17 18 22 12 15 18 18 16 12 13 18 23 23 18 13 13 19 24 24 20 13 13 18 22 22 18 13 11 15 18 18 15 10 11 12 14 14 12 9 9 12 14 14 11 14 10 13 16 15 11 10 13 17 20 19 14 12 14 21 25 23 17 13 15 21 24 23 18 14 15 20 22 21 17 14 18 20 19 18 17 17 19 21 19 17 17 17 21 22 20 18 17 18 21 21 19 18 17 18 20 19 17 15 15 17 22 20 18 16 16 18 15 16 17 17 16 16 16 18 19 18 18 17 18 20 21 20 19 19 17 18 19 19 18 18 15 15 15 15 14 15 19 18 19 19 18 21 15 14 14 12 10 11 13 13 13 13 12 13 14 17 20 20 17 15 15 20 25 25 21 17 15 20 24 25 21 16 15 19 21 20 18 14 20 19 20 20 20 21 15 17 19 19 17 17 15 18 20 21 19 18 15 17 20 21 19 18 14 16 19 19 17 16 17 16 18 18 17 16 24 24 21 16 12 14 24 26 23 17 12 12 23 25 22 16 12 13 22 22 19 14 11 12 18 17 15 12 9 11 18 17 15 13 11 17 18 19 20 20 19 16 18 19 20 19 18 17 18 18 18 18 18 16 18 18 17 17 17 16 17 18 19 19 17 16 18 21 22 22 20 16 16 20 22 21 18 15 15 22 27 26 20 14 14 20 25 24 18 13 12 14 17 17 14 11 11 11 13 13 11 11 14 14 15 15 13 13 15 18 20 20 18 16 14 18 22 22 20 16 15 18 21 21 19 16 14 15 17 17 16 13 12 13 15 14 13 12 14 14 16 16 15 13 18 20 25 25 21 21 16 16 21 21 17 18 15 16 20 20 16 17 14 15 19 19 16 16 14 13 17 17 14 16 19 21 24 24 22 23 14 16 19 19 17 15 15 20 25 25 21 16 17 22 28 28 22 18 17 21 25 25 21 17 15 17 18 19 17 15 14 13 14 14 13 17 12 14 17 17 14 11 13 15 18 18 15 12 17 18 19 19 17 15 22 21 20 20 19 18 25 22 20 19 18 20 23 21 19 17 17 19 12 15 17 16 12 8 14 17 18 17 13 9 15 17 18 17 14 12 16 18 19 19 18 16 16 20 23 23 22 19 15 19 21 22 21 18 20 17 17 17 17 20 15 16 18 19 18 15 16 19 22 23 21 17 17 20 23 24 21 17 16 18 20 21 19 16 18 18 20 21 19 17 22 20 22 22 19 21 19 19 21 21 18 20 20 19 21 21 19 21 19 18 19 19 18 20 17 15 15 15 14 16 18 15 16 16 16 18 13 15 15 15 13 11 14 18 21 20 17 13 16 19 21 20 18 14 18 20 21 20 18 16 17 18 18 18 17 15 14 14 15 15 14 12 15 15 15 15 14 14 18 16 15 15 15 15 19 16 15 16 17 16 19 14 15 18 20 18 16 12 14 17 21 19 15 13 14 19 22 20 14 16 18 18 15 12 15 21 27 25 18 13 16 23 31 30 20 13 15 22 27 26 18 12 14 18 20 18 15 11 15 16 17 16 15 13 10 12 14 15 13 12 12 16 19 19 16 14 14 18 23 23 20 16 15 20 24 24 20 17 16 20 23 23 19 16 17 19 21 22 19 16 14 13 14 14 13 14 12 12 13 14 12 12 14 17 19 19 17 14 17 21 23 23 21 18 19 22 24 24 22 20 18 20 22 22 21 19 20 15 15 16 18 21 15 12 11 12 12 14 20 18 16 17 18 18 22 20 18 19 20 20 19 17 16 16 17 18 16 15 14 15 15 15 14 17 17 16 15 13 19 23 24 24 23 18 20 23 25 25 25 20 19 21 21 22 22 20 18 17 17 17 17 17 19 17 17 16 16 17 22 23 25 25 23 24 19 21 23 23 21 22 17 19 20 21 20 20 16 18 20 20 19 18 14 16 18 18 16 16 13 14 16 16 15 14 13 19 22 18 12 9 13 20 23 20 12 9 13 18 21 18 12 10 13 14 16 14 11 11 12 12 13 13 11 11 17 15 17 17 15 15 20 19 20 20 19 17 15 14 18 17 14 12 14 14 18 17 14 11 15 14 16 17 15 13 16 14 16 17 15 14 17 17 20 20 18 16 16 20 21 20 18 15 18 23 25 24 21 17 17 21 23 23 20 16 15 18 19 19 17 16 14 16 18 17 15 15 13 15 17 16 14 14 22 16 15 13 12 18 19 13 12 11 11 16 19 14 14 13 13 18 18 13 14 14 14 19 17 12 13 13 14 21 21 14 15 16 17 23 12 16 21 19 13 10 12 16 22 19 13 10 12 17 22 20 14 11 12 15 20 19 14 11 12 15 19 17 13 11 16 19 22 20 17 14 22 16 16 17 17 16 17 14 15 15 15 15 17 15 16 17 16 16 18 15 16 16 16 16 18 14 14 15 15 16 23 20 19 19 19 22 12 13 14 15 13 11 13 15 18 18 16 13 15 19 22 22 19 15 16 20 24 24 20 15 17 20 23 22 19 15 17 19 21 21 18 16 -------------------------------------------------------------------------------- /data/act_range/1x/fc6.txt: -------------------------------------------------------------------------------- 1 | 4 4 5 5 5 4 4 4 4 4 4 5 4 5 4 5 4 4 4 4 3 5 3 4 4 4 5 4 4 4 5 4 4 5 5 5 4 4 4 4 4 4 4 4 5 5 5 4 5 5 4 4 4 4 5 4 4 4 4 5 4 5 5 5 5 4 4 4 4 4 4 4 4 4 3 5 4 5 5 4 5 4 4 5 5 4 4 4 5 5 4 3 5 4 5 5 4 5 5 5 4 6 4 4 4 4 5 4 4 4 4 5 4 5 5 4 5 5 4 4 4 5 3 4 4 4 4 4 5 5 4 5 5 5 5 4 4 5 5 5 5 4 5 5 4 4 3 4 5 4 5 4 5 4 4 3 6 4 5 4 5 5 5 4 4 5 5 5 5 4 4 4 5 6 6 4 4 4 4 5 4 4 4 5 4 4 5 4 5 3 5 4 5 5 5 5 4 4 4 5 4 4 4 4 5 5 5 4 4 3 4 3 4 5 5 5 5 3 4 4 5 5 4 5 4 4 5 4 4 4 5 4 5 4 4 4 4 5 4 5 4 5 5 3 4 4 4 5 4 4 4 4 4 5 5 4 5 4 5 4 5 5 3 5 5 5 5 5 4 4 4 4 3 4 4 4 5 4 3 5 4 4 4 4 4 5 4 4 4 4 4 6 4 5 5 3 4 5 5 4 4 4 4 4 3 4 5 5 5 3 4 4 5 4 4 4 5 4 4 5 4 5 5 4 4 4 3 4 3 5 4 5 5 4 5 4 4 5 5 4 5 6 4 4 5 4 3 5 5 5 5 4 4 4 6 5 4 5 4 5 4 4 4 4 4 4 4 4 5 5 4 4 5 5 4 5 4 4 4 4 5 3 4 4 5 4 5 4 5 4 4 5 4 4 4 5 5 5 5 5 4 4 4 5 5 4 4 5 5 5 5 3 4 5 4 4 5 4 5 5 4 4 4 5 4 6 4 5 4 5 5 5 4 5 4 4 5 5 5 4 5 5 3 5 6 4 4 5 5 4 4 5 4 4 4 4 4 4 4 4 4 5 4 3 4 5 4 4 4 5 5 4 5 4 5 4 5 6 4 4 4 4 4 4 5 4 4 5 5 4 4 4 4 3 4 4 4 5 4 4 5 4 4 5 4 5 4 4 4 4 4 4 5 5 4 5 5 4 5 6 4 5 4 4 5 5 4 5 4 4 5 5 4 5 4 5 4 5 4 4 5 4 4 4 4 4 4 4 5 5 5 4 4 5 5 5 4 4 4 4 4 5 5 4 5 5 4 4 5 4 4 3 5 4 5 5 5 5 4 4 5 4 4 4 4 5 5 5 5 4 4 4 4 4 5 5 5 5 4 4 5 4 4 2 4 5 6 5 4 5 4 5 5 4 4 5 4 4 6 5 4 5 4 4 4 4 5 4 4 5 4 4 6 4 4 4 4 4 4 5 4 5 4 4 4 4 4 4 4 5 5 4 5 5 4 4 4 3 4 4 5 3 4 4 5 4 4 5 4 5 4 5 4 5 4 5 3 4 4 5 4 4 4 4 4 5 5 4 4 4 5 4 4 4 3 6 5 5 4 4 5 4 5 4 5 5 5 4 4 5 4 5 4 4 4 4 5 4 4 4 4 5 4 5 3 4 4 4 5 4 4 4 5 3 4 4 4 3 5 4 6 4 5 4 4 5 5 4 4 3 5 4 5 4 5 4 4 5 5 4 4 5 4 5 4 4 4 5 4 4 4 4 4 4 5 5 5 4 4 5 4 3 5 5 4 4 4 4 4 4 4 4 5 4 4 4 5 5 4 4 4 4 5 4 5 5 4 3 3 4 4 4 5 4 4 4 4 4 5 3 4 5 5 5 4 5 4 4 5 5 4 5 4 5 4 4 5 5 5 4 4 5 4 4 4 4 5 5 5 5 4 5 5 4 5 4 4 5 4 4 4 4 4 5 5 5 4 4 5 5 4 4 4 4 4 5 4 5 4 4 4 5 4 4 4 4 4 4 5 5 5 5 4 4 5 5 4 4 4 5 4 4 4 4 5 6 4 4 4 5 4 4 5 4 4 5 4 5 4 4 4 4 4 5 5 5 5 5 5 4 5 5 3 4 4 5 4 5 5 5 4 5 5 4 5 5 5 4 5 5 5 3 5 3 5 4 4 4 5 4 5 4 4 4 4 5 4 4 4 5 3 5 4 4 5 4 4 4 4 5 5 5 4 4 4 4 4 4 4 4 5 4 4 5 5 4 4 4 4 4 4 5 4 4 4 5 4 4 4 4 4 5 4 4 4 4 4 6 4 4 5 5 4 5 5 4 5 5 6 4 5 5 5 4 5 4 4 4 5 4 5 4 4 5 4 5 4 4 5 4 4 3 4 5 4 4 5 4 4 4 5 5 5 5 5 5 5 5 5 4 5 5 4 4 5 5 5 5 4 5 4 5 4 5 4 3 3 5 4 4 5 4 4 6 4 4 4 5 4 4 4 4 6 4 5 5 5 5 4 4 4 4 4 4 4 4 3 5 4 5 5 4 4 4 4 4 4 5 5 4 4 4 4 4 5 4 4 5 4 4 5 5 5 4 4 5 4 5 4 3 3 5 5 4 4 4 5 4 5 5 4 3 4 4 4 5 4 5 4 3 5 4 4 4 4 4 4 5 4 5 5 4 4 5 4 4 4 4 4 5 4 5 5 4 4 4 5 4 4 3 5 6 4 5 4 4 4 4 5 4 5 5 5 4 3 4 4 5 4 4 4 4 4 5 4 4 4 4 5 5 5 4 4 5 3 5 4 5 4 4 4 4 4 5 5 4 4 4 4 4 5 5 4 4 4 4 5 5 4 6 4 4 4 4 5 4 5 4 4 5 4 4 4 4 3 4 5 4 5 4 4 4 5 5 4 5 4 4 4 5 5 5 4 4 5 4 5 5 5 4 4 4 4 3 4 4 4 5 4 4 5 4 3 4 5 4 4 4 4 4 5 5 5 4 4 5 4 4 5 4 4 5 5 4 4 5 4 5 5 4 5 4 4 5 5 4 5 4 4 4 5 4 4 6 5 5 4 4 4 4 4 4 4 4 4 4 4 5 4 5 4 4 4 6 5 4 4 4 4 4 5 5 5 5 5 4 4 4 4 5 5 4 3 4 4 4 5 4 4 5 4 4 5 4 4 5 4 5 4 5 5 5 5 4 4 4 4 4 5 4 4 4 4 4 4 5 4 4 5 6 4 4 5 4 4 5 5 5 4 4 5 4 5 4 5 5 4 5 4 5 5 4 4 4 5 4 5 5 4 4 4 5 4 5 4 4 4 5 4 5 5 4 5 5 4 5 5 3 5 4 3 4 4 3 4 3 3 5 4 5 4 4 5 5 5 4 4 4 5 3 4 5 5 4 5 4 4 5 5 5 4 4 5 4 4 5 4 4 4 5 5 4 4 4 4 4 4 4 4 4 4 5 4 4 4 5 5 4 4 4 5 6 4 5 5 4 4 4 4 5 4 4 5 4 4 4 4 5 3 3 5 4 4 4 4 4 4 5 4 4 4 5 5 5 5 5 4 5 5 5 5 5 5 5 4 5 5 5 5 4 5 4 5 4 5 5 5 4 5 4 5 5 4 4 5 4 5 4 5 5 5 4 4 5 6 4 5 4 4 4 4 3 5 5 4 4 5 5 4 5 5 4 5 4 4 4 4 4 4 5 5 4 5 5 5 4 4 5 4 3 5 5 4 4 5 5 4 4 5 5 5 4 5 4 4 5 3 4 4 4 5 5 5 4 4 5 4 4 4 6 4 5 4 4 4 5 5 4 5 5 5 5 6 4 4 5 4 5 4 5 4 6 5 4 3 4 5 5 4 3 3 5 3 5 5 4 5 4 5 4 4 5 5 4 4 4 5 4 4 5 5 5 5 4 4 4 5 5 5 4 3 4 4 5 4 4 5 5 4 4 5 5 4 4 4 2 4 5 4 4 4 4 4 5 4 4 4 3 5 5 4 4 4 4 5 5 5 4 5 4 3 4 4 5 4 3 4 4 3 4 5 4 4 4 5 4 4 5 4 4 4 5 4 4 4 6 5 4 5 4 5 4 5 4 4 4 4 6 4 5 4 5 4 5 4 5 4 4 5 5 4 5 3 4 4 4 5 5 4 4 5 4 5 4 5 4 4 4 4 4 3 4 5 3 5 4 4 4 4 5 3 5 4 4 5 4 5 5 4 5 4 5 4 4 5 5 4 4 5 5 4 4 5 4 5 4 4 4 4 5 4 4 5 4 4 5 5 5 5 5 6 4 4 4 4 5 4 4 4 4 4 4 5 5 3 4 4 4 4 5 4 5 4 4 4 6 4 4 4 4 4 5 4 4 4 5 4 3 5 5 5 4 5 4 4 4 4 4 4 4 4 4 3 5 5 4 4 4 4 4 5 5 4 5 5 4 4 4 4 5 5 4 4 4 5 3 5 5 4 5 4 5 4 4 5 5 5 4 4 4 5 4 4 4 4 4 4 4 4 5 4 5 5 4 4 4 3 4 5 5 5 4 5 5 5 4 5 4 4 4 3 4 5 4 5 4 4 4 4 5 4 4 5 5 4 4 4 4 5 5 5 5 5 5 4 4 4 5 5 4 4 4 4 6 4 6 4 5 5 5 5 5 4 4 4 5 4 6 4 5 4 4 4 4 5 4 5 5 5 4 5 4 4 5 4 4 5 3 4 4 5 5 5 5 4 4 4 3 5 4 5 5 4 4 4 4 5 5 5 6 5 4 4 5 4 4 5 4 4 5 5 4 4 4 4 4 5 4 4 5 4 5 4 4 4 3 4 5 5 4 5 4 4 4 4 5 4 6 4 4 5 5 4 5 5 5 5 5 5 4 5 5 4 4 4 5 5 4 5 5 4 5 4 4 5 4 4 5 4 4 5 5 5 4 4 4 4 4 4 4 5 4 5 4 6 5 4 5 5 3 5 5 4 4 4 5 4 5 5 5 5 5 5 5 4 4 4 4 4 4 5 5 5 4 5 4 5 4 4 4 4 5 4 5 5 4 4 4 5 4 5 5 4 5 4 4 5 4 4 5 4 5 5 4 5 5 5 4 4 4 5 3 4 4 5 5 4 4 5 4 4 3 5 5 4 4 5 4 5 4 4 4 4 4 4 5 5 5 4 5 5 4 4 4 4 5 4 5 4 4 5 5 5 4 5 5 5 4 4 4 4 5 4 4 4 4 4 5 5 4 4 4 4 4 4 3 5 5 4 5 4 5 4 5 5 5 4 5 4 4 5 4 5 4 4 4 5 5 4 4 5 4 4 5 5 5 4 5 4 4 3 4 5 3 4 4 6 4 5 4 4 5 4 5 5 3 4 5 5 4 4 6 4 5 4 5 5 4 5 4 4 3 5 5 4 4 4 5 5 5 5 5 4 5 4 4 4 4 4 4 5 3 3 4 4 4 4 4 4 4 4 4 5 5 5 4 4 4 4 5 4 4 4 5 5 4 4 4 5 4 5 4 4 4 5 4 4 5 3 4 5 5 4 4 5 5 4 4 4 5 4 3 4 4 4 5 4 4 5 5 5 4 4 4 3 4 5 5 4 5 4 5 4 3 5 4 4 4 4 4 4 4 4 4 5 5 4 5 4 5 5 5 4 4 4 4 4 4 4 5 4 6 5 4 5 4 5 4 5 4 4 4 4 4 3 5 5 5 4 4 4 5 4 4 5 5 6 4 4 4 5 5 4 5 4 5 5 3 5 4 4 4 5 5 5 4 4 6 5 4 5 6 5 4 4 5 4 4 5 6 5 5 5 5 4 5 4 5 5 5 4 4 5 5 5 4 4 4 4 4 5 5 4 4 5 5 5 4 4 5 4 4 4 4 4 5 5 4 5 4 4 4 4 4 4 5 5 3 4 4 4 4 4 5 4 5 5 4 5 4 5 4 5 4 5 4 4 4 4 4 5 5 4 4 5 4 5 5 5 5 4 4 5 5 5 5 4 4 4 5 3 5 6 5 4 5 4 5 4 4 4 4 4 5 5 4 4 4 4 4 4 5 4 5 4 4 5 4 4 4 4 4 4 4 5 4 4 5 5 5 5 5 5 4 4 5 4 4 4 5 4 4 4 5 3 4 5 5 4 4 5 5 4 4 5 5 5 4 3 4 5 4 5 4 4 4 3 4 4 5 5 5 4 3 5 5 3 4 4 4 5 5 4 4 4 4 4 5 4 5 4 5 4 4 5 4 5 1 5 4 4 4 4 4 4 4 5 4 5 4 5 4 5 5 5 4 4 5 5 4 6 4 4 4 5 5 5 5 4 5 5 4 5 4 4 6 4 5 5 6 4 4 3 4 5 5 4 3 5 5 5 4 4 4 5 4 4 4 4 5 5 4 3 4 5 4 4 5 4 4 5 4 5 5 4 5 4 4 4 5 4 4 4 4 4 5 5 4 5 4 4 6 4 4 4 5 4 5 4 5 4 6 4 5 4 4 4 5 5 4 4 4 6 4 5 6 4 4 4 4 4 5 5 4 4 4 4 4 5 4 5 4 6 5 5 4 4 4 5 6 4 5 4 5 4 4 4 4 5 4 4 6 5 4 5 5 4 4 5 3 5 4 4 4 5 4 4 4 4 6 5 5 5 4 4 5 5 4 4 4 5 3 4 4 3 4 4 4 4 4 3 5 4 4 4 4 3 5 5 4 5 4 4 4 4 5 4 4 5 4 4 5 5 4 4 4 4 4 4 4 5 4 5 4 4 4 4 5 4 5 4 5 4 5 4 5 5 5 5 3 4 5 4 4 4 4 4 4 4 4 4 4 4 4 4 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 4 5 5 5 4 4 4 5 5 5 4 4 6 5 5 4 5 5 6 4 5 6 4 4 5 5 5 5 4 4 4 4 5 3 5 3 5 6 4 5 4 4 5 4 5 4 3 4 4 4 4 5 5 4 4 5 4 4 4 4 4 5 5 4 5 5 5 4 6 3 5 4 4 5 4 5 4 4 3 5 5 5 4 4 4 4 4 5 5 5 4 4 5 4 4 5 5 5 4 4 5 4 5 4 4 4 4 5 4 5 5 5 5 4 5 5 5 5 5 4 5 4 4 4 4 5 3 5 5 4 5 4 5 5 4 5 5 5 5 5 5 4 4 4 4 4 4 5 4 3 4 4 4 3 4 5 5 4 4 5 5 3 5 3 4 3 4 4 4 4 4 4 4 4 5 4 4 5 4 5 4 4 5 3 5 4 5 5 3 4 6 5 4 4 4 4 5 4 5 5 4 4 5 4 4 5 4 5 5 5 4 4 4 4 3 4 5 4 4 4 4 4 5 4 4 3 4 4 4 5 4 4 5 4 4 4 4 5 4 5 4 5 5 4 4 5 4 5 5 4 4 4 5 5 4 5 4 4 5 5 4 3 4 4 4 4 5 6 5 5 5 5 5 4 5 5 4 4 5 5 5 5 4 4 5 4 4 5 5 3 4 4 4 5 4 4 5 5 4 4 5 5 5 5 5 5 4 4 5 5 4 4 3 4 4 4 3 5 5 4 1 3 4 4 6 4 4 5 4 5 5 4 5 4 4 6 4 4 4 4 5 4 4 4 5 4 3 5 6 5 4 4 4 6 5 4 4 5 5 4 5 4 4 5 4 3 5 5 5 4 4 4 4 5 5 4 4 5 4 4 5 5 4 4 4 4 4 4 4 5 5 4 4 5 4 6 4 4 4 4 4 4 4 4 4 6 4 5 4 5 4 4 4 4 4 5 5 3 4 4 5 3 5 3 5 5 5 4 4 4 7 5 4 4 4 4 4 4 4 5 5 4 6 5 6 4 5 5 4 5 5 3 5 5 5 3 4 4 5 5 4 4 4 4 4 4 4 4 4 4 5 5 5 4 4 4 3 4 4 4 4 5 5 4 4 4 4 4 4 5 4 5 4 5 4 4 4 5 5 4 4 5 5 5 5 4 3 5 4 4 4 4 4 5 4 5 4 4 3 4 5 5 5 4 4 4 4 4 4 5 4 5 5 5 4 6 5 4 4 4 4 4 5 5 4 5 5 4 4 5 6 4 4 4 5 4 4 5 5 4 6 4 4 5 5 4 6 4 5 5 4 5 4 5 5 4 4 5 5 3 3 5 3 4 4 3 4 5 4 4 5 5 5 4 4 4 4 5 4 4 4 4 6 5 4 3 5 5 4 6 4 5 4 4 4 6 5 5 4 5 5 4 4 4 4 5 4 4 4 5 4 4 4 4 4 5 4 5 5 5 5 4 3 4 4 4 4 4 4 5 4 4 4 4 4 4 4 4 4 5 3 4 4 4 4 4 5 4 4 4 4 4 5 4 5 5 5 5 5 4 4 4 5 5 4 4 5 4 3 5 4 5 4 4 3 4 4 5 5 4 4 5 4 4 4 4 4 4 5 4 5 5 3 5 4 5 4 4 4 4 5 5 4 4 5 4 4 4 4 5 4 4 5 3 4 4 5 3 4 4 4 4 5 4 5 4 4 5 4 4 4 4 5 4 5 5 4 4 4 4 5 5 4 5 5 5 5 4 4 5 4 6 4 4 3 4 4 4 5 4 5 5 4 3 4 4 4 5 4 4 4 5 4 5 4 4 5 5 4 4 4 5 5 4 4 5 3 5 4 5 4 4 5 4 5 4 4 5 5 4 4 3 4 5 5 4 4 5 4 4 4 4 4 5 4 6 4 5 4 5 4 5 4 4 5 5 4 4 5 4 5 4 4 4 5 5 5 5 4 4 4 4 5 4 4 4 4 4 5 4 4 4 5 4 5 4 5 4 4 4 5 4 4 4 4 4 4 5 5 4 4 5 4 4 4 4 4 4 4 4 5 5 4 4 4 4 5 5 5 5 4 6 5 4 5 4 5 5 5 4 5 4 4 5 5 4 4 5 5 4 4 4 4 4 4 4 5 5 5 5 5 4 4 5 4 4 5 4 4 4 4 4 4 5 4 4 5 4 4 4 4 5 4 5 5 5 4 4 5 4 4 5 5 4 5 5 5 4 5 5 4 5 5 5 4 4 4 5 5 4 4 4 5 4 4 5 4 4 3 4 4 5 5 4 5 5 5 5 4 5 4 5 4 4 5 4 4 4 4 4 5 4 5 4 4 4 4 5 4 5 4 5 5 4 5 4 5 4 5 4 4 4 5 5 5 4 4 5 5 4 4 5 4 4 -------------------------------------------------------------------------------- /data/act_range/1x/fc7.txt: -------------------------------------------------------------------------------- 1 | 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -------------------------------------------------------------------------------- /data/act_range/1x/fc8.txt: -------------------------------------------------------------------------------- 1 | 2 2 2 1 2 2 2 3 3 2 2 2 3 2 2 2 2 2 3 2 2 3 2 4 2 1 2 2 2 2 2 2 3 3 3 3 4 2 3 3 2 2 2 2 3 2 2 2 2 2 3 2 3 3 3 1 2 1 3 2 4 3 3 3 2 3 2 2 2 2 2 3 1 3 2 2 3 3 3 3 2 2 3 2 3 3 3 2 2 2 1 2 2 3 3 1 2 3 1 3 1 2 1 3 3 2 2 2 2 2 2 2 4 4 4 2 2 2 3 3 3 2 2 3 4 3 3 2 2 2 1 2 2 2 3 2 2 2 2 2 2 1 1 2 2 2 2 1 1 1 3 4 1 2 2 2 2 2 3 2 3 3 3 3 2 2 2 2 3 3 3 3 3 3 2 2 3 3 3 3 3 2 3 2 3 3 3 2 3 3 2 3 3 3 1 3 3 2 2 3 3 2 3 3 3 3 3 3 4 3 2 3 3 2 2 3 2 3 2 3 3 2 2 3 3 3 3 4 2 2 2 3 3 2 3 3 3 3 3 2 3 2 3 3 2 3 3 2 3 3 3 2 1 3 3 2 3 3 2 3 2 2 2 3 4 3 3 3 2 3 2 2 3 3 2 2 2 2 2 2 2 3 3 2 2 3 3 3 2 1 2 2 2 2 2 2 2 2 3 2 2 2 2 3 3 3 3 3 3 3 4 3 3 3 4 3 2 2 2 3 2 2 2 1 2 1 2 3 3 3 3 3 2 3 2 2 2 3 3 1 1 4 3 2 2 3 3 2 3 2 2 1 1 2 3 3 4 3 3 3 3 2 3 3 2 2 2 2 2 2 2 3 3 3 3 2 1 3 2 2 3 3 3 2 2 2 2 1 1 2 3 3 1 1 2 2 2 3 3 2 1 3 2 1 1 2 2 2 2 4 2 2 4 3 3 4 2 3 3 4 3 3 3 2 3 2 2 4 4 3 2 2 2 3 4 3 2 2 3 2 3 3 2 2 1 2 3 4 3 2 2 2 3 2 2 4 3 4 2 3 2 3 3 4 4 2 1 2 2 3 4 3 3 3 2 2 2 2 4 2 2 3 3 2 1 2 2 4 4 3 2 3 3 1 3 2 2 2 3 3 1 2 3 3 3 3 3 3 3 3 2 1 3 3 3 4 3 2 3 3 2 3 3 4 2 2 2 2 3 3 3 3 2 2 3 1 2 2 2 4 1 4 3 3 2 3 2 1 1 3 2 3 3 3 1 2 2 3 3 3 2 2 3 3 1 2 2 3 3 2 3 2 3 2 3 2 1 3 2 2 2 2 3 2 4 3 2 4 3 3 1 3 2 3 2 2 3 2 2 4 4 2 2 2 3 3 4 1 3 2 2 3 1 3 2 3 4 2 4 4 3 3 3 3 2 2 4 2 1 3 2 3 3 3 3 2 3 3 2 2 1 4 2 3 4 1 3 3 2 2 3 2 3 3 3 3 2 3 3 3 2 1 3 2 3 2 3 3 1 1 2 2 2 3 4 2 4 4 3 3 3 3 2 2 3 1 2 1 2 1 2 3 3 3 2 4 4 2 2 3 4 2 2 3 3 2 2 3 3 3 4 4 2 2 3 1 3 2 2 3 3 3 4 3 1 3 2 2 4 2 3 4 2 4 1 3 2 3 3 2 3 2 3 3 3 3 3 3 3 4 3 2 3 3 3 2 3 2 3 2 3 3 3 3 3 3 2 4 2 4 2 3 4 3 3 2 2 3 4 2 1 2 3 4 4 2 3 3 3 2 3 3 4 3 3 3 3 3 2 3 1 3 2 2 3 4 2 3 3 3 2 3 2 4 2 2 3 1 4 2 1 1 3 3 3 2 3 3 4 2 3 2 2 2 2 3 3 4 3 2 4 3 3 3 3 4 3 2 3 3 3 3 4 2 2 4 2 2 2 4 2 3 3 2 2 2 3 2 4 1 3 1 3 1 0 2 3 2 2 4 3 2 4 4 2 3 2 2 1 3 2 3 3 3 2 2 3 3 4 4 2 2 4 3 3 2 2 4 2 3 4 3 3 3 1 2 2 2 2 2 3 3 2 3 2 1 1 2 3 4 2 3 3 1 2 1 2 2 2 2 2 2 2 3 2 2 1 4 3 2 3 2 3 3 3 2 2 2 3 1 3 3 2 1 1 2 3 2 3 2 2 4 2 2 1 3 1 3 2 1 2 2 2 2 1 1 1 4 4 2 3 2 2 1 2 3 3 3 4 4 -------------------------------------------------------------------------------- /data/act_range/1x/pool5.txt: -------------------------------------------------------------------------------- 1 | 21 18 19 19 18 25 15 11 12 12 10 15 15 13 15 15 12 14 15 14 17 17 14 13 14 13 16 16 13 11 18 16 17 18 16 18 19 19 21 20 19 19 16 16 19 19 16 17 16 16 18 18 16 16 15 14 15 15 14 15 14 12 13 13 12 14 17 14 14 14 14 18 19 18 19 19 17 19 17 14 16 15 13 17 19 15 17 16 14 19 20 15 17 16 14 20 20 15 16 16 14 21 25 19 21 21 18 25 15 14 15 15 14 16 11 13 15 15 13 12 13 16 20 21 17 14 14 18 21 22 18 14 13 16 19 19 16 13 16 17 19 18 17 15 16 14 16 16 14 14 11 12 16 17 14 12 12 14 18 19 17 14 13 15 18 19 17 15 12 12 15 15 15 15 17 16 18 18 17 20 10 12 13 13 11 11 9 14 17 18 15 11 11 17 21 21 18 13 12 17 21 21 17 14 11 15 17 17 15 14 14 16 17 17 17 17 19 17 18 17 15 17 16 13 13 13 11 15 17 14 14 14 13 15 17 14 15 15 14 16 15 12 14 14 13 15 17 15 16 16 15 18 16 15 16 16 15 18 12 13 16 16 13 13 14 16 20 20 16 15 15 17 20 20 16 16 14 15 17 17 14 15 19 17 18 18 16 18 15 15 16 15 14 17 13 13 14 14 11 12 13 14 15 14 12 13 13 15 15 14 12 13 13 14 14 14 12 13 14 15 15 15 15 17 16 15 17 17 15 16 15 14 16 16 14 15 17 15 18 18 16 18 17 16 18 18 16 18 16 15 16 16 14 17 17 15 16 16 15 18 16 16 18 18 16 16 14 15 18 18 14 14 16 18 22 21 17 16 17 19 23 23 19 17 17 18 21 20 17 16 19 20 22 22 20 19 18 16 18 18 16 18 15 16 19 20 16 15 15 17 21 22 18 16 14 17 20 20 17 16 13 16 18 18 16 14 15 15 16 16 15 15 12 13 13 14 13 14 11 12 15 15 13 12 12 14 16 17 15 13 13 15 17 17 16 14 13 15 16 17 16 15 16 16 17 17 16 16 24 19 20 19 18 23 17 12 13 13 12 17 17 12 13 13 12 16 17 11 12 12 11 16 15 10 11 11 10 15 21 16 16 16 16 21 17 19 20 20 19 20 12 12 13 13 12 13 14 15 17 17 15 13 14 17 19 19 17 14 14 16 19 19 16 14 15 17 18 18 16 14 16 15 17 17 15 15 15 16 19 19 16 14 16 18 22 22 18 16 18 19 22 22 19 17 17 17 19 19 17 16 19 17 18 18 17 18 14 18 21 21 17 14 12 17 22 22 16 13 14 18 22 22 17 14 13 15 18 18 15 14 12 12 13 13 12 13 23 16 16 17 16 24 18 18 19 19 19 17 16 16 18 18 16 14 16 16 19 19 17 14 15 15 18 18 16 14 15 13 16 17 14 12 17 13 15 16 14 14 20 18 19 19 18 20 18 15 16 16 15 18 19 17 18 18 16 19 19 17 19 18 17 19 18 16 18 18 16 18 18 18 20 20 18 21 19 15 16 16 15 19 15 16 20 20 17 14 14 16 20 21 17 13 14 15 18 19 16 13 13 13 15 15 13 11 22 15 16 16 15 23 13 16 18 18 16 14 13 17 21 22 18 15 13 18 23 24 19 15 14 17 21 21 18 16 13 15 17 17 15 15 14 14 16 16 15 15 24 22 23 23 21 25 19 17 19 19 16 20 19 18 20 20 18 20 19 17 20 21 18 20 17 16 19 19 17 19 21 19 20 20 19 22 14 14 16 16 15 16 13 13 15 15 13 13 13 14 16 16 14 14 12 13 15 15 13 14 12 13 14 13 12 13 15 16 16 16 16 15 15 11 12 12 11 12 12 11 13 13 11 12 13 12 14 14 12 13 13 12 13 13 12 13 12 11 12 12 11 12 14 13 14 14 13 17 19 16 17 18 17 19 13 14 16 16 14 14 16 17 20 19 17 16 17 17 19 19 17 17 16 15 16 16 15 17 22 18 18 18 18 21 18 16 18 18 17 16 14 18 22 22 19 15 16 21 25 25 21 17 16 20 24 24 21 18 16 17 19 20 18 17 21 21 22 22 21 23 15 16 18 18 16 16 15 17 20 19 16 15 16 18 21 21 17 16 16 17 19 19 17 17 16 15 16 16 15 17 20 18 20 19 18 23 20 19 21 20 18 18 17 17 19 19 16 18 18 18 22 22 19 20 19 19 23 23 20 20 19 18 20 20 18 20 21 19 21 21 19 21 16 14 15 15 14 16 14 15 17 17 14 14 15 18 22 22 18 15 16 20 23 23 20 16 16 18 21 21 19 17 16 17 18 18 18 17 21 18 19 20 19 22 14 14 18 18 15 13 13 15 19 20 17 14 13 14 18 19 16 14 13 13 15 16 14 13 17 13 14 15 14 14 16 15 16 16 15 16 13 12 13 13 12 13 16 14 15 15 14 16 17 15 16 16 15 17 17 15 16 16 15 17 19 19 20 20 19 19 23 21 22 22 21 23 18 15 15 15 15 19 17 14 13 14 14 18 15 13 12 12 12 15 13 11 11 11 10 13 17 15 14 14 15 18 21 16 17 17 16 18 12 11 12 11 11 12 14 13 14 14 13 14 15 14 15 15 14 14 15 13 14 14 13 14 19 17 18 18 17 18 23 20 20 21 20 21 19 16 16 16 16 17 19 17 16 17 16 18 18 16 16 16 16 18 16 15 15 15 15 17 17 16 16 17 17 18 14 12 13 13 13 14 11 11 12 12 11 11 12 12 13 13 12 12 12 12 13 14 13 12 12 12 14 14 13 12 16 16 17 17 16 18 16 14 15 15 13 15 11 16 19 18 14 9 12 18 22 21 17 11 13 17 21 20 17 12 13 15 17 18 15 12 17 16 17 17 16 14 13 14 15 15 14 12 14 17 21 21 17 12 15 21 26 25 20 14 16 20 25 24 19 14 15 17 19 19 17 14 14 15 16 16 15 15 20 16 17 17 16 22 12 11 12 12 11 14 11 12 13 13 12 14 12 12 14 14 13 15 12 12 13 13 12 15 14 12 13 13 12 16 22 15 15 15 14 22 15 12 14 13 10 15 16 14 17 17 13 16 16 14 18 17 14 17 16 13 15 15 13 17 23 21 23 23 22 23 14 14 16 16 14 14 14 14 17 16 14 12 14 15 18 19 16 13 14 15 19 19 16 13 13 15 17 17 15 12 14 15 17 17 15 13 13 16 19 20 19 18 13 15 18 19 17 16 14 16 18 18 17 16 15 17 18 18 16 15 16 17 18 17 15 14 20 20 21 20 18 16 15 15 15 16 16 17 11 11 12 12 11 10 11 12 13 14 12 11 13 13 14 14 14 12 13 14 14 15 14 13 16 17 18 18 17 16 17 17 19 18 17 17 16 16 18 18 16 15 16 17 18 18 16 16 15 17 18 18 16 16 14 15 17 17 15 15 14 16 17 17 16 15 16 13 15 15 13 13 13 12 16 17 14 13 14 15 19 20 16 15 15 15 19 19 16 15 15 14 16 16 14 15 20 16 17 17 16 18 16 15 18 18 15 15 15 17 19 19 15 14 15 18 21 20 16 15 17 17 20 19 16 17 16 15 16 16 15 16 15 14 15 15 14 18 13 16 17 17 15 13 14 17 20 20 17 14 14 18 21 21 18 15 14 18 20 20 18 15 13 15 17 18 16 14 12 14 15 15 13 13 15 16 18 18 16 15 14 17 20 20 17 15 15 19 22 22 18 16 16 19 21 21 18 16 15 18 19 19 17 15 15 17 18 18 17 15 17 16 17 17 15 18 15 15 17 17 15 14 16 17 19 19 16 14 17 17 20 20 16 15 16 16 18 18 16 15 22 19 20 20 18 19 14 16 19 19 16 13 15 19 23 22 18 13 16 20 25 25 20 15 16 20 24 24 20 15 15 18 21 20 17 14 16 18 20 19 17 15 20 18 19 18 16 20 16 15 17 16 14 16 17 17 19 19 15 18 17 16 18 18 16 18 15 13 14 14 13 17 19 17 18 18 17 19 21 20 21 21 20 22 20 18 17 17 18 21 20 16 14 13 15 19 17 13 11 11 12 16 14 10 9 9 10 13 16 15 13 13 14 15 16 15 18 18 15 19 16 15 17 17 14 19 18 16 17 17 15 19 16 14 16 16 14 17 14 13 15 15 13 15 15 15 17 17 16 18 23 16 17 17 16 23 14 13 15 16 13 15 16 16 20 20 17 17 19 18 22 22 19 18 19 17 20 20 18 18 25 20 22 22 21 23 16 15 16 17 16 16 13 15 18 18 16 13 13 16 19 20 17 14 13 16 19 19 17 14 13 15 17 17 16 14 14 15 16 16 15 14 25 20 22 22 20 25 19 18 20 20 18 18 20 19 23 22 19 19 19 18 21 21 18 18 17 16 19 19 16 17 19 17 19 19 17 18 14 15 17 16 14 12 12 19 23 22 17 12 14 21 26 26 20 14 14 20 24 23 20 15 13 16 19 18 16 14 13 15 16 17 15 15 20 17 17 17 16 20 15 14 15 15 13 14 15 16 18 18 15 16 16 16 19 19 17 16 15 15 17 18 15 15 16 16 17 17 15 17 15 14 16 16 16 17 13 13 16 18 17 16 14 14 18 19 19 17 14 14 17 18 17 17 13 13 15 15 15 15 15 14 15 15 14 16 17 16 17 17 16 19 14 11 11 11 11 14 15 12 13 12 12 15 14 12 13 13 12 15 14 12 13 13 12 14 20 19 19 19 18 18 14 14 16 17 15 14 14 17 21 21 17 14 16 20 23 23 19 16 17 20 22 22 19 16 16 17 18 18 16 15 13 13 14 14 13 13 16 16 18 18 16 17 14 17 20 19 16 15 15 19 23 22 18 16 16 19 22 22 18 17 16 18 19 19 16 17 17 16 17 17 16 18 17 15 18 18 17 20 15 12 14 14 13 15 17 13 14 14 13 16 19 16 17 16 15 17 21 20 22 21 18 18 24 25 27 27 23 22 25 20 21 21 20 21 17 15 16 16 15 15 16 14 16 16 14 15 14 13 14 15 13 14 13 11 13 12 11 12 16 13 15 15 14 16 16 16 18 18 16 15 17 17 19 19 16 16 18 19 22 21 18 17 18 19 22 22 19 17 17 18 20 20 17 16 20 20 21 22 20 19 16 14 15 15 13 16 12 13 15 15 13 12 14 15 18 18 16 14 15 17 21 21 18 15 15 17 20 20 17 15 18 19 21 21 18 15 16 17 18 18 17 17 16 15 16 16 16 17 15 15 15 15 15 16 14 14 14 14 14 14 12 13 13 13 13 12 12 13 12 12 12 12 14 17 19 20 17 13 14 18 22 23 19 14 16 20 24 24 20 16 16 19 22 22 19 16 14 16 19 19 17 14 14 16 17 17 16 15 19 18 19 19 18 16 17 19 21 21 19 16 19 21 23 23 20 17 19 19 22 22 19 16 18 17 19 18 16 15 18 18 19 18 17 16 13 15 16 16 14 14 11 14 16 16 14 12 12 15 18 19 16 14 13 16 19 19 16 14 13 15 17 17 15 14 15 16 17 17 15 16 25 22 22 22 21 22 20 15 16 16 15 19 21 16 16 17 15 20 20 16 17 16 15 20 18 14 15 15 14 18 19 19 20 20 18 20 27 18 18 19 18 27 18 12 13 13 12 17 18 14 17 17 15 18 18 15 18 18 16 18 18 14 16 16 14 17 25 20 20 19 19 23 15 15 17 18 15 17 16 18 21 21 18 16 17 20 23 23 20 18 17 19 22 23 20 18 16 17 20 20 18 17 19 19 20 20 19 20 15 14 15 15 14 16 12 11 12 12 11 12 13 13 15 15 13 12 14 15 17 17 15 14 15 15 17 17 15 14 18 18 19 19 17 17 16 19 22 22 20 16 15 19 22 22 19 15 16 19 21 21 19 16 16 18 20 20 19 17 15 16 18 18 17 16 15 17 18 18 17 17 16 14 17 17 13 12 15 15 19 20 15 14 17 18 22 23 18 16 18 18 21 22 18 16 17 16 17 17 15 15 21 17 18 18 17 19 20 18 18 18 17 20 16 14 14 14 13 17 17 15 15 15 14 18 18 15 15 15 14 18 17 14 14 14 14 18 23 19 18 18 17 24 16 13 15 15 14 16 15 14 16 17 15 15 16 16 19 19 17 16 15 16 18 18 15 15 13 14 15 14 13 14 16 15 15 15 14 15 11 15 19 20 17 12 12 19 24 24 20 13 13 20 26 27 22 15 13 18 22 22 19 14 12 14 15 15 14 12 18 17 17 17 17 18 14 15 16 16 15 14 14 16 19 19 16 14 16 18 21 21 18 16 16 18 21 21 18 17 14 16 18 18 16 15 14 15 16 16 14 14 17 16 17 17 16 17 15 16 18 18 15 14 16 18 20 20 17 15 16 17 20 19 17 15 15 15 17 16 14 13 17 16 17 16 16 16 17 16 18 18 16 17 16 16 19 19 17 18 18 18 21 22 19 19 18 18 21 21 19 18 17 16 18 18 16 16 18 16 17 17 17 17 14 14 15 15 14 14 13 15 17 17 14 13 14 17 20 21 17 14 15 18 22 22 18 16 16 17 20 20 17 16 20 17 18 18 17 19 13 15 18 19 15 17 13 16 20 20 17 16 14 17 20 20 17 17 14 17 19 19 16 17 13 15 17 17 14 16 15 16 17 17 15 19 13 16 17 17 15 13 15 17 19 19 17 15 17 20 22 21 19 16 17 20 22 22 19 16 15 17 19 18 17 14 13 14 15 15 14 14 19 17 18 18 17 20 15 17 19 19 17 17 16 18 22 23 20 18 17 19 22 22 19 19 17 18 19 18 16 17 18 17 18 18 16 19 18 16 17 16 16 18 13 14 15 15 13 12 15 17 19 18 15 13 15 17 19 19 16 14 15 16 17 17 15 14 20 16 17 17 16 20 17 14 15 15 14 19 11 12 14 14 12 12 13 14 18 19 15 13 13 14 18 19 16 13 13 14 16 16 14 13 15 15 16 16 15 15 12 14 16 17 15 17 14 15 18 17 15 17 16 18 20 19 17 19 18 19 20 19 17 19 17 18 19 18 16 18 19 18 19 18 17 19 13 16 19 20 17 15 14 17 20 22 19 16 15 18 21 23 20 17 15 17 20 21 19 17 15 17 18 18 17 16 15 16 17 17 16 15 17 16 17 17 17 17 14 14 16 16 15 14 15 16 17 17 16 15 16 16 17 17 16 16 15 14 15 15 13 15 19 17 17 17 16 18 21 19 20 20 19 21 18 16 19 19 16 17 18 18 21 21 18 17 18 18 21 21 18 17 17 16 18 18 16 16 20 18 20 20 19 21 15 14 16 16 14 16 14 14 18 18 15 15 16 16 20 21 17 17 16 16 19 20 17 17 15 14 16 16 14 15 20 17 18 18 17 23 27 23 24 24 23 26 18 13 14 14 13 16 17 13 15 15 14 15 16 13 14 15 13 15 14 12 13 13 12 13 17 14 15 15 14 16 16 14 15 15 15 19 14 14 17 17 14 13 16 17 21 21 17 15 17 17 20 21 17 16 17 15 17 17 15 17 19 14 15 15 14 18 20 17 19 19 17 20 17 16 18 17 14 16 17 17 20 19 15 16 16 16 19 18 15 16 16 14 15 15 13 15 19 15 15 15 14 20 19 18 18 18 18 19 15 11 11 11 11 13 16 11 12 11 11 14 17 12 12 12 12 15 17 13 14 14 13 17 21 18 19 19 18 19 17 16 17 17 15 18 14 15 17 17 14 14 15 17 21 21 17 15 16 17 20 21 17 16 15 16 18 18 15 15 15 15 16 16 14 15 18 18 18 18 17 18 14 13 15 15 13 14 14 14 17 16 13 14 14 13 15 15 13 14 14 12 13 13 11 13 20 17 17 18 17 19 21 18 20 20 19 21 18 15 16 16 16 19 20 15 15 15 15 20 19 13 12 12 12 19 16 10 10 10 10 16 19 16 17 17 16 20 26 24 25 24 23 28 21 16 15 13 14 21 21 16 15 13 14 21 20 16 15 14 14 19 17 15 15 15 14 17 16 15 16 17 15 16 20 15 16 17 16 23 14 16 18 18 16 15 14 18 20 19 17 16 15 17 19 18 16 15 15 15 15 15 14 14 18 16 17 16 16 20 15 17 19 19 17 15 15 17 20 20 17 15 17 18 20 20 17 16 17 17 18 17 16 17 17 16 17 17 15 17 22 19 20 20 19 20 19 17 17 18 18 20 15 14 15 15 14 16 17 17 18 18 17 18 17 18 20 20 18 19 16 17 19 18 16 18 18 17 18 18 17 19 16 15 16 16 15 15 13 14 18 18 16 12 15 18 22 22 19 14 15 19 22 23 20 16 15 18 21 21 18 15 16 16 18 18 16 16 13 12 11 11 11 13 14 12 12 12 11 14 15 12 13 13 12 13 16 13 14 14 13 14 16 14 14 14 13 14 19 18 18 18 17 17 16 16 17 17 16 17 16 14 16 16 15 16 18 15 16 16 15 18 18 14 15 15 14 18 17 13 14 14 13 16 18 15 16 16 15 16 11 14 16 16 14 11 12 16 20 21 18 13 13 19 22 23 20 16 14 19 22 22 20 15 14 17 20 19 18 15 13 16 18 18 17 15 12 14 16 16 13 11 15 20 23 22 18 13 17 22 26 26 22 15 16 21 25 25 21 15 15 18 21 20 18 14 17 18 19 19 17 16 12 13 15 15 14 13 13 16 19 20 17 15 15 19 22 22 19 17 16 19 21 22 19 18 15 16 18 19 17 17 15 17 18 18 17 18 19 17 17 17 17 18 16 15 16 16 15 16 16 16 18 18 16 17 15 16 19 19 17 17 14 15 17 18 16 16 15 15 17 17 17 18 14 14 15 15 14 12 15 16 18 18 16 14 17 19 22 21 18 16 18 20 23 23 19 16 17 18 21 21 18 15 20 20 22 21 19 17 22 16 18 18 17 16 18 13 15 16 15 15 18 15 17 17 16 17 17 15 17 17 15 17 16 14 15 15 13 14 21 16 16 16 16 16 15 16 19 19 16 17 15 18 21 21 18 16 16 19 23 23 19 18 17 18 21 21 18 18 16 16 17 17 15 17 24 19 20 20 19 23 14 14 16 15 13 12 14 16 20 20 17 13 15 19 23 24 20 15 15 18 22 23 20 15 15 16 19 19 17 15 17 18 20 20 19 18 23 21 21 21 21 24 20 16 15 15 15 20 21 16 15 14 15 20 21 15 14 14 14 20 21 16 15 14 14 21 23 21 21 21 21 22 16 17 19 19 17 15 15 18 21 22 19 16 17 20 23 23 21 18 18 19 22 22 19 18 18 17 18 19 17 17 20 18 19 19 18 18 14 14 14 15 14 14 14 14 16 16 14 12 14 16 18 18 15 13 14 16 19 18 15 13 14 14 16 16 14 13 13 12 13 13 13 12 17 16 16 16 15 16 17 17 17 15 14 15 19 20 19 17 16 17 21 21 22 20 17 17 20 20 21 20 17 16 23 22 22 21 19 18 23 19 20 20 19 23 18 13 13 13 13 19 19 13 13 14 13 19 19 13 13 13 13 19 18 13 13 14 13 18 25 22 22 21 21 25 16 16 16 16 15 14 14 15 17 17 15 14 15 18 20 20 18 16 16 18 21 20 18 17 15 16 18 18 16 17 18 17 18 18 18 18 23 20 21 20 19 23 18 16 18 18 17 19 19 18 20 19 18 20 19 18 19 19 18 19 19 17 18 18 17 18 23 20 19 19 19 22 19 16 18 18 16 19 15 13 15 16 13 15 17 15 17 17 15 17 16 15 18 17 16 16 15 14 17 17 14 14 18 18 19 19 17 17 16 16 18 17 15 14 15 15 17 17 14 14 16 15 17 17 15 15 16 14 15 15 14 14 15 13 14 14 12 13 15 14 14 15 14 14 21 19 20 21 19 21 15 13 14 14 13 14 15 12 13 14 13 13 14 12 13 13 12 12 13 12 13 13 12 12 14 13 14 14 13 13 17 16 16 16 15 17 13 13 15 15 13 13 15 16 19 20 17 15 16 19 23 23 19 17 16 19 23 23 19 16 17 19 22 22 20 19 16 17 18 17 16 16 15 14 16 16 14 14 16 16 18 18 17 15 17 17 19 19 18 17 16 16 18 18 18 17 16 16 17 17 17 16 15 16 18 19 17 16 14 16 20 21 17 15 17 18 22 23 19 18 18 17 20 21 19 19 18 15 16 16 16 20 24 20 21 21 20 25 12 14 15 15 15 14 14 14 13 13 14 15 14 12 12 12 13 15 15 13 12 12 14 17 16 15 14 14 16 17 19 20 20 20 20 18 16 13 16 17 14 12 12 12 18 19 15 12 13 14 21 22 18 14 13 14 23 24 20 16 14 14 22 24 20 16 15 16 23 25 21 17 13 16 18 19 16 13 15 22 27 27 23 16 17 25 31 32 25 17 17 22 27 28 22 16 15 17 19 20 17 15 14 14 15 15 14 14 16 15 16 17 16 16 14 15 18 18 15 14 15 17 20 21 18 16 15 19 22 22 19 16 13 19 22 22 19 15 11 15 18 19 16 13 12 13 14 14 13 12 13 16 17 17 16 13 16 18 19 19 19 16 16 19 21 20 18 16 15 17 19 19 17 15 14 15 16 17 15 14 12 15 17 17 15 12 11 15 17 17 15 12 14 17 19 19 17 14 15 17 19 19 18 16 15 18 19 20 18 16 16 19 21 23 21 18 27 21 20 20 20 25 23 21 20 20 19 21 19 18 20 19 17 18 16 16 17 17 15 15 14 14 15 15 13 13 15 15 17 17 14 14 19 20 22 23 21 22 18 17 19 20 18 18 19 18 20 21 18 19 18 17 19 19 17 18 16 16 18 18 15 16 17 18 19 19 17 16 8 10 10 10 9 6 11 17 22 22 17 10 12 20 29 30 22 12 11 19 28 28 21 13 10 16 22 22 17 12 8 12 15 15 13 10 10 12 17 18 15 14 11 16 23 26 22 16 12 18 28 31 24 18 12 17 24 26 21 17 12 14 16 18 16 15 11 11 12 13 13 14 18 20 23 22 20 20 17 22 26 26 21 19 18 23 29 29 23 20 17 21 26 27 22 19 15 17 21 22 18 18 15 15 17 17 17 18 17 19 20 20 19 17 18 21 20 20 20 17 17 19 19 19 19 17 16 18 18 18 18 17 16 18 18 18 18 17 17 19 20 20 19 19 15 21 27 28 21 16 18 26 34 33 26 19 16 23 28 28 22 17 13 16 20 19 16 13 9 10 12 12 11 10 8 10 10 11 10 9 11 14 15 15 12 9 15 19 21 20 17 12 18 21 23 22 19 14 18 20 20 19 17 14 16 16 17 15 14 13 16 15 16 15 15 14 17 17 17 16 16 21 15 13 12 11 11 15 18 15 14 13 13 18 21 18 18 17 17 20 22 21 22 21 19 21 22 22 24 23 22 23 16 15 16 16 15 16 16 16 16 16 17 16 18 18 18 18 18 18 18 18 20 20 18 18 17 18 19 19 18 16 17 18 19 19 18 17 10 13 15 15 12 7 14 21 25 25 19 11 14 22 27 26 20 12 13 17 21 20 16 11 10 12 14 14 12 9 10 12 13 13 11 10 19 25 29 28 23 18 18 24 28 28 24 18 16 20 23 23 20 17 13 15 17 17 16 14 9 12 14 15 13 12 10 12 15 15 13 12 25 21 20 17 14 17 23 25 23 19 15 15 20 22 20 16 14 16 17 18 16 13 13 16 13 13 11 11 11 14 17 16 16 15 15 18 16 18 18 17 16 19 17 17 17 16 14 17 18 17 16 15 14 18 17 16 15 15 15 20 15 15 16 16 17 21 17 16 17 19 20 26 15 18 20 20 20 18 18 21 21 22 22 21 22 22 21 22 23 23 22 21 20 20 21 21 19 18 17 16 17 17 17 16 16 15 15 14 18 17 16 16 16 18 18 18 19 18 18 18 18 19 21 20 19 18 18 18 20 20 18 17 17 17 18 18 17 16 18 17 17 18 17 16 13 15 20 20 16 11 11 14 19 20 15 11 13 15 19 19 15 14 17 18 20 20 18 17 20 22 23 23 21 21 23 26 28 28 26 24 13 15 17 17 14 11 16 23 28 28 22 15 17 25 33 33 25 16 17 22 28 28 22 15 15 18 20 21 18 14 15 16 18 18 17 14 19 16 16 15 15 19 17 13 13 12 12 17 20 16 15 14 15 20 22 17 16 16 18 22 22 17 15 16 18 21 22 16 15 16 17 20 18 20 22 22 19 17 15 18 20 20 17 15 16 20 22 23 19 17 17 20 23 23 20 17 15 18 20 20 17 15 19 20 22 21 20 20 20 19 20 21 20 20 17 17 19 20 17 17 18 19 21 22 19 18 18 20 23 24 21 20 19 20 22 23 21 21 21 21 22 22 22 23 10 10 12 13 11 9 12 15 21 22 18 13 13 17 25 27 22 15 13 16 22 24 20 15 13 14 18 20 18 16 16 16 18 19 18 18 16 17 18 18 17 17 13 11 12 12 11 13 14 14 14 14 14 15 16 17 18 18 17 17 19 21 22 21 20 20 21 21 22 21 21 21 19 17 19 19 17 22 15 16 20 20 16 17 16 17 22 21 16 17 16 18 22 21 17 18 16 17 21 21 16 18 16 17 20 20 17 17 16 19 20 20 18 15 18 23 25 25 23 18 18 23 27 26 23 18 17 19 21 22 19 15 14 14 14 14 13 12 15 13 13 12 12 13 21 22 21 17 13 10 25 26 23 18 13 11 24 24 20 16 12 12 19 17 14 12 11 12 15 12 10 10 9 11 16 16 16 17 17 19 13 18 22 22 18 13 16 23 27 27 22 14 15 20 23 23 19 13 11 14 16 16 14 12 10 11 12 12 11 10 13 15 17 17 15 14 10 15 17 19 16 10 13 21 28 30 24 13 12 21 30 32 23 12 10 16 23 25 18 10 8 11 15 15 12 9 7 9 11 10 9 8 18 22 24 25 22 16 19 24 26 26 23 17 18 20 21 21 20 16 14 14 15 15 15 14 12 11 11 12 11 12 13 13 14 14 13 15 13 17 21 22 19 16 14 20 26 28 24 19 14 20 25 26 22 18 13 15 17 18 16 15 10 11 11 11 12 13 11 11 11 12 12 13 10 13 16 17 13 9 11 17 24 24 17 11 12 19 26 25 19 13 11 17 23 22 18 12 10 16 19 19 17 13 13 18 22 22 19 15 18 19 22 22 19 18 17 20 25 26 20 17 18 22 28 29 22 18 17 21 25 25 20 18 16 17 20 20 17 16 17 16 18 18 17 17 13 12 14 14 13 13 11 13 15 16 13 12 14 16 20 20 17 14 18 20 23 24 20 18 21 23 25 25 22 21 25 26 27 27 25 24 16 18 21 22 18 15 15 21 26 26 21 15 16 22 28 28 22 16 15 21 26 26 20 16 14 17 22 22 18 15 13 16 18 18 16 14 12 12 13 14 12 11 11 10 13 13 11 9 12 14 18 19 15 12 13 20 27 27 20 14 13 21 27 27 21 14 14 18 22 22 19 15 12 13 13 14 15 17 12 15 16 18 18 17 12 16 19 21 20 17 13 17 20 22 21 18 13 17 19 20 20 18 14 16 17 18 19 20 13 15 17 17 16 14 11 13 14 14 13 11 13 16 17 18 16 13 16 20 22 22 20 15 17 23 26 25 22 17 17 23 26 25 22 18 14 16 20 20 18 17 15 18 23 23 21 18 15 18 23 24 21 18 14 17 21 21 19 17 13 14 17 18 16 15 14 14 15 17 15 14 16 17 20 20 18 16 15 13 16 17 15 16 15 12 13 14 13 16 15 12 14 14 13 15 15 13 16 16 13 14 22 19 21 21 20 23 19 21 23 22 19 14 14 17 19 19 16 12 13 15 17 17 15 13 11 13 15 15 15 13 9 11 13 13 13 12 13 15 16 16 16 14 18 15 15 14 11 11 14 17 19 18 14 10 14 19 22 21 16 11 14 19 22 21 16 12 13 16 18 17 14 11 19 16 17 16 15 15 20 25 29 32 30 23 22 26 27 29 30 25 20 22 22 24 25 22 15 16 17 17 17 16 12 12 13 14 13 13 12 13 14 15 15 14 15 18 19 17 13 11 14 20 22 20 16 13 15 18 21 20 17 14 14 17 18 18 16 14 14 15 16 16 15 13 15 14 16 16 15 13 14 15 16 17 16 14 14 16 18 19 17 15 14 17 19 20 18 16 14 16 18 19 18 15 13 14 15 16 14 13 13 13 14 14 13 14 17 17 18 18 17 15 17 18 20 22 19 15 18 19 22 24 20 16 18 17 20 21 18 15 18 15 17 18 15 14 20 18 19 20 18 17 14 14 16 16 14 14 13 15 18 18 16 14 14 18 21 21 18 16 15 19 23 23 19 16 15 19 22 22 18 15 16 18 20 20 18 16 14 13 13 12 11 12 11 9 10 10 11 13 13 11 12 15 17 18 14 12 16 21 23 24 14 14 18 23 26 27 14 16 20 24 27 28 11 11 15 20 23 22 12 10 14 20 24 23 16 13 14 18 22 24 20 18 16 15 18 21 24 20 17 13 14 17 27 23 19 16 14 16 17 17 18 17 17 17 16 16 17 17 15 15 18 19 21 19 17 17 19 21 22 21 18 17 19 21 21 20 18 16 19 20 19 18 17 15 11 17 22 23 19 13 12 18 24 25 21 15 13 18 23 24 21 16 12 14 17 18 17 15 11 11 12 13 13 13 22 19 20 20 20 21 10 15 18 18 14 10 12 21 28 27 20 12 11 22 31 30 20 11 9 17 24 23 16 9 7 10 13 13 10 7 6 8 9 10 9 8 17 11 13 14 13 13 14 11 12 13 12 13 16 13 14 16 17 17 18 15 18 20 22 22 18 15 18 21 23 24 17 14 16 18 21 26 17 19 22 23 20 17 17 19 23 23 20 18 17 19 22 23 20 18 18 17 19 20 19 19 17 15 16 16 16 18 19 18 19 19 19 19 14 13 13 13 13 17 15 15 14 14 12 14 18 19 18 17 15 15 20 21 21 19 16 16 19 20 20 17 15 16 19 18 18 17 17 20 11 15 18 18 15 11 14 20 24 24 20 15 15 21 25 26 22 16 15 19 22 22 20 15 13 16 18 18 16 14 13 14 16 16 15 14 15 16 18 18 17 16 17 18 20 21 19 16 18 21 24 24 21 18 19 20 23 22 21 17 17 18 20 19 18 16 16 17 18 18 16 15 9 11 13 13 11 8 13 18 23 23 18 13 14 21 27 27 20 14 13 19 24 24 19 13 10 15 18 17 14 12 9 11 12 12 11 11 13 15 17 17 16 13 17 21 22 23 20 15 16 20 22 22 20 15 15 17 19 19 17 15 13 15 16 16 14 13 14 13 14 14 12 12 12 11 11 14 15 18 14 11 11 14 15 17 17 14 13 13 14 16 20 17 15 13 12 15 22 18 15 13 12 15 22 19 17 15 15 15 13 13 14 15 13 12 10 10 11 11 10 10 12 13 15 15 14 13 14 18 22 22 19 17 16 21 25 25 22 20 18 22 24 24 23 20 17 17 18 17 16 18 16 18 20 20 17 17 17 21 24 25 21 18 18 22 25 25 22 19 18 21 22 23 20 18 16 18 18 18 18 17 17 14 15 14 14 16 16 17 17 15 14 14 18 19 18 17 16 15 19 19 19 18 18 15 17 18 18 17 17 15 15 16 16 15 14 13 14 14 15 15 13 10 16 19 23 22 18 12 19 23 29 28 21 15 20 23 29 28 21 15 19 20 23 23 18 14 14 15 16 16 14 12 10 15 21 22 16 10 12 21 30 31 22 13 11 20 30 31 22 12 9 15 21 22 17 10 7 9 12 14 11 8 8 8 9 10 9 8 18 16 16 17 17 20 11 10 12 12 11 11 13 14 16 17 14 13 17 19 21 20 18 17 19 22 24 23 21 19 16 18 21 20 18 17 13 14 16 16 14 14 14 17 23 23 19 15 16 20 27 27 21 17 15 18 23 24 19 16 14 15 17 17 16 14 17 17 18 18 17 18 12 15 19 20 17 12 13 18 22 23 19 14 15 20 24 25 21 16 16 19 22 22 20 16 15 18 20 20 18 16 15 17 19 19 18 17 24 21 20 17 14 13 17 17 17 15 13 13 17 17 17 15 14 16 18 18 17 15 14 17 19 18 17 15 13 15 22 21 19 17 14 17 14 19 27 27 19 13 15 21 31 30 21 14 14 19 27 27 19 14 13 15 20 20 15 12 11 12 14 15 12 11 14 14 16 16 14 14 20 13 14 15 15 14 13 10 13 14 12 10 13 13 18 20 17 13 14 16 21 22 18 14 15 15 20 20 18 14 15 15 18 18 16 13 15 19 21 21 19 16 15 20 24 23 21 17 15 19 22 22 20 16 13 15 17 17 16 14 11 12 13 13 12 12 11 10 11 11 11 11 14 17 19 19 17 15 14 17 20 20 17 14 14 19 22 22 18 14 14 18 20 20 17 14 13 16 17 18 16 14 15 16 17 18 16 15 11 15 18 18 14 10 12 17 22 23 18 12 14 20 26 26 21 15 15 19 23 24 20 15 14 16 18 18 17 13 17 16 18 18 17 19 13 13 17 20 21 21 13 14 19 22 22 19 13 14 19 21 21 19 13 12 16 18 17 16 11 10 12 14 14 14 12 11 13 14 14 16 19 15 15 15 15 17 20 16 15 16 17 19 22 19 17 19 20 22 23 19 17 18 20 23 21 17 16 16 17 22 21 16 15 15 15 19 11 15 19 19 15 15 11 17 24 26 19 14 11 16 24 26 19 15 10 13 19 20 16 14 8 9 12 13 11 12 16 13 14 14 13 19 16 16 17 17 16 17 14 16 21 22 18 17 15 18 25 27 22 17 14 17 23 25 21 16 13 15 18 20 18 15 14 14 16 16 15 16 11 11 12 11 10 9 12 14 15 14 11 10 15 17 18 15 12 11 19 20 19 16 14 12 23 23 20 17 14 12 28 23 20 18 15 13 14 14 18 18 15 13 13 17 22 22 17 14 15 20 29 29 21 15 15 20 28 29 21 15 13 17 21 22 17 14 19 18 20 21 19 18 13 13 15 14 12 21 10 11 13 12 9 17 11 14 17 15 10 16 13 18 22 19 13 17 16 23 27 24 16 18 23 30 32 29 19 19 26 20 22 22 20 23 23 17 19 19 17 20 23 19 22 22 19 21 21 19 22 22 18 20 18 16 19 19 15 17 23 18 20 20 18 23 15 14 13 13 14 16 13 13 13 15 17 20 13 13 13 16 20 23 12 11 13 18 22 24 12 11 13 18 21 24 13 15 17 21 24 29 12 11 14 19 24 29 11 11 14 21 27 26 12 11 14 20 24 23 12 10 12 16 19 20 10 9 11 13 15 16 12 11 12 14 15 15 14 14 13 15 16 15 14 15 15 18 20 19 19 18 17 19 22 21 20 18 16 18 20 20 19 16 14 15 16 16 17 15 13 14 14 15 15 18 23 22 18 14 14 19 25 25 19 13 15 19 25 25 19 14 14 16 20 21 16 13 12 12 15 16 14 13 14 15 18 18 16 19 17 19 18 13 10 11 20 23 20 14 10 13 23 25 20 14 12 15 23 22 18 14 14 18 20 18 15 13 14 18 18 17 15 15 16 21 17 23 29 29 23 17 15 21 27 28 21 16 16 21 25 26 21 17 17 20 23 23 20 18 16 18 21 20 18 17 18 18 20 20 18 20 13 12 14 16 15 19 12 11 14 15 14 16 13 13 16 18 17 18 14 14 18 20 19 19 14 15 18 21 20 20 16 15 18 19 19 22 13 15 17 17 14 12 14 16 19 18 14 11 17 20 24 23 18 14 20 23 26 26 21 17 23 24 27 26 23 20 25 24 26 25 23 21 9 14 17 16 13 8 12 23 29 29 22 12 13 24 32 32 23 13 11 19 25 25 19 11 8 12 15 15 13 9 5 8 10 10 10 8 16 17 18 18 16 14 19 21 23 23 21 18 19 22 23 24 22 19 18 20 20 21 20 17 14 15 15 15 15 14 17 17 17 17 17 17 15 14 14 15 16 17 16 14 15 15 16 18 18 16 16 16 18 20 18 16 17 16 18 20 17 15 15 15 16 20 19 17 17 17 18 22 12 15 18 18 16 12 13 18 23 23 18 13 13 19 24 24 20 13 13 18 22 22 18 13 11 15 18 18 15 10 11 12 14 14 12 9 9 12 14 14 11 14 10 13 16 15 11 10 13 17 20 19 14 12 14 21 25 23 17 13 15 21 24 23 18 14 15 20 22 21 17 14 18 20 19 18 17 17 19 21 19 17 17 17 21 22 20 18 17 18 21 21 19 18 17 18 20 19 17 15 15 17 22 20 18 16 16 18 15 16 17 17 16 16 16 18 19 18 18 17 18 20 21 20 19 19 17 18 19 19 18 18 15 15 15 15 14 15 19 18 19 19 18 21 15 14 14 12 10 11 13 13 13 13 12 13 14 17 20 20 17 15 15 20 25 25 21 17 15 20 24 25 21 16 15 19 21 20 18 14 20 19 20 20 20 21 15 17 19 19 17 17 15 18 20 21 19 18 15 17 20 21 19 18 14 16 19 19 17 16 17 16 18 18 17 16 24 24 21 16 12 14 24 26 23 17 12 12 23 25 22 16 12 13 22 22 19 14 11 12 18 17 15 12 9 11 18 17 15 13 11 17 18 19 20 20 19 16 18 19 20 19 18 17 18 18 18 18 18 16 18 18 17 17 17 16 17 18 19 19 17 16 18 21 22 22 20 16 16 20 22 21 18 15 15 22 27 26 20 14 14 20 25 24 18 13 12 14 17 17 14 11 11 11 13 13 11 11 14 14 15 15 13 13 15 18 20 20 18 16 14 18 22 22 20 16 15 18 21 21 19 16 14 15 17 17 16 13 12 13 15 14 13 12 14 14 16 16 15 13 18 20 25 25 21 21 16 16 21 21 17 18 15 16 20 20 16 17 14 15 19 19 16 16 14 13 17 17 14 16 19 21 24 24 22 23 14 16 19 19 17 15 15 20 25 25 21 16 17 22 28 28 22 18 17 21 25 25 21 17 15 17 18 19 17 15 14 13 14 14 13 17 12 14 17 17 14 11 13 15 18 18 15 12 17 18 19 19 17 15 22 21 20 20 19 18 25 22 20 19 18 20 23 21 19 17 17 19 12 15 17 16 12 8 14 17 18 17 13 9 15 17 18 17 14 12 16 18 19 19 18 16 16 20 23 23 22 19 15 19 21 22 21 18 20 17 17 17 17 20 15 16 18 19 18 15 16 19 22 23 21 17 17 20 23 24 21 17 16 18 20 21 19 16 18 18 20 21 19 17 22 20 22 22 19 21 19 19 21 21 18 20 20 19 21 21 19 21 19 18 19 19 18 20 17 15 15 15 14 16 18 15 16 16 16 18 13 15 15 15 13 11 14 18 21 20 17 13 16 19 21 20 18 14 18 20 21 20 18 16 17 18 18 18 17 15 14 14 15 15 14 12 15 15 15 15 14 14 18 16 15 15 15 15 19 16 15 16 17 16 19 14 15 18 20 18 16 12 14 17 21 19 15 13 14 19 22 20 14 16 18 18 15 12 15 21 27 25 18 13 16 23 31 30 20 13 15 22 27 26 18 12 14 18 20 18 15 11 15 16 17 16 15 13 10 12 14 15 13 12 12 16 19 19 16 14 14 18 23 23 20 16 15 20 24 24 20 17 16 20 23 23 19 16 17 19 21 22 19 16 14 13 14 14 13 14 12 12 13 14 12 12 14 17 19 19 17 14 17 21 23 23 21 18 19 22 24 24 22 20 18 20 22 22 21 19 20 15 15 16 18 21 15 12 11 12 12 14 20 18 16 17 18 18 22 20 18 19 20 20 19 17 16 16 17 18 16 15 14 15 15 15 14 17 17 16 15 13 19 23 24 24 23 18 20 23 25 25 25 20 19 21 21 22 22 20 18 17 17 17 17 17 19 17 17 16 16 17 22 23 25 25 23 24 19 21 23 23 21 22 17 19 20 21 20 20 16 18 20 20 19 18 14 16 18 18 16 16 13 14 16 16 15 14 13 19 22 18 12 9 13 20 23 20 12 9 13 18 21 18 12 10 13 14 16 14 11 11 12 12 13 13 11 11 17 15 17 17 15 15 20 19 20 20 19 17 15 14 18 17 14 12 14 14 18 17 14 11 15 14 16 17 15 13 16 14 16 17 15 14 17 17 20 20 18 16 16 20 21 20 18 15 18 23 25 24 21 17 17 21 23 23 20 16 15 18 19 19 17 16 14 16 18 17 15 15 13 15 17 16 14 14 22 16 15 13 12 18 19 13 12 11 11 16 19 14 14 13 13 18 18 13 14 14 14 19 17 12 13 13 14 21 21 14 15 16 17 23 12 16 21 19 13 10 12 16 22 19 13 10 12 17 22 20 14 11 12 15 20 19 14 11 12 15 19 17 13 11 16 19 22 20 17 14 22 16 16 17 17 16 17 14 15 15 15 15 17 15 16 17 16 16 18 15 16 16 16 16 18 14 14 15 15 16 23 20 19 19 19 22 12 13 14 15 13 11 13 15 18 18 16 13 15 19 22 22 19 15 16 20 24 24 20 15 17 20 23 22 19 15 17 19 21 21 18 16 -------------------------------------------------------------------------------- /data/act_range/2x/fc6.txt: -------------------------------------------------------------------------------- 1 | 8 8 9 9 8 7 8 8 7 7 8 9 7 9 8 9 8 7 8 7 7 9 7 8 7 8 9 8 8 8 9 8 8 9 9 8 8 8 8 7 8 8 8 8 9 9 9 8 9 10 8 8 7 8 8 8 7 8 8 9 8 9 9 10 9 8 8 7 7 8 8 8 8 7 7 9 8 9 8 8 10 8 8 9 9 8 8 8 9 10 8 7 8 8 9 10 8 9 9 9 7 10 8 7 8 7 8 8 7 7 8 9 8 8 8 8 9 10 7 7 7 9 6 7 7 8 8 7 9 9 8 8 9 9 9 7 8 9 9 9 10 7 9 9 8 8 6 8 9 7 9 8 9 7 8 6 10 7 8 7 9 9 10 7 7 8 9 9 8 8 8 7 8 10 10 8 8 8 8 9 8 8 8 9 8 7 9 8 9 6 9 8 9 9 8 9 8 8 8 9 7 8 8 8 8 9 9 7 8 6 8 7 8 9 9 9 9 6 8 8 9 8 8 9 7 8 8 7 8 8 8 8 8 7 7 8 7 9 8 8 8 8 8 6 8 8 7 8 7 8 8 8 8 9 8 8 9 7 9 7 9 9 6 9 10 9 10 9 7 7 8 8 6 8 8 8 8 8 7 8 8 7 7 8 8 9 8 8 8 7 8 11 7 9 8 6 7 9 8 7 7 8 8 7 6 8 9 8 9 6 7 8 9 7 8 8 9 7 7 9 8 10 9 8 8 7 6 8 6 9 8 9 9 8 10 7 8 9 9 7 9 10 7 8 9 8 6 9 9 9 10 8 8 8 10 8 8 9 8 10 7 8 8 7 7 8 8 8 10 10 7 7 10 9 8 9 8 7 8 7 9 6 7 8 9 8 9 7 10 7 7 9 8 8 7 8 9 8 9 9 8 7 7 9 8 8 7 9 9 9 9 6 7 10 8 7 9 8 9 9 8 8 7 8 7 10 7 9 7 9 9 9 8 9 8 8 9 9 9 8 8 9 6 9 11 8 8 9 9 8 8 9 7 8 8 8 8 7 7 8 7 10 7 5 8 9 7 8 8 9 8 8 9 8 8 7 10 10 8 7 8 7 7 7 9 7 8 9 10 8 8 7 8 6 8 8 8 9 7 7 8 7 7 9 8 9 7 8 8 7 7 7 9 10 8 9 9 7 9 10 8 10 7 8 8 10 8 9 8 7 9 10 8 8 8 9 7 9 7 7 9 7 8 8 7 8 7 8 8 9 9 8 8 9 8 9 8 7 7 7 8 9 9 7 10 8 8 8 9 8 8 6 8 7 9 9 8 9 7 8 10 7 7 8 7 8 9 8 10 7 8 8 7 7 9 9 8 10 8 8 9 8 7 3 8 8 10 9 7 8 7 9 8 8 8 9 7 8 11 9 8 8 8 7 8 8 9 8 7 10 7 8 10 7 8 7 8 8 7 8 8 8 8 7 7 8 7 8 8 9 9 7 10 8 7 8 8 7 8 8 9 6 7 8 9 8 8 9 8 9 8 9 8 9 8 9 6 8 8 9 8 8 8 8 7 9 9 8 8 8 9 8 7 7 6 10 8 8 7 7 9 7 9 8 9 9 10 7 8 9 8 8 7 8 8 8 9 8 7 8 8 9 8 9 6 7 8 7 9 8 7 8 9 6 8 8 7 6 9 7 10 7 8 8 7 8 8 8 7 6 9 7 9 8 9 7 8 9 9 8 7 9 7 9 8 8 8 10 8 7 7 8 8 8 9 9 9 7 7 9 7 6 9 9 8 8 7 8 8 8 8 7 9 7 8 8 10 8 7 8 8 7 8 8 9 9 8 7 6 8 7 8 9 8 8 7 8 8 9 6 8 9 9 9 8 9 7 8 8 9 7 9 7 9 7 7 9 9 9 8 7 9 7 8 8 7 8 8 8 9 8 9 8 8 9 7 8 9 8 7 8 8 8 9 9 9 7 8 9 9 8 7 7 8 8 9 7 8 8 7 8 9 8 7 7 8 8 8 9 8 10 9 7 8 9 8 7 8 8 9 8 7 7 8 9 10 7 8 8 9 7 8 9 7 8 8 7 9 7 8 8 7 7 9 10 8 9 9 9 8 9 9 7 8 8 9 8 9 9 10 8 8 9 7 9 8 9 8 9 8 9 6 9 7 9 8 8 7 9 8 8 7 8 8 8 10 7 8 7 9 6 9 8 8 9 7 8 7 7 9 9 9 8 7 7 8 7 7 7 7 9 8 7 8 9 7 8 7 8 8 8 9 7 8 7 9 8 8 8 8 8 9 7 8 8 8 8 10 8 8 9 9 7 9 8 8 8 8 10 8 9 9 9 7 8 8 8 8 9 8 9 8 8 9 8 9 8 7 9 8 8 5 8 9 8 8 9 8 8 7 9 9 9 9 9 9 8 9 10 8 9 9 8 7 9 9 9 9 7 9 8 9 7 9 8 6 6 8 8 8 10 8 8 10 8 7 7 9 8 7 7 7 11 8 9 9 9 10 8 8 8 8 7 8 8 7 6 10 8 10 8 8 7 8 8 8 8 8 9 8 8 8 8 8 10 8 7 9 8 8 9 8 8 8 8 9 8 9 7 6 6 9 9 7 8 8 9 8 8 9 7 7 8 8 8 9 8 8 8 6 9 8 8 8 8 7 8 9 7 9 9 7 7 9 8 8 8 8 8 9 8 9 10 7 7 8 9 8 8 6 9 10 7 9 8 8 8 8 9 8 9 9 9 8 6 8 7 9 8 8 8 8 8 8 8 8 8 8 9 8 9 7 8 8 6 9 7 8 8 8 8 7 7 10 8 8 7 8 7 8 10 9 8 8 8 8 9 8 8 10 8 7 7 8 9 8 10 8 8 8 8 8 7 8 7 8 9 7 9 8 8 8 9 9 8 9 8 8 8 8 8 9 8 8 9 8 9 9 9 8 8 8 8 6 8 8 8 9 7 8 9 7 6 7 8 8 8 8 8 8 10 9 9 8 7 8 8 8 9 8 8 9 9 7 8 9 8 9 8 8 9 8 8 9 9 7 9 7 7 7 9 8 8 11 9 9 8 8 7 7 8 7 8 8 7 8 7 9 7 9 8 8 7 10 9 7 7 8 8 8 8 9 9 9 9 8 8 8 8 9 9 8 6 8 8 8 9 7 7 9 8 7 9 8 7 9 8 9 8 10 10 9 8 8 8 8 8 8 9 8 8 8 7 8 8 8 8 7 9 10 8 7 9 8 8 9 9 9 8 7 9 8 8 7 10 9 8 9 8 9 9 7 8 8 9 7 9 9 8 7 8 9 7 10 7 8 7 8 8 9 9 7 8 9 8 9 9 6 9 8 7 8 8 6 8 6 6 10 8 9 8 8 9 8 8 7 8 7 9 6 8 9 9 7 8 7 7 9 9 8 8 8 8 8 8 9 8 8 7 9 10 7 8 7 7 8 8 8 8 8 8 9 7 8 7 9 9 8 8 7 9 11 8 8 8 7 7 8 7 9 7 7 9 8 7 7 7 9 7 6 9 7 7 7 8 7 7 9 8 8 7 9 9 9 9 8 8 9 8 9 9 9 9 9 8 9 9 8 9 8 9 8 9 8 10 10 10 7 8 8 9 9 8 7 9 8 9 8 9 9 10 8 8 9 10 8 9 8 8 8 8 7 9 9 8 7 9 9 8 8 9 7 9 8 8 8 8 7 8 9 9 8 8 8 9 7 8 8 8 6 9 10 7 8 9 9 8 8 9 9 8 8 10 7 8 9 7 8 7 7 9 9 10 8 8 9 7 8 8 10 8 9 8 8 7 9 10 7 9 8 9 9 10 8 8 8 8 9 7 8 7 11 10 8 6 8 10 8 8 6 6 9 7 10 9 7 9 7 9 8 7 9 9 8 8 8 8 7 7 10 9 8 10 8 7 8 9 9 9 8 7 8 7 9 8 8 9 10 8 8 8 9 8 8 8 5 8 8 8 8 8 8 7 10 7 8 7 6 9 9 8 8 8 8 9 9 9 8 9 8 5 8 7 9 8 6 7 8 6 8 9 8 8 8 9 7 8 10 8 7 7 9 8 7 8 10 9 7 9 7 9 7 9 8 8 8 8 10 7 8 7 9 8 9 7 9 7 8 8 9 8 9 6 8 7 8 8 8 8 8 10 8 9 7 9 7 8 8 7 8 7 7 9 7 8 8 8 7 8 8 7 8 7 8 9 8 8 9 8 9 8 9 8 8 9 8 8 8 9 9 8 8 9 7 9 8 8 8 7 9 8 7 9 8 7 9 9 9 9 9 10 7 7 7 7 9 8 8 7 8 8 7 8 9 6 7 7 8 8 8 8 9 8 7 8 10 8 7 8 7 8 9 8 8 8 9 8 6 9 8 9 7 9 7 8 7 8 8 8 7 8 7 7 9 9 8 7 8 8 7 9 10 7 8 9 8 7 8 8 9 8 7 8 8 9 7 9 9 8 10 7 9 8 7 8 8 10 7 7 8 8 8 7 7 8 8 8 7 7 9 8 9 9 8 8 8 7 8 9 9 8 8 9 9 8 7 9 8 7 7 6 8 8 7 10 7 8 7 8 9 7 7 10 9 8 8 7 7 8 9 9 9 9 10 7 8 7 8 10 8 8 7 8 10 8 11 8 9 9 8 9 9 8 7 7 9 7 10 8 9 7 8 7 7 9 8 9 10 9 7 9 8 8 8 7 8 10 7 8 8 9 9 9 9 8 8 8 6 9 8 9 8 8 7 8 7 9 9 9 10 9 8 7 8 7 7 9 7 8 8 9 8 7 8 7 8 10 8 7 8 7 9 8 7 8 7 8 9 9 8 9 8 8 8 8 10 7 10 7 7 9 8 8 8 9 9 9 8 9 8 9 8 8 7 8 9 9 8 9 9 8 8 8 8 8 8 8 9 8 8 9 9 9 8 7 7 8 8 7 8 9 8 9 8 11 9 7 9 8 6 10 9 7 8 7 9 7 8 9 9 9 9 8 10 8 8 8 8 7 7 9 9 9 8 9 8 9 8 7 8 8 9 7 10 9 7 8 7 9 8 10 9 7 9 7 8 9 8 8 9 8 9 9 7 9 9 10 8 8 7 9 6 8 8 8 9 7 7 9 8 8 7 9 8 8 8 9 7 9 8 8 8 7 7 7 9 8 8 8 9 8 7 7 8 8 9 8 8 8 8 9 9 9 7 8 9 9 7 7 8 8 9 8 8 8 8 8 9 9 8 7 8 8 7 8 7 9 9 7 9 8 8 8 9 8 9 8 9 8 8 9 8 9 7 8 7 9 10 8 8 9 8 7 10 9 9 7 9 7 8 5 8 9 7 8 7 10 8 9 8 8 8 7 9 8 7 7 8 9 8 7 10 7 9 7 9 8 8 9 8 8 6 9 9 8 8 8 9 9 9 9 10 8 9 8 8 7 7 8 7 9 7 6 8 7 8 7 7 7 7 7 7 9 9 9 7 7 8 7 9 7 8 8 9 8 8 8 7 8 8 9 7 8 8 9 8 8 9 6 7 8 9 8 7 9 9 8 7 8 9 8 7 8 7 8 9 7 8 10 9 10 8 8 7 7 7 8 8 7 9 8 9 8 7 9 8 8 8 7 8 8 8 8 7 9 9 8 9 7 9 9 8 8 8 8 7 8 8 8 9 8 11 9 8 9 7 10 8 9 8 8 8 8 8 6 8 9 9 8 7 8 9 8 7 9 9 10 7 7 7 9 9 8 9 7 8 9 6 9 8 8 8 9 9 9 8 8 11 9 7 9 11 9 7 8 9 8 8 8 11 9 9 8 9 8 9 7 9 9 8 7 7 9 9 9 8 8 8 8 8 9 9 7 8 9 9 9 8 8 9 8 8 7 8 7 8 9 8 9 8 8 7 8 8 8 9 9 6 8 8 7 7 8 9 7 9 8 7 9 8 10 7 9 8 9 8 8 8 7 8 9 9 8 7 9 8 9 9 8 10 8 7 8 9 8 8 7 8 7 9 6 9 11 9 8 9 7 9 8 8 8 7 8 10 9 8 7 7 8 8 7 9 8 8 8 8 8 7 8 8 7 8 8 8 9 8 8 8 10 9 8 9 9 7 7 10 7 8 8 9 8 7 8 10 7 8 9 9 8 7 9 9 7 8 9 9 9 8 6 8 8 8 8 7 8 8 6 8 8 9 9 9 8 6 8 9 7 8 8 8 9 9 8 8 7 7 8 9 8 9 8 8 7 7 9 8 10 2 9 7 8 7 7 8 7 7 9 8 9 8 9 7 9 10 9 7 7 8 9 8 10 8 8 8 9 9 9 8 8 9 8 8 9 8 8 10 8 8 8 10 7 8 6 8 8 8 8 6 9 9 8 8 7 8 9 8 8 8 7 8 8 8 7 8 9 8 8 8 8 8 8 8 10 9 7 10 8 7 8 9 8 7 8 7 8 9 9 8 9 7 8 11 8 7 7 9 7 8 8 9 8 10 8 9 8 7 8 9 9 7 7 8 10 8 10 10 8 8 8 7 8 9 9 8 7 8 8 7 9 7 9 7 10 8 8 8 8 8 9 10 8 8 7 9 8 7 7 8 9 7 8 10 9 8 9 9 7 8 8 6 9 8 7 8 8 8 8 8 8 11 8 9 9 7 8 9 9 7 7 8 9 6 8 8 6 8 8 7 8 8 6 9 8 7 8 7 6 9 9 7 8 8 8 7 8 9 8 8 9 7 8 9 9 8 8 7 8 8 8 8 8 8 9 8 8 7 8 9 8 9 7 9 8 9 8 10 9 9 9 7 7 8 7 8 8 8 7 7 8 8 8 7 7 7 8 9 7 8 8 7 8 8 8 8 7 8 8 7 7 7 8 9 8 9 9 8 8 8 8 9 10 8 8 8 10 9 9 8 9 9 11 7 10 10 8 8 9 8 9 9 8 8 8 7 8 6 9 7 9 10 7 9 8 8 9 8 9 7 6 8 8 8 8 9 10 7 8 8 8 8 8 8 8 9 8 8 8 9 9 8 10 7 9 8 7 9 7 9 8 8 6 9 9 9 8 8 8 8 7 9 9 9 8 7 9 8 7 9 9 8 8 7 10 7 9 8 7 7 7 9 7 10 9 8 8 8 9 10 9 8 8 8 10 8 8 7 7 9 7 9 9 7 9 8 9 9 8 9 8 9 9 9 9 8 7 8 7 7 7 10 8 6 8 7 8 6 8 9 9 7 7 9 9 6 9 6 7 6 7 7 8 8 8 7 7 8 8 7 8 9 8 9 7 8 8 6 9 8 10 9 6 8 11 9 8 7 8 8 9 8 9 9 8 7 10 8 7 9 8 8 10 9 8 8 8 7 6 8 9 8 8 8 7 8 9 8 8 7 8 8 7 8 8 8 9 8 8 7 8 9 8 9 8 10 9 8 8 9 8 9 9 8 8 7 8 8 8 8 8 8 9 9 8 7 7 7 8 8 9 10 9 9 9 9 9 7 8 9 7 7 9 8 10 9 7 8 9 8 7 9 8 6 7 8 8 9 7 8 9 9 8 8 8 8 10 9 9 10 8 8 9 9 8 8 7 8 8 8 6 9 9 7 3 7 8 7 10 8 7 10 8 8 9 8 9 8 7 10 8 8 8 8 9 7 7 8 9 7 7 9 11 9 8 8 7 10 9 8 7 9 10 7 9 8 7 10 7 7 9 10 10 7 7 8 7 9 8 7 8 9 7 8 9 9 8 7 8 8 8 8 8 9 9 8 7 10 8 10 8 7 8 8 8 7 8 8 8 10 7 9 8 9 8 7 8 8 8 9 8 6 8 8 9 7 10 6 8 9 9 7 8 8 12 9 7 7 8 8 8 7 7 9 8 8 11 8 11 8 9 8 7 9 9 6 9 9 8 6 8 7 9 9 7 7 7 8 8 8 8 7 7 7 9 9 9 8 8 8 7 8 7 8 7 8 9 7 8 8 8 8 8 9 7 9 8 8 7 7 7 9 9 7 7 9 9 9 9 7 7 10 7 8 8 8 7 8 8 9 8 8 7 8 9 9 9 8 7 8 8 8 7 9 8 9 9 9 7 10 8 8 7 7 8 8 9 9 8 9 9 7 8 10 10 8 7 8 9 8 8 9 9 8 10 8 8 9 9 8 10 7 9 9 8 9 8 9 9 8 8 8 8 7 6 9 6 8 8 6 8 9 7 7 9 10 9 8 8 8 8 9 7 7 8 8 10 9 8 5 10 9 8 12 8 9 8 8 8 12 9 9 7 9 9 8 8 8 8 9 8 7 7 9 8 8 8 8 8 9 8 9 8 9 10 7 6 8 8 8 8 7 8 9 8 8 8 8 8 7 8 7 8 10 6 8 8 7 8 7 8 7 8 8 7 7 10 8 9 9 9 9 9 8 7 8 9 9 7 7 9 8 6 9 7 9 8 7 6 8 7 9 8 8 7 9 8 7 8 7 8 7 10 8 8 8 6 9 7 8 8 7 8 8 8 9 8 8 9 8 7 7 7 9 7 8 9 7 8 8 9 7 8 8 8 8 10 8 9 8 7 8 7 7 8 7 9 8 9 8 7 8 8 7 9 9 8 9 8 8 9 7 8 9 8 11 7 8 6 8 8 7 9 8 8 9 8 6 8 8 7 9 8 8 8 9 7 9 8 8 9 9 8 7 8 9 9 8 7 8 6 9 8 9 8 7 9 7 9 8 8 8 8 8 8 6 7 8 8 8 8 9 8 8 8 8 7 8 8 10 7 8 7 9 8 9 7 8 8 9 8 8 9 8 9 8 8 8 8 8 9 10 7 7 8 8 8 7 8 8 8 7 9 8 8 8 10 8 9 8 8 7 8 8 9 8 8 7 8 7 7 9 8 8 7 10 7 7 7 8 8 8 8 8 8 9 8 8 8 7 9 10 9 9 7 10 9 8 9 7 10 9 9 7 9 8 8 9 8 8 8 9 8 8 8 8 7 8 8 8 8 8 8 9 9 8 8 9 8 8 8 7 8 8 8 7 8 9 8 8 9 8 8 8 7 8 7 9 8 9 8 8 9 8 8 9 9 8 9 9 9 8 9 10 8 9 9 10 8 7 7 9 10 8 8 8 8 7 8 9 8 8 7 8 7 9 9 8 9 8 9 9 7 8 8 9 8 8 10 8 8 8 7 8 8 8 10 7 8 7 7 9 7 8 7 9 9 7 8 8 9 8 9 8 8 7 10 9 9 7 7 8 9 8 7 8 7 7 -------------------------------------------------------------------------------- /data/act_range/2x/fc7.txt: -------------------------------------------------------------------------------- 1 | 2 2 2 2 3 2 2 1 2 2 2 2 3 2 2 2 2 2 2 3 2 2 3 2 2 2 3 2 2 3 2 2 2 2 3 2 2 2 2 2 2 3 2 2 3 2 2 2 2 2 2 2 3 3 2 3 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 3 2 3 2 2 2 2 2 2 2 2 2 3 2 2 3 2 2 2 3 3 2 2 2 2 3 2 2 2 2 2 3 3 3 2 2 2 2 2 2 2 3 2 2 4 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 3 2 2 2 2 2 3 3 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 3 3 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 3 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 3 2 2 2 3 2 2 2 3 2 2 2 2 3 2 2 2 2 2 2 3 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 3 3 3 2 2 2 2 2 2 2 3 2 3 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 3 3 2 2 2 2 3 2 3 2 3 2 2 2 2 2 2 2 2 2 2 3 2 2 3 2 2 2 3 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 3 2 2 3 2 2 2 3 2 3 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 3 3 2 2 2 3 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 3 2 2 2 3 2 2 2 2 2 2 2 2 2 3 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 3 2 2 2 3 2 2 3 2 2 2 3 2 2 2 2 2 2 2 3 2 1 2 2 2 3 2 2 2 2 3 2 2 2 3 3 2 2 2 2 2 2 2 2 3 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 3 2 2 2 3 2 3 2 2 2 2 2 3 2 3 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 3 3 2 3 2 2 3 2 2 2 2 2 2 2 3 2 3 2 2 3 3 2 2 2 2 2 2 3 2 3 2 2 2 2 2 2 2 3 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 3 3 2 3 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 3 2 2 2 3 2 2 2 2 2 2 2 2 3 2 2 2 3 2 3 2 2 2 2 2 3 2 2 2 3 2 2 3 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 3 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 3 2 2 2 2 2 2 2 3 3 2 2 2 2 3 2 2 2 2 3 3 2 3 2 2 2 2 2 2 2 3 2 2 2 2 2 3 2 2 2 3 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 3 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 2 2 2 2 2 3 2 3 2 2 2 2 2 2 3 2 2 3 2 2 2 2 3 3 2 3 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 3 2 2 2 3 2 2 2 2 2 3 2 2 2 2 2 2 3 3 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 1 2 2 4 2 2 2 3 2 2 2 2 2 3 2 3 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 3 2 2 2 2 3 3 2 2 2 3 2 2 3 2 2 2 2 3 2 2 2 2 2 3 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 4 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 3 3 2 2 2 2 2 2 2 2 2 2 3 2 3 2 2 2 2 2 2 3 2 2 2 2 3 2 2 2 2 2 2 2 3 2 3 2 3 2 3 3 2 2 2 2 2 2 2 2 2 2 3 3 2 2 3 3 3 2 2 2 2 2 2 2 2 3 2 2 2 2 2 3 4 2 2 2 2 2 2 2 3 2 3 2 2 2 2 2 4 2 3 2 2 2 2 2 2 2 2 3 3 2 3 3 2 2 3 2 1 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 3 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 3 2 2 2 3 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 3 2 3 2 2 2 3 2 3 2 2 3 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 3 2 2 3 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 3 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 3 2 2 2 2 2 3 2 2 2 2 3 2 2 2 2 2 2 3 2 3 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 1 2 2 3 3 2 2 2 2 2 2 3 2 2 3 2 1 2 3 2 2 2 3 2 2 2 2 3 2 2 2 3 2 3 2 2 2 2 2 2 2 2 2 2 4 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 2 2 2 2 3 2 2 3 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 3 2 3 2 3 2 2 2 2 2 2 2 2 2 3 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 3 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 3 2 2 2 3 2 2 2 2 2 2 2 3 3 2 2 3 2 2 2 2 3 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 2 3 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 3 2 2 3 2 2 2 3 2 2 2 2 2 2 3 2 2 2 2 2 3 2 2 2 2 2 2 3 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 2 3 2 2 3 2 2 2 2 2 3 2 3 2 2 3 2 3 2 2 2 2 2 2 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 2 2 2 3 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 3 2 2 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 1 2 3 2 2 2 2 2 2 3 2 2 2 2 2 2 2 3 2 3 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 3 2 2 3 2 2 2 2 3 2 2 3 2 2 2 3 3 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 3 2 2 2 3 3 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 3 2 2 2 2 3 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 3 2 3 2 2 2 3 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 3 2 2 3 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 3 3 2 2 3 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 3 2 3 2 2 2 2 2 3 2 2 2 2 2 2 2 3 2 2 3 2 3 2 2 2 2 2 3 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 3 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 3 2 2 2 2 2 3 3 2 3 3 2 2 2 1 2 3 2 2 2 3 2 2 3 3 2 2 2 2 2 2 2 3 2 2 2 2 3 2 2 2 2 3 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 3 2 2 2 2 3 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 3 2 2 2 2 2 3 2 2 2 3 3 3 2 2 2 2 2 2 3 3 2 2 2 2 2 2 2 2 2 2 2 2 3 2 3 3 2 3 2 2 3 2 3 2 2 3 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 3 2 2 2 3 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 3 3 2 3 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 2 2 3 3 2 2 3 2 2 2 2 3 2 2 2 2 2 2 2 4 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 3 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 3 2 3 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 3 3 3 2 2 2 3 2 3 2 3 2 2 2 3 2 2 2 2 2 2 2 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 3 3 2 3 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 3 2 2 3 2 2 2 4 3 2 2 2 3 2 2 2 2 2 2 3 2 2 2 2 3 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 1 2 2 2 3 2 3 2 2 3 2 2 2 2 2 3 2 2 2 3 2 2 2 2 2 2 2 2 3 2 2 3 2 2 2 2 2 3 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 3 3 2 3 2 2 2 3 2 2 3 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 2 3 2 2 2 3 2 3 2 3 2 2 2 2 2 3 2 2 3 3 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 3 3 2 2 2 3 2 2 2 2 2 3 3 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 3 2 2 2 3 3 2 3 3 2 2 2 2 2 2 2 2 2 2 2 3 2 2 3 2 2 2 3 3 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 2 2 2 2 2 3 3 2 2 2 2 2 2 3 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 4 2 2 3 3 2 2 2 2 2 2 3 2 2 2 3 2 2 2 3 2 2 2 2 2 3 2 2 2 2 3 3 2 2 2 3 2 2 2 2 2 2 2 3 2 2 2 3 2 2 2 3 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 2 2 2 2 2 2 3 2 2 3 2 2 2 2 2 2 2 2 2 2 3 3 2 2 3 2 2 3 2 3 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 3 2 3 2 2 2 2 2 2 2 3 2 2 4 2 2 2 3 3 3 3 2 2 2 2 2 2 2 2 4 2 2 2 2 3 2 2 3 2 2 2 2 2 2 2 2 3 2 2 2 2 2 3 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 3 2 2 3 2 3 3 2 2 2 2 2 2 2 2 2 3 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 2 2 3 2 2 2 2 3 2 3 2 2 2 2 3 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 3 3 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 1 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 3 2 3 2 2 2 2 2 2 3 2 2 2 2 3 2 3 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 3 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 3 2 3 3 2 2 2 2 2 2 3 3 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 3 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 4 2 2 2 2 2 2 2 3 2 2 3 2 3 2 2 3 2 2 3 2 2 3 3 2 3 2 2 2 2 2 2 2 2 2 4 2 2 2 3 3 2 2 2 3 3 2 3 2 2 3 2 2 2 2 2 2 3 2 2 2 2 2 2 1 3 3 2 2 2 2 3 2 2 3 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 -------------------------------------------------------------------------------- /data/act_range/2x/fc8.txt: -------------------------------------------------------------------------------- 1 | 4 5 5 4 5 5 5 6 7 5 6 5 6 6 5 6 6 6 6 5 6 7 6 8 5 4 6 5 5 6 5 6 6 6 6 6 7 5 6 6 6 5 6 6 6 5 6 6 5 5 6 5 6 6 6 5 6 5 6 6 7 6 6 6 5 6 5 5 5 5 5 6 5 6 6 5 5 6 6 6 6 6 7 6 6 7 7 5 5 5 4 6 5 6 7 4 5 6 5 7 5 5 4 6 6 5 6 5 5 5 6 5 7 7 7 6 5 4 6 7 6 6 5 6 7 7 6 5 6 5 4 5 5 6 6 6 6 5 6 5 5 5 5 5 6 5 6 4 4 4 7 7 4 5 6 6 5 5 6 6 6 6 6 6 6 5 5 5 6 6 7 7 7 6 6 5 7 6 6 7 7 5 6 5 7 7 6 5 6 7 5 6 6 6 5 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 6 6 7 6 6 6 6 6 5 7 6 5 6 6 6 6 6 8 5 5 6 7 6 6 6 6 6 6 6 5 6 5 6 6 6 6 6 5 6 6 6 5 4 6 6 5 7 6 5 6 6 5 6 6 7 7 6 7 5 6 5 6 6 7 6 5 6 6 5 6 6 6 6 5 5 6 6 6 5 4 5 6 5 5 6 5 5 5 7 5 5 6 6 6 6 6 6 6 6 6 7 6 6 6 7 6 6 6 6 6 5 5 5 4 5 5 5 6 6 6 6 6 5 5 5 6 6 6 6 4 4 7 6 6 6 7 6 5 7 6 6 4 5 5 6 7 7 7 6 5 7 5 6 6 6 5 5 5 6 5 6 6 6 7 6 5 4 7 6 6 7 6 6 5 5 5 5 4 4 5 6 5 4 4 5 5 5 6 6 4 4 5 5 4 5 5 5 5 6 7 5 5 7 5 6 7 4 6 6 6 5 6 5 5 5 5 5 6 6 5 5 5 5 6 7 6 5 5 5 4 6 6 5 5 4 4 6 6 6 5 5 5 6 5 5 6 6 6 5 5 5 5 6 7 7 4 4 4 5 6 7 6 5 6 5 5 4 5 6 5 5 6 6 5 5 6 4 6 6 6 5 5 6 3 6 4 5 5 6 6 4 5 6 6 6 6 6 6 6 5 5 4 6 5 6 6 5 6 6 6 5 6 6 6 5 5 5 5 6 6 6 5 5 4 6 4 5 5 5 6 5 6 6 6 5 6 5 4 4 6 5 6 5 5 5 5 5 5 6 6 5 5 6 6 4 5 5 6 6 5 6 5 6 4 6 5 4 5 4 5 5 5 6 5 7 6 5 6 6 6 4 6 6 6 5 5 6 5 5 6 7 4 5 5 5 6 6 4 5 6 5 6 4 6 5 6 6 4 7 7 6 5 5 6 5 5 7 5 5 6 5 6 6 6 6 5 6 6 5 5 4 6 5 6 6 4 5 6 5 5 6 5 5 5 5 5 5 6 5 6 5 4 6 5 6 5 6 5 4 4 5 5 5 7 6 5 8 7 6 5 6 6 4 5 6 3 5 4 5 4 5 5 6 6 5 6 7 5 5 5 7 5 5 6 6 6 5 5 6 6 7 7 5 5 6 4 6 5 5 6 6 6 6 5 4 6 5 5 6 5 6 6 5 7 5 5 5 6 6 5 6 5 6 5 6 6 6 6 7 6 6 5 5 5 7 5 5 5 6 5 6 6 6 5 6 5 5 7 5 6 5 6 7 7 6 5 5 5 7 5 5 4 6 7 7 5 6 6 6 4 6 6 6 5 5 5 5 6 5 5 4 6 4 5 6 7 5 5 6 6 4 6 5 7 5 5 6 4 7 5 4 4 5 6 6 5 6 6 7 5 6 5 4 5 5 6 6 6 6 5 6 5 5 5 6 7 5 5 6 6 6 6 7 5 4 7 5 5 5 6 5 6 6 5 5 5 5 6 7 4 5 4 5 4 3 5 6 5 5 6 5 5 7 6 5 6 4 5 4 5 5 6 6 6 5 6 6 5 7 7 5 4 7 6 6 5 4 6 5 6 7 6 6 6 4 5 4 5 5 5 6 5 5 6 5 4 4 5 6 6 5 6 6 4 5 5 5 5 5 6 5 6 6 6 5 5 4 7 5 5 6 5 6 6 6 5 5 5 5 4 6 6 5 4 4 5 6 5 6 5 5 6 5 5 3 6 4 6 5 4 5 4 5 5 4 4 4 7 7 5 6 5 5 4 6 6 6 6 6 7 -------------------------------------------------------------------------------- /data/act_range/3x/conv1.txt: -------------------------------------------------------------------------------- 1 | 88 101 114 104 105 112 155 107 119 145 167 168 213 140 216 153 590 391 283 163 144 151 170 301 447 651 623 277 307 241 188 106 120 125 117 141 181 248 280 258 131 260 346 1079 976 583 189 150 88 103 73 121 89 94 135 82 74 70 181 119 326 528 479 507 243 110 83 151 92 165 156 187 108 112 214 135 244 156 290 112 68 104 96 83 201 339 149 270 246 147 109 121 143 113 61 73 -------------------------------------------------------------------------------- /data/act_range/3x/conv2.txt: -------------------------------------------------------------------------------- 1 | 74 58 83 55 59 63 40 75 60 86 29 74 58 49 26 65 51 64 40 65 53 59 82 61 48 48 18 28 38 74 7 108 81 76 47 63 61 51 26 62 50 54 47 46 35 49 52 55 86 51 54 74 30 110 60 84 97 88 110 82 96 120 66 58 50 95 113 63 58 74 121 49 54 58 49 10 60 74 79 89 82 44 47 44 52 32 42 68 37 56 50 8 84 60 77 56 134 144 109 129 81 72 104 69 44 72 53 70 61 43 44 64 51 37 51 56 37 15 43 47 28 55 103 94 62 59 6 35 31 65 72 45 62 60 47 40 40 53 63 72 55 56 44 37 65 61 86 89 52 33 53 78 46 94 64 72 73 86 86 65 64 57 52 103 126 52 85 73 69 53 44 60 56 82 55 81 48 54 64 43 50 44 56 80 57 44 47 20 51 48 42 60 30 59 85 62 82 42 73 49 48 53 39 52 37 56 49 42 40 54 102 58 49 45 64 52 86 59 89 90 58 71 43 30 72 54 17 83 61 47 34 69 54 74 55 83 70 45 47 71 56 52 90 56 51 67 57 80 89 70 72 30 60 49 34 62 -------------------------------------------------------------------------------- /data/act_range/3x/conv4.txt: -------------------------------------------------------------------------------- 1 | 37 49 35 54 58 49 37 54 50 37 32 61 46 43 50 44 49 42 43 44 64 51 49 44 42 48 44 41 45 50 46 49 56 42 43 54 41 44 45 35 47 57 51 41 45 43 40 43 47 52 45 46 45 49 54 47 53 40 47 66 47 45 47 44 51 51 50 51 43 39 57 49 37 41 44 48 44 49 49 48 57 57 59 46 48 42 42 55 53 36 45 46 50 59 53 48 52 38 49 62 49 44 45 54 47 56 41 60 43 48 56 54 49 52 59 42 39 38 47 47 56 52 45 57 49 37 54 47 35 49 38 56 51 46 60 64 55 42 49 40 44 36 47 64 53 57 46 50 38 54 51 39 51 57 56 51 54 51 44 54 47 49 37 52 48 47 48 49 55 55 46 44 30 50 35 49 45 49 49 32 55 45 53 56 40 46 41 45 47 46 50 56 34 46 40 48 54 36 48 35 50 52 37 47 47 46 43 52 43 53 54 45 47 43 45 43 53 36 40 54 43 49 49 40 43 40 52 48 44 59 43 57 46 46 47 48 40 40 38 58 51 42 55 59 43 47 41 40 59 41 38 43 45 38 46 47 36 28 40 42 37 51 49 49 58 44 49 52 37 53 48 47 44 48 42 56 44 48 51 39 37 49 43 50 27 42 48 51 41 46 42 41 46 45 43 59 46 41 53 40 45 30 37 48 47 44 52 39 44 37 44 46 41 30 48 43 44 33 45 40 45 53 53 60 38 56 42 40 39 37 42 42 45 42 49 57 41 44 41 48 48 52 46 50 47 37 47 43 45 48 53 41 42 32 46 39 41 55 47 48 53 44 49 42 53 43 52 49 44 37 41 49 30 53 39 46 42 43 39 45 49 42 39 36 -------------------------------------------------------------------------------- /data/act_range/3x/fc6.txt: -------------------------------------------------------------------------------- 1 | 12 11 13 13 12 10 11 12 11 10 12 13 10 13 11 13 11 10 11 11 10 13 10 11 11 12 12 11 12 12 13 12 12 13 13 12 11 11 12 10 11 12 12 11 13 13 13 12 13 14 12 12 10 11 12 11 11 11 12 14 11 13 13 14 14 12 12 11 11 12 12 12 11 11 10 13 12 14 12 12 14 11 11 13 13 12 11 11 13 14 12 10 12 11 14 14 12 13 14 14 10 15 12 11 12 11 12 11 11 11 12 13 11 12 12 11 13 14 11 11 11 13 9 11 11 12 12 11 13 12 11 12 13 13 14 10 12 13 12 13 14 10 13 13 11 11 9 12 13 10 12 11 13 11 12 9 15 10 12 11 13 13 14 11 10 12 12 14 12 11 12 11 12 15 14 12 12 12 12 13 12 11 11 13 12 10 13 11 13 9 13 12 13 13 12 13 12 11 12 13 10 12 11 12 12 13 13 10 12 9 12 10 11 13 13 13 13 9 11 12 14 12 11 14 11 12 12 11 12 12 12 11 12 11 11 11 10 13 11 12 12 12 12 9 12 12 11 12 10 11 12 11 12 13 12 11 13 10 13 10 13 13 9 13 14 13 14 14 11 10 11 11 9 11 12 11 12 12 10 12 11 11 10 11 12 14 11 12 12 11 12 16 11 13 12 9 11 12 12 10 10 12 12 10 9 11 13 12 13 9 11 12 13 11 12 12 13 11 10 14 11 14 13 11 11 11 9 12 9 13 12 13 13 11 14 11 11 13 13 10 13 15 10 12 13 11 9 13 14 13 14 11 12 12 15 12 12 14 11 14 11 11 11 11 10 12 11 12 14 15 10 10 14 13 12 13 11 11 12 10 12 8 10 11 13 11 13 10 14 11 10 13 12 11 11 12 13 12 14 13 12 11 11 13 12 11 11 13 13 13 13 9 10 14 12 11 13 12 13 14 11 11 10 12 11 14 11 14 10 13 13 13 11 13 12 12 13 13 13 11 12 13 9 13 15 11 11 13 13 12 12 13 10 12 11 12 12 11 10 11 11 15 10 8 12 12 11 11 11 12 12 12 13 12 12 11 14 14 11 11 12 11 10 10 13 11 11 13 14 11 12 10 12 8 11 12 11 13 10 11 12 11 11 13 11 14 11 12 11 11 10 10 12 14 12 13 13 11 13 15 11 15 11 12 12 14 12 13 11 10 12 14 12 12 11 13 10 14 11 11 12 10 12 12 10 11 11 12 12 13 13 12 12 12 12 13 11 11 10 11 11 12 13 11 14 12 12 11 14 12 11 9 12 10 13 12 12 13 10 12 14 11 11 12 11 12 12 12 14 10 12 11 10 11 14 13 12 14 11 12 12 11 11 5 12 12 15 13 11 12 11 13 12 11 12 13 11 12 15 13 11 12 12 10 12 11 13 12 10 14 10 12 15 11 11 11 11 12 11 12 11 12 12 11 11 12 11 12 11 13 13 11 14 12 10 12 11 10 11 12 12 9 11 12 13 12 11 13 11 13 12 12 11 13 12 13 10 11 12 13 12 12 11 12 11 13 13 12 12 11 13 11 11 11 9 15 12 12 11 10 13 11 13 12 13 14 14 11 12 14 11 12 10 11 11 11 13 11 11 11 11 13 12 13 9 11 12 10 13 11 10 12 13 9 11 12 11 8 13 11 15 11 12 12 11 12 12 12 11 9 13 11 12 12 13 10 11 13 14 11 11 13 11 14 11 11 12 14 12 10 11 11 12 11 13 13 12 11 10 14 11 10 12 14 11 12 10 11 12 11 11 11 13 11 12 12 14 12 11 11 12 11 12 11 13 14 12 10 9 11 10 12 13 12 12 10 11 12 13 9 12 12 13 13 12 13 10 12 12 13 11 13 11 12 10 11 13 13 12 11 10 13 11 11 11 11 12 12 12 13 11 13 12 11 13 11 11 13 11 11 12 12 12 13 13 13 11 12 13 14 12 11 10 12 12 13 11 12 12 10 12 12 12 10 10 12 12 11 13 12 14 13 11 12 13 12 11 11 11 13 12 11 11 11 13 15 10 12 11 13 10 11 13 11 11 12 11 13 11 12 11 10 10 14 14 12 13 13 14 11 13 13 10 12 12 13 12 14 13 14 12 12 13 10 13 12 13 12 13 12 13 9 13 10 13 12 12 10 13 12 12 10 12 12 12 15 10 12 11 13 10 14 12 12 13 11 12 10 10 13 13 12 12 10 10 12 11 11 11 10 13 11 10 12 13 11 12 10 12 12 12 13 10 12 10 13 11 11 11 12 11 13 10 12 11 12 11 14 12 11 13 14 11 13 12 12 12 12 15 11 14 13 13 11 12 12 12 12 13 11 13 12 12 13 11 13 12 10 13 12 12 8 12 13 12 12 13 12 12 11 12 13 13 13 12 13 12 12 14 12 13 13 12 11 13 13 13 13 11 13 12 14 10 13 12 9 10 12 11 12 14 11 12 15 12 10 11 13 12 11 11 10 15 11 13 13 13 14 11 12 11 12 11 12 12 11 9 14 12 14 12 12 10 12 12 12 12 12 13 12 11 12 12 12 14 11 10 13 12 11 13 12 12 11 12 13 12 13 11 9 9 14 12 11 12 12 13 12 12 13 10 10 11 12 12 13 11 12 12 9 14 11 11 12 12 11 11 13 10 14 12 10 10 13 12 12 12 11 11 13 12 13 15 10 11 11 13 12 11 10 14 15 10 13 11 12 11 12 13 12 13 13 13 12 9 12 10 13 12 12 12 12 11 12 11 11 12 12 13 12 14 10 12 12 9 13 11 12 11 12 11 11 10 14 12 11 11 11 11 11 14 13 12 12 11 12 14 12 11 15 11 11 10 12 13 12 14 12 12 12 12 11 10 11 10 11 14 10 13 12 12 11 12 13 11 14 12 11 11 12 12 13 12 12 13 12 13 13 13 11 11 12 11 10 12 11 11 13 11 11 13 11 8 10 12 12 11 12 12 12 14 13 13 11 10 12 11 12 13 12 11 13 13 10 12 13 12 13 12 12 13 11 12 13 13 11 14 10 10 10 14 12 11 15 13 13 11 12 11 10 11 10 12 11 11 12 10 12 10 13 11 11 11 14 13 10 11 11 12 12 12 13 13 12 13 12 12 11 12 14 13 12 9 12 12 12 13 10 11 14 12 11 14 12 10 13 12 13 12 14 14 13 12 12 12 12 12 11 13 11 12 11 11 11 12 12 11 11 12 15 12 10 13 12 11 13 13 13 11 11 14 12 12 10 14 12 11 12 12 14 13 11 11 11 13 10 13 13 12 10 12 13 10 14 10 12 11 12 12 13 12 10 12 13 12 13 13 9 13 12 10 12 11 9 12 9 10 14 11 13 11 11 13 12 12 11 11 11 12 9 12 13 12 10 12 10 11 13 14 12 12 11 12 12 11 13 12 11 11 14 14 10 11 10 10 12 12 12 11 11 11 13 11 11 11 14 13 12 11 11 12 15 11 12 12 10 11 12 11 13 11 10 13 11 11 11 11 13 10 9 13 11 11 11 11 10 10 14 11 11 10 13 13 13 13 12 11 13 12 13 13 13 13 12 12 13 13 12 13 11 13 12 13 11 14 14 14 11 12 12 13 13 12 10 13 12 13 12 14 13 14 12 12 13 15 12 13 12 11 11 11 10 13 13 12 11 13 13 12 12 13 10 14 11 12 12 12 11 12 13 14 11 12 12 13 10 12 12 12 9 13 14 10 11 13 13 12 11 13 13 12 11 14 10 11 13 10 12 11 10 14 14 14 12 11 12 10 12 11 14 12 13 12 12 10 13 14 11 13 12 13 13 15 12 12 12 11 13 11 12 10 15 14 11 9 11 14 12 12 9 9 13 10 14 13 10 13 11 13 12 11 12 13 11 11 12 12 11 11 14 14 12 14 11 10 12 13 13 14 11 10 12 11 13 11 11 12 14 12 11 12 13 11 11 12 7 12 12 11 12 12 12 10 14 11 11 11 9 14 13 11 12 11 12 13 13 12 11 13 11 8 12 11 12 12 9 11 11 8 11 13 11 11 12 13 11 11 14 12 11 10 13 12 10 12 15 12 10 13 10 12 11 13 11 11 12 11 15 11 12 11 13 11 12 11 13 10 11 12 13 11 13 9 12 10 12 12 12 12 12 14 12 13 11 13 10 12 11 11 11 10 11 13 10 12 11 12 11 12 12 10 12 10 12 13 12 12 14 12 13 12 12 12 12 13 12 11 11 13 13 11 12 14 10 13 11 12 12 10 13 12 10 13 12 11 13 12 14 14 14 14 10 11 11 10 13 12 11 10 12 11 10 12 13 9 10 11 11 12 12 12 13 12 11 12 15 11 11 11 11 12 13 12 12 12 12 12 9 13 12 13 11 13 11 11 10 12 12 12 11 11 10 10 13 13 12 10 12 12 10 13 14 11 12 13 12 10 12 11 13 12 10 11 11 13 10 13 13 12 14 10 13 12 10 12 12 14 11 11 12 12 12 11 10 11 11 12 10 10 13 11 13 13 12 12 11 10 12 13 13 12 12 14 12 12 10 13 12 11 10 9 12 12 11 14 11 12 11 12 12 11 10 14 13 12 11 10 11 12 14 13 13 13 14 10 11 10 12 14 11 11 10 11 15 12 15 12 13 14 12 13 13 11 11 10 13 11 15 11 14 11 11 10 10 14 12 13 14 12 11 13 12 12 12 11 11 14 10 11 12 13 12 14 13 11 11 12 10 14 12 13 12 11 11 11 10 13 13 13 15 13 12 10 12 10 11 14 11 12 12 13 11 11 12 10 11 14 12 11 12 11 13 11 11 12 10 11 13 13 12 13 11 12 12 11 14 10 15 11 11 14 12 11 12 12 13 13 12 13 12 13 12 11 11 12 14 13 11 13 13 12 12 11 11 12 12 11 14 12 11 13 12 14 12 10 10 12 12 10 11 13 12 13 11 15 13 11 13 12 9 14 14 10 12 11 13 11 12 13 13 12 12 12 14 12 12 12 12 11 11 13 13 13 12 12 11 14 11 11 12 12 13 11 14 13 11 12 11 13 12 14 13 11 12 10 12 13 11 11 13 12 13 13 11 13 13 14 11 11 11 13 9 12 11 12 12 11 11 13 12 12 10 13 12 11 11 13 11 13 12 12 12 11 10 10 14 12 12 11 13 12 11 11 11 11 13 11 12 11 12 12 13 13 11 12 13 13 11 10 12 11 13 11 11 11 11 12 13 13 12 10 12 11 11 12 10 13 14 11 13 11 12 11 14 12 13 12 13 12 11 13 12 13 10 12 10 14 14 12 12 13 12 10 14 13 13 10 13 11 12 8 12 13 10 11 10 15 12 13 11 12 12 11 14 12 10 11 12 13 12 10 15 11 13 10 14 12 11 13 11 12 9 13 14 12 12 12 13 13 14 13 14 11 13 11 11 10 10 11 11 13 10 9 12 11 12 10 10 10 11 11 10 13 13 13 11 10 12 10 13 10 12 11 13 12 11 12 10 12 11 13 10 11 11 12 11 11 13 9 10 12 13 11 10 14 13 11 10 11 14 12 10 12 10 12 14 10 11 14 13 14 11 12 11 10 11 12 12 10 13 12 14 11 10 14 12 11 12 11 12 12 12 11 11 13 12 12 13 11 13 13 12 12 12 12 10 12 11 12 13 11 16 13 11 13 11 14 12 13 12 12 12 12 11 9 12 13 13 12 11 11 14 12 10 13 13 15 11 10 11 13 13 12 13 10 12 13 10 13 11 11 12 13 12 12 12 12 15 13 11 13 15 13 11 12 13 12 12 12 15 13 12 12 13 11 13 11 13 13 12 11 10 13 13 13 11 11 11 11 11 14 13 11 11 13 12 13 12 12 14 11 12 11 11 11 12 13 11 13 11 12 10 12 12 11 13 13 9 11 12 11 10 12 13 10 12 12 11 13 12 14 10 13 12 13 12 12 12 11 11 12 13 11 11 13 12 13 13 12 14 11 10 12 13 12 12 11 11 10 13 8 13 15 13 12 13 11 13 11 11 12 11 12 14 14 12 10 11 12 12 10 13 11 12 11 12 12 11 12 11 11 12 11 11 13 12 11 12 14 13 12 12 13 11 10 14 11 12 11 13 12 10 12 14 10 12 13 13 11 10 13 13 11 12 13 13 13 11 9 12 12 11 12 11 11 11 10 11 11 13 13 12 11 9 12 13 10 12 12 11 14 12 11 11 10 10 12 13 12 13 12 12 10 11 13 12 15 3 13 11 12 10 10 11 10 11 13 12 13 11 14 10 13 14 13 11 11 12 14 12 15 11 12 12 14 13 12 12 11 12 12 11 13 12 12 15 12 12 12 15 10 11 8 11 12 12 11 9 14 13 12 12 11 12 13 11 12 12 10 12 12 12 10 12 13 12 12 12 12 11 12 12 14 13 10 14 12 10 11 13 11 11 11 10 11 13 13 12 14 10 11 15 12 10 10 13 11 12 11 13 12 14 12 13 12 11 11 13 13 11 10 12 15 11 14 15 11 12 11 11 12 13 13 11 10 12 11 11 13 10 13 10 15 12 12 12 11 11 13 15 11 12 10 13 11 11 11 12 12 10 12 15 13 12 13 13 10 12 12 9 14 12 10 12 12 12 12 12 11 15 12 14 13 10 12 13 14 10 10 12 14 9 11 12 9 12 11 11 12 11 9 13 11 10 11 11 9 13 12 11 12 12 12 11 12 13 11 12 12 11 11 14 12 11 12 10 12 12 11 11 12 11 13 11 12 10 12 13 11 12 11 13 12 13 12 14 13 13 13 10 11 12 11 11 12 12 11 11 12 11 12 10 11 11 11 13 10 12 12 11 12 12 11 11 10 11 12 10 11 11 12 12 12 14 13 12 12 11 12 13 14 12 11 12 14 13 13 11 13 13 16 11 14 15 12 11 14 12 14 13 12 12 12 11 12 9 13 10 13 15 11 13 11 12 13 12 13 10 9 12 12 11 12 13 14 10 11 12 11 11 12 12 12 13 12 12 12 13 13 12 15 10 13 12 10 12 10 13 11 11 10 12 13 13 12 12 11 11 10 12 12 13 12 10 13 12 10 13 13 12 12 11 14 10 13 11 10 11 11 13 11 14 14 12 12 12 13 14 13 12 12 12 14 11 11 10 11 13 10 13 14 10 13 11 13 13 12 13 12 13 13 13 13 11 11 11 10 10 11 14 12 9 12 10 12 10 12 13 13 11 10 13 14 10 13 8 11 9 11 10 11 11 12 10 11 12 12 10 11 13 11 14 11 12 12 9 13 12 14 13 9 12 15 13 11 11 12 11 13 12 13 14 12 11 14 11 11 13 12 12 14 14 11 11 12 11 9 11 13 12 12 12 10 11 13 12 12 10 11 12 11 12 12 11 13 12 11 10 12 12 11 14 12 14 13 12 12 13 12 13 13 12 11 10 12 12 12 12 11 12 13 13 12 10 10 10 12 12 13 15 12 13 13 14 13 10 12 13 11 11 13 12 14 13 10 11 13 11 10 13 12 9 10 11 11 13 11 11 12 14 11 12 12 12 14 12 12 14 11 11 12 13 12 11 10 12 12 11 9 13 13 11 5 10 11 11 15 12 10 14 12 12 13 12 13 12 10 15 12 12 12 12 13 11 11 11 13 11 10 13 16 13 12 11 11 15 13 12 10 13 14 10 14 12 11 14 11 10 14 14 14 11 11 12 11 14 12 10 11 13 11 11 14 13 12 11 12 11 12 11 12 12 13 12 10 14 12 15 12 11 12 11 12 11 11 12 12 15 10 13 12 13 12 10 11 12 12 13 12 9 12 11 13 10 14 9 12 13 13 11 12 11 17 13 11 10 12 12 12 10 11 13 12 12 16 12 15 11 13 12 10 13 13 10 13 13 12 10 12 10 13 13 11 11 10 12 11 11 11 11 11 10 13 13 12 12 11 12 10 12 11 12 11 12 13 11 12 12 12 11 12 14 11 13 11 12 11 10 10 13 13 11 10 13 13 13 13 11 10 14 10 12 12 11 11 12 12 14 11 11 10 12 14 13 14 11 11 12 12 11 10 13 12 13 13 13 11 14 12 12 11 11 11 11 14 14 12 12 13 11 12 14 15 11 10 12 13 11 12 13 13 11 15 12 11 14 12 11 15 10 13 13 11 13 11 13 13 12 12 12 12 10 9 13 9 12 11 9 12 13 10 10 13 14 13 12 11 12 12 13 10 11 11 11 15 12 12 8 14 13 12 17 12 13 12 11 12 17 13 13 11 13 13 12 12 11 12 13 11 11 11 13 12 12 11 11 12 14 12 13 12 14 14 10 9 11 12 11 12 11 12 13 12 11 12 12 12 10 12 11 12 14 8 12 11 11 12 10 12 10 11 11 10 11 14 12 13 12 13 13 13 11 10 12 13 12 11 11 13 11 9 13 11 13 12 11 9 11 10 13 12 11 11 12 12 11 11 11 11 11 14 11 12 12 9 13 10 12 11 11 11 12 12 13 12 11 13 12 11 11 10 13 10 12 13 10 11 11 13 10 11 12 12 12 14 12 13 12 11 12 11 10 11 11 13 11 13 12 11 11 11 10 13 13 12 14 12 12 13 11 11 12 12 15 10 11 9 11 12 10 13 11 12 13 12 10 11 12 11 13 12 11 12 13 11 13 12 12 13 13 11 11 11 13 13 11 10 12 9 12 12 14 11 11 13 10 12 12 11 12 12 12 11 9 10 12 12 12 11 12 12 12 11 12 10 12 11 15 11 12 11 13 11 13 11 12 12 13 12 11 13 11 13 11 11 11 12 12 13 14 11 11 12 11 12 10 12 12 12 11 13 12 12 12 14 11 13 12 12 11 12 11 13 12 12 11 11 10 10 14 12 12 10 14 11 11 10 12 12 11 11 11 12 13 12 12 12 11 12 14 13 13 11 15 13 12 12 10 14 14 13 11 13 12 12 13 12 11 11 13 12 12 12 11 11 12 11 12 12 12 12 13 13 11 11 14 12 12 12 11 12 11 12 11 12 14 11 12 13 12 11 12 11 12 11 14 12 14 11 12 13 11 12 13 13 12 13 13 14 12 13 14 11 13 13 14 12 10 10 14 14 12 11 12 12 11 12 13 12 11 10 11 11 12 13 12 13 12 13 13 11 12 12 13 12 12 14 11 11 11 10 12 12 12 15 10 12 10 11 13 11 12 11 12 13 10 12 12 13 12 13 12 12 11 14 12 13 11 11 12 13 11 11 12 11 11 -------------------------------------------------------------------------------- /data/act_range/3x/fc7.txt: -------------------------------------------------------------------------------- 1 | 3 3 3 3 4 3 4 2 3 4 4 3 4 3 3 3 3 3 3 4 3 3 4 3 4 3 4 3 3 4 3 3 3 4 4 4 3 4 3 3 3 4 3 3 4 3 3 3 3 3 3 4 4 4 3 4 3 3 3 3 4 3 3 3 3 3 3 4 3 3 3 3 3 4 4 2 3 4 4 3 3 4 3 4 3 4 3 3 4 3 3 3 3 3 3 3 4 4 3 3 3 3 3 3 3 3 4 3 3 3 4 3 4 3 3 4 4 3 3 3 3 3 4 4 3 4 3 4 3 3 4 3 3 3 3 4 3 4 4 3 4 3 4 3 3 3 3 3 4 3 4 3 3 4 3 3 4 4 4 3 3 3 3 4 3 4 4 3 3 4 4 4 3 3 3 3 4 4 3 4 3 3 6 4 3 3 3 3 3 3 3 3 3 4 4 4 3 3 3 3 4 4 3 3 4 3 3 4 4 4 3 3 4 3 3 3 2 4 3 3 3 4 3 4 4 4 3 4 4 3 4 3 3 3 5 3 4 4 3 4 3 4 3 3 3 3 3 3 4 4 3 3 3 4 3 4 3 3 3 4 4 3 4 3 3 3 3 4 3 3 3 3 3 3 3 3 4 3 3 3 3 3 3 4 3 3 3 3 3 3 3 4 4 4 4 3 3 3 3 3 3 2 3 4 4 3 3 4 4 4 4 3 4 3 3 3 4 4 4 3 4 4 3 3 3 3 3 4 4 3 3 3 4 4 3 4 4 4 4 2 3 3 3 4 3 4 3 4 3 4 4 3 3 4 3 4 3 3 4 3 4 4 4 3 3 3 3 3 4 3 4 4 4 3 3 4 4 4 3 3 4 4 3 4 3 4 3 4 3 4 4 3 3 3 3 4 4 3 3 4 4 4 4 4 4 4 4 3 4 3 3 3 3 3 3 3 4 3 3 4 3 4 3 4 3 3 3 3 3 4 3 3 3 4 4 4 4 3 4 4 4 3 4 3 3 3 4 4 4 3 4 3 3 3 3 3 3 3 3 4 3 3 4 3 3 3 4 5 4 3 4 3 4 3 3 4 3 3 3 4 4 3 3 4 3 3 3 3 4 4 3 3 4 3 3 4 3 3 3 3 4 4 4 4 3 4 3 3 4 3 4 4 3 3 3 3 3 3 4 4 3 3 3 4 3 3 4 2 3 3 3 3 3 4 4 3 3 4 4 4 3 3 4 3 3 4 3 3 3 4 4 3 3 3 3 3 3 4 3 2 3 3 3 4 4 3 3 3 4 3 3 3 4 4 3 3 3 3 3 3 3 4 4 3 3 3 3 4 3 3 4 3 3 4 3 4 4 3 4 3 4 3 4 4 5 3 3 3 3 3 4 3 4 3 3 3 3 4 4 3 4 3 3 3 4 3 3 3 3 3 3 3 3 4 4 4 4 3 3 4 3 3 3 3 4 4 3 3 3 3 3 3 3 3 4 3 4 3 3 3 3 5 4 3 3 3 3 3 3 4 3 4 4 3 4 3 3 3 3 3 3 4 3 3 4 4 3 4 4 3 4 4 4 3 3 3 3 3 4 3 4 3 3 5 4 3 3 3 3 3 3 4 3 4 3 4 3 3 3 3 3 4 3 4 3 3 3 4 3 4 3 4 3 4 3 3 3 4 4 4 4 4 3 4 3 3 3 3 3 3 4 3 3 3 4 4 3 2 3 3 5 4 3 4 4 3 3 3 4 3 3 3 3 4 4 3 3 4 3 4 4 3 3 3 3 4 4 3 3 4 4 4 4 3 3 4 4 4 3 3 3 3 3 3 3 3 3 4 3 4 4 3 3 3 3 4 3 3 3 4 3 3 4 3 3 3 3 3 3 5 3 4 4 3 3 3 3 3 4 4 3 3 3 3 3 3 3 4 3 3 4 3 3 3 3 3 3 3 3 3 3 3 3 4 2 4 4 3 4 4 3 3 3 4 3 3 3 4 3 3 3 4 3 3 3 4 3 4 4 3 3 4 4 3 3 4 4 3 3 4 3 4 4 4 3 3 4 4 3 4 3 4 4 4 3 4 3 4 3 3 3 3 3 4 4 3 4 4 3 4 3 4 4 4 4 3 4 3 3 4 3 3 3 3 3 3 3 4 3 3 3 3 3 4 4 4 3 4 3 3 3 3 4 3 3 3 3 3 3 3 4 3 3 4 3 3 3 4 4 3 4 3 3 4 3 3 3 4 3 4 3 3 4 3 3 3 4 3 3 3 4 4 4 4 3 3 3 4 4 3 4 3 3 3 3 3 3 4 4 4 4 3 3 3 3 4 4 3 4 4 3 4 3 3 4 2 4 3 3 4 4 3 4 3 3 4 4 3 3 3 3 3 3 4 3 3 3 3 2 5 3 3 3 4 3 3 4 3 3 4 3 3 3 4 3 3 4 4 3 3 3 4 3 3 3 3 3 3 4 3 3 3 3 3 3 3 3 3 3 4 3 3 4 4 3 3 3 3 2 3 3 5 3 3 3 4 3 4 3 3 4 4 3 4 3 3 3 4 3 3 3 3 4 3 3 4 3 4 4 3 4 3 3 3 3 4 4 3 3 4 4 3 3 4 3 3 3 4 4 3 3 3 4 3 4 3 3 4 3 3 3 3 3 4 3 3 4 3 3 3 3 3 3 4 4 3 4 3 3 3 3 3 3 3 3 3 4 3 4 4 3 3 3 3 3 5 3 4 3 3 3 3 4 4 3 3 3 3 3 4 3 3 3 4 3 3 3 3 3 4 4 3 4 3 4 3 3 4 4 3 3 3 3 4 3 3 3 3 3 3 4 4 3 4 4 3 3 3 4 4 3 4 4 3 5 4 4 4 3 4 3 4 3 3 4 3 4 3 3 4 3 3 3 3 4 3 4 3 4 3 4 4 3 4 3 3 3 3 3 3 4 3 4 4 4 3 5 4 4 3 3 3 3 3 3 3 3 4 3 3 4 3 3 4 6 3 4 3 3 3 4 3 4 4 4 3 3 3 3 3 6 3 4 3 3 3 3 3 3 3 3 4 4 3 4 4 3 3 4 3 2 3 4 4 3 4 3 4 3 3 3 3 4 4 3 3 3 4 4 4 3 3 3 3 3 3 4 3 3 3 4 3 4 3 4 4 3 4 3 3 4 3 3 4 3 3 3 3 3 4 4 3 3 4 3 3 3 2 3 3 3 3 3 3 3 4 3 4 4 4 3 3 3 3 3 4 3 3 4 3 5 4 3 4 4 4 3 4 4 3 4 3 3 4 4 3 4 3 3 4 3 3 4 4 4 3 4 3 3 3 4 3 4 3 4 3 3 3 3 3 3 3 4 4 3 4 3 4 4 4 3 4 3 4 4 3 4 3 3 3 3 4 3 4 3 3 5 3 3 4 3 3 4 4 4 3 3 3 3 3 3 3 3 3 4 4 3 4 3 3 4 3 3 3 4 3 4 3 3 2 3 3 3 3 3 3 4 4 3 4 4 3 4 4 3 3 3 3 4 4 4 4 4 3 4 3 3 4 3 3 3 4 3 4 3 4 3 3 4 3 3 3 3 3 3 3 4 3 3 4 3 3 3 3 4 4 2 3 3 4 4 3 3 4 3 3 4 4 3 3 4 4 2 3 4 4 3 4 4 3 3 3 3 4 3 4 4 4 3 4 4 3 3 3 3 3 3 4 4 3 6 4 3 3 3 3 3 4 4 3 3 4 3 3 4 4 3 4 3 3 3 3 4 3 3 3 3 3 3 4 3 3 4 4 4 3 3 3 4 3 4 4 4 3 4 3 3 3 3 3 3 4 3 3 3 4 4 3 4 4 4 4 3 3 3 4 3 3 3 3 3 4 3 4 4 4 3 3 3 3 4 3 4 4 4 4 3 3 3 4 3 4 3 3 4 4 3 3 3 3 4 4 4 3 4 3 3 4 4 3 3 3 3 3 4 3 4 4 3 4 3 3 3 3 4 3 3 3 3 3 4 4 3 4 3 4 3 3 4 3 4 3 4 4 3 3 3 3 3 4 3 3 3 3 3 3 3 4 4 3 3 3 3 3 3 3 3 3 4 4 3 3 3 4 3 3 3 4 4 3 3 3 3 4 3 4 4 4 3 4 3 3 3 4 4 3 4 3 3 3 4 3 3 3 3 3 3 3 3 3 3 4 3 4 4 4 4 4 4 3 3 3 3 4 4 3 3 3 3 4 3 3 3 3 3 4 3 3 3 4 3 4 3 3 3 3 3 3 3 3 4 3 4 3 4 3 4 4 3 3 3 3 3 3 3 3 4 3 4 4 4 4 3 3 3 3 4 4 3 3 3 3 3 3 4 3 3 4 4 3 3 3 4 3 4 4 3 3 3 4 3 3 3 4 3 4 4 3 3 4 3 3 3 4 3 3 4 3 3 3 4 3 3 3 4 4 4 4 4 4 4 3 3 4 3 3 4 3 3 3 4 3 4 3 3 4 3 3 3 3 3 3 3 3 3 4 3 3 3 3 3 3 3 4 3 3 3 3 4 3 3 4 3 3 3 3 3 3 3 4 3 3 4 4 3 4 4 3 4 3 3 4 4 3 4 3 4 3 3 4 4 4 3 3 4 3 4 3 4 4 3 3 4 3 3 4 3 4 3 4 4 3 3 3 4 3 3 3 3 3 3 3 3 4 3 3 4 3 3 4 3 3 3 3 4 3 4 4 3 4 4 3 4 3 3 4 3 3 3 3 3 4 4 3 3 3 3 4 3 3 3 4 3 3 3 3 4 4 3 3 4 5 3 4 3 3 3 4 4 4 3 3 3 3 3 4 3 3 3 3 4 4 3 3 4 3 4 4 3 3 4 4 4 3 4 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 3 3 3 3 4 3 4 3 3 4 4 4 3 3 2 3 4 3 3 3 4 3 4 4 4 3 4 3 3 3 4 4 3 4 3 3 3 3 5 3 3 3 3 3 3 4 3 3 4 3 4 4 3 3 3 3 3 3 4 3 4 3 4 3 3 4 4 3 3 4 4 3 3 4 4 3 4 4 4 4 3 4 3 3 4 3 4 3 3 3 3 3 3 3 3 3 3 3 4 3 3 3 4 3 3 3 3 4 4 4 3 4 3 3 4 4 5 4 4 3 3 3 3 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 3 4 3 3 3 2 4 3 3 3 3 4 3 4 3 4 3 3 4 3 3 3 3 3 4 3 3 3 3 3 5 3 3 4 4 3 3 3 4 4 3 3 3 3 3 4 4 3 4 3 4 4 3 3 3 3 4 3 4 3 3 4 4 3 4 4 4 3 4 4 4 3 3 4 3 4 4 3 4 4 3 3 4 3 3 4 3 3 3 3 3 4 4 4 3 3 4 3 3 3 3 3 3 4 4 3 3 3 3 3 3 4 3 3 4 4 3 3 3 4 3 3 3 3 4 3 4 4 4 3 4 4 3 3 3 3 3 3 4 3 3 3 3 5 3 3 4 4 3 4 4 3 4 3 3 4 4 4 4 3 3 3 3 4 4 3 4 3 4 3 3 3 4 3 4 4 3 3 3 4 3 4 3 3 3 4 4 3 3 4 3 3 4 3 3 3 3 3 4 4 3 3 3 3 4 3 3 3 3 3 4 4 3 3 4 4 3 3 3 4 3 3 4 4 3 3 3 3 3 3 3 4 3 3 3 4 3 3 3 4 3 3 4 3 3 3 3 3 3 3 3 3 3 4 3 3 3 4 4 3 4 4 3 4 3 3 4 4 3 4 4 4 3 3 2 4 4 3 3 4 4 3 3 4 4 3 3 4 4 3 3 3 4 3 3 3 4 5 3 3 4 3 4 3 4 3 3 3 3 4 3 3 3 3 3 3 4 3 4 3 4 3 3 4 3 4 4 4 4 3 3 3 4 4 3 4 3 4 4 3 4 3 4 3 3 3 3 3 3 3 4 2 3 4 3 3 3 4 3 3 3 3 3 3 3 3 3 4 3 3 3 3 4 4 3 4 3 3 4 4 4 3 5 4 4 3 3 3 4 3 3 4 4 3 3 4 3 4 3 4 3 3 3 4 3 4 3 4 4 3 4 3 3 5 3 4 3 4 4 3 3 3 4 4 3 4 4 3 3 3 3 3 3 3 4 4 3 4 3 3 3 4 4 4 3 3 3 3 2 3 3 3 4 4 4 4 3 4 3 3 4 4 3 3 3 4 3 3 4 3 3 3 3 3 3 4 4 3 3 3 3 4 4 3 4 4 3 3 3 3 3 3 4 3 3 3 3 3 3 3 3 3 4 4 3 3 4 4 4 3 4 3 3 4 4 4 3 3 3 3 3 3 3 4 3 3 3 4 3 3 3 4 4 3 3 3 4 4 4 3 3 4 4 3 3 4 4 4 3 3 4 2 3 4 3 3 4 3 6 3 3 4 4 4 3 3 4 3 3 4 3 3 3 3 3 4 4 3 4 4 4 3 4 3 3 4 4 4 3 3 3 4 3 3 3 3 3 3 4 3 3 3 3 3 3 3 3 3 3 4 3 4 4 3 4 3 4 3 3 3 4 3 4 3 3 3 3 4 3 3 4 3 4 4 3 3 3 3 3 3 3 3 3 4 4 3 3 3 3 3 3 3 3 4 4 3 3 3 4 3 3 4 4 4 3 3 3 4 3 4 3 4 3 4 4 4 4 3 4 3 3 3 3 4 4 4 3 3 3 4 3 3 3 3 4 3 3 3 3 4 4 3 4 4 4 4 4 3 3 3 3 3 3 3 4 3 3 4 4 3 3 3 4 3 3 3 3 3 4 3 3 4 3 4 3 4 4 3 3 3 5 4 4 3 4 4 4 4 3 4 3 3 4 3 3 3 4 5 3 4 4 3 4 4 4 3 4 3 3 4 3 4 3 3 3 3 3 3 3 3 4 3 3 3 3 3 3 3 4 3 3 3 3 3 4 3 4 3 3 3 4 3 3 3 4 3 3 4 3 3 3 3 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 3 4 3 3 4 3 3 3 2 3 3 3 4 3 4 3 3 5 3 4 3 3 3 4 3 3 3 4 3 3 4 3 3 3 3 4 5 3 3 4 3 3 4 4 3 4 3 3 3 3 4 5 3 3 3 3 4 3 3 4 4 4 4 3 3 4 3 4 4 3 3 3 3 3 3 3 3 3 4 3 4 3 3 4 4 3 3 3 3 3 4 3 4 3 4 3 3 2 3 3 4 3 3 4 4 3 4 3 3 3 4 3 4 4 4 4 3 3 4 3 5 3 3 4 4 3 3 3 3 3 3 4 3 4 3 3 4 4 3 4 3 3 3 4 3 4 3 4 3 4 4 4 3 4 3 3 4 4 3 3 3 4 4 3 3 4 4 4 4 3 3 4 4 3 4 4 3 3 3 5 3 3 3 3 3 4 5 4 3 4 3 3 3 4 3 4 3 4 3 3 3 4 4 4 3 4 3 4 3 3 4 4 3 3 3 3 3 3 3 4 4 3 4 4 4 3 4 4 3 3 3 3 3 3 3 4 3 3 3 4 4 3 4 3 4 4 4 4 3 3 3 3 3 3 3 4 4 3 4 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 3 3 4 3 4 4 4 3 4 3 3 4 4 3 4 3 3 3 3 3 3 4 4 3 3 3 3 3 3 4 6 3 3 4 4 3 3 3 4 4 3 4 4 3 3 4 3 3 3 4 3 3 3 3 4 5 4 3 4 4 4 4 3 3 3 4 3 3 4 3 4 3 3 4 4 3 3 4 4 3 3 4 3 4 4 4 3 3 3 3 4 4 3 3 3 4 4 3 3 3 4 4 4 4 3 4 3 3 3 3 4 3 3 4 3 3 3 3 3 4 3 4 3 3 4 4 3 3 4 3 3 4 3 4 4 3 3 3 3 3 4 3 4 3 3 3 4 3 3 3 4 4 4 3 3 4 4 3 5 4 4 3 4 3 3 4 4 3 3 5 3 3 3 4 4 4 4 3 3 3 3 3 3 3 4 6 3 3 3 3 4 3 3 4 3 3 3 4 3 3 4 3 4 3 3 3 3 3 4 4 3 4 3 4 4 3 4 3 3 3 4 3 3 3 5 3 3 4 3 4 4 4 3 4 3 3 3 4 3 3 4 3 3 3 3 4 3 3 3 3 3 4 3 4 3 3 3 4 3 3 4 3 4 3 3 4 3 3 3 4 4 3 3 4 4 3 3 3 4 4 4 3 3 3 4 4 3 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 3 3 3 4 3 4 4 4 3 3 3 4 4 4 4 3 3 3 4 3 4 4 3 4 4 4 3 3 3 3 3 4 4 2 3 3 4 4 3 3 3 4 3 4 3 4 4 4 3 3 3 3 4 3 4 3 4 4 4 4 4 4 3 3 3 4 4 3 3 3 4 4 3 3 3 3 4 3 4 3 4 3 4 3 4 4 4 3 3 3 3 4 4 3 3 3 4 3 4 3 3 4 3 3 4 4 4 3 4 3 4 3 4 3 3 3 3 4 3 3 3 3 4 3 3 4 3 4 3 4 4 3 3 3 3 3 4 4 3 3 3 3 3 4 3 3 4 3 3 3 3 3 3 3 3 3 4 3 4 3 3 3 3 4 3 4 3 4 3 3 4 3 4 4 3 3 3 3 3 4 5 4 4 3 3 4 3 3 3 4 3 4 3 3 3 3 3 3 4 3 4 4 3 3 4 3 4 4 3 3 3 4 3 3 3 3 3 3 3 3 3 3 4 3 3 3 3 4 3 3 3 3 4 3 3 3 3 4 3 4 3 4 4 5 4 4 3 3 4 4 4 3 3 3 3 4 3 3 3 4 4 3 5 3 3 3 3 3 3 3 4 3 3 4 3 4 4 4 4 3 3 4 3 3 4 4 3 4 3 3 3 3 3 4 3 3 3 5 4 3 4 4 5 4 4 3 4 4 3 4 3 3 4 3 4 3 3 4 3 4 4 3 3 3 3 4 2 4 4 3 3 3 3 4 3 3 4 4 3 3 4 3 3 4 3 3 4 4 3 3 4 3 3 4 3 3 3 3 4 4 3 3 3 3 3 3 3 3 -------------------------------------------------------------------------------- /data/act_range/3x/fc8.txt: -------------------------------------------------------------------------------- 1 | 7 7 7 7 8 8 9 9 10 9 9 8 10 9 8 9 9 9 9 8 10 11 9 11 8 7 10 8 8 9 8 9 10 9 9 9 9 8 9 9 9 9 9 9 9 7 9 9 8 8 9 8 9 9 9 8 9 8 10 9 10 9 9 9 8 9 9 8 8 8 9 9 8 9 9 8 8 9 9 9 9 10 11 9 9 11 11 7 8 8 8 10 9 10 10 8 8 9 8 10 8 8 7 9 10 8 9 7 8 8 9 8 10 10 11 9 9 7 9 10 10 9 8 9 11 10 10 9 9 9 7 9 8 10 10 10 9 8 10 9 8 8 8 8 9 8 9 7 7 7 10 10 8 8 9 9 8 8 9 9 10 9 9 9 9 8 9 8 9 10 11 10 10 9 9 9 10 10 9 10 11 8 10 8 11 10 10 8 9 10 8 9 10 10 8 8 9 9 9 9 10 9 9 9 9 9 9 10 10 10 9 9 11 9 9 9 9 9 8 11 10 8 9 9 9 9 10 11 8 9 9 10 10 9 9 10 9 9 10 9 9 8 10 9 10 10 10 8 10 9 9 8 7 9 8 9 10 9 9 9 10 8 9 9 10 10 10 11 8 10 9 9 10 10 9 9 9 9 9 9 9 8 9 8 8 9 9 10 7 7 8 9 8 8 10 9 8 8 10 9 8 9 9 10 10 9 9 10 10 9 11 9 10 9 10 9 10 10 9 9 8 8 8 7 8 8 9 9 9 9 9 9 8 8 8 9 9 10 9 7 7 10 10 9 9 10 9 8 11 9 9 7 8 8 9 10 10 10 9 8 10 8 9 8 9 8 8 8 9 8 9 10 10 10 10 8 8 10 9 9 10 10 9 8 9 8 8 7 7 8 10 8 6 7 8 8 7 9 9 7 6 8 8 7 8 8 8 9 9 10 8 8 9 8 9 10 7 9 9 9 8 9 8 7 8 8 8 9 9 8 7 7 8 8 9 8 8 8 8 7 8 8 8 8 7 7 9 9 8 8 8 8 8 8 8 9 8 9 8 8 9 8 8 9 10 7 7 7 9 8 10 9 8 9 7 7 7 8 9 8 8 9 9 8 8 9 7 9 9 8 8 8 8 6 9 7 8 8 9 9 6 7 9 8 9 9 9 9 8 8 8 7 9 8 8 8 8 9 9 9 7 8 8 9 8 8 9 8 9 9 9 8 8 7 9 7 9 8 9 9 8 9 9 9 8 8 8 7 7 9 8 9 8 8 8 8 8 8 9 8 8 8 9 9 6 8 7 9 9 8 8 8 9 7 8 8 7 8 7 8 8 8 9 8 10 9 8 9 8 9 7 8 9 8 7 8 8 8 8 9 9 7 7 8 8 9 9 7 8 9 7 8 7 9 8 9 9 7 10 10 9 8 8 8 8 8 10 8 8 9 7 9 10 9 9 8 9 9 8 7 6 9 8 9 9 7 8 9 8 8 9 8 8 7 8 8 8 9 8 9 8 8 9 8 9 8 9 7 7 7 8 7 7 10 9 9 11 10 8 8 8 9 7 8 9 6 8 8 8 6 8 8 10 9 8 8 9 8 8 7 10 8 7 8 9 9 8 8 8 9 10 10 8 8 9 6 8 8 8 9 9 8 9 8 8 9 8 8 9 8 9 9 8 9 8 8 8 9 9 7 8 7 9 8 9 10 9 8 10 9 8 8 8 8 10 8 8 9 9 8 9 9 9 8 8 8 8 10 8 9 7 9 9 10 8 8 7 8 10 8 8 7 8 9 9 8 8 9 9 7 8 8 8 8 8 8 8 8 7 8 7 8 7 8 9 10 8 8 8 9 7 9 9 10 8 8 9 8 10 8 7 8 8 9 8 8 8 9 10 8 9 8 7 9 7 9 8 8 9 8 9 7 8 8 10 9 8 8 9 9 8 9 11 8 7 9 8 8 8 9 8 8 8 8 9 7 8 9 10 7 8 8 8 7 7 8 9 8 7 9 8 8 10 9 8 8 7 8 7 8 7 9 9 9 8 9 9 8 9 9 8 7 9 8 8 8 7 9 8 9 10 9 9 10 7 8 7 7 7 8 9 8 7 9 7 7 7 8 10 9 8 9 9 7 8 8 8 8 8 9 8 9 9 9 8 8 7 10 8 8 8 8 9 9 9 8 8 8 8 6 9 9 8 6 7 8 8 8 9 9 7 8 8 9 6 9 7 8 8 7 7 7 7 8 6 7 6 9 10 9 9 8 8 8 9 9 9 10 9 10 -------------------------------------------------------------------------------- /data/act_range/README.md: -------------------------------------------------------------------------------- 1 | ### Notes 2 | 3 | * The txt files in here are used for clipping the activations of neurons in the input code as described in Sec. 2 (see paper). 4 | Each neuron is bounded in its own range. 5 | 6 | * `3x` means the upperbound is set as 3 times the standard deviation around the mean activation. 7 | * If you change to optimize in a different code e.g. `conv5`, rather than the default `fc6`, you'll want to use the corresponding `conv5.txt` file. 8 | 9 | * These files are input to the [act_max.py](https://github.com/Evolving-AI-Lab/synthesizing/blob/master/act_max.py) via the `--bound` option. 10 | * If you use your own image generator network (i.e. the prior), you'd need to generate your own txt files containing the activation range computed by running the dataset images through the encoder network. 11 | 12 | -------------------------------------------------------------------------------- /data/downloaddata.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Download demo data for Deep Image Reconstruction 4 | # 5 | 6 | FILE_LIST=file_list.csv 7 | 8 | for line in `cat $FILE_LIST`; do 9 | fname=$(echo $line | cut -d, -f1) 10 | fid=$(echo $line | cut -d, -f2) 11 | checksum=$(echo $line | cut -d, -f3) 12 | 13 | ext=${fname#*.} 14 | 15 | # Downloaded file check 16 | if [ -f $fname ]; then 17 | echo "$fname has already been downloaded." 18 | continue 19 | fi 20 | 21 | if [ "$ext" = "zip" ]; then 22 | unzipped_path=$(echo ${fname%.zip} | sed s%-%/%g) 23 | if [ -d $unzipped_path ]; then 24 | echo "$unzipped_path has already been downloaded." 25 | continue 26 | fi 27 | fi 28 | 29 | # Download file 30 | echo "Downloading $fname" 31 | 32 | dlurl=https://s3-eu-west-1.amazonaws.com/pfigshare-u-files/${fid}/$(echo $fname | sed s/-//g) 33 | echo $dlurl 34 | curl -o $fname $dlurl 35 | 36 | # Validate the downloaded file 37 | if [ "$OSTYPE" = "linux-gnu" ]; then 38 | checksum_dl=$(md5sum $fname | awk '{print $1}') 39 | else 40 | checksum_dl=$(md5 -q $fname) 41 | fi 42 | 43 | if [ "$checksum" != "$checksum_dl" ]; then 44 | echo "Downloaded file is invalid!" 45 | exit 1 46 | fi 47 | 48 | # Unzip file 49 | if [ "$ext" = "zip" ]; then 50 | unzip $fname 51 | rm -f $fname 52 | fi 53 | 54 | echo "" 55 | done 56 | -------------------------------------------------------------------------------- /data/file_list.csv: -------------------------------------------------------------------------------- 1 | decodedfeatures-alphabet-VGG19-conv1_1-S1.zip,12995840,f33df0027c2e59338377b64c4aed2223 2 | decodedfeatures-alphabet-VGG19-conv1_1-S2.zip,12995852,847b312229275f8152f38be9e9ebba5b 3 | decodedfeatures-alphabet-VGG19-conv1_1-S3.zip,12995864,6cd53383b59de0c19917f4b1d08dae8a 4 | decodedfeatures-alphabet-VGG19-conv1_2-S1.zip,12995882,7f660a2df88e720714d8aa7e06387edd 5 | decodedfeatures-alphabet-VGG19-conv1_2-S2.zip,12995894,4efe013c984d8ae858d65090cbcec0f5 6 | decodedfeatures-alphabet-VGG19-conv1_2-S3.zip,12995897,4e5000bd056ebb36c7ea4e060e18cd4b 7 | decodedfeatures-alphabet-VGG19-conv2_1-S1.zip,12995906,73844fef7b5019fa3802275f91a8ccf0 8 | decodedfeatures-alphabet-VGG19-conv2_1-S2.zip,12995909,56de7f0601e2850886029e1dca3a40ed 9 | decodedfeatures-alphabet-VGG19-conv2_1-S3.zip,12995912,9af1c3581be16d67c2d8bb7639a48a77 10 | decodedfeatures-alphabet-VGG19-conv2_2-S1.zip,12995921,faaec93b4ddb41823d02644b7c48fdb6 11 | decodedfeatures-alphabet-VGG19-conv2_2-S2.zip,12995933,aaa830c65963753d1de53f86016d07bf 12 | decodedfeatures-alphabet-VGG19-conv2_2-S3.zip,12995936,81305ba3786100c965c3782c15ce07d4 13 | decodedfeatures-alphabet-VGG19-conv3_1-S1.zip,12995945,595768a1e858779638f265303704bf84 14 | decodedfeatures-alphabet-VGG19-conv3_1-S2.zip,12995948,54a4b13aa579f8bb48a0ce345a6adfe2 15 | decodedfeatures-alphabet-VGG19-conv3_1-S3.zip,12995951,e97b8ecb52b4434eae079797b362e8e8 16 | decodedfeatures-alphabet-VGG19-conv3_2-S1.zip,12995957,d9b5b955d5f26651af5ef6a6057d646e 17 | decodedfeatures-alphabet-VGG19-conv3_2-S2.zip,12995990,3afb8989cea85a6cbd54023e4061baa7 18 | decodedfeatures-alphabet-VGG19-conv3_2-S3.zip,12995993,8bce37cd7c2d8cd3a32b42a1ab21ece2 19 | decodedfeatures-alphabet-VGG19-conv3_3-S1.zip,12995996,ce2c901f8d439dd645abb26545132ac4 20 | decodedfeatures-alphabet-VGG19-conv3_3-S2.zip,12995999,dbf3453b6fbb2a8148bd5ead3a8a6366 21 | decodedfeatures-alphabet-VGG19-conv3_3-S3.zip,12996002,e3256916d721c69f200ad7482723064c 22 | decodedfeatures-alphabet-VGG19-conv3_4-S1.zip,12996005,c5f754f097ffe58e93927e1d0aa4aa66 23 | decodedfeatures-alphabet-VGG19-conv3_4-S2.zip,12996008,03b542c8dae619a67ae88bd9077a16d1 24 | decodedfeatures-alphabet-VGG19-conv3_4-S3.zip,12996011,5bceb4ab6e2dcff0cb076e7b190c941a 25 | decodedfeatures-alphabet-VGG19-conv4_1-S1.zip,12996014,0ee42b4adab1d1f32b6fea885356f1af 26 | decodedfeatures-alphabet-VGG19-conv4_1-S2.zip,12996017,05125082f94eca11a64e5cd4aec374f8 27 | decodedfeatures-alphabet-VGG19-conv4_1-S3.zip,12996020,144b250b80e15bd7e606dad5e575e9a8 28 | decodedfeatures-alphabet-VGG19-conv4_2-S1.zip,12996023,e38eccb55f7f89157f77b5822f442daa 29 | decodedfeatures-alphabet-VGG19-conv4_2-S2.zip,12996029,2c1f1bf9f8a7e11916bd3b63f260f08e 30 | decodedfeatures-alphabet-VGG19-conv4_2-S3.zip,12996032,781a31a0268b4332b90dc798253b3139 31 | decodedfeatures-alphabet-VGG19-conv4_3-S1.zip,12996035,aeb6cbcd789fd66719284ecea7951601 32 | decodedfeatures-alphabet-VGG19-conv4_3-S2.zip,12996041,81b5a80679ee2a761fa6d2e6d50eba8c 33 | decodedfeatures-alphabet-VGG19-conv4_3-S3.zip,12996047,c9164804171a4df8fe7fb0b1afbcde83 34 | decodedfeatures-alphabet-VGG19-conv4_4-S1.zip,12996056,6e5e1d65ee58d54539cc92b9c90c637f 35 | decodedfeatures-alphabet-VGG19-conv4_4-S2.zip,12996062,ff494023b7e3b0a077bfed5c6a77e9cb 36 | decodedfeatures-alphabet-VGG19-conv4_4-S3.zip,12996068,85e22db91a8cd3a1ef85781aea3145b9 37 | decodedfeatures-alphabet-VGG19-conv5_1-S1.zip,12996071,ae3b1666d0811a05cd075216d0111b18 38 | decodedfeatures-alphabet-VGG19-conv5_1-S2.zip,12996074,f8de504dc18921c920e9b8442619211e 39 | decodedfeatures-alphabet-VGG19-conv5_1-S3.zip,12996077,6b50fc96494fca843d406f531ba84e3b 40 | decodedfeatures-alphabet-VGG19-conv5_2-S1.zip,12996080,9ad5ca1465fcb27d5bbd00d9380c2875 41 | decodedfeatures-alphabet-VGG19-conv5_2-S2.zip,12996083,92e7507eedde3be8bdb1f3e01693cd69 42 | decodedfeatures-alphabet-VGG19-conv5_2-S3.zip,12996086,930db1152849b207781c0347f8ce29bd 43 | decodedfeatures-alphabet-VGG19-conv5_3-S1.zip,12996089,5ae1b2846c1098d0bf893ffa38ef3635 44 | decodedfeatures-alphabet-VGG19-conv5_3-S2.zip,12996092,e4307e7b13d166cdaa770faa0b6a75b7 45 | decodedfeatures-alphabet-VGG19-conv5_3-S3.zip,12996095,9b35d8c81e36dd28e76cd095274f7183 46 | decodedfeatures-alphabet-VGG19-conv5_4-S1.zip,12996098,a4711a0883e727e491db23f32769ba05 47 | decodedfeatures-alphabet-VGG19-conv5_4-S2.zip,12996101,02232dd514382b8707b9e407881b858b 48 | decodedfeatures-alphabet-VGG19-conv5_4-S3.zip,12996104,f6a254db34d6fb51bf6f023c4cd0d966 49 | decodedfeatures-alphabet-VGG19-fc6-S1.zip,12996107,06af72f148b4607d9a8f8585a3f086f9 50 | decodedfeatures-alphabet-VGG19-fc6-S2.zip,12996110,479bc50058f05b19b3e7186f4aa37a7b 51 | decodedfeatures-alphabet-VGG19-fc6-S3.zip,12996113,f735ae11c47c3ef9bf725da7070d12a6 52 | decodedfeatures-alphabet-VGG19-fc7-S1.zip,12996116,a0bd8102d93e41caa214c575bbbdabfe 53 | decodedfeatures-alphabet-VGG19-fc7-S2.zip,12996119,69304e5f95ee1f12ade749d8f6112a6b 54 | decodedfeatures-alphabet-VGG19-fc7-S3.zip,12996122,15ac78913c37fecdf032def99d648855 55 | decodedfeatures-alphabet-VGG19-fc8-S1.zip,12996125,6752b69d8820e5111a360409bc6326d7 56 | decodedfeatures-alphabet-VGG19-fc8-S2.zip,12996128,a218b8c0dcc266943cb2ce54279b3bd3 57 | decodedfeatures-alphabet-VGG19-fc8-S3.zip,12996131,0af9053abef853e2a5a4d31fde7aca9f 58 | decodedfeatures-alphabet-VGG19-pool1-S1.zip,12996134,5a48ea3d65ac9ce02e04297b7f1ca701 59 | decodedfeatures-alphabet-VGG19-pool2-S1.zip,12996137,a0db39bc573f6659ca296c6d1c717b2f 60 | decodedfeatures-alphabet-VGG19-pool3-S1.zip,12996143,ad818e500301b363823f716b28a28a2e 61 | decodedfeatures-alphabet-VGG19-pool4-S1.zip,12996146,8165088bcf214718ff81721373a38623 62 | decodedfeatures-alphabet-VGG19-pool5-S1.zip,12996149,106359c6830aa46e6d43b6f874cdf3c9 63 | decodedfeatures-color_shape-VGG19-conv1_1-S1.zip,12996152,31d02aad5f960493dc53c16d84290459 64 | decodedfeatures-color_shape-VGG19-conv1_1-S2.zip,12996434,d159cc92eb33c91ee815617ca5ba952a 65 | decodedfeatures-color_shape-VGG19-conv1_1-S3.zip,12996638,77f292ec63cfcba44159cc6a34992140 66 | decodedfeatures-color_shape-VGG19-conv1_2-S1.zip,12996914,3c04ba6cea47804d3ebc41a2c740782d 67 | decodedfeatures-color_shape-VGG19-conv1_2-S2.zip,12997112,a52aba3c1f8f08e1d66c79dcd08d9fd3 68 | decodedfeatures-color_shape-VGG19-conv1_2-S3.zip,12998264,6cd9311d635c0ba9e67ab6906157c103 69 | decodedfeatures-color_shape-VGG19-conv2_1-S1.zip,12998327,c3b375f76ec312b4fc2150e159232018 70 | decodedfeatures-color_shape-VGG19-conv2_1-S2.zip,12998354,53b2b66980450d2f2670a1f84dbbb43b 71 | decodedfeatures-color_shape-VGG19-conv2_1-S3.zip,12998399,4703575c15a472b112e2706bff42a6a4 72 | decodedfeatures-color_shape-VGG19-conv2_2-S1.zip,12998975,be3bbb5d4d11e516c520e672e3c96b24 73 | decodedfeatures-color_shape-VGG19-conv2_2-S2.zip,12998999,0a1332075076e2ee2bfc59b31f579475 74 | decodedfeatures-color_shape-VGG19-conv2_2-S3.zip,12999008,0ed17b2ecb6717fa2a26709519425c87 75 | decodedfeatures-color_shape-VGG19-conv3_1-S1.zip,12999014,54af74f0d86b84c667863d80082b1898 76 | decodedfeatures-color_shape-VGG19-conv3_1-S2.zip,12999017,bc622e6d573f4853593340c2349b300a 77 | decodedfeatures-color_shape-VGG19-conv3_1-S3.zip,12999026,867a38f103b0ad95df6cde9ac6392baf 78 | decodedfeatures-color_shape-VGG19-conv3_2-S1.zip,12999071,061ca97bd34915f46ac8e1571ce441b1 79 | decodedfeatures-color_shape-VGG19-conv3_2-S2.zip,12999077,0967f2837098137b672a7a21a4a4b032 80 | decodedfeatures-color_shape-VGG19-conv3_2-S3.zip,12999080,934b99ac1dd67a3591fada26ee2e31fb 81 | decodedfeatures-color_shape-VGG19-conv3_3-S1.zip,12999083,06f0df9c2938e41c87467e1284b52c6f 82 | decodedfeatures-color_shape-VGG19-conv3_3-S2.zip,12999089,f96a1f6ab58ed7181302b4ec080ed366 83 | decodedfeatures-color_shape-VGG19-conv3_3-S3.zip,12999098,95b0dad2408bc96d7f2810c7034ae45f 84 | decodedfeatures-color_shape-VGG19-conv3_4-S1.zip,12999107,a762d3517ac36c43fbeafbfc75ff0920 85 | decodedfeatures-color_shape-VGG19-conv3_4-S2.zip,12999182,8bf48007a34b1c95b5e50d612de7326c 86 | decodedfeatures-color_shape-VGG19-conv3_4-S3.zip,12999191,79485f346842594c9edf166e78333f84 87 | decodedfeatures-color_shape-VGG19-conv4_1-S1.zip,12999194,e4486acb8c25f3b92307548aeba76ef2 88 | decodedfeatures-color_shape-VGG19-conv4_1-S2.zip,12999221,2e3308b26a29939fdb350dabb6b8da82 89 | decodedfeatures-color_shape-VGG19-conv4_1-S3.zip,12999329,39362ad830efc30417b427c7a3fea473 90 | decodedfeatures-color_shape-VGG19-conv4_2-S1.zip,12999482,66b800d5c6db29b1d552fa449186e99d 91 | decodedfeatures-color_shape-VGG19-conv4_2-S2.zip,13000358,c8f691526d4a638ea1929423b12a7d27 92 | decodedfeatures-color_shape-VGG19-conv4_2-S3.zip,13000448,5a0cd1227ee0b1ca02b392de6d9497e7 93 | decodedfeatures-color_shape-VGG19-conv4_3-S1.zip,13000538,074f29daa0615e1c121b8ef56240f33d 94 | decodedfeatures-color_shape-VGG19-conv4_3-S2.zip,13000757,52d336f5b896e700fedcda6627586469 95 | decodedfeatures-color_shape-VGG19-conv4_3-S3.zip,13000871,308d11bec46269d8e40d1cd25db86e2c 96 | decodedfeatures-color_shape-VGG19-conv4_4-S1.zip,13000880,e0b3943258ff75723275c0a634e3eb16 97 | decodedfeatures-color_shape-VGG19-conv4_4-S2.zip,13000904,f4b109a1b8d300bd9f2176513838a921 98 | decodedfeatures-color_shape-VGG19-conv4_4-S3.zip,13000910,ce79d0447f1603352cad8984cdfb8f8f 99 | decodedfeatures-color_shape-VGG19-conv5_1-S1.zip,13000913,d70b214535a3cb060fa2c7aaba484b29 100 | decodedfeatures-color_shape-VGG19-conv5_1-S2.zip,13000919,fe4b2f7fe72b84c2b48f84d016ebea28 101 | decodedfeatures-color_shape-VGG19-conv5_1-S3.zip,13000922,ad7f0180e8ae9b6948097c00f72ba716 102 | decodedfeatures-color_shape-VGG19-conv5_2-S1.zip,13000925,2ee20a580a1a664d0a82f21462dd1392 103 | decodedfeatures-color_shape-VGG19-conv5_2-S2.zip,13000940,3478f8f556fb7ea25f094891b0b36426 104 | decodedfeatures-color_shape-VGG19-conv5_2-S3.zip,13000943,bdf49f935f14f71f056b5f1b39992ccd 105 | decodedfeatures-color_shape-VGG19-conv5_3-S1.zip,13000946,6a06537d2e54d5e7d30d31e7b60407b1 106 | decodedfeatures-color_shape-VGG19-conv5_3-S2.zip,13000949,ecae7b03aa031a5479f53740214c8f33 107 | decodedfeatures-color_shape-VGG19-conv5_3-S3.zip,13000952,6017759c52ebce7ad774240d89859327 108 | decodedfeatures-color_shape-VGG19-conv5_4-S1.zip,13000961,9e4037c8088014841295de51d20efe0c 109 | decodedfeatures-color_shape-VGG19-conv5_4-S2.zip,13000964,b9bec963e8310c12684a34355da7ac99 110 | decodedfeatures-color_shape-VGG19-conv5_4-S3.zip,13000967,32b904c89d63a8e281f7fbe7cfca690a 111 | decodedfeatures-color_shape-VGG19-fc6-S1.zip,13000970,34029fb6f60a1b2609943247a1c01746 112 | decodedfeatures-color_shape-VGG19-fc6-S2.zip,13000973,bf465cf3c2ff123c36217642cfa057e9 113 | decodedfeatures-color_shape-VGG19-fc6-S3.zip,13000976,9bd2c4e072c5c848eb23f858e0ec4f66 114 | decodedfeatures-color_shape-VGG19-fc7-S1.zip,13000979,1813904fe23caa0e6678fdef55c1707d 115 | decodedfeatures-color_shape-VGG19-fc7-S2.zip,13000982,965c9b0673991e77a03fe5d3a0cabfbb 116 | decodedfeatures-color_shape-VGG19-fc7-S3.zip,13000985,e94eaf5d8811fddf38543e66031c654d 117 | decodedfeatures-color_shape-VGG19-fc8-S1.zip,13000988,eaa156e904992c855e6bde2d3973f6f0 118 | decodedfeatures-color_shape-VGG19-fc8-S2.zip,13000991,93e70443e2abc1c4e7ef9ecddb4f82ff 119 | decodedfeatures-color_shape-VGG19-fc8-S3.zip,13000994,667e5387bdc4716dc917cba45082d5eb 120 | decodedfeatures-color_shape-VGG19-pool1-S1.zip,13000997,132e97a71687396a37ffc6b9670a5c34 121 | decodedfeatures-color_shape-VGG19-pool2-S1.zip,13001000,dc17294bb8e7dbb11db0a00f3827142b 122 | decodedfeatures-color_shape-VGG19-pool3-S1.zip,13001003,52ddeade579555580d5cdea2a2422e54 123 | decodedfeatures-color_shape-VGG19-pool4-S1.zip,13001006,d2a95cc76f7322ffece0ee4c754f7d1c 124 | decodedfeatures-color_shape-VGG19-pool5-S1.zip,13001012,169dcef760fcce24da55e1cac9fb3155 125 | decodedfeatures-imagery-VGG19_leaky-conv1_1-S1.zip,13001015,65ddbde36a6a2cd842703fe6c0d9fb46 126 | decodedfeatures-imagery-VGG19_leaky-conv1_1-S2.zip,13001045,3d61fe745396bcb90ffb81c61a12fb2b 127 | decodedfeatures-imagery-VGG19_leaky-conv1_1-S3.zip,13001048,897b18670e6c0fe9eb87e3f6a3d4bb07 128 | decodedfeatures-imagery-VGG19_leaky-conv1_2-S1.zip,13001057,af9f2be9a5dcdbde1f19cd85fe8e795e 129 | decodedfeatures-imagery-VGG19_leaky-conv1_2-S2.zip,13001069,dccffc385fa11cd5eb6816d6d3880470 130 | decodedfeatures-imagery-VGG19_leaky-conv1_2-S3.zip,13001072,de824508a90d585368f92444254aedc7 131 | decodedfeatures-imagery-VGG19_leaky-conv2_1-S1.zip,13001090,90412ca4f55c20a4f3de19c2d3b9c1f9 132 | decodedfeatures-imagery-VGG19_leaky-conv2_1-S2.zip,13001096,a1326c0c38b1f32a3f75368efba80a23 133 | decodedfeatures-imagery-VGG19_leaky-conv2_1-S3.zip,13001099,0538c58a8eda4682b526f9453348c2f9 134 | decodedfeatures-imagery-VGG19_leaky-conv2_2-S1.zip,13001123,b7e28b3eb20513f8c4e844a7628dd86a 135 | decodedfeatures-imagery-VGG19_leaky-conv2_2-S2.zip,13001150,08cf746c8573fdec775a2a4eaca38d24 136 | decodedfeatures-imagery-VGG19_leaky-conv2_2-S3.zip,13001186,3f961a7c092617d13179566cb7957d20 137 | decodedfeatures-imagery-VGG19_leaky-conv3_1-S1.zip,13001192,3360b955997ef1cfda90dbbee835084c 138 | decodedfeatures-imagery-VGG19_leaky-conv3_1-S2.zip,13001198,f0458132a3983ed20b2919d022335cac 139 | decodedfeatures-imagery-VGG19_leaky-conv3_1-S3.zip,13001213,ff01ecd5ac66870a588300fe850f2efb 140 | decodedfeatures-imagery-VGG19_leaky-conv3_2-S1.zip,13001216,d913f779916d6e0e119bd6c42657b291 141 | decodedfeatures-imagery-VGG19_leaky-conv3_2-S2.zip,13001234,e973b4a9b2b62fd0d268706e85840351 142 | decodedfeatures-imagery-VGG19_leaky-conv3_2-S3.zip,13001252,1d057ed7c7fc373a7c8cffdc539b11ad 143 | decodedfeatures-imagery-VGG19_leaky-conv3_3-S1.zip,13001780,32150723f3dbe5ba6f24b90669987880 144 | decodedfeatures-imagery-VGG19_leaky-conv3_3-S2.zip,13001786,af4a82682f93ea7a206db70a286fd3ca 145 | decodedfeatures-imagery-VGG19_leaky-conv3_3-S3.zip,13001789,85b1ab0f42b1b62ab684e7d8038f5fcb 146 | decodedfeatures-imagery-VGG19_leaky-conv3_4-S1.zip,13001792,c2e5d8a3abf9c2a15f6846c72bc4ab60 147 | decodedfeatures-imagery-VGG19_leaky-conv3_4-S2.zip,13001795,77b3dd865c09ba306ba7e5df8b5215de 148 | decodedfeatures-imagery-VGG19_leaky-conv3_4-S3.zip,13001798,083bbecd0f7d42b4ee1e9b2d57db60f6 149 | decodedfeatures-imagery-VGG19_leaky-conv4_1-S1.zip,13001801,29200f9516e992e0a958be02bea3574f 150 | decodedfeatures-imagery-VGG19_leaky-conv4_1-S2.zip,13001804,7725815d728b9baf4f942c7787742a27 151 | decodedfeatures-imagery-VGG19_leaky-conv4_1-S3.zip,13001816,7d6e5d2e761ab3bcf6994016d73822ec 152 | decodedfeatures-imagery-VGG19_leaky-conv4_2-S1.zip,13001861,4318377af9b0b67f75d1e68c97be6258 153 | decodedfeatures-imagery-VGG19_leaky-conv4_2-S2.zip,13001921,a422fd69b8562afaf0f577371876dc37 154 | decodedfeatures-imagery-VGG19_leaky-conv4_2-S3.zip,13001987,a6d8b06a356c217d7884c47ad163eafc 155 | decodedfeatures-imagery-VGG19_leaky-conv4_3-S1.zip,13002005,99f2640e80b4ebe10582b5f49749f284 156 | decodedfeatures-imagery-VGG19_leaky-conv4_3-S2.zip,13002008,060ed90eb4e1a80732dd5ce407f8a7bd 157 | decodedfeatures-imagery-VGG19_leaky-conv4_3-S3.zip,13002011,9725e4faf302c7f29f641c3c072e2d7a 158 | decodedfeatures-imagery-VGG19_leaky-conv4_4-S1.zip,13002014,eb0e0cf187ff9efcf74b88692482ad3c 159 | decodedfeatures-imagery-VGG19_leaky-conv4_4-S2.zip,13002020,6aa64383d25a89f8da30743936142997 160 | decodedfeatures-imagery-VGG19_leaky-conv4_4-S3.zip,13002023,70a58638956605452ea75ce51131ce8d 161 | decodedfeatures-imagery-VGG19_leaky-conv5_1-S1.zip,13002026,ac3a59684320a4e5c34babb7f24b98b5 162 | decodedfeatures-imagery-VGG19_leaky-conv5_1-S2.zip,13002029,357e74455c41c25a1f725b3decb341c7 163 | decodedfeatures-imagery-VGG19_leaky-conv5_1-S3.zip,13002032,31cfea6aec1de05d315567d40ce697c7 164 | decodedfeatures-imagery-VGG19_leaky-conv5_2-S1.zip,13002035,edac4ed4c2f91f106928e80fdf0e49c7 165 | decodedfeatures-imagery-VGG19_leaky-conv5_2-S2.zip,13002038,bac49020bc41a8affae46a3176883747 166 | decodedfeatures-imagery-VGG19_leaky-conv5_2-S3.zip,13002041,b44ee767d2a1848f01fa99c369fe4e86 167 | decodedfeatures-imagery-VGG19_leaky-conv5_3-S1.zip,13002044,3d89dd7bafa8a53bbc74aa699ebe9b6d 168 | decodedfeatures-imagery-VGG19_leaky-conv5_3-S2.zip,13002047,c1e1d9d76ef316e444e78b0b504051d8 169 | decodedfeatures-imagery-VGG19_leaky-conv5_3-S3.zip,13002050,b8f515e144c3b96a4ef6646344c423bf 170 | decodedfeatures-imagery-VGG19_leaky-conv5_4-S1.zip,13002053,fdda1cf07acaf43e7aab80fb5b345e2f 171 | decodedfeatures-imagery-VGG19_leaky-conv5_4-S2.zip,13002056,473399aff19241a07e1f9a7b2c4cf3bd 172 | decodedfeatures-imagery-VGG19_leaky-conv5_4-S3.zip,13002059,f2f7883293bd14e77b4478685ead7891 173 | decodedfeatures-imagery-VGG19_leaky-fc6-S1.zip,13002062,9ddec1247b1ba4cbe8aede8ff1cbd78a 174 | decodedfeatures-imagery-VGG19_leaky-fc6-S2.zip,13002065,72bb6ad5c628d8da291dce90558e1865 175 | decodedfeatures-imagery-VGG19_leaky-fc6-S3.zip,13002068,026d25e3f274877876c35a5ea83d6bd4 176 | decodedfeatures-imagery-VGG19_leaky-fc7-S1.zip,13002071,87a320c442351085dc1f54cb5fd78ece 177 | decodedfeatures-imagery-VGG19_leaky-fc7-S2.zip,13002074,a47768ce8fbb81c8bed636215de019d7 178 | decodedfeatures-imagery-VGG19_leaky-fc7-S3.zip,13002077,526f238796d96c799bc153135b15e219 179 | decodedfeatures-imagery-VGG19_leaky-fc8-S1.zip,13002080,c0e363758ef50f503dc663134028219f 180 | decodedfeatures-imagery-VGG19_leaky-fc8-S2.zip,13002083,851718f4faaf0019c9d1d8e050c1e0e3 181 | decodedfeatures-imagery-VGG19_leaky-fc8-S3.zip,13002086,f967b67cdfc6a024a5b6b713920216e3 182 | decodedfeatures-imagery-VGG19_leaky-pool1-S1.zip,13002092,4088c9b5c6a6f290a05759489c956080 183 | decodedfeatures-imagery-VGG19_leaky-pool2-S1.zip,13002095,df78db925c665cdbeb6ada64dc2cf45e 184 | decodedfeatures-imagery-VGG19_leaky-pool3-S1.zip,13002098,23c79064a2ad1fa2d5866c93f687d6d6 185 | decodedfeatures-imagery-VGG19_leaky-pool4-S1.zip,13002101,77e02f6a452a79fced154849c8045392 186 | decodedfeatures-imagery-VGG19_leaky-pool5-S1.zip,13002104,2531a3c85063069a9842b830a1b69fdf 187 | decodedfeatures-natural-VGG19-conv1_1-S1.zip,13002107,ca023f1a6f13f33750db6ec03330c571 188 | decodedfeatures-natural-VGG19-conv1_1-S2.zip,13002116,23c1adfe958bb4dd511a754c4edaacc1 189 | decodedfeatures-natural-VGG19-conv1_1-S3.zip,13002119,f322f8e2a04cc0b77319e085e9ca9a73 190 | decodedfeatures-natural-VGG19-conv1_2-S1.zip,13002134,9e9f6b9361da6360e66da35e25a2810d 191 | decodedfeatures-natural-VGG19-conv1_2-S2.zip,13002137,888700d68208f1d6bc443830e709afdd 192 | decodedfeatures-natural-VGG19-conv1_2-S3.zip,13002143,88621c08ca26c94ecc8596f4df04d593 193 | decodedfeatures-natural-VGG19-conv2_1-S1.zip,13002182,f7410c73956563384554c9c0f92c4bb7 194 | decodedfeatures-natural-VGG19-conv2_1-S2.zip,13002188,b80fd56e92d5ade51651666b3d019c14 195 | decodedfeatures-natural-VGG19-conv2_1-S3.zip,13002191,4eae21dad36a43411ed55d763bb0637e 196 | decodedfeatures-natural-VGG19-conv2_2-S1.zip,13002203,b3f853f8d6947960c341beeef03aafa2 197 | decodedfeatures-natural-VGG19-conv2_2-S2.zip,13002224,2a9656d24cf9ceb3736b9ba94cde6a53 198 | decodedfeatures-natural-VGG19-conv2_2-S3.zip,13002236,d1cec3c9b39b0096f89c95be3c037cb8 199 | decodedfeatures-natural-VGG19-conv3_1-S1.zip,13002338,223971daae609bb8421cd963531d1b8f 200 | decodedfeatures-natural-VGG19-conv3_1-S2.zip,13002500,151124ab32341f4bc16c02a5d752f5f8 201 | decodedfeatures-natural-VGG19-conv3_1-S3.zip,13002524,d46a1ffe6b6b909a0b9d309cd1e0f62d 202 | decodedfeatures-natural-VGG19-conv3_2-S1.zip,13002536,cc66d3a67ffc0f460ecc46f40a8d48c1 203 | decodedfeatures-natural-VGG19-conv3_2-S2.zip,13002818,777db77c8c5d1af7f57704438231c08a 204 | decodedfeatures-natural-VGG19-conv3_2-S3.zip,13002998,3d21d47f04260e4e7451e0850fa4d232 205 | decodedfeatures-natural-VGG19-conv3_3-S1.zip,13003121,9a40db30cdda376dd780f6e61ddd4669 206 | decodedfeatures-natural-VGG19-conv3_3-S2.zip,13003262,0b6b902c9b65f4d929e1a12383ae3de0 207 | decodedfeatures-natural-VGG19-conv3_3-S3.zip,13003589,502c3373937fb7ddb7c1749a0b9e1031 208 | decodedfeatures-natural-VGG19-conv3_4-S1.zip,13003910,ab2e54e0eccf583bd034404e65639536 209 | decodedfeatures-natural-VGG19-conv3_4-S2.zip,13003916,a39a54046e9959a196c798c9b3eaec29 210 | decodedfeatures-natural-VGG19-conv3_4-S3.zip,13003928,589cec188188a249c98f27a64cf0af8d 211 | decodedfeatures-natural-VGG19-conv4_1-S1.zip,13003937,abf00d53ec94d0b77dffb23b28c6d8ac 212 | decodedfeatures-natural-VGG19-conv4_1-S2.zip,13003964,d4f2486a6de7ae50bbbf2889ced9be71 213 | decodedfeatures-natural-VGG19-conv4_1-S3.zip,13003973,9b418f1e347a1528f0f0c9db2a31faca 214 | decodedfeatures-natural-VGG19-conv4_2-S1.zip,13003976,fd62edbc147c3f355b7668c437ce6ee2 215 | decodedfeatures-natural-VGG19-conv4_2-S2.zip,13003979,3af66a7d4147ac8b1961cb5bbb8cdc8f 216 | decodedfeatures-natural-VGG19-conv4_2-S3.zip,13003982,eeb4fc0faf3d7584213aa9f3e2c9948d 217 | decodedfeatures-natural-VGG19-conv4_3-S1.zip,13003985,28f4333195004c1d91dd798dcc0609ef 218 | decodedfeatures-natural-VGG19-conv4_3-S2.zip,13003988,b407d1e9af75c34fcd970d9cec691c77 219 | decodedfeatures-natural-VGG19-conv4_3-S3.zip,13003991,48e3222f6b3392d94d7ff96877f7e113 220 | decodedfeatures-natural-VGG19-conv4_4-S1.zip,13003994,b605aec3a1659b676b42fb74e9317b9a 221 | decodedfeatures-natural-VGG19-conv4_4-S2.zip,13003997,27eaf64248a660eaca0af826dcfbe4bf 222 | decodedfeatures-natural-VGG19-conv4_4-S3.zip,13004000,7fb263efbbfbf55241daf2269d30d0b0 223 | decodedfeatures-natural-VGG19-conv5_1-S1.zip,13004006,1bad5bc4657639c58567d09ed009e3ad 224 | decodedfeatures-natural-VGG19-conv5_1-S2.zip,13004009,5811eb8a0deb57734899b755387090d9 225 | decodedfeatures-natural-VGG19-conv5_1-S3.zip,13004012,887606de18182409a73f8687285d8ffc 226 | decodedfeatures-natural-VGG19-conv5_2-S1.zip,13004015,0963e03c9351d3ed0106727cca2ba146 227 | decodedfeatures-natural-VGG19-conv5_2-S2.zip,13004018,ee1b0912bad217425ca03597aeb3be53 228 | decodedfeatures-natural-VGG19-conv5_2-S3.zip,13004024,41a750d3aad5125156a1ed8072fef939 229 | decodedfeatures-natural-VGG19-conv5_3-S1.zip,13004027,636602bf631b246e76433d818956055c 230 | decodedfeatures-natural-VGG19-conv5_3-S2.zip,13004030,b3ef013f70c8f386c53c95d744bb3421 231 | decodedfeatures-natural-VGG19-conv5_3-S3.zip,13004033,6f99bbe8090f6604b3e4ee7a3356a916 232 | decodedfeatures-natural-VGG19-conv5_4-S1.zip,13004036,7cb78db0d4387e0d62a1ced4fe82cf37 233 | decodedfeatures-natural-VGG19-conv5_4-S2.zip,13004039,4ff1bd2e897c7d54fe476576a0754323 234 | decodedfeatures-natural-VGG19-conv5_4-S3.zip,13004042,52a8fa1703afffa1a0255a1c373ab6b1 235 | decodedfeatures-natural-VGG19-fc6-S1.zip,13004048,2e383678aaf8006bbab3074659b77fb4 236 | decodedfeatures-natural-VGG19-fc6-S2.zip,13004051,e9c28b5568e3dde134a602c81d5563e0 237 | decodedfeatures-natural-VGG19-fc6-S3.zip,13004054,de3393a0fe4eaa3562ce74c8197cbd65 238 | decodedfeatures-natural-VGG19-fc7-S1.zip,13004138,efc3653f6533c30867467a0d8b6bc94b 239 | decodedfeatures-natural-VGG19-fc7-S2.zip,13004141,cba587fbc9587b045f42dfc563bdb314 240 | decodedfeatures-natural-VGG19-fc7-S3.zip,13004147,91a49db0d377564eec0e303142a5afe4 241 | decodedfeatures-natural-VGG19-fc8-S1.zip,13004150,a5ab53cf6c177a60d9ac1baec1f38566 242 | decodedfeatures-natural-VGG19-fc8-S2.zip,13004153,64306a7dc5937d57b5023324bad81b1d 243 | decodedfeatures-natural-VGG19-fc8-S3.zip,13004162,b780e888dc3eded6e5a0c9d419cbef81 244 | decodedfeatures-natural-VGG19-pool1-S1.zip,13004171,d0a7dec4f637cc9e93e32ec5797c276f 245 | decodedfeatures-natural-VGG19-pool2-S1.zip,13004267,9b7b46d5d2c676439dc771ebfbb62af9 246 | decodedfeatures-natural-VGG19-pool3-S1.zip,13004276,b86ad73585477d223adae93a4a41c6bb 247 | decodedfeatures-natural-VGG19-pool4-S1.zip,13004282,5c01f012d2cc1b2502737e26af917985 248 | decodedfeatures-natural-VGG19-pool5-S1.zip,13004303,25be9861f9a48d072488644c32ca4da1 249 | estimated_vgg19LeakyReluAvePool_cnn_feat_std.mat,13004381,e839cf27a1103bd3480f62c62fa81034 250 | estimated_vgg19_cnn_feat_std.mat,13004384,080d8a320f0615bebaf8cfba7d78e008 251 | ilsvrc_2012_mean.npy,13004387,28a998b87558ea0cac23c83e718636b1 252 | -------------------------------------------------------------------------------- /data/fmri/README.md: -------------------------------------------------------------------------------- 1 | The following fMRI data are required. 2 | 3 | - fMRI data for training of feature decoders 4 | - [sub-01_perceptionNaturalImageTraining_original_VC.h5](https://ndownloader.figshare.com/files/14830643) 5 | - [sub-02_perceptionNaturalImageTraining_original_VC.h5](https://ndownloader.figshare.com/files/14830712) 6 | - [sub-03_perceptionNaturalImageTraining_original_VC.h5](https://ndownloader.figshare.com/files/14830862) 7 | - fMRI data for feature prediction (test) 8 | - [sub-01_perceptionNaturalImageTest_original_VC.h5](https://ndownloader.figshare.com/files/14830631) 9 | - [sub-02_perceptionNaturalImageTest_original_VC.h5](https://ndownloader.figshare.com/files/14830697) 10 | - [sub-03_perceptionNaturalImageTest_original_VC.h5](https://ndownloader.figshare.com/files/14830856) 11 | -------------------------------------------------------------------------------- /data/fmri/download.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -Ceu 4 | 5 | [ -e sub-01_perceptionNaturalImageTraining_original_VC.h5 ] || wget -O sub-01_perceptionNaturalImageTraining_original_VC.h5 https://ndownloader.figshare.com/files/14830643 6 | [ -e sub-02_perceptionNaturalImageTraining_original_VC.h5 ] || wget -O sub-02_perceptionNaturalImageTraining_original_VC.h5 https://ndownloader.figshare.com/files/14830712 7 | [ -e sub-03_perceptionNaturalImageTraining_original_VC.h5 ] || wget -O sub-03_perceptionNaturalImageTraining_original_VC.h5 https://ndownloader.figshare.com/files/14830862 8 | [ -e sub-01_perceptionNaturalImageTest_original_VC.h5 ] || wget -O sub-01_perceptionNaturalImageTest_original_VC.h5 https://ndownloader.figshare.com/files/14830631 9 | [ -e sub-02_perceptionNaturalImageTest_original_VC.h5 ] || wget -O sub-02_perceptionNaturalImageTest_original_VC.h5 https://ndownloader.figshare.com/files/14830697 10 | [ -e sub-03_perceptionNaturalImageTest_original_VC.h5 ] || wget -O sub-03_perceptionNaturalImageTest_original_VC.h5 https://ndownloader.figshare.com/files/14830856 11 | -------------------------------------------------------------------------------- /data/orig_img.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KamitaniLab/DeepImageReconstruction/e9c4346a07dbb4304d94e519a0b5a37c459258ab/data/orig_img.jpg -------------------------------------------------------------------------------- /net/.gitignore: -------------------------------------------------------------------------------- 1 | *.zip 2 | *.caffemodel 3 | -------------------------------------------------------------------------------- /net/README.md: -------------------------------------------------------------------------------- 1 | # Deep Image Reconstruction: networks 2 | 3 | You need the following Caffe model files to run the example scripts. 4 | The script, `downloadnet.sh`, will download all required files for the example code. 5 | 6 | - generator_for_inverting_fc7/generator.caffemodel 7 | - VGG_ILSVRC_19_layers/VGG_ILSVRC_19_layers.caffemodel 8 | -------------------------------------------------------------------------------- /net/VGG_ILSVRC_19_layers/VGG_ILSVRC_19_layers.prototxt: -------------------------------------------------------------------------------- 1 | name: "VGG_ILSVRC_19_layers" 2 | input: "data" 3 | input_dim: 10 4 | input_dim: 3 5 | input_dim: 224 6 | input_dim: 224 7 | force_backward: true 8 | layers { 9 | bottom: "data" 10 | top: "conv1_1" 11 | name: "conv1_1" 12 | type: CONVOLUTION 13 | convolution_param { 14 | num_output: 64 15 | pad: 1 16 | kernel_size: 3 17 | } 18 | } 19 | layers { 20 | bottom: "conv1_1" 21 | top: "relu1_1" 22 | name: "relu1_1" 23 | type: RELU 24 | } 25 | layers { 26 | bottom: "relu1_1" 27 | top: "conv1_2" 28 | name: "conv1_2" 29 | type: CONVOLUTION 30 | convolution_param { 31 | num_output: 64 32 | pad: 1 33 | kernel_size: 3 34 | } 35 | } 36 | layers { 37 | bottom: "conv1_2" 38 | top: "relu1_2" 39 | name: "relu1_2" 40 | type: RELU 41 | } 42 | layers { 43 | bottom: "relu1_2" 44 | top: "pool1" 45 | name: "pool1" 46 | type: POOLING 47 | pooling_param { 48 | pool: MAX 49 | kernel_size: 2 50 | stride: 2 51 | } 52 | } 53 | layers { 54 | bottom: "pool1" 55 | top: "conv2_1" 56 | name: "conv2_1" 57 | type: CONVOLUTION 58 | convolution_param { 59 | num_output: 128 60 | pad: 1 61 | kernel_size: 3 62 | } 63 | } 64 | layers { 65 | bottom: "conv2_1" 66 | top: "relu2_1" 67 | name: "relu2_1" 68 | type: RELU 69 | } 70 | layers { 71 | bottom: "relu2_1" 72 | top: "conv2_2" 73 | name: "conv2_2" 74 | type: CONVOLUTION 75 | convolution_param { 76 | num_output: 128 77 | pad: 1 78 | kernel_size: 3 79 | } 80 | } 81 | layers { 82 | bottom: "conv2_2" 83 | top: "relu2_2" 84 | name: "relu2_2" 85 | type: RELU 86 | } 87 | layers { 88 | bottom: "relu2_2" 89 | top: "pool2" 90 | name: "pool2" 91 | type: POOLING 92 | pooling_param { 93 | pool: MAX 94 | kernel_size: 2 95 | stride: 2 96 | } 97 | } 98 | layers { 99 | bottom: "pool2" 100 | top: "conv3_1" 101 | name: "conv3_1" 102 | type: CONVOLUTION 103 | convolution_param { 104 | num_output: 256 105 | pad: 1 106 | kernel_size: 3 107 | } 108 | } 109 | layers { 110 | bottom: "conv3_1" 111 | top: "relu3_1" 112 | name: "relu3_1" 113 | type: RELU 114 | } 115 | layers { 116 | bottom: "relu3_1" 117 | top: "conv3_2" 118 | name: "conv3_2" 119 | type: CONVOLUTION 120 | convolution_param { 121 | num_output: 256 122 | pad: 1 123 | kernel_size: 3 124 | } 125 | } 126 | layers { 127 | bottom: "conv3_2" 128 | top: "relu3_2" 129 | name: "relu3_2" 130 | type: RELU 131 | } 132 | layers { 133 | bottom: "relu3_2" 134 | top: "conv3_3" 135 | name: "conv3_3" 136 | type: CONVOLUTION 137 | convolution_param { 138 | num_output: 256 139 | pad: 1 140 | kernel_size: 3 141 | } 142 | } 143 | layers { 144 | bottom: "conv3_3" 145 | top: "relu3_3" 146 | name: "relu3_3" 147 | type: RELU 148 | } 149 | layers { 150 | bottom: "relu3_3" 151 | top: "conv3_4" 152 | name: "conv3_4" 153 | type: CONVOLUTION 154 | convolution_param { 155 | num_output: 256 156 | pad: 1 157 | kernel_size: 3 158 | } 159 | } 160 | layers { 161 | bottom: "conv3_4" 162 | top: "relu3_4" 163 | name: "relu3_4" 164 | type: RELU 165 | } 166 | layers { 167 | bottom: "relu3_4" 168 | top: "pool3" 169 | name: "pool3" 170 | type: POOLING 171 | pooling_param { 172 | pool: MAX 173 | kernel_size: 2 174 | stride: 2 175 | } 176 | } 177 | layers { 178 | bottom: "pool3" 179 | top: "conv4_1" 180 | name: "conv4_1" 181 | type: CONVOLUTION 182 | convolution_param { 183 | num_output: 512 184 | pad: 1 185 | kernel_size: 3 186 | } 187 | } 188 | layers { 189 | bottom: "conv4_1" 190 | top: "relu4_1" 191 | name: "relu4_1" 192 | type: RELU 193 | } 194 | layers { 195 | bottom: "relu4_1" 196 | top: "conv4_2" 197 | name: "conv4_2" 198 | type: CONVOLUTION 199 | convolution_param { 200 | num_output: 512 201 | pad: 1 202 | kernel_size: 3 203 | } 204 | } 205 | layers { 206 | bottom: "conv4_2" 207 | top: "relu4_2" 208 | name: "relu4_2" 209 | type: RELU 210 | } 211 | layers { 212 | bottom: "relu4_2" 213 | top: "conv4_3" 214 | name: "conv4_3" 215 | type: CONVOLUTION 216 | convolution_param { 217 | num_output: 512 218 | pad: 1 219 | kernel_size: 3 220 | } 221 | } 222 | layers { 223 | bottom: "conv4_3" 224 | top: "relu4_3" 225 | name: "relu4_3" 226 | type: RELU 227 | } 228 | layers { 229 | bottom: "relu4_3" 230 | top: "conv4_4" 231 | name: "conv4_4" 232 | type: CONVOLUTION 233 | convolution_param { 234 | num_output: 512 235 | pad: 1 236 | kernel_size: 3 237 | } 238 | } 239 | layers { 240 | bottom: "conv4_4" 241 | top: "relu4_4" 242 | name: "relu4_4" 243 | type: RELU 244 | } 245 | layers { 246 | bottom: "relu4_4" 247 | top: "pool4" 248 | name: "pool4" 249 | type: POOLING 250 | pooling_param { 251 | pool: MAX 252 | kernel_size: 2 253 | stride: 2 254 | } 255 | } 256 | layers { 257 | bottom: "pool4" 258 | top: "conv5_1" 259 | name: "conv5_1" 260 | type: CONVOLUTION 261 | convolution_param { 262 | num_output: 512 263 | pad: 1 264 | kernel_size: 3 265 | } 266 | } 267 | layers { 268 | bottom: "conv5_1" 269 | top: "relu5_1" 270 | name: "relu5_1" 271 | type: RELU 272 | } 273 | layers { 274 | bottom: "relu5_1" 275 | top: "conv5_2" 276 | name: "conv5_2" 277 | type: CONVOLUTION 278 | convolution_param { 279 | num_output: 512 280 | pad: 1 281 | kernel_size: 3 282 | } 283 | } 284 | layers { 285 | bottom: "conv5_2" 286 | top: "relu5_2" 287 | name: "relu5_2" 288 | type: RELU 289 | } 290 | layers { 291 | bottom: "relu5_2" 292 | top: "conv5_3" 293 | name: "conv5_3" 294 | type: CONVOLUTION 295 | convolution_param { 296 | num_output: 512 297 | pad: 1 298 | kernel_size: 3 299 | } 300 | } 301 | layers { 302 | bottom: "conv5_3" 303 | top: "relu5_3" 304 | name: "relu5_3" 305 | type: RELU 306 | } 307 | layers { 308 | bottom: "relu5_3" 309 | top: "conv5_4" 310 | name: "conv5_4" 311 | type: CONVOLUTION 312 | convolution_param { 313 | num_output: 512 314 | pad: 1 315 | kernel_size: 3 316 | } 317 | } 318 | layers { 319 | bottom: "conv5_4" 320 | top: "relu5_4" 321 | name: "relu5_4" 322 | type: RELU 323 | } 324 | layers { 325 | bottom: "relu5_4" 326 | top: "pool5" 327 | name: "pool5" 328 | type: POOLING 329 | pooling_param { 330 | pool: MAX 331 | kernel_size: 2 332 | stride: 2 333 | } 334 | } 335 | layers { 336 | bottom: "pool5" 337 | top: "fc6" 338 | name: "fc6" 339 | type: INNER_PRODUCT 340 | inner_product_param { 341 | num_output: 4096 342 | } 343 | } 344 | layers { 345 | bottom: "fc6" 346 | top: "relu6" 347 | name: "relu6" 348 | type: RELU 349 | } 350 | layers { 351 | bottom: "relu6" 352 | top: "drop6" 353 | name: "drop6" 354 | type: DROPOUT 355 | dropout_param { 356 | dropout_ratio: 0.5 357 | } 358 | } 359 | layers { 360 | bottom: "drop6" 361 | top: "fc7" 362 | name: "fc7" 363 | type: INNER_PRODUCT 364 | inner_product_param { 365 | num_output: 4096 366 | } 367 | } 368 | layers { 369 | bottom: "fc7" 370 | top: "relu7" 371 | name: "relu7" 372 | type: RELU 373 | } 374 | layers { 375 | bottom: "relu7" 376 | top: "drop7" 377 | name: "drop7" 378 | type: DROPOUT 379 | dropout_param { 380 | dropout_ratio: 0.5 381 | } 382 | } 383 | layers { 384 | bottom: "drop7" 385 | top: "fc8" 386 | name: "fc8" 387 | type: INNER_PRODUCT 388 | inner_product_param { 389 | num_output: 1000 390 | } 391 | } 392 | layers { 393 | bottom: "fc8" 394 | top: "prob" 395 | name: "prob" 396 | type: SOFTMAX 397 | } 398 | -------------------------------------------------------------------------------- /net/VGG_ILSVRC_19_layers/VGG_ILSVRC_19_layers_lrelu_avePool.prototxt: -------------------------------------------------------------------------------- 1 | name: "VGG_ILSVRC_19_layers" 2 | input: "data" 3 | input_dim: 10 4 | input_dim: 3 5 | input_dim: 224 6 | input_dim: 224 7 | force_backward: true 8 | layers { 9 | bottom: "data" 10 | top: "conv1_1" 11 | name: "conv1_1" 12 | type: CONVOLUTION 13 | convolution_param { 14 | num_output: 64 15 | pad: 1 16 | kernel_size: 3 17 | } 18 | } 19 | layers { 20 | bottom: "conv1_1" 21 | top: "relu1_1" 22 | name: "relu1_1" 23 | type: RELU 24 | relu_param { 25 | negative_slope: 0.2 26 | } 27 | } 28 | layers { 29 | bottom: "relu1_1" 30 | top: "conv1_2" 31 | name: "conv1_2" 32 | type: CONVOLUTION 33 | convolution_param { 34 | num_output: 64 35 | pad: 1 36 | kernel_size: 3 37 | } 38 | } 39 | layers { 40 | bottom: "conv1_2" 41 | top: "relu1_2" 42 | name: "relu1_2" 43 | type: RELU 44 | relu_param { 45 | negative_slope: 0.2 46 | } 47 | } 48 | layers { 49 | bottom: "relu1_2" 50 | top: "pool1" 51 | name: "pool1" 52 | type: POOLING 53 | pooling_param { 54 | pool: AVE 55 | kernel_size: 2 56 | stride: 2 57 | } 58 | } 59 | layers { 60 | bottom: "pool1" 61 | top: "conv2_1" 62 | name: "conv2_1" 63 | type: CONVOLUTION 64 | convolution_param { 65 | num_output: 128 66 | pad: 1 67 | kernel_size: 3 68 | } 69 | } 70 | layers { 71 | bottom: "conv2_1" 72 | top: "relu2_1" 73 | name: "relu2_1" 74 | type: RELU 75 | relu_param { 76 | negative_slope: 0.2 77 | } 78 | } 79 | layers { 80 | bottom: "relu2_1" 81 | top: "conv2_2" 82 | name: "conv2_2" 83 | type: CONVOLUTION 84 | convolution_param { 85 | num_output: 128 86 | pad: 1 87 | kernel_size: 3 88 | } 89 | } 90 | layers { 91 | bottom: "conv2_2" 92 | top: "relu2_2" 93 | name: "relu2_2" 94 | type: RELU 95 | relu_param { 96 | negative_slope: 0.2 97 | } 98 | } 99 | layers { 100 | bottom: "relu2_2" 101 | top: "pool2" 102 | name: "pool2" 103 | type: POOLING 104 | pooling_param { 105 | pool: AVE 106 | kernel_size: 2 107 | stride: 2 108 | } 109 | } 110 | layers { 111 | bottom: "pool2" 112 | top: "conv3_1" 113 | name: "conv3_1" 114 | type: CONVOLUTION 115 | convolution_param { 116 | num_output: 256 117 | pad: 1 118 | kernel_size: 3 119 | } 120 | } 121 | layers { 122 | bottom: "conv3_1" 123 | top: "relu3_1" 124 | name: "relu3_1" 125 | type: RELU 126 | relu_param { 127 | negative_slope: 0.2 128 | } 129 | } 130 | layers { 131 | bottom: "relu3_1" 132 | top: "conv3_2" 133 | name: "conv3_2" 134 | type: CONVOLUTION 135 | convolution_param { 136 | num_output: 256 137 | pad: 1 138 | kernel_size: 3 139 | } 140 | } 141 | layers { 142 | bottom: "conv3_2" 143 | top: "relu3_2" 144 | name: "relu3_2" 145 | type: RELU 146 | relu_param { 147 | negative_slope: 0.2 148 | } 149 | } 150 | layers { 151 | bottom: "relu3_2" 152 | top: "conv3_3" 153 | name: "conv3_3" 154 | type: CONVOLUTION 155 | convolution_param { 156 | num_output: 256 157 | pad: 1 158 | kernel_size: 3 159 | } 160 | } 161 | layers { 162 | bottom: "conv3_3" 163 | top: "relu3_3" 164 | name: "relu3_3" 165 | type: RELU 166 | relu_param { 167 | negative_slope: 0.2 168 | } 169 | } 170 | layers { 171 | bottom: "relu3_3" 172 | top: "conv3_4" 173 | name: "conv3_4" 174 | type: CONVOLUTION 175 | convolution_param { 176 | num_output: 256 177 | pad: 1 178 | kernel_size: 3 179 | } 180 | } 181 | layers { 182 | bottom: "conv3_4" 183 | top: "relu3_4" 184 | name: "relu3_4" 185 | type: RELU 186 | relu_param { 187 | negative_slope: 0.2 188 | } 189 | } 190 | layers { 191 | bottom: "relu3_4" 192 | top: "pool3" 193 | name: "pool3" 194 | type: POOLING 195 | pooling_param { 196 | pool: AVE 197 | kernel_size: 2 198 | stride: 2 199 | } 200 | } 201 | layers { 202 | bottom: "pool3" 203 | top: "conv4_1" 204 | name: "conv4_1" 205 | type: CONVOLUTION 206 | convolution_param { 207 | num_output: 512 208 | pad: 1 209 | kernel_size: 3 210 | } 211 | } 212 | layers { 213 | bottom: "conv4_1" 214 | top: "relu4_1" 215 | name: "relu4_1" 216 | type: RELU 217 | relu_param { 218 | negative_slope: 0.2 219 | } 220 | } 221 | layers { 222 | bottom: "relu4_1" 223 | top: "conv4_2" 224 | name: "conv4_2" 225 | type: CONVOLUTION 226 | convolution_param { 227 | num_output: 512 228 | pad: 1 229 | kernel_size: 3 230 | } 231 | } 232 | layers { 233 | bottom: "conv4_2" 234 | top: "relu4_2" 235 | name: "relu4_2" 236 | type: RELU 237 | relu_param { 238 | negative_slope: 0.2 239 | } 240 | } 241 | layers { 242 | bottom: "relu4_2" 243 | top: "conv4_3" 244 | name: "conv4_3" 245 | type: CONVOLUTION 246 | convolution_param { 247 | num_output: 512 248 | pad: 1 249 | kernel_size: 3 250 | } 251 | } 252 | layers { 253 | bottom: "conv4_3" 254 | top: "relu4_3" 255 | name: "relu4_3" 256 | type: RELU 257 | relu_param { 258 | negative_slope: 0.2 259 | } 260 | } 261 | layers { 262 | bottom: "relu4_3" 263 | top: "conv4_4" 264 | name: "conv4_4" 265 | type: CONVOLUTION 266 | convolution_param { 267 | num_output: 512 268 | pad: 1 269 | kernel_size: 3 270 | } 271 | } 272 | layers { 273 | bottom: "conv4_4" 274 | top: "relu4_4" 275 | name: "relu4_4" 276 | type: RELU 277 | relu_param { 278 | negative_slope: 0.2 279 | } 280 | } 281 | layers { 282 | bottom: "relu4_4" 283 | top: "pool4" 284 | name: "pool4" 285 | type: POOLING 286 | pooling_param { 287 | pool: AVE 288 | kernel_size: 2 289 | stride: 2 290 | } 291 | } 292 | layers { 293 | bottom: "pool4" 294 | top: "conv5_1" 295 | name: "conv5_1" 296 | type: CONVOLUTION 297 | convolution_param { 298 | num_output: 512 299 | pad: 1 300 | kernel_size: 3 301 | } 302 | } 303 | layers { 304 | bottom: "conv5_1" 305 | top: "relu5_1" 306 | name: "relu5_1" 307 | type: RELU 308 | relu_param { 309 | negative_slope: 0.2 310 | } 311 | } 312 | layers { 313 | bottom: "relu5_1" 314 | top: "conv5_2" 315 | name: "conv5_2" 316 | type: CONVOLUTION 317 | convolution_param { 318 | num_output: 512 319 | pad: 1 320 | kernel_size: 3 321 | } 322 | } 323 | layers { 324 | bottom: "conv5_2" 325 | top: "relu5_2" 326 | name: "relu5_2" 327 | type: RELU 328 | relu_param { 329 | negative_slope: 0.2 330 | } 331 | } 332 | layers { 333 | bottom: "relu5_2" 334 | top: "conv5_3" 335 | name: "conv5_3" 336 | type: CONVOLUTION 337 | convolution_param { 338 | num_output: 512 339 | pad: 1 340 | kernel_size: 3 341 | } 342 | } 343 | layers { 344 | bottom: "conv5_3" 345 | top: "relu5_3" 346 | name: "relu5_3" 347 | type: RELU 348 | relu_param { 349 | negative_slope: 0.2 350 | } 351 | } 352 | layers { 353 | bottom: "relu5_3" 354 | top: "conv5_4" 355 | name: "conv5_4" 356 | type: CONVOLUTION 357 | convolution_param { 358 | num_output: 512 359 | pad: 1 360 | kernel_size: 3 361 | } 362 | } 363 | layers { 364 | bottom: "conv5_4" 365 | top: "relu5_4" 366 | name: "relu5_4" 367 | type: RELU 368 | relu_param { 369 | negative_slope: 0.2 370 | } 371 | } 372 | layers { 373 | bottom: "relu5_4" 374 | top: "pool5" 375 | name: "pool5" 376 | type: POOLING 377 | pooling_param { 378 | pool: AVE 379 | kernel_size: 2 380 | stride: 2 381 | } 382 | } 383 | layers { 384 | bottom: "pool5" 385 | top: "fc6" 386 | name: "fc6" 387 | type: INNER_PRODUCT 388 | inner_product_param { 389 | num_output: 4096 390 | } 391 | } 392 | layers { 393 | bottom: "fc6" 394 | top: "relu6" 395 | name: "relu6" 396 | type: RELU 397 | relu_param { 398 | negative_slope: 0.2 399 | } 400 | } 401 | layers { 402 | bottom: "relu6" 403 | top: "drop6" 404 | name: "drop6" 405 | type: DROPOUT 406 | dropout_param { 407 | dropout_ratio: 0.5 408 | } 409 | } 410 | layers { 411 | bottom: "drop6" 412 | top: "fc7" 413 | name: "fc7" 414 | type: INNER_PRODUCT 415 | inner_product_param { 416 | num_output: 4096 417 | } 418 | } 419 | layers { 420 | bottom: "fc7" 421 | top: "relu7" 422 | name: "relu7" 423 | type: RELU 424 | relu_param { 425 | negative_slope: 0.2 426 | } 427 | } 428 | layers { 429 | bottom: "relu7" 430 | top: "drop7" 431 | name: "drop7" 432 | type: DROPOUT 433 | dropout_param { 434 | dropout_ratio: 0.5 435 | } 436 | } 437 | layers { 438 | bottom: "drop7" 439 | top: "fc8" 440 | name: "fc8" 441 | type: INNER_PRODUCT 442 | inner_product_param { 443 | num_output: 1000 444 | } 445 | } 446 | layers { 447 | bottom: "fc8" 448 | top: "prob" 449 | name: "prob" 450 | type: SOFTMAX 451 | } 452 | -------------------------------------------------------------------------------- /net/VGG_ILSVRC_19_layers/readme.md: -------------------------------------------------------------------------------- 1 | ##Information 2 | 3 | --- 4 | name: 19-layer model from the arXiv paper - "Very Deep Convolutional Networks for Large-Scale Image Recognition" 5 | 6 | caffemodel: VGG_ILSVRC_19_layers 7 | 8 | caffemodel_url: http://www.robots.ox.ac.uk/~vgg/software/very_deep/caffe/VGG_ILSVRC_19_layers.caffemodel 9 | 10 | license: http://creativecommons.org/licenses/by-nc/4.0/ (non-commercial use only) 11 | 12 | caffe_version: trained using a custom Caffe-based framework 13 | 14 | gist_id: 3785162f95cd2d5fee77 15 | --- 16 | 17 | ## Description 18 | 19 | The model is an improved version of the 19-layer model used by the VGG team in the ILSVRC-2014 competition. The details can be found in the following [arXiv paper](http://arxiv.org/pdf/1409.1556), 20 | 21 | Very Deep Convolutional Networks for Large-Scale Image Recognition 22 | K. Simonyan, A. Zisserman 23 | arXiv:1409.1556 24 | 25 | Please cite the paper if you use the model. 26 | 27 | In the paper, the model is denoted as the configuration `E` trained with scale jittering. The input images should be zero-centered by mean pixel (rather than mean image) subtraction. Namely, the following BGR values should be subtracted: `[103.939, 116.779, 123.68]`. 28 | 29 | ## Caffe compatibility 30 | 31 | The models are currently supported by the `dev` branch of [Caffe](https://github.com/BVLC/caffe/), but are not yet compatible with `master`. 32 | An example of how to use the models in Matlab can be found in [matlab/caffe/matcaffe_demo_vgg.m](https://github.com/BVLC/caffe/blob/dev/matlab/caffe/matcaffe_demo_vgg_mean_pix.m) 33 | 34 | ## ILSVRC-2012 performance 35 | 36 | Using dense single-scale evaluation (the smallest image side rescaled to 384), the top-5 classification error on the validation set of ILSVRC-2012 is 8.0% (see Table 3 in the [arXiv paper](http://arxiv.org/pdf/1409.1556)). 37 | 38 | Using dense multi-scale evaluation (the smallest image side rescaled to 256, 384, and 512), the top-5 classification error is 7.5% on the validation set and 7.3% on the test set of ILSVRC-2012 (see Tables 4 and 6 in the [arXiv paper](http://arxiv.org/pdf/1409.1556)). -------------------------------------------------------------------------------- /net/downloadnet.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Download DNNs 4 | # 5 | # Usage: 6 | # 7 | # ./downloadnet.sh vgg19 8 | # ./downloadnet.sh deepsim 9 | # 10 | 11 | ## Functions 12 | 13 | function download_file () { 14 | dlurl=$1 15 | dlpath=$2 16 | dldir=$(dirname $dlpath) 17 | dlfile=$(basename $dlpath) 18 | 19 | [ -d $didir ] || mkdir $dldir 20 | if [ -f $dldir/$dlfile ]; then 21 | echo "$dlfile has already been downloaded." 22 | else 23 | curl -o $dldir/$dlfile $dlurl 24 | fi 25 | } 26 | 27 | ## Main 28 | 29 | target=$1 30 | 31 | if [ "$target" = '' ]; then 32 | echo "Please specify the network ('vgg19' or 'deepsim') to be downloaded." 33 | exit 1 34 | fi 35 | 36 | # VGG19 37 | if [ "$target" = 'vgg19' ]; then 38 | output=VGG_ILSVRC_19_layers/VGG_ILSVRC_19_layers.caffemodel 39 | srcurl=https://www.robots.ox.ac.uk/~vgg/software/very_deep/caffe/VGG_ILSVRC_19_layers.caffemodel 40 | 41 | [ -f $output ] && echo "$output already exists." && exit 0 42 | 43 | download_file $srcurl $output 44 | 45 | echo "$output saved." 46 | exit 0 47 | fi 48 | 49 | # Deepsim 50 | if [ "$target" = 'deepsim' ]; then 51 | output=generator_for_inverting_fc7/generator.caffemodel 52 | srcurl=https://lmb.informatik.uni-freiburg.de/resources/binaries/arxiv2016_alexnet_inversion_with_gans/release_deepsim_v0.zip 53 | 54 | [ -f $output ] && echo "$output already exists." && exit 0 55 | 56 | [ -f deepsim_v0.zip ] || download_file $srcurl deepsim_v0.zip 57 | [ -d deepsim_v0 ] || unzip deepsim_v0.zip 58 | [ -d $(dirname $output) ] || mkdir $(dirname $output) 59 | cp release_deepsim_v0/fc7/generator.caffemodel $output 60 | 61 | echo "$output saved." 62 | exit 0 63 | fi 64 | 65 | # Unknown target 66 | echo "Unknown network $target" 67 | exit 1 68 | -------------------------------------------------------------------------------- /net/generator_for_inverting_fc7/README.md: -------------------------------------------------------------------------------- 1 | original paper: Dosovitskiy A, Brox T (2016) Generating Images with Perceptual Similarity Metrics based on Deep Networks. https://arxiv.org/abs/1602.02644 2 | downloaded from: https://lmb.informatik.uni-freiburg.de/resources/binaries/arxiv2016_alexnet_inversion_with_gans/release_deepsim_v0.zip 3 | -------------------------------------------------------------------------------- /net/generator_for_inverting_fc7/generator.prototxt: -------------------------------------------------------------------------------- 1 | input: "feat" 2 | input_shape { 3 | dim: 1 4 | dim: 4096 5 | } 6 | 7 | force_backward: true 8 | 9 | layer { 10 | name: "defc7" 11 | type: "InnerProduct" 12 | bottom: "feat" 13 | top: "defc7" 14 | param { 15 | lr_mult: 1 16 | decay_mult: 0 17 | } 18 | param { 19 | lr_mult: 1 20 | decay_mult: 0 21 | } 22 | inner_product_param { 23 | num_output: 4096 24 | } 25 | } 26 | layer { 27 | name: "relu_defc7" 28 | type: "ReLU" 29 | bottom: "defc7" 30 | top: "relu_defc7" 31 | relu_param { 32 | negative_slope: 0.3 33 | } 34 | } 35 | layer { 36 | name: "defc6" 37 | type: "InnerProduct" 38 | bottom: "relu_defc7" 39 | top: "defc6" 40 | param { 41 | lr_mult: 1 42 | decay_mult: 0 43 | } 44 | param { 45 | lr_mult: 1 46 | decay_mult: 0 47 | } 48 | inner_product_param { 49 | num_output: 4096 50 | } 51 | } 52 | layer { 53 | name: "relu_defc6" 54 | type: "ReLU" 55 | bottom: "defc6" 56 | top: "relu_defc6" 57 | relu_param { 58 | negative_slope: 0.3 59 | } 60 | } 61 | layer { 62 | name: "defc5" 63 | type: "InnerProduct" 64 | bottom: "relu_defc6" 65 | top: "defc5" 66 | param { 67 | lr_mult: 1 68 | decay_mult: 0 69 | } 70 | param { 71 | lr_mult: 1 72 | decay_mult: 0 73 | } 74 | inner_product_param { 75 | num_output: 4096 76 | } 77 | } 78 | layer { 79 | name: "relu_defc5" 80 | type: "ReLU" 81 | bottom: "defc5" 82 | top: "relu_defc5" 83 | relu_param { 84 | negative_slope: 0.3 85 | } 86 | } 87 | layer { 88 | name: "reshape_relu_defc5" 89 | type: "Reshape" 90 | bottom: "relu_defc5" 91 | top: "reshape_relu_defc5" 92 | reshape_param { 93 | shape { 94 | dim: 1 95 | dim: 256 96 | dim: 4 97 | dim: 4 98 | } 99 | } 100 | } 101 | layer { 102 | name: "deconv5" 103 | type: "Deconvolution" 104 | bottom: "reshape_relu_defc5" 105 | top: "deconv5" 106 | param { 107 | lr_mult: 1 108 | decay_mult: 0 109 | } 110 | param { 111 | lr_mult: 0 112 | decay_mult: 0 113 | } 114 | convolution_param { 115 | num_output: 256 116 | pad: 1 117 | kernel_size: 4 118 | stride: 2 119 | #engine: CUDNN 120 | } 121 | } 122 | layer { 123 | name: "relu_deconv5" 124 | type: "ReLU" 125 | bottom: "deconv5" 126 | top: "relu_deconv5" 127 | relu_param { 128 | negative_slope: 0.3 129 | } 130 | } 131 | layer { 132 | name: "conv5_1" 133 | type: "Deconvolution" 134 | bottom: "relu_deconv5" 135 | top: "conv5_1" 136 | param { 137 | lr_mult: 1 138 | decay_mult: 0 139 | } 140 | param { 141 | lr_mult: 0 142 | decay_mult: 0 143 | } 144 | convolution_param { 145 | num_output: 512 146 | pad: 1 147 | kernel_size: 3 148 | stride: 1 149 | #engine: CUDNN 150 | } 151 | } 152 | layer { 153 | name: "relu_conv5_1" 154 | type: "ReLU" 155 | bottom: "conv5_1" 156 | top: "relu_conv5_1" 157 | relu_param { 158 | negative_slope: 0.3 159 | } 160 | } 161 | layer { 162 | name: "deconv4" 163 | type: "Deconvolution" 164 | bottom: "relu_conv5_1" 165 | top: "deconv4" 166 | param { 167 | lr_mult: 1 168 | decay_mult: 0 169 | } 170 | param { 171 | lr_mult: 0 172 | decay_mult: 0 173 | } 174 | convolution_param { 175 | num_output: 256 176 | pad: 1 177 | kernel_size: 4 178 | stride: 2 179 | #engine: CUDNN 180 | } 181 | } 182 | layer { 183 | name: "relu_deconv4" 184 | type: "ReLU" 185 | bottom: "deconv4" 186 | top: "relu_deconv4" 187 | relu_param { 188 | negative_slope: 0.3 189 | } 190 | } 191 | layer { 192 | name: "conv4_1" 193 | type: "Deconvolution" 194 | bottom: "relu_deconv4" 195 | top: "conv4_1" 196 | param { 197 | lr_mult: 1 198 | decay_mult: 0 199 | } 200 | param { 201 | lr_mult: 0 202 | decay_mult: 0 203 | } 204 | convolution_param { 205 | num_output: 256 206 | pad: 1 207 | kernel_size: 3 208 | stride: 1 209 | #engine: CUDNN 210 | } 211 | } 212 | layer { 213 | name: "relu_conv4_1" 214 | type: "ReLU" 215 | bottom: "conv4_1" 216 | top: "relu_conv4_1" 217 | relu_param { 218 | negative_slope: 0.3 219 | } 220 | } 221 | layer { 222 | name: "deconv3" 223 | type: "Deconvolution" 224 | bottom: "relu_conv4_1" 225 | top: "deconv3" 226 | param { 227 | lr_mult: 1 228 | decay_mult: 0 229 | } 230 | param { 231 | lr_mult: 0 232 | decay_mult: 0 233 | } 234 | convolution_param { 235 | num_output: 128 236 | pad: 1 237 | kernel_size: 4 238 | stride: 2 239 | #engine: CUDNN 240 | } 241 | } 242 | layer { 243 | name: "relu_deconv3" 244 | type: "ReLU" 245 | bottom: "deconv3" 246 | top: "relu_deconv3" 247 | relu_param { 248 | negative_slope: 0.3 249 | } 250 | } 251 | layer { 252 | name: "conv3_1" 253 | type: "Deconvolution" 254 | bottom: "relu_deconv3" 255 | top: "conv3_1" 256 | param { 257 | lr_mult: 1 258 | decay_mult: 0 259 | } 260 | param { 261 | lr_mult: 0 262 | decay_mult: 0 263 | } 264 | convolution_param { 265 | num_output: 128 266 | pad: 1 267 | kernel_size: 3 268 | stride: 1 269 | #engine: CUDNN 270 | } 271 | } 272 | layer { 273 | name: "relu_conv3_1" 274 | type: "ReLU" 275 | bottom: "conv3_1" 276 | top: "relu_conv3_1" 277 | relu_param { 278 | negative_slope: 0.3 279 | } 280 | } 281 | layer { 282 | name: "deconv2" 283 | type: "Deconvolution" 284 | bottom: "relu_conv3_1" 285 | top: "deconv2" 286 | param { 287 | lr_mult: 1 288 | decay_mult: 0 289 | } 290 | param { 291 | lr_mult: 0 292 | decay_mult: 0 293 | } 294 | convolution_param { 295 | num_output: 64 296 | pad: 1 297 | kernel_size: 4 298 | stride: 2 299 | #engine: CUDNN 300 | } 301 | } 302 | layer { 303 | name: "relu_deconv2" 304 | type: "ReLU" 305 | bottom: "deconv2" 306 | top: "relu_deconv2" 307 | relu_param { 308 | negative_slope: 0.3 309 | } 310 | } 311 | layer { 312 | name: "deconv1" 313 | type: "Deconvolution" 314 | bottom: "relu_deconv2" 315 | top: "deconv1" 316 | param { 317 | lr_mult: 1 318 | decay_mult: 0 319 | } 320 | param { 321 | lr_mult: 0 322 | decay_mult: 0 323 | } 324 | convolution_param { 325 | num_output: 32 326 | pad: 1 327 | kernel_size: 4 328 | stride: 2 329 | #engine: CUDNN 330 | } 331 | } 332 | layer { 333 | name: "relu_deconv1" 334 | type: "ReLU" 335 | bottom: "deconv1" 336 | top: "relu_deconv1" 337 | relu_param { 338 | negative_slope: 0.3 339 | } 340 | } 341 | layer { 342 | name: "deconv0" 343 | type: "Deconvolution" 344 | bottom: "relu_deconv1" 345 | top: "generated" 346 | param { 347 | lr_mult: 1 348 | decay_mult: 0 349 | } 350 | param { 351 | lr_mult: 0 352 | decay_mult: 0 353 | } 354 | convolution_param { 355 | num_output: 3 356 | pad: 1 357 | kernel_size: 4 358 | stride: 2 359 | #engine: CUDNN 360 | } 361 | } --------------------------------------------------------------------------------