├── network ├── __init__.py └── lightcnn112.py ├── pics ├── readme.txt └── Poster.png ├── evaluate ├── __init__.py ├── eval_ops.py ├── eval_buaa_112.py ├── eval_oulu_112.py ├── eval_lamp_112.py └── eval_casia_112.py ├── models ├── finetune │ └── readme.txt └── pretrain │ └── readme.txt ├── data ├── lamp │ ├── binary_lable_matrix_1.npy │ └── gallery_vis1.txt ├── buaa │ ├── test_vis_paths.txt │ └── test_nir_paths.txt ├── casia │ └── vis_gallery_1.txt └── oulu │ ├── test_nir_paths.txt │ └── test_vis_paths.txt ├── eval.sh ├── run.sh ├── README.md ├── losses.py ├── utils.py ├── train.py └── dataset_mix.py /network/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pics/readme.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /evaluate/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | from evaluate.eval_ops import * 3 | -------------------------------------------------------------------------------- /models/finetune/readme.txt: -------------------------------------------------------------------------------- 1 | put $dataset_final.pth.tar here 2 | -------------------------------------------------------------------------------- /pics/Poster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yoqim/PR-HFR/HEAD/pics/Poster.png -------------------------------------------------------------------------------- /models/pretrain/readme.txt: -------------------------------------------------------------------------------- 1 | Put pretrain model here. 2 | 3 | Ex. L29.pth.tar 4 | -------------------------------------------------------------------------------- /data/lamp/binary_lable_matrix_1.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yoqim/PR-HFR/HEAD/data/lamp/binary_lable_matrix_1.npy -------------------------------------------------------------------------------- /eval.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #### Parameters 4 | # datasets options: "casia", "lamp", "buaa", "oulu" 5 | # test_fold_id = -1 if testing 10 fold (casia & lamp) else test_fold_id = i (fold id) 6 | # test_mode: "pretrain" or "finetune" 7 | 8 | dataset='oulu' 9 | # img_root="path to data folder" 10 | img_root="/storage/local/local/Oulu_CASIA_NIR_VIS/crops112_3/" 11 | input_mode='grey' 12 | model_mode='29' 13 | test_mode='pretrain' 14 | test_fold_id=-1 15 | model_name='L29.pth.tar' # pretrain model 16 | # model_name=$dataset'_fold'$test_fold_id'_final.pth.tar' # finetune: 'casia_fold1_final.pth.tar' 17 | 18 | 19 | CUDA_VISIBLE_DEVICES=6 python ./evaluate/eval_${dataset}_112.py --test_fold_id $test_fold_id --input_mode $input_mode --model_mode $model_mode --model_name $model_name --img_root $img_root --test_mode $test_mode | tee test.log -------------------------------------------------------------------------------- /run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # run : bash run_train_lightcnn_112.sh 4 | 5 | echo train lightcnn 112 6 | 7 | gpu_ids='0,1,2,3,4,5,6,7' 8 | workers=8 9 | epochs=10 10 | batch_size=64 11 | lr=5e-3 12 | print_iter=40 13 | train_fold_id=10 14 | input_mode='grey' 15 | model_mode='29' 16 | weights_lightcnn='./models/pretrain/L29.pth.tar' 17 | 18 | #! LAMP-HQ 19 | # dataset='lamp' 20 | # img_root_R='' 21 | # train_list_R='' 22 | 23 | #! CASIA 24 | dataset='CASIA' 25 | img_root_R='' # path to real data 26 | train_list_R='' # name list 27 | 28 | #! Oulu 29 | # dataset='oulu' 30 | # img_root_R='' 31 | # train_list_R='' 32 | 33 | #! Buaa 34 | # dataset='buaa' 35 | # img_root_R='' 36 | # train_list_R='' 37 | 38 | 39 | #! finetune 112_cos models 40 | prefix='train' 41 | python train.py --gpu_ids $gpu_ids --dataset $dataset --workers $workers \ 42 | --epochs $epochs --batch_size $batch_size --lr $lr --save_name $prefix --input_mode $input_mode \ 43 | --print_iter $print_iter --weights_lightcnn $weights_lightcnn \ 44 | --img_root_R $img_root_R --train_list_R $train_list_R \ 45 | --model_mode $model_mode -------------------------------------------------------------------------------- /data/buaa/test_vis_paths.txt: -------------------------------------------------------------------------------- 1 | 2/1.bmp 2 | 3/1.bmp 3 | 4/1.bmp 4 | 5/1.bmp 5 | 7/1.bmp 6 | 10/1.bmp 7 | 11/1.bmp 8 | 13/1.bmp 9 | 15/1.bmp 10 | 16/1.bmp 11 | 17/1.bmp 12 | 21/1.bmp 13 | 25/1.bmp 14 | 26/1.bmp 15 | 27/1.bmp 16 | 29/1.bmp 17 | 30/1.bmp 18 | 31/1.bmp 19 | 32/1.bmp 20 | 33/1.bmp 21 | 34/1.bmp 22 | 35/1.bmp 23 | 36/1.bmp 24 | 37/1.bmp 25 | 38/1.bmp 26 | 41/1.bmp 27 | 42/1.bmp 28 | 43/1.bmp 29 | 44/1.bmp 30 | 45/1.bmp 31 | 46/1.bmp 32 | 47/1.bmp 33 | 48/1.bmp 34 | 50/1.bmp 35 | 51/1.bmp 36 | 52/1.bmp 37 | 53/1.bmp 38 | 54/1.bmp 39 | 55/1.bmp 40 | 58/1.bmp 41 | 59/1.bmp 42 | 60/1.bmp 43 | 61/1.bmp 44 | 62/1.bmp 45 | 63/1.bmp 46 | 64/1.bmp 47 | 65/1.bmp 48 | 66/1.bmp 49 | 67/1.bmp 50 | 68/1.bmp 51 | 69/1.bmp 52 | 70/1.bmp 53 | 72/1.bmp 54 | 73/1.bmp 55 | 77/1.bmp 56 | 78/1.bmp 57 | 80/1.bmp 58 | 81/1.bmp 59 | 82/1.bmp 60 | 85/1.bmp 61 | 86/1.bmp 62 | 87/1.bmp 63 | 88/1.bmp 64 | 89/1.bmp 65 | 95/1.bmp 66 | 96/1.bmp 67 | 97/1.bmp 68 | 98/1.bmp 69 | 99/1.bmp 70 | 100/1.bmp 71 | 101/1.bmp 72 | 103/1.bmp 73 | 104/1.bmp 74 | 106/1.bmp 75 | 108/1.bmp 76 | 109/1.bmp 77 | 112/1.bmp 78 | 113/1.bmp 79 | 114/1.bmp 80 | 116/1.bmp 81 | 119/1.bmp 82 | 122/1.bmp 83 | 124/1.bmp 84 | 125/1.bmp 85 | 126/1.bmp 86 | 129/1.bmp 87 | 131/1.bmp 88 | 132/1.bmp 89 | 133/1.bmp 90 | 134/1.bmp 91 | 138/1.bmp 92 | 139/1.bmp 93 | 141/1.bmp 94 | 143/1.bmp 95 | 144/1.bmp 96 | 145/1.bmp 97 | 146/1.bmp 98 | 147/1.bmp 99 | 148/1.bmp 100 | 149/1.bmp 101 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Physical-based Rendering for NIR-VIS Face Recognition 2 | 3 | by [Yunqi Miao*](https://yoqim.github.io/), [Alexandros Lattas*](https://alexlattas.com/), [Jiankang Deng](https://jiankangdeng.github.io/), [Jungong Han](https://jungonghan.github.io/), and [Stefanos Zafeiriou](). 4 | 5 | 6 | For more information, please check our 7 | 8 | **[[Arxiv]](https://arxiv.org/abs/2211.06408)** 9 | **[[Paper]](https://arxiv.org/pdf/2211.06408.pdf)** 10 | 11 | :bell: We are happy to announce that this work was accepted at **NeurIPS22**. 12 | 13 | If you find this project useful in your research, please consider citing: 14 | 15 | ``` 16 | @article{miao2022physically, 17 | title={Physically-Based Face Rendering for NIR-VIS Face Recognition}, 18 | author={Miao, Yunqi and Lattas, Alexandros and Deng, Jiankang and Han, Jungong and Zafeiriou, Stefanos}, 19 | journal={arXiv preprint arXiv:2211.06408}, 20 | year={2022} 21 | } 22 | ``` 23 | 24 | # Overview 25 | ![poster](pics/Poster.png) 26 | 27 | # Training 28 | 29 | For this project, we used python 3.7.10. 30 | 31 | ## How to run? 32 | 33 | ```shell 34 | sh run.sh 35 | ``` 36 | 37 | 38 | # Testing 39 | ## Preparation 40 | - Downloading data (112 x 112) from [[Google drive]](https://drive.google.com/file/d/1Smd-Bdwj4tCbNugmoa66vxnJAU613bCo/view?usp=sharing) 41 | - Put data to `data/$dataset_name` 42 | 43 | >Note that: casia(fold_1) is provided for research purposes only. For the rest data, please refer to the original publications. 44 | 45 | 46 | 47 | - Downloading models from [[Google drive]](https://drive.google.com/file/d/1XjlnvbXmRD5xLJo7lLTy8LyQbMYRoz8C/view?usp=sharing) 48 | - Put pretrain model at `models/pretrain/` 49 | - Put finetune model at `models/finetune/$dataset/` 50 | 51 | 52 | ## How to run? 53 | 54 | ```shell 55 | sh eval.sh 56 | ``` 57 | -------------------------------------------------------------------------------- /evaluate/eval_ops.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | from sklearn.metrics import roc_curve 3 | 4 | def evaluate2(gallery_feat, query_feat, labels, fars = [10**-5, 10**-4, 10**-3, 10**-2]): 5 | query_num = query_feat.shape[0] 6 | 7 | similarity = np.dot(query_feat, gallery_feat.T) 8 | top_inds = np.argsort(-similarity) 9 | labels = labels.T 10 | 11 | # calculate top1 12 | correct_num = 0 13 | for i in range(query_num): 14 | j = top_inds[i, 0] 15 | if labels[i, j] == 1: 16 | correct_num += 1 17 | top1 = correct_num / query_num 18 | print("top1 = {:.2%}".format(top1)) 19 | 20 | # # calculate top5 21 | # correct_num = 0 22 | # for i in range(query_num): 23 | # j = top_inds[i, :5] 24 | # if any(labels[i, j] == 1.0): 25 | # correct_num += 1 26 | # # else: 27 | # # print(i,j) 28 | # top5 = correct_num / query_num 29 | # print("top5 = {:.4%}".format(top5)) 30 | 31 | # # calculate 10 32 | # correct_num = 0 33 | # for i in range(query_num): 34 | # j = top_inds[i, :10] 35 | # if any(labels[i, j] == 1.0): 36 | # correct_num += 1 37 | # # else: 38 | # # print(i,j) 39 | # top10 = correct_num / query_num 40 | # print("top10 = {:.4%}".format(top10)) 41 | 42 | labels_ = labels.flatten() 43 | similarity_ = similarity.flatten() 44 | fpr, tpr, _ = roc_curve(labels_, similarity_) 45 | 46 | fpr = np.flipud(fpr) 47 | tpr = np.flipud(tpr) 48 | tpr_fpr_row = [] 49 | for far in fars: 50 | _, min_index = min(list(zip(abs(fpr - far), range(len(fpr))))) 51 | tpr_fpr_row.append(tpr[min_index]) 52 | print("TPR {:.2%} @ FAR {:.4%}".format(tpr[min_index], far)) 53 | 54 | return [top1], tpr_fpr_row 55 | -------------------------------------------------------------------------------- /losses.py: -------------------------------------------------------------------------------- 1 | import torch 2 | from torch import nn 3 | import torch.nn.functional as F 4 | 5 | 6 | class IDMMD(nn.Module): 7 | def __init__(self, kernel_type='rbf', kernel_mul=2.0, kernel_num=5): 8 | super(IDMMD, self).__init__() 9 | self.kernel_num = kernel_num 10 | self.kernel_mul = kernel_mul 11 | self.fix_sigma = None 12 | self.kernel_type = kernel_type 13 | 14 | def get_centers_by_id(self, x_rgb, x_ir, targets): 15 | centers_rgb = [] 16 | centers_ir = [] 17 | 18 | batch_y_set = set(targets.data.cpu().numpy()) 19 | 20 | for _, l in enumerate(batch_y_set): 21 | feat1 = x_rgb[targets==l] 22 | feat2 = x_ir[targets==l] 23 | 24 | centers_rgb.append(feat1.mean(dim=0).unsqueeze(0)) 25 | centers_ir.append(feat2.mean(dim=0).unsqueeze(0)) 26 | 27 | centers_rgb = torch.cat(centers_rgb, 0).cuda() 28 | centers_ir = torch.cat(centers_ir, 0).cuda() 29 | 30 | return centers_rgb, centers_ir 31 | 32 | def forward(self, x_rgb, x_ir, targets): 33 | 34 | centers_rgb, centers_ir = self.get_centers_by_id(x_rgb, x_ir, targets) 35 | 36 | if self.kernel_type == 'linear': 37 | loss = self.linear_mmd(centers_rgb, centers_ir) # domain-level loss 38 | 39 | elif self.kernel_type == 'rbf': 40 | B = centers_rgb.size(0) 41 | kernels = self.guassian_kernel(centers_rgb, centers_ir) 42 | 43 | XX = kernels[:B, :B] 44 | YY = kernels[B:, B:] 45 | XY = kernels[:B, B:] 46 | YX = kernels[B:, :B] 47 | 48 | loss = (XX + YY - XY - YX).mean() 49 | 50 | return loss 51 | 52 | 53 | def linear_mmd(self, center_rgb, center_ir): 54 | def compute_dist_(x_rgb, x_ir): 55 | n = x_rgb.size(0) 56 | dist1 = torch.pow(x_rgb, 2).sum(dim=1, keepdim=True).expand(n, n) 57 | dist2 = torch.pow(x_ir, 2).sum(dim=1, keepdim=True).expand(n, n) 58 | 59 | dist = dist1 + dist2.t() 60 | dist.addmm_(mat1=x_rgb, mat2=x_ir.t(), beta=1, alpha=-2) 61 | dist = dist.clamp(min=1e-12) # for numerical stability 62 | return dist 63 | 64 | matrix = compute_dist_(center_rgb, center_ir) 65 | loss = matrix.diag() 66 | 67 | return loss.mean() 68 | 69 | 70 | def guassian_kernel(self, x_rgb, x_ir): 71 | total = torch.cat([x_rgb, x_ir], dim=0) 72 | N = total.size(0) 73 | 74 | total0 = total.unsqueeze(0).expand( 75 | int(total.size(0)), int(total.size(0)), int(total.size(1))) 76 | total1 = total.unsqueeze(1).expand( 77 | int(total.size(0)), int(total.size(0)), int(total.size(1))) 78 | dists = ((total0-total1)**2).sum(2) 79 | 80 | if self.fix_sigma: 81 | bandwidth = self.fix_sigma 82 | else: 83 | bandwidth = torch.sum(dists.data) / (N**2-N) 84 | 85 | bandwidth /= self.kernel_mul ** (self.kernel_num // 2) 86 | bandwidth_list = [bandwidth * (self.kernel_mul**i) 87 | for i in range(self.kernel_num)] 88 | kernel_val = [torch.exp(-dists / bandwidth_temp) 89 | for bandwidth_temp in bandwidth_list] 90 | return sum(kernel_val) 91 | 92 | 93 | 94 | class CosFace(torch.nn.Module): 95 | def __init__(self, s=64.0, m=0.40): 96 | super(CosFace, self).__init__() 97 | self.s = s 98 | self.m = m 99 | 100 | def forward(self, logits, labels): 101 | one_hot = torch.zeros_like(logits).scatter_(1, labels.view(-1, 1), 1.0).cuda() 102 | phi = logits - self.m 103 | output = torch.where(one_hot==1, phi, logits) 104 | output *= self.s 105 | 106 | return output -------------------------------------------------------------------------------- /evaluate/eval_buaa_112.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import os,sys 3 | sys.path.append(os.getcwd()) 4 | import argparse 5 | import torch 6 | 7 | from PIL import Image 8 | from network.lightcnn112 import LightCNN_29Layers 9 | from evaluate import evaluate2 10 | 11 | fars = [10 ** -4, 10 ** -3, 10 ** -2] 12 | 13 | parser = argparse.ArgumentParser() 14 | parser.add_argument('--test_fold_id', default=1, type=int) 15 | parser.add_argument('--input_mode', default='grey', choices=['grey'], type=str) 16 | parser.add_argument('--model_mode', default='29', choices=['29'], type=str) 17 | parser.add_argument('--model_name', default='', type=str) 18 | parser.add_argument('--img_root', default='', type=str) 19 | parser.add_argument('--test_mode', default='pretrain', type=str) 20 | 21 | args = parser.parse_args() 22 | 23 | INPUT_MODE = args.input_mode 24 | MODEL_MODE = args.model_mode 25 | model_name = args.model_name 26 | test_mode = args.test_mode 27 | img_root = args.img_root 28 | 29 | num_classes = 725 30 | test_list_dir = './data/buaa/' 31 | model_dir = f'./models/{test_mode}/' 32 | model_path = os.path.join(model_dir, model_name) 33 | 34 | def load_model(model, pretrained): 35 | weights = torch.load(pretrained) 36 | weights = weights['state_dict'] 37 | 38 | model_dict = model.state_dict() 39 | 40 | weights = {k.replace('module.',''): v for k, v in weights.items() if k.replace('module.','') in model_dict.keys() and 'fc2' not in k} 41 | print("==> len of weights to be loaded: {}. \n".format(len(weights))) 42 | model.load_state_dict(weights, strict=False) 43 | model.eval() 44 | 45 | 46 | def get_vis_nir_info(): 47 | 48 | vis = np.loadtxt(test_list_dir + 'test_vis_paths.txt', dtype=str) 49 | vis_labels = [int(s.split('/')[0]) for s in vis] 50 | vis = [(p,l) for (p,l) in zip(vis, vis_labels)] 51 | 52 | nir = np.loadtxt(test_list_dir + 'test_nir_paths.txt', dtype=str) 53 | nir_labels = [int(s.split('/')[0]) for s in nir] 54 | nir = [(p,l) for (p,l) in zip(nir, nir_labels)] 55 | 56 | return vis,nir 57 | 58 | 59 | class Embedding: 60 | def __init__(self, root, model): 61 | self.model = model 62 | self.root = root 63 | 64 | self.image_size = (112, 112) 65 | self.batch_size = 1 66 | 67 | def get(self, img): 68 | img_flip = np.fliplr(img) 69 | img = np.transpose(img, (2, 0, 1)) # 1*112*112 70 | img_flip = np.transpose(img_flip, (2, 0, 1)) 71 | input_blob = np.zeros((2, 1, self.image_size[1], self.image_size[0]), 72 | dtype=np.uint8) 73 | input_blob[0] = img 74 | input_blob[1] = img_flip 75 | return input_blob 76 | 77 | @torch.no_grad() 78 | def forward_db(self, batch_data): 79 | imgs = torch.Tensor(batch_data).cuda() 80 | imgs.div_(255) 81 | feat = self.model(imgs) 82 | feat = feat.reshape([self.batch_size, 2 * feat.shape[1]]) 83 | return feat.cpu().numpy() 84 | 85 | def extract_feats_labels(self, data_list): 86 | img_feats = [] 87 | pids = [] 88 | for (imgPath, pid) in data_list: 89 | 90 | img = Image.open(os.path.join(self.root, imgPath)).convert('L') 91 | img = np.array(img) 92 | img = img[..., np.newaxis] 93 | 94 | img_feats.append(self.forward_db(self.get(img)).flatten()) 95 | pids.append(pid) 96 | 97 | img_feats = np.array(img_feats).astype(np.float32) 98 | img_input_feats = img_feats[:, 0:img_feats.shape[1] //2] + img_feats[:, img_feats.shape[1] // 2:] 99 | img_input_feats = img_input_feats / np.sqrt(np.sum(img_input_feats ** 2, -1, keepdims=True)) 100 | 101 | pids = np.array(pids) 102 | 103 | return img_input_feats, pids 104 | 105 | 106 | 107 | if MODEL_MODE == '29': 108 | model = LightCNN_29Layers(num_classes=num_classes) 109 | model.cuda() 110 | 111 | embedding = Embedding(img_root, model) 112 | 113 | if not os.path.exists(model_path): 114 | print("cannot find model ",model_path) 115 | sys.exit() 116 | 117 | load_model(embedding.model, model_path) 118 | vis, nir= get_vis_nir_info() 119 | 120 | feat_vis, label_vis = embedding.extract_feats_labels(vis) 121 | feat_nir, label_nir = embedding.extract_feats_labels(nir) 122 | 123 | labels = np.equal.outer(label_vis, label_nir).astype(np.float32) 124 | print("*" * 16) 125 | print("INPUT_MODE: ", INPUT_MODE) 126 | print("MODEL_MODE: ", MODEL_MODE) 127 | print("model name: ", model_name) 128 | print("*" * 16) 129 | print("[query] feat_nir.shape ",feat_nir.shape) 130 | print("[gallery] feat_vis.shape ",feat_vis.shape) 131 | print("*" * 16) 132 | 133 | acc, tarfar = evaluate2(feat_vis, feat_nir, labels, fars=fars) 134 | 135 | 136 | -------------------------------------------------------------------------------- /utils.py: -------------------------------------------------------------------------------- 1 | import os 2 | import numpy as np 3 | import torch 4 | import torch.nn.functional as F 5 | 6 | 7 | def ort_loss(x, y): 8 | loss = torch.abs((x * y).sum(dim=1)).sum() 9 | loss = loss / float(x.size(0)) 10 | return loss 11 | 12 | 13 | def ang_loss(x, y): 14 | loss = (x * y).sum(dim=1).sum() 15 | loss = loss / float(x.size(0)) 16 | return loss 17 | 18 | def MMD_Loss(fc_nir, fc_vis): 19 | mean_fc_nir = torch.mean(fc_nir, 0) 20 | mean_fc_vis = torch.mean(fc_vis, 0) 21 | loss_mmd = F.mse_loss(mean_fc_nir, mean_fc_vis) 22 | return loss_mmd 23 | 24 | 25 | def rgb2gray(img): 26 | r, g, b = torch.split(img, 1, dim=1) 27 | return torch.mul(r, 0.299) + torch.mul(g, 0.587) + torch.mul(b, 0.114) 28 | 29 | 30 | def save_checkpoint(model, epoch, name="", dataset=''): 31 | if not os.path.exists("model/{}/".format(dataset)): 32 | os.makedirs("model/{}/".format(dataset)) 33 | model_path = "model/{}/".format(dataset) + name + "_e{}.pth.tar".format(epoch) 34 | state = {"epoch": epoch, "state_dict": model.state_dict()} 35 | torch.save(state, model_path) 36 | print("checkpoint saved to {}".format(model_path)) 37 | 38 | 39 | def load_model(model, pretrained): 40 | weights = torch.load(pretrained) 41 | pretrained_dict = weights["state_dict"] 42 | model_dict = model.state_dict() 43 | 44 | # print("to here") 45 | # print(model_dict.keys()) 46 | # print('\n') 47 | 48 | # print(pretrained_dict.keys()) 49 | 50 | # import pdb;pdb.set_trace() 51 | 52 | if 'LightCNN' in pretrained: 53 | tmp = [k for k in pretrained_dict] 54 | if "module." in tmp[0]: 55 | pretrained_dict = {k.replace('module.',''): v for k, v in pretrained_dict.items() if k.replace('module.','') in model_dict} 56 | else: 57 | pretrained_dict = {k: v for k, v in pretrained_dict.items() if k in model_dict and k!='module.weight'} 58 | 59 | print("len of params to be loaded: ",len(pretrained_dict)) 60 | model.load_state_dict(pretrained_dict, strict=False) 61 | 62 | return weights['epoch'] 63 | 64 | 65 | def load_model_train_lightcnn(model, pretrained): 66 | weights = torch.load(pretrained) 67 | pretrained_dict = weights["state_dict"] 68 | model_dict = model.state_dict() 69 | 70 | # print("to here") 71 | # print(model_dict.keys()) 72 | # print('\n') 73 | 74 | # print(pretrained_dict.keys()) 75 | 76 | # import pdb;pdb.set_trace() 77 | 78 | pretrained_dict = {k: v for k, v in pretrained_dict.items() if k in model_dict and 'module.weight' not in k} 79 | 80 | print("len of params to be loaded: ",len(pretrained_dict)) 81 | model.load_state_dict(pretrained_dict, strict=False) 82 | 83 | return weights['epoch'] 84 | 85 | 86 | def set_requires_grad(nets, requires_grad=False): 87 | if not isinstance(nets, list): 88 | nets = [nets] 89 | for net in nets: 90 | if net is not None: 91 | for param in net.parameters(): 92 | param.requires_grad = requires_grad 93 | 94 | 95 | # assign adain_params to AdaIN layers 96 | def assign_adain_params(adain_params, model): 97 | for m in model.modules(): 98 | if m.__class__.__name__ == "AdaptiveInstanceNorm2d": 99 | mean = adain_params[:, :m.num_features] 100 | std = adain_params[:, m.num_features:2*m.num_features] 101 | m.bias = mean.contiguous().view(-1) 102 | m.weight = std.contiguous().view(-1) 103 | if adain_params.size(1) > 2*m.num_features: 104 | adain_params = adain_params[:, 2*m.num_features:] 105 | 106 | 107 | def accuracy(output, target, topk=(1,)): 108 | """Computes the precision@k for the specified values of k""" 109 | maxk = max(topk) 110 | batch_size = target.size(0) 111 | 112 | _, pred = output.topk(maxk, 1, True, True) 113 | pred = pred.t() 114 | 115 | correct = pred.eq(target.unsqueeze(0).expand_as(pred)) 116 | 117 | res = [] 118 | for k in topk: 119 | correct_k = correct[:k].contiguous().view(-1).float().sum(0, keepdim=True) 120 | res.append(correct_k.mul_(100.0 / batch_size)) 121 | return res 122 | 123 | 124 | 125 | def adjust_learning_rate(lr, step, optimizer, epoch): 126 | scale = 0.457305051927326 127 | lr = lr * (scale ** (epoch // step)) 128 | print('lr: {}'.format(lr)) 129 | if (epoch != 0) & (epoch % step == 0): 130 | print('Change lr') 131 | for param_group in optimizer.param_groups: 132 | param_group['lr'] = param_group['lr'] * scale 133 | 134 | 135 | class AverageMeter(object): 136 | def __init__(self): 137 | self.reset() 138 | 139 | def reset(self): 140 | self.val = 0 141 | self.avg = 0 142 | self.sum = 0 143 | self.count = 0 144 | 145 | def update(self, val, n=1): 146 | self.val = val 147 | self.sum += val * n 148 | self.count += n 149 | self.avg = self.sum / self.count 150 | 151 | -------------------------------------------------------------------------------- /evaluate/eval_oulu_112.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import pandas as pd 3 | import os,sys 4 | sys.path.append(os.getcwd()) 5 | print(sys.path) 6 | import argparse 7 | import torch 8 | 9 | from PIL import Image 10 | 11 | from network.lightcnn112 import LightCNN_29Layers 12 | from evaluate import evaluate2 13 | 14 | fars = [10 ** -4, 10 ** -3, 10 ** -2] 15 | 16 | parser = argparse.ArgumentParser() 17 | parser.add_argument('--test_fold_id', default=1, type=int) 18 | parser.add_argument('--input_mode', default='grey', choices=['grey'], type=str) 19 | parser.add_argument('--model_mode', default='29', choices=['29'], type=str) 20 | parser.add_argument('--model_name', default='', type=str) 21 | parser.add_argument('--img_root', default='', type=str) 22 | parser.add_argument('--test_mode', default='pretrain', type=str) 23 | 24 | args = parser.parse_args() 25 | 26 | INPUT_MODE = args.input_mode 27 | MODEL_MODE = args.model_mode 28 | model_name = args.model_name 29 | test_mode = args.test_mode 30 | img_root = args.img_root 31 | 32 | num_classes = 725 33 | test_list_dir = './data/oulu/' 34 | model_dir = f'./models/{test_mode}/' 35 | model_path = os.path.join(model_dir, model_name) 36 | 37 | def load_model(model, pretrained): 38 | weights = torch.load(pretrained) 39 | weights = weights['state_dict'] 40 | 41 | model_dict = model.state_dict() 42 | 43 | weights = {k.replace('module.',''): v for k, v in weights.items() if k.replace('module.','') in model_dict.keys() and 'fc2' not in k} 44 | 45 | print("==> len of weights to be loaded: {}. \n".format(len(weights))) 46 | model.load_state_dict(weights, strict=False) 47 | model.eval() 48 | 49 | class Embedding: 50 | def __init__(self, root, model): 51 | self.model = model 52 | self.root = root 53 | 54 | self.image_size = (112, 112) 55 | self.batch_size = 1 56 | 57 | def get(self, img): 58 | img_flip = np.fliplr(img) 59 | img = np.transpose(img, (2, 0, 1)) # 1*112*112 60 | img_flip = np.transpose(img_flip, (2, 0, 1)) 61 | input_blob = np.zeros((2, 1, self.image_size[1], self.image_size[0]), 62 | dtype=np.uint8) 63 | input_blob[0] = img 64 | input_blob[1] = img_flip 65 | return input_blob 66 | 67 | @torch.no_grad() 68 | def forward_db(self, batch_data): 69 | imgs = torch.Tensor(batch_data).cuda() 70 | imgs.div_(255) 71 | feat = self.model(imgs) 72 | feat = feat.reshape([self.batch_size, 2 * feat.shape[1]]) 73 | return feat.cpu().numpy() 74 | 75 | def extract_feats_labels(self, data_list): 76 | img_feats = [] 77 | pids = [] 78 | for (imgPath, pid) in data_list: 79 | 80 | img = Image.open(os.path.join(self.root, imgPath)).convert('L') 81 | img = np.array(img) 82 | img = img[..., np.newaxis] 83 | 84 | img_feats.append(self.forward_db(self.get(img)).flatten()) 85 | pids.append(pid) 86 | 87 | img_feats = np.array(img_feats).astype(np.float32) 88 | img_input_feats = img_feats[:, 0:img_feats.shape[1] //2] + img_feats[:, img_feats.shape[1] // 2:] 89 | img_input_feats = img_input_feats / np.sqrt(np.sum(img_input_feats ** 2, -1, keepdims=True)) 90 | pids = np.array(pids) 91 | 92 | return img_input_feats, pids 93 | 94 | 95 | def get_vis_nir_info_csv(): 96 | vis = pd.read_csv(test_list_dir + 'vis_test_paths.csv', header=None, sep=' ') 97 | vis_labels = [int(s.strip().split(',')[-1].split('P')[-1]) for s in vis[0]] 98 | vis = [s.strip().split(',')[0] for s in vis[0]] 99 | 100 | nir = pd.read_csv(test_list_dir + 'nir_test_paths.csv', header=None, sep=' ') 101 | nir_labels = [int(s.strip().split(',')[-1].split('P')[-1]) for s in nir[0]] 102 | nir = [s.strip().split(',')[0] for s in nir[0]] 103 | 104 | vis = [(p,l) for (p,l) in zip(vis, vis_labels)] 105 | nir = [(p,l) for (p,l) in zip(nir, nir_labels)] 106 | 107 | return vis,nir 108 | 109 | def get_vis_nir_info_txt(): 110 | def read_file(file_name): 111 | with open(test_list_dir + file_name, 'r') as f: 112 | lines = f.readlines() 113 | paths = [s.strip().split(' ')[0] for s in lines] 114 | labels = [int(s.strip().split(' ')[1]) for s in lines] 115 | info = [(p,l) for (p,l) in zip(paths, labels)] 116 | 117 | return info 118 | 119 | vis = read_file('test_vis_paths.txt') 120 | nir = read_file('test_nir_paths.txt') 121 | 122 | return vis, nir 123 | 124 | 125 | ### Testing pretrain/finetune model 126 | if test_mode == 'pretrain': 127 | vis, nir = get_vis_nir_info_csv() 128 | elif test_mode == "finetune": 129 | vis, nir = get_vis_nir_info_txt() 130 | else: 131 | print("Wrong test_mode!!!") 132 | 133 | if MODEL_MODE == '29': 134 | model = LightCNN_29Layers(num_classes=num_classes) 135 | 136 | model.cuda() 137 | 138 | embedding = Embedding(img_root, model) 139 | 140 | if not os.path.exists(model_path): 141 | print("cannot find model ",model_path) 142 | sys.exit() 143 | 144 | load_model(embedding.model, model_path) 145 | 146 | feat_vis, label_vis = embedding.extract_feats_labels(vis) 147 | feat_nir, label_nir = embedding.extract_feats_labels(nir) 148 | 149 | labels = np.equal.outer(label_vis, label_nir).astype(np.float32) 150 | 151 | print("*" * 16) 152 | print("INPUT_MODE: ", INPUT_MODE) 153 | print("MODEL_MODE: ", MODEL_MODE) 154 | print("model path: ", model_path) 155 | print("*" * 16) 156 | print("[query] feat_nir.shape ",feat_nir.shape) 157 | print("[gallery] feat_vis.shape ",feat_vis.shape) 158 | print("*" * 16) 159 | 160 | acc, tarfar = evaluate2(feat_vis, feat_nir, labels, fars=fars) -------------------------------------------------------------------------------- /evaluate/eval_lamp_112.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import os,sys 3 | sys.path.append(os.getcwd()) 4 | import argparse 5 | 6 | from PIL import Image 7 | 8 | import torch 9 | 10 | from network.lightcnn112 import LightCNN_29Layers 11 | from evaluate import evaluate2 12 | 13 | fars = [10 ** -4, 10 ** -3, 10 ** -2] 14 | 15 | parser = argparse.ArgumentParser() 16 | parser.add_argument('--test_fold_id', default=1, type=int) 17 | parser.add_argument('--input_mode', default='grey', choices=['grey'], type=str) 18 | parser.add_argument('--model_mode', default='29', choices=['29'], type=str) 19 | parser.add_argument('--model_name', default='', type=str) 20 | parser.add_argument('--img_root', default='', type=str) 21 | parser.add_argument('--test_mode', default='pretrain', type=str) 22 | args = parser.parse_args() 23 | 24 | INPUT_MODE = args.input_mode 25 | MODEL_MODE = args.model_mode 26 | model_name = args.model_name 27 | test_mode = args.test_mode 28 | img_root = args.img_root 29 | 30 | tfi = args.test_fold_id 31 | num_classes = 725 32 | test_list_dir = './data/lamp/' 33 | model_dir = f'./models/{test_mode}/' 34 | model_path = os.path.join(model_dir, model_name) 35 | 36 | def load_model(model, pretrained): 37 | weights = torch.load(pretrained) 38 | weights = weights['state_dict'] 39 | 40 | model_dict = model.state_dict() 41 | 42 | weights = {k.replace('module.',''): v for k, v in weights.items() if k.replace('module.','') in model_dict.keys()} 43 | print("==> len of weights to be loaded: {}. \n".format(len(weights))) 44 | 45 | model.load_state_dict(weights, strict=False) 46 | model.eval() 47 | 48 | def get_vis_nir_info(test_fold_id): 49 | def get_data(test_fold_id, mode='vis'): 50 | name = 'gallery_vis%d.txt' % (test_fold_id) if mode=='vis' else 'probe_nir%d.txt' % (test_fold_id) 51 | file_data = np.genfromtxt(test_list_dir + name , usecols=(0,1), skip_header=1, dtype=str) 52 | paths = file_data[:,0] 53 | 54 | # paths = [p for p in paths if os.path.exists(img_root + p)] 55 | return paths 56 | 57 | vis = get_data(test_fold_id, mode='vis') 58 | nir = get_data(test_fold_id, mode='nir') 59 | 60 | return vis, nir 61 | 62 | 63 | class Embedding: 64 | def __init__(self, root, model): 65 | self.model = model 66 | self.root = root 67 | 68 | self.image_size = (112, 112) 69 | self.batch_size = 1 70 | 71 | def get(self, img): 72 | img_flip = np.fliplr(img) 73 | img = np.transpose(img, (2, 0, 1)) # 1*112*112 74 | img_flip = np.transpose(img_flip, (2, 0, 1)) 75 | input_blob = np.zeros((2, 1, self.image_size[1], self.image_size[0]), 76 | dtype=np.uint8) 77 | input_blob[0] = img 78 | input_blob[1] = img_flip 79 | return input_blob 80 | 81 | @torch.no_grad() 82 | def forward_db(self, batch_data): 83 | imgs = torch.Tensor(batch_data).cuda() 84 | imgs.div_(255) 85 | feat = self.model(imgs) 86 | feat = feat.reshape([self.batch_size, 2 * feat.shape[1]]) 87 | return feat.cpu().numpy() 88 | 89 | def extract_feats_labels(self, data_list): 90 | img_feats = [] 91 | for imgPath in data_list: 92 | 93 | img = Image.open(os.path.join(self.root, imgPath)).convert('L') 94 | img = np.array(img) 95 | img = img[..., np.newaxis] 96 | 97 | img_feats.append(self.forward_db(self.get(img)).flatten()) 98 | 99 | img_feats = np.array(img_feats).astype(np.float32) 100 | 101 | img_input_feats = img_feats[:, 0:img_feats.shape[1] //2] + img_feats[:, img_feats.shape[1] // 2:] 102 | img_input_feats = img_input_feats / np.sqrt(np.sum(img_input_feats ** 2, -1, keepdims=True)) 103 | 104 | return img_input_feats 105 | 106 | 107 | 108 | if MODEL_MODE == '29': 109 | model = LightCNN_29Layers(num_classes=num_classes) 110 | model.cuda() 111 | 112 | embedding = Embedding(img_root, model) 113 | 114 | ############### test pre-trained models 115 | if tfi == -1: 116 | n_fold = 10 117 | acc_ = [] 118 | tarfar_ = np.zeros((n_fold, 4)) 119 | for tf in range(n_fold): 120 | load_model(embedding.model, model_path) 121 | vis, nir = get_vis_nir_info(tf+1) 122 | 123 | feat_vis = embedding.extract_feats_labels(vis) 124 | feat_nir = embedding.extract_feats_labels(nir) 125 | 126 | label_matrix = np.load(test_list_dir + 'binary_lable_matrix_%d.npy' % (tf+1)) 127 | label_matrix = label_matrix.T 128 | 129 | print("*" * 16) 130 | print("Fold id ", tf+1) 131 | print("Model: ", model_path) 132 | print("[query] feat_nir.shape ",feat_nir.shape) 133 | print("[gallery] feat_vis.shape ",feat_vis.shape) 134 | print("*" * 16) 135 | 136 | acc, tarfar = evaluate2(feat_vis, feat_nir, label_matrix, fars=fars) 137 | 138 | acc_.append(acc[0]) 139 | tarfar_[tf,...] = np.array(tarfar) 140 | 141 | print('\n') 142 | print("*" * 16) 143 | print("MEAN") 144 | print("*" * 16) 145 | 146 | print("Rank 1 = {:.3%} +- {:.2%}".format(np.mean(acc_), np.std(acc_))) 147 | var_mean = tarfar_.mean(0) 148 | var_std = tarfar_.std(0) 149 | for fpr_iter in np.arange(len(fars)): 150 | print("TAR {:.3%} +- {:.2%} @ FAR {:.4%}".format(var_mean[fpr_iter], var_std[fpr_iter], fars[fpr_iter])) 151 | 152 | else: 153 | load_model(embedding.model, model_path) 154 | 155 | vis, nir= get_vis_nir_info(tfi) 156 | 157 | feat_vis = embedding.extract_feats_labels(vis) 158 | feat_nir = embedding.extract_feats_labels(nir) 159 | 160 | label_matrix = np.load(test_list_dir + 'binary_lable_matrix_%d.npy' % (tfi)) 161 | label_matrix = label_matrix.T 162 | 163 | print("*" * 16) 164 | print("Fold id ", tfi) 165 | print("[query] feat_nir.shape ",feat_nir.shape) 166 | print("[gallery] feat_vis.shape ",feat_vis.shape) 167 | print("*" * 16) 168 | 169 | acc, tarfar = evaluate2(feat_vis, feat_nir, label_matrix, fars=fars) -------------------------------------------------------------------------------- /network/lightcnn112.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import torch.nn as nn 3 | import torch.nn.functional as F 4 | 5 | 6 | 7 | 8 | class mfm(nn.Module): 9 | def __init__(self, in_channels, out_channels, kernel_size=3, stride=1, padding=1, type=1): 10 | super(mfm, self).__init__() 11 | self.out_channels = out_channels 12 | if type == 1: 13 | self.filter = nn.Conv2d(in_channels, 2 * out_channels, kernel_size=kernel_size, stride=stride, 14 | padding=padding) 15 | else: 16 | self.filter = nn.Linear(in_channels, 2 * out_channels) 17 | 18 | def forward(self, x): 19 | x = self.filter(x) 20 | out = torch.split(x, self.out_channels, 1) 21 | return torch.max(out[0], out[1]) 22 | 23 | 24 | class group(nn.Module): 25 | def __init__(self, in_channels, out_channels, kernel_size, stride, padding): 26 | super(group, self).__init__() 27 | self.conv_a = mfm(in_channels, in_channels, 1, 1, 0) 28 | self.conv = mfm(in_channels, out_channels, kernel_size, stride, padding) 29 | 30 | def forward(self, x): 31 | x = self.conv_a(x) 32 | x = self.conv(x) 33 | return x 34 | 35 | 36 | class resblock(nn.Module): 37 | def __init__(self, in_channels, out_channels): 38 | super(resblock, self).__init__() 39 | self.conv1 = mfm(in_channels, out_channels, kernel_size=3, stride=1, padding=1) 40 | self.conv2 = mfm(out_channels, out_channels, kernel_size=3, stride=1, padding=1) 41 | 42 | def forward(self, x): 43 | res = x 44 | out = self.conv1(x) 45 | out = self.conv2(out) 46 | out = out + res 47 | return out 48 | 49 | 50 | 51 | class network_29layers(nn.Module): 52 | def __init__(self, block, layers, num_classes=79077): 53 | super(network_29layers, self).__init__() 54 | self.conv1 = mfm(1, 48, 5, 1, 2) 55 | self.pool1 = nn.MaxPool2d(kernel_size=2, stride=2, ceil_mode=True) 56 | self.block1 = self._make_layer(block, layers[0], 48, 48) 57 | self.group1 = group(48, 96, 3, 1, 1) 58 | self.pool2 = nn.MaxPool2d(kernel_size=2, stride=2, ceil_mode=True) 59 | self.block2 = self._make_layer(block, layers[1], 96, 96) 60 | self.group2 = group(96, 192, 3, 1, 1) 61 | self.pool3 = nn.MaxPool2d(kernel_size=2, stride=2, ceil_mode=True) 62 | self.block3 = self._make_layer(block, layers[2], 192, 192) 63 | self.group3 = group(192, 128, 3, 1, 1) 64 | self.block4 = self._make_layer(block, layers[3], 128, 128) 65 | self.group4 = group(128, 128, 3, 1, 1) 66 | self.pool4 = nn.MaxPool2d(kernel_size=2, stride=2, ceil_mode=True) 67 | self.fc = mfm(7*7*128, 256, type=0) 68 | self.fc2 = nn.Linear(256, num_classes) 69 | 70 | def _make_layer(self, block, num_blocks, in_channels, out_channels): 71 | layers = [] 72 | for i in range(0, num_blocks): 73 | layers.append(block(in_channels, out_channels)) 74 | return nn.Sequential(*layers) 75 | 76 | def forward(self, x): 77 | x = self.conv1(x) 78 | x = self.pool1(x) 79 | 80 | x = self.block1(x) 81 | x = self.group1(x) 82 | x = self.pool2(x) 83 | 84 | x = self.block2(x) 85 | x = self.group2(x) 86 | x = self.pool3(x) 87 | 88 | x = self.block3(x) 89 | x = self.group3(x) 90 | x = self.block4(x) 91 | x = self.group4(x) 92 | x = self.pool4(x) 93 | 94 | x = x.view(x.size(0), -1) 95 | fc = self.fc(x) 96 | 97 | if self.training: 98 | x = F.dropout(fc, training=self.training) 99 | out = self.fc2(x) 100 | return out, F.normalize(fc,p=2,dim=1) 101 | return F.normalize(fc,p=2,dim=1) 102 | 103 | 104 | 105 | 106 | ################################ 107 | ## cosface nets 108 | ################################ 109 | 110 | from torch.nn import Parameter 111 | 112 | 113 | class network_29layers_cosface(nn.Module): 114 | def __init__(self, block, layers, num_classes=79077): 115 | super(network_29layers_cosface, self).__init__() 116 | self.conv1 = mfm(1, 48, 5, 1, 2) 117 | self.pool1 = nn.MaxPool2d(kernel_size=2, stride=2, ceil_mode=True) 118 | self.block1 = self._make_layer(block, layers[0], 48, 48) 119 | self.group1 = group(48, 96, 3, 1, 1) 120 | self.pool2 = nn.MaxPool2d(kernel_size=2, stride=2, ceil_mode=True) 121 | self.block2 = self._make_layer(block, layers[1], 96, 96) 122 | self.group2 = group(96, 192, 3, 1, 1) 123 | self.pool3 = nn.MaxPool2d(kernel_size=2, stride=2, ceil_mode=True) 124 | self.block3 = self._make_layer(block, layers[2], 192, 192) 125 | self.group3 = group(192, 128, 3, 1, 1) 126 | self.block4 = self._make_layer(block, layers[3], 128, 128) 127 | self.group4 = group(128, 128, 3, 1, 1) 128 | self.pool4 = nn.MaxPool2d(kernel_size=2, stride=2, ceil_mode=True) 129 | self.fc = mfm(7*7*128, 256, type=0) 130 | 131 | self.weight = Parameter(torch.Tensor(num_classes, 256)) 132 | nn.init.xavier_uniform_(self.weight) 133 | 134 | 135 | def _make_layer(self, block, num_blocks, in_channels, out_channels): 136 | layers = [] 137 | for i in range(0, num_blocks): 138 | layers.append(block(in_channels, out_channels)) 139 | return nn.Sequential(*layers) 140 | 141 | def cosine_sim(self, x1, x2, dim=1, eps=1e-8): 142 | ip = torch.mm(x1, x2.t()) 143 | w1 = torch.norm(x1, 2, dim) 144 | w2 = torch.norm(x2, 2, dim) 145 | return ip / torch.ger(w1,w2).clamp(min=eps) 146 | 147 | def forward(self, x): 148 | x = self.conv1(x) 149 | x = self.pool1(x) 150 | 151 | x = self.block1(x) 152 | x = self.group1(x) 153 | x = self.pool2(x) 154 | 155 | x = self.block2(x) 156 | x = self.group2(x) 157 | x = self.pool3(x) 158 | 159 | x = self.block3(x) 160 | x = self.group3(x) 161 | x = self.block4(x) 162 | x = self.group4(x) 163 | x = self.pool4(x) 164 | 165 | x = x.view(x.size(0), -1) 166 | fc = self.fc(x) 167 | 168 | if self.training: 169 | x = F.dropout(fc, training=self.training) 170 | out = self.cosine_sim(x, self.weight) 171 | return out, F.normalize(fc, p=2, dim=1) 172 | return F.normalize(fc, p=2, dim=1) 173 | 174 | 175 | def LightCNN_29Layers(**kwargs): 176 | model = network_29layers(resblock, [1, 2, 3, 4], **kwargs) 177 | return model 178 | 179 | def LightCNN_29Layers_cosface(**kwargs): 180 | model = network_29layers_cosface(resblock, [1, 2, 3, 4], **kwargs) 181 | return model 182 | -------------------------------------------------------------------------------- /evaluate/eval_casia_112.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import pandas as pd 3 | import os,sys 4 | sys.path.append(os.getcwd()) 5 | import argparse 6 | 7 | from PIL import Image 8 | import torch 9 | 10 | from network.lightcnn112 import LightCNN_29Layers 11 | from evaluate import evaluate2 12 | 13 | fars = [10 ** -4, 10 ** -3, 10 ** -2] 14 | 15 | parser = argparse.ArgumentParser() 16 | parser.add_argument('--test_fold_id', default=1, type=int) 17 | parser.add_argument('--input_mode', default='grey', choices=['grey'], type=str) 18 | parser.add_argument('--model_mode', default='29', choices=['29'], type=str) 19 | parser.add_argument('--model_name', default='', type=str) 20 | parser.add_argument('--img_root', default='', type=str) 21 | parser.add_argument('--test_mode', default='pretrain', type=str) 22 | 23 | args = parser.parse_args() 24 | 25 | INPUT_MODE = args.input_mode 26 | MODEL_MODE = args.model_mode 27 | model_name = args.model_name 28 | test_mode = args.test_mode 29 | img_root = args.img_root 30 | 31 | print("*" * 16) 32 | print("INPUT_MODE: ", INPUT_MODE) 33 | print("MODEL_MODE: ", MODEL_MODE) 34 | print("model name: ", model_name) 35 | print("*" * 16) 36 | 37 | tfi = args.test_fold_id 38 | num_classes = 725 39 | test_list_dir = 'data/casia/' 40 | model_dir = f'./models/{test_mode}/' 41 | model_path = os.path.join(model_dir, model_name) 42 | 43 | def load_model(model, pretrained): 44 | weights = torch.load(pretrained) 45 | weights = weights['state_dict'] 46 | 47 | model_dict = model.state_dict() 48 | 49 | weights = {k.replace('module.',''): v for k, v in weights.items() if k.replace('module.','') in model_dict.keys() and 'fc2' not in k} 50 | print("==> len of weights to be loaded: {}. \n".format(len(weights))) 51 | model.load_state_dict(weights, strict=False) 52 | model.eval() 53 | 54 | 55 | class Embedding: 56 | def __init__(self, root, model): 57 | self.model = model 58 | self.root = root 59 | 60 | self.image_size = (112, 112) 61 | self.batch_size = 1 62 | 63 | def get(self, img): 64 | img_flip = np.fliplr(img) 65 | img = np.transpose(img, (2, 0, 1)) # 1*112*112 66 | img_flip = np.transpose(img_flip, (2, 0, 1)) 67 | input_blob = np.zeros((2, 1, self.image_size[1], self.image_size[0]), 68 | dtype=np.uint8) 69 | input_blob[0] = img 70 | input_blob[1] = img_flip 71 | return input_blob 72 | 73 | @torch.no_grad() 74 | def forward_db(self, batch_data): 75 | imgs = torch.Tensor(batch_data).cuda() 76 | imgs.div_(255) 77 | feat = self.model(imgs) 78 | feat = feat.reshape([self.batch_size, 2 * feat.shape[1]]) 79 | return feat.cpu().numpy() 80 | 81 | def extract_feats_labels(self, data_list): 82 | img_feats = [] 83 | pids = [] 84 | for (imgPath, pid) in data_list: 85 | img = Image.open(os.path.join(self.root, imgPath)).convert('L') 86 | 87 | img = np.array(img) 88 | img = img[..., np.newaxis] 89 | 90 | img_feats.append(self.forward_db(self.get(img)).flatten()) 91 | pids.append(pid) 92 | 93 | img_feats = np.array(img_feats).astype(np.float32) 94 | img_input_feats = img_feats[:, 0:img_feats.shape[1] //2] + img_feats[:, img_feats.shape[1] // 2:] 95 | img_input_feats = img_input_feats / np.sqrt(np.sum(img_input_feats ** 2, -1, keepdims=True)) 96 | pids = np.array(pids) 97 | 98 | return img_input_feats, pids 99 | 100 | 101 | def get_vis_nir_info(test_fold_id): 102 | vis = pd.read_csv(os.path.join(test_list_dir, 'vis_gallery_%d.txt' % test_fold_id), header=None, sep=' ') 103 | vis_labels = [int(s.split('\\')[-2]) for s in vis[0]] 104 | vis = vis[0].apply(lambda s: rename_path(s)).tolist() 105 | 106 | nir = pd.read_csv(os.path.join(test_list_dir, 'nir_probe_%d.txt' % test_fold_id), header=None, sep=' ') 107 | nir_labels = [int(s.split('\\')[-2]) for s in nir[0]] 108 | nir = nir[0].apply(lambda s: rename_path(s)).tolist() 109 | 110 | vis = [(p,l) for (p,l) in zip(vis, vis_labels)] 111 | nir = [(p,l) for (p,l) in zip(nir, nir_labels)] 112 | 113 | return vis,nir 114 | 115 | def rename_path(s): 116 | """messy path names, inconsistency between 10-folds and how data are actually saved""" 117 | s = s.split(".")[0] 118 | gr, mod, id, img = s.split("\\") 119 | ext = 'jpg' if (mod == 'VIS') else 'bmp' 120 | return "%s/%s_%s_%s_%s.%s" % (mod, gr, mod, id, img, ext) 121 | 122 | 123 | 124 | if MODEL_MODE == '29': 125 | model = LightCNN_29Layers(num_classes=num_classes) 126 | model.cuda() 127 | embedding = Embedding(img_root, model) 128 | 129 | ############### test pre-trained models 130 | if tfi == -1: 131 | n_fold = 10 132 | acc_ = [] 133 | tarfar_ = np.zeros((n_fold, 4)) 134 | for tf in range(n_fold): 135 | 136 | load_model(embedding.model, model_path) 137 | vis, nir= get_vis_nir_info(tf+1) 138 | 139 | feat_vis, label_vis = embedding.extract_feats_labels(vis) 140 | feat_nir, label_nir = embedding.extract_feats_labels(nir) 141 | 142 | labels = np.equal.outer(label_vis, label_nir).astype(np.float32) 143 | 144 | print("*" * 16) 145 | print("Fold id ", tf+1) 146 | print("Model: ", model_path) 147 | print("[query] feat_nir.shape ",feat_nir.shape) 148 | print("[gallery] feat_vis.shape ",feat_vis.shape) 149 | print("*" * 16) 150 | 151 | acc, tarfar = evaluate2(feat_vis, feat_nir, labels, fars=fars) 152 | 153 | acc_.append(acc[0]) 154 | tarfar_[tf,...] = np.array(tarfar) 155 | 156 | print('\n') 157 | print("*" * 16) 158 | print("MEAN") 159 | print("*" * 16) 160 | 161 | print("Rank 1 = {:.3%} +- {:.2%}".format(np.mean(acc_), np.std(acc_))) 162 | var_mean = tarfar_.mean(0) 163 | var_std = tarfar_.std(0) 164 | for fpr_iter in np.arange(len(fars)): 165 | print("TAR {:.3%} +- {:.2%} @ FAR {:.4%}".format(var_mean[fpr_iter], var_std[fpr_iter], fars[fpr_iter])) 166 | 167 | 168 | else: 169 | if not os.path.exists(model_path): 170 | print("cannot find model ",model_path) 171 | sys.exit() 172 | 173 | model = load_model(embedding.model, model_path) 174 | 175 | vis, nir= get_vis_nir_info(tfi) 176 | 177 | feat_vis, label_vis = embedding.extract_feats_labels(vis) 178 | feat_nir, label_nir = embedding.extract_feats_labels(nir) 179 | 180 | labels = np.equal.outer(label_vis, label_nir).astype(np.float32) 181 | 182 | print("*" * 16) 183 | print("Fold id ", tfi) 184 | print("[query] feat_nir.shape ",feat_nir.shape) 185 | print("[gallery] feat_vis.shape ",feat_vis.shape) 186 | print("*" * 16) 187 | 188 | acc, tarfar = evaluate2(feat_vis, feat_nir, labels, fars=fars) 189 | 190 | -------------------------------------------------------------------------------- /train.py: -------------------------------------------------------------------------------- 1 | import os 2 | import argparse 3 | import random 4 | import numpy as np 5 | 6 | import torch 7 | import torch.nn as nn 8 | import torch.backends.cudnn as cudnn 9 | 10 | from utils import * 11 | from network.lightcnn112 import LightCNN_29Layers_cosface 12 | from losses import IDMMD, CosFace 13 | from dataset_mix import Real_Dataset_112_paired, IdentitySampler, GenIdx 14 | 15 | parser = argparse.ArgumentParser() 16 | parser.add_argument('--gpu_ids', default='0,1', type=str) 17 | parser.add_argument('--workers', default=8, type=int) 18 | parser.add_argument('--epochs', default=15, type=int) 19 | parser.add_argument('--pre_epoch', default=0, type=int) 20 | parser.add_argument('--batch_size', default=64, type=int) 21 | parser.add_argument('--lr', default=0.001, type=float) 22 | parser.add_argument('--momentum', default=0.9, type=float) 23 | parser.add_argument('--weight_decay', default=2e-4) 24 | parser.add_argument('--step_size', default=5, type=int) 25 | parser.add_argument('--print_iter', default=5, type=int) 26 | parser.add_argument('--save_name', default='', type=str) 27 | parser.add_argument('--seed', default=1000, type=int) 28 | parser.add_argument('--weights_lightcnn', default='', type=str) 29 | parser.add_argument('--dataset', default='CASIA', type=str) 30 | 31 | parser.add_argument('--img_root_R', default='', type=str) 32 | parser.add_argument('--train_list_R', default='', type=str) 33 | 34 | parser.add_argument('--input_mode', default='red', choices=['grey'], type=str) 35 | parser.add_argument('--model_mode', default='9',choices=['9','29'], type=str) 36 | 37 | 38 | def main(): 39 | global args 40 | args = parser.parse_args() 41 | print(args) 42 | 43 | os.environ["CUDA_VISIBLE_DEVICES"] = args.gpu_ids 44 | cudnn.benchmark = True 45 | cudnn.enabled = True 46 | 47 | random.seed(args.seed) 48 | np.random.seed(args.seed) 49 | torch.manual_seed(args.seed) 50 | torch.cuda.manual_seed(args.seed) 51 | 52 | dataset = 'lamp' if args.dataset == 'LAMP-HQ' else args.dataset.lower() 53 | 54 | # train loader of real data 55 | real_dataset_paired = Real_Dataset_112_paired(args) 56 | vis_pos, nir_pos = GenIdx(real_dataset_paired.vis_labels, real_dataset_paired.nir_labels) 57 | sampler = IdentitySampler(real_dataset_paired.vis_labels, real_dataset_paired.nir_labels, vis_pos, nir_pos, args.batch_size, 4) 58 | 59 | real_dataset_paired.visIndex = sampler.visIndex 60 | real_dataset_paired.nirIndex = sampler.nirIndex 61 | 62 | train_loader_real_paired = torch.utils.data.DataLoader( 63 | real_dataset_paired, batch_size=args.batch_size, sampler=sampler, num_workers=args.workers, pin_memory=True) 64 | 65 | num_classes = real_dataset_paired.num_classes 66 | 67 | model = LightCNN_29Layers_cosface(num_classes=num_classes) 68 | 69 | model = torch.nn.DataParallel(model).cuda() 70 | 71 | # load pre trained model 72 | if args.pre_epoch: 73 | print('load pretrained model of epoch %d' % args.pre_epoch) 74 | load_model(model, "./model/lightCNN_epoch_%d.pth.tar" % args.pre_epoch) 75 | else: 76 | print("=> loading pretrained lightcnn '{}'".format(args.weights_lightcnn)) 77 | load_model_train_lightcnn(model, args.weights_lightcnn) 78 | 79 | # criterion 80 | criterion = nn.CrossEntropyLoss().cuda() 81 | criterion_idmmd = IDMMD().cuda() 82 | margin_softmax = CosFace(s=64.0, m=0.4).cuda() 83 | 84 | ''' 85 | Stage I: model pretrained for last fc2 parameters 86 | ''' 87 | params_pretrain = [] 88 | for name, value in model.named_parameters(): 89 | if name == "module.weight": 90 | params_pretrain += [{"params": value, "lr": 1 * args.lr}] 91 | 92 | print("Stage I: trainable params ", len(params_pretrain)) 93 | assert len(params_pretrain) > 0 94 | 95 | # optimizer 96 | optimizer_pretrain = torch.optim.SGD(params_pretrain, args.lr, momentum=args.momentum, weight_decay=args.weight_decay) 97 | 98 | for epoch in range(1, 5): 99 | pre_train_pair(train_loader_real_paired, model, criterion, margin_softmax, optimizer_pretrain, epoch) 100 | # save_checkpoint(model, epoch, args.save_name+"_pretrain", dataset) 101 | 102 | ''' 103 | Stage II: model finetune for full network 104 | ''' 105 | # optimizer 106 | optimizer = torch.optim.SGD(model.parameters(), args.lr, momentum=args.momentum, weight_decay=args.weight_decay) 107 | 108 | start_epoch = args.pre_epoch + 1 109 | for epoch in range(start_epoch, args.epochs + 1): 110 | adjust_learning_rate(args.lr, args.step_size, optimizer, epoch) 111 | train(train_loader_real_paired, model, criterion, criterion_idmmd, margin_softmax, optimizer, epoch) 112 | if epoch == args.epochs or epoch % 10 == 0: 113 | save_checkpoint(model, epoch, args.save_name, dataset) 114 | 115 | 116 | def pre_train_pair(train_loader, model, criterion, margin_softmax, optimizer, epoch): 117 | top1 = AverageMeter() 118 | top5 = AverageMeter() 119 | 120 | model.train() 121 | for i, (vis_img, nir_img, vis_label, nir_label) in enumerate(train_loader): 122 | 123 | input = torch.cat((vis_img, nir_img), 0).cuda(non_blocking=True) 124 | label = torch.cat((vis_label, nir_label), 0).cuda(non_blocking=True) 125 | batch_size = input.size(0) 126 | 127 | if batch_size < 2*args.batch_size: 128 | continue 129 | 130 | # forward 131 | output = model(input)[0] 132 | output = margin_softmax(output, label) 133 | loss = criterion(output, label) 134 | 135 | optimizer.zero_grad() 136 | loss.backward() 137 | optimizer.step() 138 | 139 | # measure accuracy and record loss 140 | prec1, prec5 = accuracy(output.data, label.data, topk=(1, 5)) 141 | top1.update(prec1.item(), batch_size) 142 | top5.update(prec5.item(), batch_size) 143 | 144 | # print log 145 | if i % args.print_iter == 0: 146 | info = "====> Epoch: [{:0>3d}][{:3d}/{:3d}] | ".format(epoch, i, len(train_loader)) 147 | info += "Loss: ce: {:4.3f} | ".format(loss.item()) 148 | info += "Prec@1: {:4.2f} ({:4.2f}) Prec@5: {:4.2f} ({:4.2f})".format(top1.val, top1.avg, top5.val, top5.avg) 149 | print(info) 150 | 151 | 152 | def train(train_loader, model, criterion, criterion_idmmd, margin_softmax, optimizer, epoch, beta = 100): 153 | top1 = AverageMeter() 154 | top5 = AverageMeter() 155 | 156 | model.train() 157 | for i, (vis_img, nir_img, vis_label, nir_label) in enumerate(train_loader): 158 | 159 | input = torch.cat((vis_img, nir_img), 0).cuda(non_blocking=True) 160 | label = torch.cat((vis_label, nir_label), 0).cuda(non_blocking=True) 161 | batch_size = input.size(0) 162 | 163 | if batch_size < 2*args.batch_size: 164 | continue 165 | 166 | # forward 167 | output, fc = model(input) 168 | output = margin_softmax(output, label) 169 | loss_ce = criterion(output, label) 170 | 171 | num_vis = vis_img.size(0) 172 | num_nir = nir_img.size(0) 173 | fc_vis, fc_nir = torch.split(fc, [num_vis, num_nir], dim=0) 174 | 175 | loss_idmmd = criterion_idmmd(fc_vis, fc_nir, label[:vis_img.size(0)]) 176 | 177 | loss = loss_ce + beta * loss_idmmd 178 | 179 | optimizer.zero_grad() 180 | loss.backward() 181 | optimizer.step() 182 | 183 | # measure accuracy and record loss 184 | prec1, prec5 = accuracy(output.data, label.data, topk=(1, 5)) 185 | top1.update(prec1.item(), batch_size) 186 | top5.update(prec5.item(), batch_size) 187 | 188 | # print log 189 | if i % args.print_iter == 0: 190 | info = "====> Epoch: [{:0>3d}][{:3d}/{:3d}] | ".format(epoch, i, len(train_loader)) 191 | info += "Loss_ce: {:4.3f} | ".format(loss_ce.data) 192 | info += "loss_idmmd: {:4.3f} | ".format(loss_idmmd.data) 193 | info += "Loss_all: {:4.3f} | ".format(loss.item()) 194 | info += "Prec@1: {:4.2f} ({:4.2f}) Prec@5: {:4.2f} ({:4.2f})".format(top1.val, top1.avg, top5.val, top5.avg) 195 | print(info) 196 | 197 | 198 | if __name__ == "__main__": 199 | main() 200 | -------------------------------------------------------------------------------- /data/lamp/gallery_vis1.txt: -------------------------------------------------------------------------------- 1 | VIS/VIS_FP0001_1_a.jpg FP0001 2 | VIS/VIS_FP0003_1_a.jpg FP0003 3 | VIS/VIS_FP0006_1_a.jpg FP0006 4 | VIS/VIS_FP0011_1_a.jpg FP0011 5 | VIS/VIS_FP0013_1_a.jpg FP0013 6 | VIS/VIS_FP0014_1_a.jpg FP0014 7 | VIS/VIS_FP0015_1_a.jpg FP0015 8 | VIS/VIS_FP0022_1_a.jpg FP0022 9 | VIS/VIS_FP0023_1_a.jpg FP0023 10 | VIS/VIS_FP0026_1_a.jpg FP0026 11 | VIS/VIS_FP0028_1_a.jpg FP0028 12 | VIS/VIS_FP0030_1_a.jpg FP0030 13 | VIS/VIS_FP0036_1_a.jpg FP0036 14 | VIS/VIS_FP0037_1_a.jpg FP0037 15 | VIS/VIS_FP0039_1_a.jpg FP0039 16 | VIS/VIS_FP0053_1_a.jpg FP0053 17 | VIS/VIS_FP0058_1_a.jpg FP0058 18 | VIS/VIS_FP0059_1_a.jpg FP0059 19 | VIS/VIS_FP0064_1_a.jpg FP0064 20 | VIS/VIS_FP0065_1_a.jpg FP0065 21 | VIS/VIS_FP0067_1_a.jpg FP0067 22 | VIS/VIS_FP0069_1_a.jpg FP0069 23 | VIS/VIS_FP0070_1_a.jpg FP0070 24 | VIS/VIS_FP0074_1_a.jpg FP0074 25 | VIS/VIS_FP0077_1_a.jpg FP0077 26 | VIS/VIS_FP0078_1_a.jpg FP0078 27 | VIS/VIS_FP0080_1_a.jpg FP0080 28 | VIS/VIS_FP0081_1_a.jpg FP0081 29 | VIS/VIS_FP0086_1_a.jpg FP0086 30 | VIS/VIS_FP0089_1_a.jpg FP0089 31 | VIS/VIS_FP0091_1_a.jpg FP0091 32 | VIS/VIS_FP0098_1_a.jpg FP0098 33 | VIS/VIS_FP0099_1_a.jpg FP0099 34 | VIS/VIS_FP0100_1_a.jpg FP0100 35 | VIS/VIS_FP0101_1_a.jpg FP0101 36 | VIS/VIS_FP0109_1_a.jpg FP0109 37 | VIS/VIS_FP0114_1_a.jpg FP0114 38 | VIS/VIS_FP0115_1_a.jpg FP0115 39 | VIS/VIS_FP0117_1_a.jpg FP0117 40 | VIS/VIS_FP0118_1_a.jpg FP0118 41 | VIS/VIS_FP0120_1_a.jpg FP0120 42 | VIS/VIS_FP0122_1_a.jpg FP0122 43 | VIS/VIS_FP0123_1_a.jpg FP0123 44 | VIS/VIS_FP0124_1_a.jpg FP0124 45 | VIS/VIS_FP0131_1_a.jpg FP0131 46 | VIS/VIS_FP0134_1_a.jpg FP0134 47 | VIS/VIS_FP0135_1_a.jpg FP0135 48 | VIS/VIS_FP0140_1_a.jpg FP0140 49 | VIS/VIS_FP0141_1_a.jpg FP0141 50 | VIS/VIS_FP0143_1_a.jpg FP0143 51 | VIS/VIS_FP0147_1_a.jpg FP0147 52 | VIS/VIS_FP0148_1_a.jpg FP0148 53 | VIS/VIS_FP0153_1_a.jpg FP0153 54 | VIS/VIS_FP0154_1_a.jpg FP0154 55 | VIS/VIS_FP0155_1_a.jpg FP0155 56 | VIS/VIS_FP0158_1_a.jpg FP0158 57 | VIS/VIS_FP0160_1_a.jpg FP0160 58 | VIS/VIS_FP0163_1_a.jpg FP0163 59 | VIS/VIS_FP0164_1_a.jpg FP0164 60 | VIS/VIS_FP0171_1_a.jpg FP0171 61 | VIS/VIS_FP0172_1_a.jpg FP0172 62 | VIS/VIS_FP0178_1_a.jpg FP0178 63 | VIS/VIS_FP0183_1_a.jpg FP0183 64 | VIS/VIS_FP0185_1_a.jpg FP0185 65 | VIS/VIS_FP0188_1_a.jpg FP0188 66 | VIS/VIS_FP0190_1_a.jpg FP0190 67 | VIS/VIS_FP0191_1_a.jpg FP0191 68 | VIS/VIS_FP0192_1_a.jpg FP0192 69 | VIS/VIS_FP0194_1_a.jpg FP0194 70 | VIS/VIS_FP0195_1_a.jpg FP0195 71 | VIS/VIS_FP0199_1_a.jpg FP0199 72 | VIS/VIS_FP0202_1_a.jpg FP0202 73 | VIS/VIS_FP0206_1_a.jpg FP0206 74 | VIS/VIS_FP0210_1_a.jpg FP0210 75 | VIS/VIS_FP0215_1_a.jpg FP0215 76 | VIS/VIS_FP0216_1_a.jpg FP0216 77 | VIS/VIS_FP0218_1_a.jpg FP0218 78 | VIS/VIS_FP0220_1_a.jpg FP0220 79 | VIS/VIS_FP0222_1_a.jpg FP0222 80 | VIS/VIS_FP0224_1_a.jpg FP0224 81 | VIS/VIS_P0001_1_a.jpg P0001 82 | VIS/VIS_P0003_1_a.jpg P0003 83 | VIS/VIS_P0004_1_a.jpg P0004 84 | VIS/VIS_P0005_1_a.jpg P0005 85 | VIS/VIS_P0006_1_a.jpg P0006 86 | VIS/VIS_P0007_1_a.jpg P0007 87 | VIS/VIS_P0008_1_a.jpg P0008 88 | VIS/VIS_P0012_1_a.jpg P0012 89 | VIS/VIS_P0014_1_a.jpg P0014 90 | VIS/VIS_P0018_1_a.jpg P0018 91 | VIS/VIS_P0020_1_a.jpg P0020 92 | VIS/VIS_P0021_1_a.jpg P0021 93 | VIS/VIS_P0023_1_a.jpg P0023 94 | VIS/VIS_P0024_1_a.jpg P0024 95 | VIS/VIS_P0026_1_a.jpg P0026 96 | VIS/VIS_P0027_1_a.jpg P0027 97 | VIS/VIS_P0034_1_a.jpg P0034 98 | VIS/VIS_P0035_1_a.jpg P0035 99 | VIS/VIS_P0038_1_a.jpg P0038 100 | VIS/VIS_P0045_1_a.jpg P0045 101 | VIS/VIS_P0046_1_a.jpg P0046 102 | VIS/VIS_P0047_1_a.jpg P0047 103 | VIS/VIS_P0049_1_a.jpg P0049 104 | VIS/VIS_P0054_1_a.jpg P0054 105 | VIS/VIS_P0056_1_a.jpg P0056 106 | VIS/VIS_P0059_1_a.jpg P0059 107 | VIS/VIS_P0061_1_a.jpg P0061 108 | VIS/VIS_P0062_1_a.jpg P0062 109 | VIS/VIS_P0063_1_a.jpg P0063 110 | VIS/VIS_P0066_1_a.jpg P0066 111 | VIS/VIS_P0067_1_a.jpg P0067 112 | VIS/VIS_P0071_1_a.jpg P0071 113 | VIS/VIS_P0074_1_a.jpg P0074 114 | VIS/VIS_P0077_1_a.jpg P0077 115 | VIS/VIS_P0080_1_a.jpg P0080 116 | VIS/VIS_P0081_1_a.jpg P0081 117 | VIS/VIS_P0082_1_a.jpg P0082 118 | VIS/VIS_P0085_1_a.jpg P0085 119 | VIS/VIS_P0086_1_a.jpg P0086 120 | VIS/VIS_P0088_1_a.jpg P0088 121 | VIS/VIS_P0097_1_a.jpg P0097 122 | VIS/VIS_P0103_1_a.jpg P0103 123 | VIS/VIS_P0105_1_a.jpg P0105 124 | VIS/VIS_P0106_1_a.jpg P0106 125 | VIS/VIS_P0112_1_a.jpg P0112 126 | VIS/VIS_P0116_1_a.jpg P0116 127 | VIS/VIS_P0118_1_a.jpg P0118 128 | VIS/VIS_P0119_1_a.jpg P0119 129 | VIS/VIS_P0120_1_a.jpg P0120 130 | VIS/VIS_P0126_1_a.jpg P0126 131 | VIS/VIS_P0127_1_a.jpg P0127 132 | VIS/VIS_P0129_1_a.jpg P0129 133 | VIS/VIS_P0131_1_a.jpg P0131 134 | VIS/VIS_P0132_1_a.jpg P0132 135 | VIS/VIS_P0134_1_a.jpg P0134 136 | VIS/VIS_P0138_1_a.jpg P0138 137 | VIS/VIS_P0140_1_a.jpg P0140 138 | VIS/VIS_P0141_1_a.jpg P0141 139 | VIS/VIS_P0159_1_a.jpg P0159 140 | VIS/VIS_P0160_1_a.jpg P0160 141 | VIS/VIS_P0167_1_a.jpg P0167 142 | VIS/VIS_P0170_1_a.jpg P0170 143 | VIS/VIS_P0294_1_a.jpg P0294 144 | VIS/VIS_P0298_1_a.jpg P0298 145 | VIS/VIS_P0299_1_a.jpg P0299 146 | VIS/VIS_P0302_1_a.jpg P0302 147 | VIS/VIS_P0304_1_a.jpg P0304 148 | VIS/VIS_P0305_1_a.jpg P0305 149 | VIS/VIS_P0309_1_a.jpg P0309 150 | VIS/VIS_P0310_1_a.jpg P0310 151 | VIS/VIS_P0312_1_a.jpg P0312 152 | VIS/VIS_P0314_1_a.jpg P0314 153 | VIS/VIS_P0315_1_a.jpg P0315 154 | VIS/VIS_P0317_1_a.jpg P0317 155 | VIS/VIS_P0319_1_a.jpg P0319 156 | VIS/VIS_P0321_1_a.jpg P0321 157 | VIS/VIS_P0322_1_a.jpg P0322 158 | VIS/VIS_P0323_1_a.jpg P0323 159 | VIS/VIS_P0325_1_a.jpg P0325 160 | VIS/VIS_P0326_1_a.jpg P0326 161 | VIS/VIS_P0327_1_a.jpg P0327 162 | VIS/VIS_P0329_1_a.jpg P0329 163 | VIS/VIS_P0332_1_a.jpg P0332 164 | VIS/VIS_P0333_1_a.jpg P0333 165 | VIS/VIS_P0335_1_a.jpg P0335 166 | VIS/VIS_P0338_1_a.jpg P0338 167 | VIS/VIS_P0340_1_a.jpg P0340 168 | VIS/VIS_P0341_1_a.jpg P0341 169 | VIS/VIS_P0348_1_a.jpg P0348 170 | VIS/VIS_P0351_1_a.jpg P0351 171 | VIS/VIS_P0353_1_a.jpg P0353 172 | VIS/VIS_P0360_1_a.jpg P0360 173 | VIS/VIS_P0361_1_a.jpg P0361 174 | VIS/VIS_P0363_1_a.jpg P0363 175 | VIS/VIS_P0365_1_a.jpg P0365 176 | VIS/VIS_P0367_1_a.jpg P0367 177 | VIS/VIS_P0370_1_a.jpg P0370 178 | VIS/VIS_P0371_1_a.jpg P0371 179 | VIS/VIS_P0379_1_a.jpg P0379 180 | VIS/VIS_P0382_1_a.jpg P0382 181 | VIS/VIS_P0385_1_a.jpg P0385 182 | VIS/VIS_P0387_1_a.jpg P0387 183 | VIS/VIS_P0389_1_a.jpg P0389 184 | VIS/VIS_P0391_1_a.jpg P0391 185 | VIS/VIS_P0392_1_a.jpg P0392 186 | VIS/VIS_P0393_1_a.jpg P0393 187 | VIS/VIS_P0395_1_a.jpg P0395 188 | VIS/VIS_P0396_1_a.jpg P0396 189 | VIS/VIS_P0401_1_a.jpg P0401 190 | VIS/VIS_P0403_1_a.jpg P0403 191 | VIS/VIS_P0405_1_a.jpg P0405 192 | VIS/VIS_P0408_1_a.jpg P0408 193 | VIS/VIS_P0411_1_a.jpg P0411 194 | VIS/VIS_P0416_1_a.jpg P0416 195 | VIS/VIS_P0417_1_a.jpg P0417 196 | VIS/VIS_P0419_1_a.jpg P0419 197 | VIS/VIS_P0421_1_a.jpg P0421 198 | VIS/VIS_P0424_1_a.jpg P0424 199 | VIS/VIS_P0425_1_a.jpg P0425 200 | VIS/VIS_P0427_1_a.jpg P0427 201 | VIS/VIS_P0429_1_a.jpg P0429 202 | VIS/VIS_P0430_1_a.jpg P0430 203 | VIS/VIS_P0432_1_a.jpg P0432 204 | VIS/VIS_P0438_1_a.jpg P0438 205 | VIS/VIS_P0442_1_a.jpg P0442 206 | VIS/VIS_P0447_1_a.jpg P0447 207 | VIS/VIS_P0449_1_a.jpg P0449 208 | VIS/VIS_P0453_1_a.jpg P0453 209 | VIS/VIS_P0457_1_a.jpg P0457 210 | VIS/VIS_P0462_1_a.jpg P0462 211 | VIS/VIS_P0463_1_a.jpg P0463 212 | VIS/VIS_P0465_1_a.jpg P0465 213 | VIS/VIS_P0468_1_a.jpg P0468 214 | VIS/VIS_P0473_1_a.jpg P0473 215 | VIS/VIS_P0477_1_a.jpg P0477 216 | VIS/VIS_P0480_1_a.jpg P0480 217 | VIS/VIS_P0481_1_a.jpg P0481 218 | VIS/VIS_P0484_1_a.jpg P0484 219 | VIS/VIS_P0486_1_a.jpg P0486 220 | VIS/VIS_P0487_1_a.jpg P0487 221 | VIS/VIS_P0488_1_a.jpg P0488 222 | VIS/VIS_P0489_1_a.jpg P0489 223 | VIS/VIS_P0490_1_a.jpg P0490 224 | VIS/VIS_P0492_1_a.jpg P0492 225 | VIS/VIS_P0493_1_a.jpg P0493 226 | VIS/VIS_P0494_1_a.jpg P0494 227 | VIS/VIS_P0495_1_a.jpg P0495 228 | VIS/VIS_P0498_1_a.jpg P0498 229 | VIS/VIS_P0499_1_a.jpg P0499 230 | VIS/VIS_P0503_1_a.jpg P0503 231 | VIS/VIS_P0508_1_a.jpg P0508 232 | VIS/VIS_P0510_1_a.jpg P0510 233 | VIS/VIS_P0512_1_a.jpg P0512 234 | VIS/VIS_P0513_1_a.jpg P0513 235 | VIS/VIS_P0515_1_a.jpg P0515 236 | VIS/VIS_P0521_1_a.jpg P0521 237 | VIS/VIS_P0522_1_a.jpg P0522 238 | VIS/VIS_P0523_1_a.jpg P0523 239 | VIS/VIS_P0528_1_a.jpg P0528 240 | VIS/VIS_P0529_1_a.jpg P0529 241 | VIS/VIS_P0530_1_a.jpg P0530 242 | VIS/VIS_P0531_1_a.jpg P0531 243 | VIS/VIS_P0535_1_a.jpg P0535 244 | VIS/VIS_P0536_1_a.jpg P0536 245 | VIS/VIS_P0537_1_a.jpg P0537 246 | VIS/VIS_P0538_1_a.jpg P0538 247 | VIS/VIS_P0539_1_a.jpg P0539 248 | VIS/VIS_P0540_1_a.jpg P0540 249 | VIS/VIS_P0541_1_a.jpg P0541 250 | VIS/VIS_P0542_1_a.jpg P0542 251 | VIS/VIS_P0543_1_a.jpg P0543 252 | VIS/VIS_P0544_1_a.jpg P0544 253 | VIS/VIS_P0545_1_a.jpg P0545 254 | VIS/VIS_P0546_1_a.jpg P0546 255 | VIS/VIS_P0549_1_a.jpg P0549 256 | VIS/VIS_P0550_1_a.jpg P0550 257 | VIS/VIS_P0551_1_a.jpg P0551 258 | VIS/VIS_P0553_1_a.jpg P0553 259 | VIS/VIS_P0555_1_a.jpg P0555 260 | VIS/VIS_P0558_1_a.jpg P0558 261 | VIS/VIS_P0560_1_a.jpg P0560 262 | VIS/VIS_P0561_1_a.jpg P0561 263 | VIS/VIS_P0566_1_a.jpg P0566 264 | VIS/VIS_P0568_1_a.jpg P0568 265 | VIS/VIS_P0569_1_a.jpg P0569 266 | VIS/VIS_P0571_1_a.jpg P0571 267 | VIS/VIS_P0572_1_a.jpg P0572 268 | VIS/VIS_P0580_1_a.jpg P0580 269 | VIS/VIS_P0582_1_a.jpg P0582 270 | VIS/VIS_P0585_1_a.jpg P0585 271 | VIS/VIS_P0586_1_a.jpg P0586 272 | VIS/VIS_P0587_1_a.jpg P0587 273 | VIS/VIS_P0588_1_a.jpg P0588 274 | -------------------------------------------------------------------------------- /data/casia/vis_gallery_1.txt: -------------------------------------------------------------------------------- 1 | s2\VIS\10153\003.jpg 2 | s2\VIS\10117\005.jpg 3 | s3\VIS\20464\004.jpg 4 | s2\VIS\10113\006.jpg 5 | s2\VIS\10136\008.jpg 6 | s2\VIS\10188\001.jpg 7 | s2\VIS\10292\004.jpg 8 | s1\VIS\00130\008.jpg 9 | s1\VIS\00121\002.jpg 10 | s1\VIS\00100\002.jpg 11 | s3\VIS\20334\004.jpg 12 | s1\VIS\00126\001.jpg 13 | s1\VIS\00196\008.jpg 14 | s1\VIS\00150\005.jpg 15 | s2\VIS\10270\003.jpg 16 | s1\VIS\00147\004.jpg 17 | s3\VIS\20475\003.jpg 18 | s2\VIS\10231\005.jpg 19 | s4\VIS\30752\003.jpg 20 | s2\VIS\10076\005.jpg 21 | s4\VIS\30597\001.jpg 22 | s1\VIS\00043\002.jpg 23 | s2\VIS\10031\004.jpg 24 | s1\VIS\00165\009.jpg 25 | s2\VIS\10224\006.jpg 26 | s2\VIS\10142\004.jpg 27 | s4\VIS\30413\002.jpg 28 | s2\VIS\10085\006.jpg 29 | s2\VIS\10209\003.jpg 30 | s3\VIS\20326\006.jpg 31 | s1\VIS\00086\009.jpg 32 | s1\VIS\00162\003.jpg 33 | s1\VIS\00066\010.jpg 34 | s3\VIS\20397\006.jpg 35 | s1\VIS\00070\001.jpg 36 | s3\VIS\20353\002.jpg 37 | s4\VIS\30749\001.jpg 38 | s3\VIS\20480\002.jpg 39 | s2\VIS\10144\002.jpg 40 | s1\VIS\00071\002.jpg 41 | s2\VIS\10171\002.jpg 42 | s3\VIS\20376\004.jpg 43 | s2\VIS\10278\001.jpg 44 | s2\VIS\10124\003.jpg 45 | s1\VIS\00063\010.jpg 46 | s1\VIS\00019\003.jpg 47 | s2\VIS\10127\002.jpg 48 | s2\VIS\10045\006.jpg 49 | s4\VIS\30480\002.jpg 50 | s1\VIS\00027\008.jpg 51 | s1\VIS\00090\005.jpg 52 | s3\VIS\20355\001.jpg 53 | s3\VIS\20330\003.jpg 54 | s1\VIS\00018\010.jpg 55 | s1\VIS\00201\008.jpg 56 | s3\VIS\20411\002.jpg 57 | s3\VIS\20435\006.jpg 58 | s4\VIS\30773\001.jpg 59 | s2\VIS\10183\003.jpg 60 | s1\VIS\00081\002.jpg 61 | s1\VIS\00179\008.jpg 62 | s1\VIS\00189\010.jpg 63 | s3\VIS\20382\005.jpg 64 | s1\VIS\00154\007.jpg 65 | s2\VIS\10109\002.jpg 66 | s4\VIS\30781\002.jpg 67 | s2\VIS\10197\008.jpg 68 | s3\VIS\20481\006.jpg 69 | s2\VIS\10216\001.jpg 70 | s3\VIS\20366\001.jpg 71 | s1\VIS\00056\002.jpg 72 | s2\VIS\10140\003.jpg 73 | s1\VIS\00097\008.jpg 74 | s2\VIS\10227\004.jpg 75 | s2\VIS\10217\004.jpg 76 | s2\VIS\10212\006.jpg 77 | s3\VIS\20476\003.jpg 78 | s3\VIS\20422\004.jpg 79 | s1\VIS\00050\009.jpg 80 | s3\VIS\20403\003.jpg 81 | s2\VIS\10097\002.jpg 82 | s2\VIS\10013\005.jpg 83 | s2\VIS\10072\006.jpg 84 | s1\VIS\00072\005.jpg 85 | s2\VIS\10194\002.jpg 86 | s2\VIS\10139\001.jpg 87 | s4\VIS\30768\001.jpg 88 | s2\VIS\10297\001.jpg 89 | s3\VIS\20437\002.jpg 90 | s4\VIS\30565\003.jpg 91 | s1\VIS\00046\010.jpg 92 | s2\VIS\10099\006.jpg 93 | s2\VIS\10088\004.jpg 94 | s1\VIS\00060\009.jpg 95 | s3\VIS\20493\004.jpg 96 | s2\VIS\10302\003.jpg 97 | s3\VIS\20407\003.jpg 98 | s2\VIS\10168\005.jpg 99 | s3\VIS\20374\006.jpg 100 | s2\VIS\10133\004.jpg 101 | s2\VIS\10240\006.jpg 102 | s1\VIS\00191\002.jpg 103 | s2\VIS\10134\005.jpg 104 | s2\VIS\10079\004.jpg 105 | s4\VIS\30753\003.jpg 106 | s1\VIS\00028\003.jpg 107 | s2\VIS\10155\005.jpg 108 | s3\VIS\20325\005.jpg 109 | s2\VIS\10290\004.jpg 110 | s3\VIS\20495\002.jpg 111 | s3\VIS\20333\001.jpg 112 | s2\VIS\10239\001.jpg 113 | s1\VIS\00178\006.jpg 114 | s3\VIS\20427\004.jpg 115 | s2\VIS\10210\002.jpg 116 | s3\VIS\20349\006.jpg 117 | s1\VIS\00057\007.jpg 118 | s2\VIS\10179\003.jpg 119 | s3\VIS\20322\004.jpg 120 | s1\VIS\00160\001.jpg 121 | s1\VIS\00035\003.jpg 122 | s2\VIS\10175\003.jpg 123 | s2\VIS\10211\006.jpg 124 | s2\VIS\10298\004.jpg 125 | s3\VIS\20336\006.jpg 126 | s1\VIS\00095\006.jpg 127 | s2\VIS\10020\004.jpg 128 | s3\VIS\20446\003.jpg 129 | s2\VIS\10307\005.jpg 130 | s3\VIS\20368\003.jpg 131 | s2\VIS\10103\001.jpg 132 | s2\VIS\10309\002.jpg 133 | s1\VIS\00129\003.jpg 134 | s3\VIS\20425\003.jpg 135 | s1\VIS\00021\009.jpg 136 | s3\VIS\20449\006.jpg 137 | s2\VIS\10287\005.jpg 138 | s2\VIS\10193\005.jpg 139 | s2\VIS\10163\004.jpg 140 | s4\VIS\30746\004.jpg 141 | s2\VIS\00016\007.jpg 142 | s1\VIS\00171\009.jpg 143 | s3\VIS\20491\005.jpg 144 | s2\VIS\10051\004.jpg 145 | s2\VIS\10081\002.jpg 146 | s2\VIS\10160\004.jpg 147 | s2\VIS\10248\006.jpg 148 | s2\VIS\10083\002.jpg 149 | s1\VIS\00098\006.jpg 150 | s2\VIS\10141\002.jpg 151 | s3\VIS\20470\002.jpg 152 | s2\VIS\10275\001.jpg 153 | s1\VIS\00186\003.jpg 154 | s2\VIS\10025\006.jpg 155 | s3\VIS\20401\003.jpg 156 | s3\VIS\20409\003.jpg 157 | s2\VIS\10032\006.jpg 158 | s1\VIS\00188\001.jpg 159 | s3\VIS\20373\005.jpg 160 | s2\VIS\10132\003.jpg 161 | s4\VIS\30766\002.jpg 162 | s1\VIS\00038\008.jpg 163 | s2\VIS\10091\002.jpg 164 | s2\VIS\10305\003.jpg 165 | s3\VIS\20331\006.jpg 166 | s3\VIS\20467\002.jpg 167 | s1\VIS\00177\008.jpg 168 | s2\VIS\10173\007.jpg 169 | s2\VIS\10023\002.jpg 170 | s3\VIS\20417\005.jpg 171 | s2\VIS\10273\005.jpg 172 | s1\VIS\00192\010.jpg 173 | s2\VIS\10016\001.jpg 174 | s2\VIS\10024\006.jpg 175 | s3\VIS\20429\006.jpg 176 | s2\VIS\10036\004.jpg 177 | s2\VIS\10130\002.jpg 178 | s1\VIS\00029\004.jpg 179 | s2\VIS\10182\005.jpg 180 | s1\VIS\00173\010.jpg 181 | s3\VIS\20442\006.jpg 182 | s2\VIS\10146\006.jpg 183 | s4\VIS\30779\002.jpg 184 | s2\VIS\10255\002.jpg 185 | s2\VIS\10291\006.jpg 186 | s2\VIS\10116\006.jpg 187 | s2\VIS\10151\005.jpg 188 | s3\VIS\20414\001.jpg 189 | s1\VIS\00032\005.jpg 190 | s2\VIS\10078\003.jpg 191 | s2\VIS\10057\003.jpg 192 | s2\VIS\10235\002.jpg 193 | s2\VIS\10006\004.jpg 194 | s2\VIS\10107\002.jpg 195 | s3\VIS\20398\003.jpg 196 | s3\VIS\20441\004.jpg 197 | s1\VIS\00011\010.jpg 198 | s2\VIS\10170\010.jpg 199 | s3\VIS\20365\001.jpg 200 | s2\VIS\00122\003.jpg 201 | s2\VIS\10090\005.jpg 202 | s2\VIS\10204\005.jpg 203 | s3\VIS\20413\004.jpg 204 | s2\VIS\10100\006.jpg 205 | s3\VIS\20399\001.jpg 206 | s4\VIS\30674\004.jpg 207 | s3\VIS\20482\001.jpg 208 | s2\VIS\10289\002.jpg 209 | s2\VIS\10108\001.jpg 210 | s4\VIS\30750\004.jpg 211 | s3\VIS\20469\006.jpg 212 | s3\VIS\20460\006.jpg 213 | s3\VIS\20466\006.jpg 214 | s2\VIS\10128\007.jpg 215 | s1\VIS\00002\006.jpg 216 | s1\VIS\00174\002.jpg 217 | s3\VIS\20393\005.jpg 218 | s1\VIS\00136\010.jpg 219 | s2\VIS\10284\002.jpg 220 | s2\VIS\10308\002.jpg 221 | s2\VIS\10251\006.jpg 222 | s2\VIS\10177\005.jpg 223 | s2\VIS\10244\004.jpg 224 | s1\VIS\00155\008.jpg 225 | s2\VIS\10018\001.jpg 226 | s4\VIS\30517\002.jpg 227 | s3\VIS\20494\001.jpg 228 | s3\VIS\20458\004.jpg 229 | s2\VIS\10201\001.jpg 230 | s1\VIS\00104\001.jpg 231 | s4\VIS\30748\002.jpg 232 | s3\VIS\20378\002.jpg 233 | s1\VIS\00051\004.jpg 234 | s2\VIS\10138\005.jpg 235 | s2\VIS\10180\002.jpg 236 | s3\VIS\20408\002.jpg 237 | s3\VIS\20490\005.jpg 238 | s1\VIS\00115\006.jpg 239 | s1\VIS\00044\006.jpg 240 | s2\VIS\10274\004.jpg 241 | s1\VIS\00094\001.jpg 242 | s4\VIS\30778\003.jpg 243 | s1\VIS\00149\008.jpg 244 | s2\VIS\10219\004.jpg 245 | s3\VIS\20381\004.jpg 246 | s3\VIS\20420\006.jpg 247 | s1\VIS\00010\005.jpg 248 | s1\VIS\00198\005.jpg 249 | s3\VIS\20367\006.jpg 250 | s2\VIS\10092\002.jpg 251 | s1\VIS\00127\005.jpg 252 | s3\VIS\20428\003.jpg 253 | s2\VIS\10077\005.jpg 254 | s1\VIS\00157\011.jpg 255 | s3\VIS\20444\003.jpg 256 | s2\VIS\10164\006.jpg 257 | s1\VIS\00156\003.jpg 258 | s2\VIS\10241\002.jpg 259 | s2\VIS\10268\002.jpg 260 | s1\VIS\00085\006.jpg 261 | s2\VIS\10003\005.jpg 262 | s1\VIS\00012\008.jpg 263 | s1\VIS\00007\002.jpg 264 | s1\VIS\00105\008.jpg 265 | s3\VIS\20337\006.jpg 266 | s2\VIS\10112\004.jpg 267 | s3\VIS\20389\005.jpg 268 | s1\VIS\00112\008.jpg 269 | s2\VIS\10161\004.jpg 270 | s1\VIS\00193\004.jpg 271 | s3\VIS\20390\005.jpg 272 | s1\VIS\00143\011.jpg 273 | s2\VIS\10154\002.jpg 274 | s2\VIS\10198\003.jpg 275 | s1\VIS\00140\004.jpg 276 | s2\VIS\10015\003.jpg 277 | s2\VIS\10242\006.jpg 278 | s2\VIS\10073\003.jpg 279 | s3\VIS\20332\005.jpg 280 | s1\VIS\00108\009.jpg 281 | s3\VIS\20387\001.jpg 282 | s3\VIS\20432\005.jpg 283 | s2\VIS\10102\002.jpg 284 | s2\VIS\10052\004.jpg 285 | s2\VIS\10123\002.jpg 286 | s2\VIS\10178\003.jpg 287 | s2\VIS\10047\001.jpg 288 | s1\VIS\00128\003.jpg 289 | s1\VIS\00084\004.jpg 290 | s3\VIS\20459\006.jpg 291 | s3\VIS\20391\004.jpg 292 | s1\VIS\00053\007.jpg 293 | s1\VIS\00106\003.jpg 294 | s1\VIS\00117\010.jpg 295 | s3\VIS\20430\005.jpg 296 | s1\VIS\00034\001.jpg 297 | s3\VIS\20445\006.jpg 298 | s3\VIS\20472\004.jpg 299 | s2\VIS\10300\006.jpg 300 | s1\VIS\00145\010.jpg 301 | s3\VIS\20486\002.jpg 302 | s3\VIS\20380\004.jpg 303 | s3\VIS\20339\003.jpg 304 | s2\VIS\10069\002.jpg 305 | s3\VIS\20342\001.jpg 306 | s2\VIS\10299\001.jpg 307 | s3\VIS\20455\002.jpg 308 | s1\VIS\00180\005.jpg 309 | s3\VIS\20463\001.jpg 310 | s1\VIS\00058\009.jpg 311 | s3\VIS\20369\003.jpg 312 | s2\VIS\10157\005.jpg 313 | s2\VIS\10062\001.jpg 314 | s2\VIS\10080\004.jpg 315 | s2\VIS\10075\005.jpg 316 | s1\VIS\00141\010.jpg 317 | s2\VIS\10067\003.jpg 318 | s1\VIS\00013\008.jpg 319 | s1\VIS\00024\005.jpg 320 | s1\VIS\00020\005.jpg 321 | s2\VIS\10243\001.jpg 322 | s2\VIS\10262\005.jpg 323 | s2\VIS\10263\002.jpg 324 | s3\VIS\20436\003.jpg 325 | s2\VIS\10066\006.jpg 326 | s4\VIS\30599\003.jpg 327 | s2\VIS\10184\006.jpg 328 | s2\VIS\10055\003.jpg 329 | s3\VIS\20483\004.jpg 330 | s3\VIS\20360\001.jpg 331 | s1\VIS\00030\007.jpg 332 | s2\VIS\10311\004.jpg 333 | s2\VIS\10148\002.jpg 334 | s2\VIS\10135\001.jpg 335 | s3\VIS\20497\005.jpg 336 | s1\VIS\00055\004.jpg 337 | s3\VIS\20354\004.jpg 338 | s2\VIS\10181\003.jpg 339 | s3\VIS\20364\004.jpg 340 | s1\VIS\00182\007.jpg 341 | s1\VIS\00103\005.jpg 342 | s2\VIS\10119\001.jpg 343 | s3\VIS\20370\004.jpg 344 | s3\VIS\20329\002.jpg 345 | s2\VIS\10277\006.jpg 346 | s2\VIS\10208\002.jpg 347 | s1\VIS\00017\010.jpg 348 | s3\VIS\20361\005.jpg 349 | s3\VIS\20421\006.jpg 350 | s2\VIS\10187\004.jpg 351 | s4\VIS\30757\002.jpg 352 | s1\VIS\00125\002.jpg 353 | s2\VIS\10089\002.jpg 354 | s2\VIS\10293\006.jpg 355 | s2\VIS\10159\005.jpg 356 | s2\VIS\10037\001.jpg 357 | s2\VIS\10150\002.jpg 358 | s1\VIS\00048\007.jpg 359 | -------------------------------------------------------------------------------- /dataset_mix.py: -------------------------------------------------------------------------------- 1 | from PIL import Image 2 | import os 3 | import torch.utils.data as data 4 | import torchvision.transforms as transforms 5 | 6 | 7 | class Real_Dataset_112(data.Dataset): 8 | def __init__(self, args): 9 | super(Real_Dataset_112, self).__init__() 10 | 11 | self.img_root = args.img_root_R 12 | self.img_list, self.num_classes = self.list_reader(args.train_list_R) 13 | self.input_mode = args.input_mode 14 | 15 | self.transform = transforms.Compose([ 16 | # transforms.RandomCrop(112), 17 | transforms.ToTensor() 18 | ]) 19 | 20 | def __getitem__(self, index): 21 | img_name, label = self.img_list[index] 22 | 23 | img = self.get_img_from_path(img_name) 24 | return {'img': img, 'label': int(label)} 25 | 26 | def __len__(self): 27 | return len(self.img_list) 28 | 29 | def get_img_from_path(self, img_name): 30 | img_path = os.path.join(self.img_root, img_name) 31 | 32 | if self.input_mode == 'grey': 33 | img = Image.open(img_path).convert('L') 34 | elif self.input_mode == 'red': 35 | img = Image.open(img_path) 36 | img = img.split()[0] 37 | 38 | img = self.transform(img) 39 | return img 40 | 41 | def list_reader(self, list_file): 42 | img_list = [] 43 | with open(list_file, 'r') as f: 44 | lines = f.readlines() 45 | 46 | pid_container = set() 47 | for line in lines: 48 | pid = int(line.strip().split(' ')[1]) 49 | pid_container.add(pid) 50 | pid2label = {pid:label for label, pid in enumerate(pid_container)} 51 | 52 | for line in lines: 53 | img_name, pid = line.strip().split(' ') 54 | if not os.path.exists(os.path.join(self.img_root, img_name)): 55 | continue 56 | label = pid2label[int(pid)] 57 | img_list.append((img_name, label)) 58 | 59 | return img_list, len(pid_container) 60 | 61 | 62 | class Real_Dataset_112_paired(data.Dataset): 63 | def __init__(self, args): 64 | super(Real_Dataset_112_paired, self).__init__() 65 | 66 | self.img_root = args.img_root_R 67 | self.img_list, self.num_classes = self.list_reader(args.train_list_R) 68 | self.input_mode = args.input_mode 69 | 70 | self.transform = transforms.Compose([ 71 | # transforms.RandomCrop(112), 72 | transforms.ToTensor() 73 | ]) 74 | 75 | self.vir_list = [(a,b,c) for (a,b,c) in self.img_list if c==0] 76 | self.nir_list = [(a,b,c) for (a,b,c) in self.img_list if c==1] 77 | 78 | self.vis_labels = np.array([p[1] for p in self.vir_list]) 79 | self.nir_labels = np.array([p[1] for p in self.nir_list]) 80 | 81 | self.visIndex = None 82 | self.nirIndex = None 83 | 84 | def __getitem__(self, index): 85 | vis_img_name, vis_label, vis_domain = self.vir_list[self.visIndex[index]] 86 | nir_img_name, nir_label, nir_domain = self.nir_list[self.nirIndex[index]] 87 | 88 | assert vis_domain == 0 and nir_domain == 1 89 | 90 | vis_img = self.get_img_from_path(vis_img_name) 91 | nir_img = self.get_img_from_path(nir_img_name) 92 | 93 | return vis_img, nir_img, vis_label, nir_label 94 | 95 | def __len__(self): 96 | return len(self.img_list) 97 | 98 | def get_img_from_path(self, img_name): 99 | img_path = os.path.join(self.img_root, img_name) 100 | 101 | if self.input_mode == 'grey': 102 | img = Image.open(img_path).convert('L') 103 | elif self.input_mode == 'red': 104 | img = Image.open(img_path) 105 | img = img.split()[0] 106 | 107 | img = self.transform(img) 108 | return img 109 | 110 | 111 | def list_reader(self, list_file): 112 | img_list = [] 113 | with open(list_file, 'r') as f: 114 | lines = f.readlines() 115 | 116 | pid_container = set() 117 | for line in lines: 118 | pid = int(line.strip().split(' ')[1]) 119 | pid_container.add(pid) 120 | pid2label = {pid:label for label, pid in enumerate(pid_container)} 121 | 122 | for line in lines: 123 | img_name, pid = line.strip().split(' ') 124 | label = pid2label[int(pid)] 125 | 126 | domain = 0 if 'VIS' in img_name else 1 127 | img_list.append((img_name, label, domain)) 128 | 129 | return img_list, len(pid_container) 130 | 131 | class Mix_Dataset_112(data.Dataset): 132 | def __init__(self, args): 133 | super(Mix_Dataset_112, self).__init__() 134 | 135 | self.img_root_R = args.img_root_R 136 | self.img_root_F = args.img_root_F 137 | self.img_list, self.num_classes = self.list_reader(args.train_list_R, args.train_list_F) 138 | self.input_mode = args.input_mode 139 | 140 | self.transform = transforms.Compose([ 141 | # transforms.RandomCrop(112), 142 | transforms.ToTensor() 143 | ]) 144 | 145 | def __getitem__(self, index): 146 | img_path, label = self.img_list[index] 147 | 148 | img = self.get_img_from_path(img_path) 149 | return {'img': img, 'label': int(label)} 150 | 151 | def __len__(self): 152 | return len(self.img_list) 153 | 154 | def get_img_from_path(self, img_path): 155 | 156 | if self.input_mode == 'grey': 157 | img = Image.open(img_path).convert('L') 158 | elif self.input_mode == 'red': 159 | img = Image.open(img_path) 160 | img = img.split()[0] 161 | 162 | img = self.transform(img) 163 | return img 164 | 165 | def list_reader(self, list_file_real, list_file_fake): 166 | with open(list_file_real, 'r') as f: 167 | lines_real = f.readlines() 168 | with open(list_file_fake, 'r') as f: 169 | lines_fake = f.readlines() 170 | 171 | fake_label_start = max([int(l.strip().split(' ')[-1]) for l in lines_real]) + 1 172 | lines_fake = ["{} {}".format(l.strip().split(' ')[0], int(l.strip().split(' ')[1]) + fake_label_start) for l in lines_fake] 173 | 174 | lines = lines_real + lines_fake 175 | 176 | pid_container = set() 177 | for line in lines: 178 | pid = int(line.strip().split(' ')[1]) 179 | pid_container.add(pid) 180 | pid2label = {pid:label for label, pid in enumerate(pid_container)} 181 | 182 | img_list_R = [] 183 | for line in lines_real: 184 | img_name, pid = line.strip().split(' ') 185 | label = pid2label[int(pid)] 186 | img_list_R.append((os.path.join(self.img_root_R + img_name), label)) 187 | 188 | img_list_F = [] 189 | for line in lines_fake: 190 | img_name, pid = line.strip().split(' ') 191 | label = pid2label[int(pid)] 192 | img_list_F.append((os.path.join(self.img_root_F + img_name), label)) 193 | 194 | img_list = img_list_R + img_list_F 195 | 196 | return img_list, len(pid_container) 197 | 198 | 199 | class Mix_Dataset_112_paired(data.Dataset): 200 | def __init__(self, args): 201 | super(Mix_Dataset_112_paired, self).__init__() 202 | 203 | self.img_root_R = args.img_root_R 204 | self.img_root_F = args.img_root_F 205 | self.img_list, self.num_classes = self.list_reader(args.train_list_R, args.train_list_F) 206 | self.input_mode = args.input_mode 207 | 208 | self.transform = transforms.Compose([ 209 | # transforms.RandomCrop(112), 210 | transforms.ToTensor() 211 | ]) 212 | 213 | self.vir_list = [(a,b,c) for (a,b,c) in self.img_list if c==0] 214 | self.nir_list = [(a,b,c) for (a,b,c) in self.img_list if c==1] 215 | 216 | self.vis_labels = np.array([p[1] for p in self.vir_list]) 217 | self.nir_labels = np.array([p[1] for p in self.nir_list]) 218 | 219 | self.visIndex = None 220 | self.nirIndex = None 221 | 222 | def __getitem__(self, index): 223 | vis_img_name, vis_label, vis_domain = self.vir_list[self.visIndex[index]] 224 | nir_img_name, nir_label, nir_domain = self.nir_list[self.nirIndex[index]] 225 | 226 | assert vis_domain == 0 and nir_domain == 1 227 | 228 | vis_img = self.get_img_from_path(vis_img_name) 229 | nir_img = self.get_img_from_path(nir_img_name) 230 | 231 | return vis_img, nir_img, vis_label, nir_label 232 | 233 | def __len__(self): 234 | return len(self.img_list) 235 | 236 | def get_img_from_path(self, img_path): 237 | if self.input_mode == 'grey': 238 | img = Image.open(img_path).convert('L') 239 | elif self.input_mode == 'red': 240 | img = Image.open(img_path) 241 | img = img.split()[0] 242 | 243 | img = self.transform(img) 244 | return img 245 | 246 | 247 | def list_reader(self, list_file_real, list_file_fake): 248 | with open(list_file_real, 'r') as f: 249 | lines_real = f.readlines() 250 | with open(list_file_fake, 'r') as f: 251 | lines_fake = f.readlines() 252 | 253 | fake_label_start = max([int(l.strip().split(' ')[-1]) for l in lines_real]) + 1 254 | lines_fake = ["{} {}".format(l.strip().split(' ')[0], int(l.strip().split(' ')[1]) + fake_label_start) for l in lines_fake] 255 | 256 | lines = lines_real + lines_fake 257 | 258 | pid_container = set() 259 | for line in lines: 260 | pid = int(line.strip().split(' ')[1]) 261 | pid_container.add(pid) 262 | pid2label = {pid:label for label, pid in enumerate(pid_container)} 263 | 264 | img_list_R = [] 265 | for line in lines_real: 266 | img_name, pid = line.strip().split(' ') 267 | label = pid2label[int(pid)] 268 | domain = 0 if 'VIS' in img_name else 1 269 | img_list_R.append((os.path.join(self.img_root_R + img_name), label, domain)) 270 | 271 | img_list_F = [] 272 | for line in lines_fake: 273 | img_name, pid = line.strip().split(' ') 274 | label = pid2label[int(pid)] 275 | 276 | # if label in [8192,1984,2110,6344,8566,8589,9362]: # only with single image pair 277 | # print(img_name) 278 | domain = 0 if 'VIS' in img_name else 1 279 | img_list_F.append((os.path.join(self.img_root_F + img_name), label, domain)) 280 | 281 | img_list = img_list_R + img_list_F 282 | 283 | return img_list, len(pid_container) 284 | 285 | 286 | from torch.utils.data.sampler import Sampler 287 | import numpy as np 288 | 289 | def GenIdx(train_vis_label, train_nir_label): 290 | def get_idx_from_label(train_label): 291 | pos = [] 292 | unique_train_label = np.unique(train_label) 293 | for ul in unique_train_label: 294 | tmp = np.argwhere(train_label == ul).squeeze().tolist() 295 | if isinstance(tmp,int): 296 | tmp = [tmp] 297 | pos.append(tmp) 298 | return pos 299 | 300 | vis_pos = get_idx_from_label(train_vis_label) 301 | nir_pos = get_idx_from_label(train_nir_label) 302 | 303 | return vis_pos, nir_pos 304 | 305 | 306 | class IdentitySampler(Sampler): 307 | """Sample person identities evenly in each batch. 308 | Args: 309 | train_color_label, train_thermal_label: labels of two modalities 310 | color_pos, thermal_pos: positions of each identity 311 | batchSize: batch size 312 | """ 313 | 314 | def __init__(self, train_color_label, train_thermal_label, color_pos, thermal_pos, batchSize, num_img_per_id = 4): 315 | uni_label = np.unique(train_color_label) 316 | self.n_classes = len(uni_label) 317 | 318 | sample_color = np.arange(batchSize) 319 | sample_thermal = np.arange(batchSize) 320 | N = np.maximum(len(train_color_label), len(train_thermal_label)) 321 | 322 | num_id_per_batch = batchSize / num_img_per_id 323 | 324 | for j in range(N//batchSize+1): 325 | batch_idx = np.random.choice(uni_label, int(num_id_per_batch), replace=False) 326 | 327 | for s, i in enumerate(range(0, batchSize, num_img_per_id)): 328 | sample_flag = True if len(color_pos[batch_idx[s]]) < num_img_per_id or len(thermal_pos[batch_idx[s]]) < num_img_per_id else False 329 | 330 | sample_color[i:i+num_img_per_id] = np.random.choice(color_pos[batch_idx[s]], num_img_per_id, replace=sample_flag) 331 | sample_thermal[i:i+num_img_per_id] = np.random.choice(thermal_pos[batch_idx[s]], num_img_per_id, replace=sample_flag) 332 | 333 | if j ==0: 334 | index1= sample_color 335 | index2= sample_thermal 336 | else: 337 | index1 = np.hstack((index1, sample_color)) 338 | index2 = np.hstack((index2, sample_thermal)) 339 | 340 | self.visIndex = index1 341 | self.nirIndex = index2 342 | self.N = N 343 | 344 | def __iter__(self): 345 | return iter(np.arange(len(self.visIndex))) 346 | 347 | def __len__(self): 348 | return self.N -------------------------------------------------------------------------------- /data/buaa/test_nir_paths.txt: -------------------------------------------------------------------------------- 1 | 59/12.bmp 2 | 59/14.bmp 3 | 59/8.bmp 4 | 59/18.bmp 5 | 59/16.bmp 6 | 59/22.bmp 7 | 59/26.bmp 8 | 59/2.bmp 9 | 59/24.bmp 10 | 59/10.bmp 11 | 59/4.bmp 12 | 59/6.bmp 13 | 59/28.bmp 14 | 108/12.bmp 15 | 108/14.bmp 16 | 108/8.bmp 17 | 108/18.bmp 18 | 108/16.bmp 19 | 108/22.bmp 20 | 108/26.bmp 21 | 108/2.bmp 22 | 108/24.bmp 23 | 108/10.bmp 24 | 108/4.bmp 25 | 108/6.bmp 26 | 108/28.bmp 27 | 35/12.bmp 28 | 35/14.bmp 29 | 35/8.bmp 30 | 35/18.bmp 31 | 35/16.bmp 32 | 35/22.bmp 33 | 35/26.bmp 34 | 35/2.bmp 35 | 35/24.bmp 36 | 35/10.bmp 37 | 35/4.bmp 38 | 35/6.bmp 39 | 35/28.bmp 40 | 61/12.bmp 41 | 61/14.bmp 42 | 61/8.bmp 43 | 61/18.bmp 44 | 61/16.bmp 45 | 61/22.bmp 46 | 61/26.bmp 47 | 61/2.bmp 48 | 61/24.bmp 49 | 61/10.bmp 50 | 61/4.bmp 51 | 61/6.bmp 52 | 61/28.bmp 53 | 68/12.bmp 54 | 68/14.bmp 55 | 68/8.bmp 56 | 68/18.bmp 57 | 68/16.bmp 58 | 68/22.bmp 59 | 68/26.bmp 60 | 68/2.bmp 61 | 68/24.bmp 62 | 68/10.bmp 63 | 68/4.bmp 64 | 68/6.bmp 65 | 68/28.bmp 66 | 21/12.bmp 67 | 21/14.bmp 68 | 21/8.bmp 69 | 21/18.bmp 70 | 21/16.bmp 71 | 21/22.bmp 72 | 21/26.bmp 73 | 21/2.bmp 74 | 21/24.bmp 75 | 21/10.bmp 76 | 21/4.bmp 77 | 21/6.bmp 78 | 21/28.bmp 79 | 85/12.bmp 80 | 85/14.bmp 81 | 85/8.bmp 82 | 85/18.bmp 83 | 85/16.bmp 84 | 85/22.bmp 85 | 85/26.bmp 86 | 85/2.bmp 87 | 85/24.bmp 88 | 85/10.bmp 89 | 85/4.bmp 90 | 85/6.bmp 91 | 85/28.bmp 92 | 97/12.bmp 93 | 97/14.bmp 94 | 97/8.bmp 95 | 97/18.bmp 96 | 97/16.bmp 97 | 97/22.bmp 98 | 97/26.bmp 99 | 97/2.bmp 100 | 97/24.bmp 101 | 97/10.bmp 102 | 97/4.bmp 103 | 97/6.bmp 104 | 97/28.bmp 105 | 72/12.bmp 106 | 72/14.bmp 107 | 72/8.bmp 108 | 72/18.bmp 109 | 72/16.bmp 110 | 72/22.bmp 111 | 72/26.bmp 112 | 72/2.bmp 113 | 72/24.bmp 114 | 72/10.bmp 115 | 72/4.bmp 116 | 72/6.bmp 117 | 72/28.bmp 118 | 126/12.bmp 119 | 126/14.bmp 120 | 126/8.bmp 121 | 126/18.bmp 122 | 126/16.bmp 123 | 126/22.bmp 124 | 126/26.bmp 125 | 126/2.bmp 126 | 126/24.bmp 127 | 126/10.bmp 128 | 126/4.bmp 129 | 126/6.bmp 130 | 126/28.bmp 131 | 112/12.bmp 132 | 112/14.bmp 133 | 112/8.bmp 134 | 112/18.bmp 135 | 112/16.bmp 136 | 112/22.bmp 137 | 112/26.bmp 138 | 112/2.bmp 139 | 112/24.bmp 140 | 112/10.bmp 141 | 112/4.bmp 142 | 112/6.bmp 143 | 112/28.bmp 144 | 30/12.bmp 145 | 30/14.bmp 146 | 30/8.bmp 147 | 30/18.bmp 148 | 30/16.bmp 149 | 30/22.bmp 150 | 30/26.bmp 151 | 30/2.bmp 152 | 30/24.bmp 153 | 30/10.bmp 154 | 30/4.bmp 155 | 30/6.bmp 156 | 30/28.bmp 157 | 87/12.bmp 158 | 87/14.bmp 159 | 87/8.bmp 160 | 87/18.bmp 161 | 87/16.bmp 162 | 87/22.bmp 163 | 87/26.bmp 164 | 87/2.bmp 165 | 87/24.bmp 166 | 87/10.bmp 167 | 87/4.bmp 168 | 87/6.bmp 169 | 87/28.bmp 170 | 99/12.bmp 171 | 99/14.bmp 172 | 99/8.bmp 173 | 99/18.bmp 174 | 99/16.bmp 175 | 99/22.bmp 176 | 99/26.bmp 177 | 99/2.bmp 178 | 99/24.bmp 179 | 99/10.bmp 180 | 99/4.bmp 181 | 99/6.bmp 182 | 99/28.bmp 183 | 149/12.bmp 184 | 149/14.bmp 185 | 149/8.bmp 186 | 149/18.bmp 187 | 149/16.bmp 188 | 149/22.bmp 189 | 149/26.bmp 190 | 149/2.bmp 191 | 149/24.bmp 192 | 149/10.bmp 193 | 149/4.bmp 194 | 149/6.bmp 195 | 149/28.bmp 196 | 104/12.bmp 197 | 104/14.bmp 198 | 104/8.bmp 199 | 104/18.bmp 200 | 104/16.bmp 201 | 104/22.bmp 202 | 104/26.bmp 203 | 104/2.bmp 204 | 104/24.bmp 205 | 104/10.bmp 206 | 104/4.bmp 207 | 104/6.bmp 208 | 104/28.bmp 209 | 101/12.bmp 210 | 101/14.bmp 211 | 101/8.bmp 212 | 101/18.bmp 213 | 101/16.bmp 214 | 101/22.bmp 215 | 101/26.bmp 216 | 101/2.bmp 217 | 101/24.bmp 218 | 101/10.bmp 219 | 101/4.bmp 220 | 101/6.bmp 221 | 101/28.bmp 222 | 36/12.bmp 223 | 36/14.bmp 224 | 36/8.bmp 225 | 36/18.bmp 226 | 36/16.bmp 227 | 36/22.bmp 228 | 36/26.bmp 229 | 36/2.bmp 230 | 36/24.bmp 231 | 36/10.bmp 232 | 36/4.bmp 233 | 36/6.bmp 234 | 36/28.bmp 235 | 103/12.bmp 236 | 103/14.bmp 237 | 103/8.bmp 238 | 103/18.bmp 239 | 103/16.bmp 240 | 103/22.bmp 241 | 103/26.bmp 242 | 103/2.bmp 243 | 103/24.bmp 244 | 103/10.bmp 245 | 103/4.bmp 246 | 103/6.bmp 247 | 103/28.bmp 248 | 98/12.bmp 249 | 98/14.bmp 250 | 98/8.bmp 251 | 98/18.bmp 252 | 98/16.bmp 253 | 98/22.bmp 254 | 98/26.bmp 255 | 98/2.bmp 256 | 98/24.bmp 257 | 98/10.bmp 258 | 98/4.bmp 259 | 98/6.bmp 260 | 98/28.bmp 261 | 3/12.bmp 262 | 3/14.bmp 263 | 3/8.bmp 264 | 3/18.bmp 265 | 3/16.bmp 266 | 3/22.bmp 267 | 3/26.bmp 268 | 3/2.bmp 269 | 3/24.bmp 270 | 3/10.bmp 271 | 3/4.bmp 272 | 3/6.bmp 273 | 3/28.bmp 274 | 95/12.bmp 275 | 95/14.bmp 276 | 95/8.bmp 277 | 95/18.bmp 278 | 95/16.bmp 279 | 95/22.bmp 280 | 95/26.bmp 281 | 95/2.bmp 282 | 95/24.bmp 283 | 95/10.bmp 284 | 95/4.bmp 285 | 95/6.bmp 286 | 95/28.bmp 287 | 42/12.bmp 288 | 42/14.bmp 289 | 42/8.bmp 290 | 42/18.bmp 291 | 42/16.bmp 292 | 42/22.bmp 293 | 42/26.bmp 294 | 42/2.bmp 295 | 42/24.bmp 296 | 42/10.bmp 297 | 42/4.bmp 298 | 42/6.bmp 299 | 42/28.bmp 300 | 134/12.bmp 301 | 134/14.bmp 302 | 134/8.bmp 303 | 134/18.bmp 304 | 134/16.bmp 305 | 134/22.bmp 306 | 134/26.bmp 307 | 134/2.bmp 308 | 134/24.bmp 309 | 134/10.bmp 310 | 134/4.bmp 311 | 134/6.bmp 312 | 134/28.bmp 313 | 69/12.bmp 314 | 69/14.bmp 315 | 69/8.bmp 316 | 69/18.bmp 317 | 69/16.bmp 318 | 69/22.bmp 319 | 69/26.bmp 320 | 69/2.bmp 321 | 69/24.bmp 322 | 69/10.bmp 323 | 69/4.bmp 324 | 69/6.bmp 325 | 69/28.bmp 326 | 31/12.bmp 327 | 31/14.bmp 328 | 31/8.bmp 329 | 31/18.bmp 330 | 31/16.bmp 331 | 31/22.bmp 332 | 31/26.bmp 333 | 31/2.bmp 334 | 31/24.bmp 335 | 31/10.bmp 336 | 31/4.bmp 337 | 31/6.bmp 338 | 31/28.bmp 339 | 148/12.bmp 340 | 148/14.bmp 341 | 148/8.bmp 342 | 148/18.bmp 343 | 148/16.bmp 344 | 148/22.bmp 345 | 148/26.bmp 346 | 148/2.bmp 347 | 148/24.bmp 348 | 148/10.bmp 349 | 148/4.bmp 350 | 148/6.bmp 351 | 148/28.bmp 352 | 86/12.bmp 353 | 86/14.bmp 354 | 86/8.bmp 355 | 86/18.bmp 356 | 86/16.bmp 357 | 86/22.bmp 358 | 86/26.bmp 359 | 86/2.bmp 360 | 86/24.bmp 361 | 86/10.bmp 362 | 86/4.bmp 363 | 86/6.bmp 364 | 86/28.bmp 365 | 47/12.bmp 366 | 47/14.bmp 367 | 47/8.bmp 368 | 47/18.bmp 369 | 47/16.bmp 370 | 47/22.bmp 371 | 47/26.bmp 372 | 47/2.bmp 373 | 47/24.bmp 374 | 47/10.bmp 375 | 47/4.bmp 376 | 47/6.bmp 377 | 47/28.bmp 378 | 27/12.bmp 379 | 27/14.bmp 380 | 27/8.bmp 381 | 27/18.bmp 382 | 27/16.bmp 383 | 27/22.bmp 384 | 27/26.bmp 385 | 27/2.bmp 386 | 27/24.bmp 387 | 27/10.bmp 388 | 27/4.bmp 389 | 27/6.bmp 390 | 27/28.bmp 391 | 50/12.bmp 392 | 50/14.bmp 393 | 50/8.bmp 394 | 50/18.bmp 395 | 50/16.bmp 396 | 50/22.bmp 397 | 50/26.bmp 398 | 50/2.bmp 399 | 50/24.bmp 400 | 50/10.bmp 401 | 50/4.bmp 402 | 50/6.bmp 403 | 50/28.bmp 404 | 41/12.bmp 405 | 41/14.bmp 406 | 41/8.bmp 407 | 41/18.bmp 408 | 41/16.bmp 409 | 41/22.bmp 410 | 41/26.bmp 411 | 41/2.bmp 412 | 41/24.bmp 413 | 41/10.bmp 414 | 41/4.bmp 415 | 41/6.bmp 416 | 41/28.bmp 417 | 66/12.bmp 418 | 66/14.bmp 419 | 66/8.bmp 420 | 66/18.bmp 421 | 66/16.bmp 422 | 66/22.bmp 423 | 66/26.bmp 424 | 66/2.bmp 425 | 66/24.bmp 426 | 66/10.bmp 427 | 66/4.bmp 428 | 66/6.bmp 429 | 66/28.bmp 430 | 37/12.bmp 431 | 37/14.bmp 432 | 37/8.bmp 433 | 37/18.bmp 434 | 37/16.bmp 435 | 37/22.bmp 436 | 37/26.bmp 437 | 37/2.bmp 438 | 37/24.bmp 439 | 37/10.bmp 440 | 37/4.bmp 441 | 37/6.bmp 442 | 37/28.bmp 443 | 141/12.bmp 444 | 141/14.bmp 445 | 141/8.bmp 446 | 141/18.bmp 447 | 141/16.bmp 448 | 141/22.bmp 449 | 141/26.bmp 450 | 141/2.bmp 451 | 141/24.bmp 452 | 141/10.bmp 453 | 141/4.bmp 454 | 141/6.bmp 455 | 141/28.bmp 456 | 77/12.bmp 457 | 77/14.bmp 458 | 77/8.bmp 459 | 77/18.bmp 460 | 77/16.bmp 461 | 77/22.bmp 462 | 77/26.bmp 463 | 77/2.bmp 464 | 77/24.bmp 465 | 77/10.bmp 466 | 77/4.bmp 467 | 77/6.bmp 468 | 77/28.bmp 469 | 44/12.bmp 470 | 44/14.bmp 471 | 44/8.bmp 472 | 44/18.bmp 473 | 44/16.bmp 474 | 44/22.bmp 475 | 44/26.bmp 476 | 44/2.bmp 477 | 44/24.bmp 478 | 44/10.bmp 479 | 44/4.bmp 480 | 44/6.bmp 481 | 44/28.bmp 482 | 60/12.bmp 483 | 60/14.bmp 484 | 60/8.bmp 485 | 60/18.bmp 486 | 60/16.bmp 487 | 60/22.bmp 488 | 60/26.bmp 489 | 60/2.bmp 490 | 60/24.bmp 491 | 60/10.bmp 492 | 60/4.bmp 493 | 60/6.bmp 494 | 60/28.bmp 495 | 62/12.bmp 496 | 62/14.bmp 497 | 62/8.bmp 498 | 62/18.bmp 499 | 62/16.bmp 500 | 62/22.bmp 501 | 62/26.bmp 502 | 62/2.bmp 503 | 62/24.bmp 504 | 62/10.bmp 505 | 62/4.bmp 506 | 62/6.bmp 507 | 62/28.bmp 508 | 109/12.bmp 509 | 109/14.bmp 510 | 109/8.bmp 511 | 109/18.bmp 512 | 109/16.bmp 513 | 109/22.bmp 514 | 109/26.bmp 515 | 109/2.bmp 516 | 109/24.bmp 517 | 109/10.bmp 518 | 109/4.bmp 519 | 109/6.bmp 520 | 109/28.bmp 521 | 51/12.bmp 522 | 51/14.bmp 523 | 51/8.bmp 524 | 51/18.bmp 525 | 51/16.bmp 526 | 51/22.bmp 527 | 51/26.bmp 528 | 51/2.bmp 529 | 51/24.bmp 530 | 51/10.bmp 531 | 51/4.bmp 532 | 51/6.bmp 533 | 51/28.bmp 534 | 13/12.bmp 535 | 13/14.bmp 536 | 13/8.bmp 537 | 13/18.bmp 538 | 13/16.bmp 539 | 13/22.bmp 540 | 13/26.bmp 541 | 13/2.bmp 542 | 13/24.bmp 543 | 13/10.bmp 544 | 13/4.bmp 545 | 13/6.bmp 546 | 13/28.bmp 547 | 100/12.bmp 548 | 100/14.bmp 549 | 100/8.bmp 550 | 100/18.bmp 551 | 100/16.bmp 552 | 100/22.bmp 553 | 100/26.bmp 554 | 100/2.bmp 555 | 100/24.bmp 556 | 100/10.bmp 557 | 100/4.bmp 558 | 100/6.bmp 559 | 100/28.bmp 560 | 125/12.bmp 561 | 125/14.bmp 562 | 125/8.bmp 563 | 125/18.bmp 564 | 125/16.bmp 565 | 125/22.bmp 566 | 125/26.bmp 567 | 125/2.bmp 568 | 125/24.bmp 569 | 125/10.bmp 570 | 125/4.bmp 571 | 125/6.bmp 572 | 125/28.bmp 573 | 122/12.bmp 574 | 122/14.bmp 575 | 122/8.bmp 576 | 122/18.bmp 577 | 122/16.bmp 578 | 122/22.bmp 579 | 122/26.bmp 580 | 122/2.bmp 581 | 122/24.bmp 582 | 122/10.bmp 583 | 122/4.bmp 584 | 122/6.bmp 585 | 122/28.bmp 586 | 138/12.bmp 587 | 138/14.bmp 588 | 138/8.bmp 589 | 138/18.bmp 590 | 138/16.bmp 591 | 138/22.bmp 592 | 138/26.bmp 593 | 138/2.bmp 594 | 138/24.bmp 595 | 138/10.bmp 596 | 138/4.bmp 597 | 138/6.bmp 598 | 138/28.bmp 599 | 143/12.bmp 600 | 143/14.bmp 601 | 143/8.bmp 602 | 143/18.bmp 603 | 143/16.bmp 604 | 143/22.bmp 605 | 143/26.bmp 606 | 143/2.bmp 607 | 143/24.bmp 608 | 143/10.bmp 609 | 143/4.bmp 610 | 143/6.bmp 611 | 143/28.bmp 612 | 116/12.bmp 613 | 116/14.bmp 614 | 116/8.bmp 615 | 116/18.bmp 616 | 116/16.bmp 617 | 116/22.bmp 618 | 116/26.bmp 619 | 116/2.bmp 620 | 116/24.bmp 621 | 116/10.bmp 622 | 116/4.bmp 623 | 116/6.bmp 624 | 116/28.bmp 625 | 43/12.bmp 626 | 43/14.bmp 627 | 43/8.bmp 628 | 43/18.bmp 629 | 43/16.bmp 630 | 43/22.bmp 631 | 43/26.bmp 632 | 43/2.bmp 633 | 43/24.bmp 634 | 43/10.bmp 635 | 43/4.bmp 636 | 43/6.bmp 637 | 43/28.bmp 638 | 29/12.bmp 639 | 29/14.bmp 640 | 29/8.bmp 641 | 29/18.bmp 642 | 29/16.bmp 643 | 29/22.bmp 644 | 29/26.bmp 645 | 29/2.bmp 646 | 29/24.bmp 647 | 29/10.bmp 648 | 29/4.bmp 649 | 29/6.bmp 650 | 29/28.bmp 651 | 139/12.bmp 652 | 139/14.bmp 653 | 139/8.bmp 654 | 139/18.bmp 655 | 139/16.bmp 656 | 139/22.bmp 657 | 139/26.bmp 658 | 139/2.bmp 659 | 139/24.bmp 660 | 139/10.bmp 661 | 139/4.bmp 662 | 139/6.bmp 663 | 139/28.bmp 664 | 46/12.bmp 665 | 46/14.bmp 666 | 46/8.bmp 667 | 46/18.bmp 668 | 46/16.bmp 669 | 46/22.bmp 670 | 46/26.bmp 671 | 46/2.bmp 672 | 46/24.bmp 673 | 46/10.bmp 674 | 46/4.bmp 675 | 46/6.bmp 676 | 46/28.bmp 677 | 67/12.bmp 678 | 67/14.bmp 679 | 67/8.bmp 680 | 67/18.bmp 681 | 67/16.bmp 682 | 67/22.bmp 683 | 67/26.bmp 684 | 67/2.bmp 685 | 67/24.bmp 686 | 67/10.bmp 687 | 67/4.bmp 688 | 67/6.bmp 689 | 67/28.bmp 690 | 145/12.bmp 691 | 145/14.bmp 692 | 145/8.bmp 693 | 145/18.bmp 694 | 145/16.bmp 695 | 145/22.bmp 696 | 145/26.bmp 697 | 145/2.bmp 698 | 145/24.bmp 699 | 145/10.bmp 700 | 145/4.bmp 701 | 145/6.bmp 702 | 145/28.bmp 703 | 58/12.bmp 704 | 58/14.bmp 705 | 58/8.bmp 706 | 58/18.bmp 707 | 58/16.bmp 708 | 58/22.bmp 709 | 58/26.bmp 710 | 58/2.bmp 711 | 58/24.bmp 712 | 58/10.bmp 713 | 58/4.bmp 714 | 58/6.bmp 715 | 58/28.bmp 716 | 48/12.bmp 717 | 48/14.bmp 718 | 48/8.bmp 719 | 48/18.bmp 720 | 48/16.bmp 721 | 48/22.bmp 722 | 48/26.bmp 723 | 48/2.bmp 724 | 48/24.bmp 725 | 48/10.bmp 726 | 48/4.bmp 727 | 48/6.bmp 728 | 48/28.bmp 729 | 55/12.bmp 730 | 55/14.bmp 731 | 55/8.bmp 732 | 55/18.bmp 733 | 55/16.bmp 734 | 55/22.bmp 735 | 55/26.bmp 736 | 55/2.bmp 737 | 55/24.bmp 738 | 55/10.bmp 739 | 55/4.bmp 740 | 55/6.bmp 741 | 55/28.bmp 742 | 17/12.bmp 743 | 17/14.bmp 744 | 17/8.bmp 745 | 17/18.bmp 746 | 17/16.bmp 747 | 17/22.bmp 748 | 17/26.bmp 749 | 17/2.bmp 750 | 17/24.bmp 751 | 17/10.bmp 752 | 17/4.bmp 753 | 17/6.bmp 754 | 17/28.bmp 755 | 7/12.bmp 756 | 7/14.bmp 757 | 7/8.bmp 758 | 7/18.bmp 759 | 7/16.bmp 760 | 7/22.bmp 761 | 7/26.bmp 762 | 7/2.bmp 763 | 7/24.bmp 764 | 7/10.bmp 765 | 7/4.bmp 766 | 7/6.bmp 767 | 7/28.bmp 768 | 5/8.bmp 769 | 5/22.bmp 770 | 5/26.bmp 771 | 5/2.bmp 772 | 5/24.bmp 773 | 5/10.bmp 774 | 5/4.bmp 775 | 5/6.bmp 776 | 5/28.bmp 777 | 25/12.bmp 778 | 25/14.bmp 779 | 25/8.bmp 780 | 25/18.bmp 781 | 25/16.bmp 782 | 25/22.bmp 783 | 25/26.bmp 784 | 25/2.bmp 785 | 25/24.bmp 786 | 25/10.bmp 787 | 25/4.bmp 788 | 25/6.bmp 789 | 25/28.bmp 790 | 70/12.bmp 791 | 70/14.bmp 792 | 70/8.bmp 793 | 70/18.bmp 794 | 70/16.bmp 795 | 70/22.bmp 796 | 70/26.bmp 797 | 70/2.bmp 798 | 70/24.bmp 799 | 70/10.bmp 800 | 70/4.bmp 801 | 70/6.bmp 802 | 70/28.bmp 803 | 65/12.bmp 804 | 65/14.bmp 805 | 65/8.bmp 806 | 65/18.bmp 807 | 65/16.bmp 808 | 65/22.bmp 809 | 65/26.bmp 810 | 65/2.bmp 811 | 65/24.bmp 812 | 65/10.bmp 813 | 65/4.bmp 814 | 65/6.bmp 815 | 65/28.bmp 816 | 15/12.bmp 817 | 15/14.bmp 818 | 15/8.bmp 819 | 15/18.bmp 820 | 15/16.bmp 821 | 15/22.bmp 822 | 15/26.bmp 823 | 15/2.bmp 824 | 15/24.bmp 825 | 15/10.bmp 826 | 15/4.bmp 827 | 15/6.bmp 828 | 15/28.bmp 829 | 132/12.bmp 830 | 132/14.bmp 831 | 132/8.bmp 832 | 132/18.bmp 833 | 132/16.bmp 834 | 132/22.bmp 835 | 132/26.bmp 836 | 132/2.bmp 837 | 132/24.bmp 838 | 132/10.bmp 839 | 132/4.bmp 840 | 132/6.bmp 841 | 132/28.bmp 842 | 124/12.bmp 843 | 124/14.bmp 844 | 124/8.bmp 845 | 124/18.bmp 846 | 124/16.bmp 847 | 124/22.bmp 848 | 124/26.bmp 849 | 124/2.bmp 850 | 124/24.bmp 851 | 124/10.bmp 852 | 124/4.bmp 853 | 124/6.bmp 854 | 124/28.bmp 855 | 64/12.bmp 856 | 64/14.bmp 857 | 64/8.bmp 858 | 64/18.bmp 859 | 64/16.bmp 860 | 64/22.bmp 861 | 64/26.bmp 862 | 64/2.bmp 863 | 64/24.bmp 864 | 64/10.bmp 865 | 64/4.bmp 866 | 64/6.bmp 867 | 64/28.bmp 868 | 88/12.bmp 869 | 88/14.bmp 870 | 88/8.bmp 871 | 88/18.bmp 872 | 88/16.bmp 873 | 88/22.bmp 874 | 88/26.bmp 875 | 88/2.bmp 876 | 88/24.bmp 877 | 88/10.bmp 878 | 88/4.bmp 879 | 88/6.bmp 880 | 88/28.bmp 881 | 78/12.bmp 882 | 78/14.bmp 883 | 78/8.bmp 884 | 78/18.bmp 885 | 78/16.bmp 886 | 78/22.bmp 887 | 78/26.bmp 888 | 78/2.bmp 889 | 78/24.bmp 890 | 78/10.bmp 891 | 78/4.bmp 892 | 78/6.bmp 893 | 78/28.bmp 894 | 4/8.bmp 895 | 4/22.bmp 896 | 4/26.bmp 897 | 4/2.bmp 898 | 4/24.bmp 899 | 4/10.bmp 900 | 4/4.bmp 901 | 4/6.bmp 902 | 4/28.bmp 903 | 11/12.bmp 904 | 11/14.bmp 905 | 11/8.bmp 906 | 11/18.bmp 907 | 11/16.bmp 908 | 11/22.bmp 909 | 11/26.bmp 910 | 11/2.bmp 911 | 11/24.bmp 912 | 11/10.bmp 913 | 11/4.bmp 914 | 11/6.bmp 915 | 11/28.bmp 916 | 34/12.bmp 917 | 34/14.bmp 918 | 34/8.bmp 919 | 34/18.bmp 920 | 34/16.bmp 921 | 34/22.bmp 922 | 34/26.bmp 923 | 34/2.bmp 924 | 34/24.bmp 925 | 34/10.bmp 926 | 34/4.bmp 927 | 34/6.bmp 928 | 34/28.bmp 929 | 38/12.bmp 930 | 38/14.bmp 931 | 38/8.bmp 932 | 38/18.bmp 933 | 38/16.bmp 934 | 38/22.bmp 935 | 38/26.bmp 936 | 38/2.bmp 937 | 38/24.bmp 938 | 38/10.bmp 939 | 38/4.bmp 940 | 38/6.bmp 941 | 38/28.bmp 942 | 131/12.bmp 943 | 131/14.bmp 944 | 131/8.bmp 945 | 131/18.bmp 946 | 131/16.bmp 947 | 131/22.bmp 948 | 131/26.bmp 949 | 131/2.bmp 950 | 131/24.bmp 951 | 131/10.bmp 952 | 131/4.bmp 953 | 131/6.bmp 954 | 131/28.bmp 955 | 129/12.bmp 956 | 129/14.bmp 957 | 129/8.bmp 958 | 129/18.bmp 959 | 129/16.bmp 960 | 129/22.bmp 961 | 129/26.bmp 962 | 129/2.bmp 963 | 129/24.bmp 964 | 129/10.bmp 965 | 129/4.bmp 966 | 129/6.bmp 967 | 129/28.bmp 968 | 89/12.bmp 969 | 89/14.bmp 970 | 89/8.bmp 971 | 89/18.bmp 972 | 89/16.bmp 973 | 89/22.bmp 974 | 89/26.bmp 975 | 89/2.bmp 976 | 89/24.bmp 977 | 89/10.bmp 978 | 89/4.bmp 979 | 89/6.bmp 980 | 89/28.bmp 981 | 114/12.bmp 982 | 114/14.bmp 983 | 114/8.bmp 984 | 114/18.bmp 985 | 114/16.bmp 986 | 114/22.bmp 987 | 114/26.bmp 988 | 114/2.bmp 989 | 114/24.bmp 990 | 114/10.bmp 991 | 114/4.bmp 992 | 114/6.bmp 993 | 114/28.bmp 994 | 53/12.bmp 995 | 53/14.bmp 996 | 53/8.bmp 997 | 53/18.bmp 998 | 53/16.bmp 999 | 53/22.bmp 1000 | 53/26.bmp 1001 | 53/2.bmp 1002 | 53/24.bmp 1003 | 53/10.bmp 1004 | 53/4.bmp 1005 | 53/6.bmp 1006 | 53/28.bmp 1007 | 32/12.bmp 1008 | 32/14.bmp 1009 | 32/8.bmp 1010 | 32/18.bmp 1011 | 32/16.bmp 1012 | 32/22.bmp 1013 | 32/26.bmp 1014 | 32/2.bmp 1015 | 32/24.bmp 1016 | 32/10.bmp 1017 | 32/4.bmp 1018 | 32/6.bmp 1019 | 32/28.bmp 1020 | 45/12.bmp 1021 | 45/14.bmp 1022 | 45/8.bmp 1023 | 45/18.bmp 1024 | 45/16.bmp 1025 | 45/22.bmp 1026 | 45/26.bmp 1027 | 45/2.bmp 1028 | 45/24.bmp 1029 | 45/10.bmp 1030 | 45/4.bmp 1031 | 45/6.bmp 1032 | 45/28.bmp 1033 | 119/12.bmp 1034 | 119/14.bmp 1035 | 119/8.bmp 1036 | 119/18.bmp 1037 | 119/16.bmp 1038 | 119/22.bmp 1039 | 119/26.bmp 1040 | 119/2.bmp 1041 | 119/24.bmp 1042 | 119/10.bmp 1043 | 119/4.bmp 1044 | 119/6.bmp 1045 | 119/28.bmp 1046 | 133/12.bmp 1047 | 133/14.bmp 1048 | 133/8.bmp 1049 | 133/18.bmp 1050 | 133/16.bmp 1051 | 133/22.bmp 1052 | 133/26.bmp 1053 | 133/2.bmp 1054 | 133/24.bmp 1055 | 133/10.bmp 1056 | 133/4.bmp 1057 | 133/6.bmp 1058 | 133/28.bmp 1059 | 63/12.bmp 1060 | 63/14.bmp 1061 | 63/8.bmp 1062 | 63/18.bmp 1063 | 63/16.bmp 1064 | 63/22.bmp 1065 | 63/26.bmp 1066 | 63/2.bmp 1067 | 63/24.bmp 1068 | 63/10.bmp 1069 | 63/4.bmp 1070 | 63/6.bmp 1071 | 63/28.bmp 1072 | 146/12.bmp 1073 | 146/14.bmp 1074 | 146/8.bmp 1075 | 146/18.bmp 1076 | 146/16.bmp 1077 | 146/22.bmp 1078 | 146/26.bmp 1079 | 146/2.bmp 1080 | 146/24.bmp 1081 | 146/10.bmp 1082 | 146/4.bmp 1083 | 146/6.bmp 1084 | 146/28.bmp 1085 | 80/12.bmp 1086 | 80/14.bmp 1087 | 80/8.bmp 1088 | 80/18.bmp 1089 | 80/16.bmp 1090 | 80/22.bmp 1091 | 80/26.bmp 1092 | 80/2.bmp 1093 | 80/24.bmp 1094 | 80/10.bmp 1095 | 80/4.bmp 1096 | 80/6.bmp 1097 | 80/28.bmp 1098 | 113/12.bmp 1099 | 113/14.bmp 1100 | 113/8.bmp 1101 | 113/18.bmp 1102 | 113/16.bmp 1103 | 113/22.bmp 1104 | 113/26.bmp 1105 | 113/2.bmp 1106 | 113/24.bmp 1107 | 113/10.bmp 1108 | 113/4.bmp 1109 | 113/6.bmp 1110 | 113/28.bmp 1111 | 26/12.bmp 1112 | 26/14.bmp 1113 | 26/8.bmp 1114 | 26/18.bmp 1115 | 26/16.bmp 1116 | 26/22.bmp 1117 | 26/26.bmp 1118 | 26/2.bmp 1119 | 26/24.bmp 1120 | 26/10.bmp 1121 | 26/4.bmp 1122 | 26/6.bmp 1123 | 26/28.bmp 1124 | 96/12.bmp 1125 | 96/14.bmp 1126 | 96/8.bmp 1127 | 96/18.bmp 1128 | 96/16.bmp 1129 | 96/22.bmp 1130 | 96/26.bmp 1131 | 96/2.bmp 1132 | 96/24.bmp 1133 | 96/10.bmp 1134 | 96/4.bmp 1135 | 96/6.bmp 1136 | 96/28.bmp 1137 | 10/8.bmp 1138 | 10/22.bmp 1139 | 10/26.bmp 1140 | 10/2.bmp 1141 | 10/24.bmp 1142 | 10/10.bmp 1143 | 10/4.bmp 1144 | 10/6.bmp 1145 | 10/28.bmp 1146 | 33/12.bmp 1147 | 33/14.bmp 1148 | 33/8.bmp 1149 | 33/18.bmp 1150 | 33/16.bmp 1151 | 33/22.bmp 1152 | 33/26.bmp 1153 | 33/2.bmp 1154 | 33/24.bmp 1155 | 33/10.bmp 1156 | 33/4.bmp 1157 | 33/6.bmp 1158 | 33/28.bmp 1159 | 16/12.bmp 1160 | 16/14.bmp 1161 | 16/8.bmp 1162 | 16/18.bmp 1163 | 16/16.bmp 1164 | 16/22.bmp 1165 | 16/26.bmp 1166 | 16/2.bmp 1167 | 16/24.bmp 1168 | 16/10.bmp 1169 | 16/4.bmp 1170 | 16/6.bmp 1171 | 16/28.bmp 1172 | 73/12.bmp 1173 | 73/14.bmp 1174 | 73/8.bmp 1175 | 73/18.bmp 1176 | 73/16.bmp 1177 | 73/22.bmp 1178 | 73/26.bmp 1179 | 73/2.bmp 1180 | 73/24.bmp 1181 | 73/10.bmp 1182 | 73/4.bmp 1183 | 73/6.bmp 1184 | 73/28.bmp 1185 | 2/8.bmp 1186 | 2/22.bmp 1187 | 2/26.bmp 1188 | 2/2.bmp 1189 | 2/24.bmp 1190 | 2/10.bmp 1191 | 2/4.bmp 1192 | 2/6.bmp 1193 | 2/28.bmp 1194 | 144/12.bmp 1195 | 144/14.bmp 1196 | 144/8.bmp 1197 | 144/18.bmp 1198 | 144/16.bmp 1199 | 144/22.bmp 1200 | 144/26.bmp 1201 | 144/2.bmp 1202 | 144/24.bmp 1203 | 144/10.bmp 1204 | 144/4.bmp 1205 | 144/6.bmp 1206 | 144/28.bmp 1207 | 106/12.bmp 1208 | 106/14.bmp 1209 | 106/8.bmp 1210 | 106/18.bmp 1211 | 106/16.bmp 1212 | 106/22.bmp 1213 | 106/26.bmp 1214 | 106/2.bmp 1215 | 106/24.bmp 1216 | 106/10.bmp 1217 | 106/4.bmp 1218 | 106/6.bmp 1219 | 106/28.bmp 1220 | 54/12.bmp 1221 | 54/14.bmp 1222 | 54/8.bmp 1223 | 54/18.bmp 1224 | 54/16.bmp 1225 | 54/22.bmp 1226 | 54/26.bmp 1227 | 54/2.bmp 1228 | 54/24.bmp 1229 | 54/10.bmp 1230 | 54/4.bmp 1231 | 54/6.bmp 1232 | 54/28.bmp 1233 | 147/12.bmp 1234 | 147/14.bmp 1235 | 147/8.bmp 1236 | 147/18.bmp 1237 | 147/16.bmp 1238 | 147/22.bmp 1239 | 147/26.bmp 1240 | 147/2.bmp 1241 | 147/24.bmp 1242 | 147/10.bmp 1243 | 147/4.bmp 1244 | 147/6.bmp 1245 | 147/28.bmp 1246 | 81/12.bmp 1247 | 81/14.bmp 1248 | 81/8.bmp 1249 | 81/18.bmp 1250 | 81/16.bmp 1251 | 81/22.bmp 1252 | 81/26.bmp 1253 | 81/2.bmp 1254 | 81/24.bmp 1255 | 81/10.bmp 1256 | 81/4.bmp 1257 | 81/6.bmp 1258 | 81/28.bmp 1259 | 82/12.bmp 1260 | 82/14.bmp 1261 | 82/8.bmp 1262 | 82/18.bmp 1263 | 82/16.bmp 1264 | 82/22.bmp 1265 | 82/26.bmp 1266 | 82/2.bmp 1267 | 82/24.bmp 1268 | 82/10.bmp 1269 | 82/4.bmp 1270 | 82/6.bmp 1271 | 82/28.bmp 1272 | 52/12.bmp 1273 | 52/14.bmp 1274 | 52/8.bmp 1275 | 52/18.bmp 1276 | 52/16.bmp 1277 | 52/22.bmp 1278 | 52/26.bmp 1279 | 52/2.bmp 1280 | 52/24.bmp 1281 | 52/10.bmp 1282 | 52/4.bmp 1283 | 52/6.bmp 1284 | 52/28.bmp 1285 | -------------------------------------------------------------------------------- /data/oulu/test_nir_paths.txt: -------------------------------------------------------------------------------- 1 | NI/Strong/P009/Anger/018.jpeg 9 2 | NI/Strong/P009/Anger/008.jpeg 9 3 | NI/Strong/P009/Anger/010.jpeg 9 4 | NI/Strong/P009/Anger/013.jpeg 9 5 | NI/Strong/P009/Anger/002.jpeg 9 6 | NI/Strong/P009/Anger/017.jpeg 9 7 | NI/Strong/P009/Anger/005.jpeg 9 8 | NI/Strong/P009/Anger/006.jpeg 9 9 | NI/Strong/P009/Disgust/007.jpeg 9 10 | NI/Strong/P009/Disgust/017.jpeg 9 11 | NI/Strong/P009/Disgust/021.jpeg 9 12 | NI/Strong/P009/Disgust/011.jpeg 9 13 | NI/Strong/P009/Disgust/003.jpeg 9 14 | NI/Strong/P009/Disgust/006.jpeg 9 15 | NI/Strong/P009/Disgust/020.jpeg 9 16 | NI/Strong/P009/Disgust/005.jpeg 9 17 | NI/Strong/P009/Fear/008.jpeg 9 18 | NI/Strong/P009/Fear/007.jpeg 9 19 | NI/Strong/P009/Fear/010.jpeg 9 20 | NI/Strong/P009/Fear/014.jpeg 9 21 | NI/Strong/P009/Fear/006.jpeg 9 22 | NI/Strong/P009/Fear/015.jpeg 9 23 | NI/Strong/P009/Fear/021.jpeg 9 24 | NI/Strong/P009/Fear/016.jpeg 9 25 | NI/Strong/P009/Happiness/016.jpeg 9 26 | NI/Strong/P009/Happiness/013.jpeg 9 27 | NI/Strong/P009/Happiness/009.jpeg 9 28 | NI/Strong/P009/Happiness/001.jpeg 9 29 | NI/Strong/P009/Happiness/003.jpeg 9 30 | NI/Strong/P009/Happiness/014.jpeg 9 31 | NI/Strong/P009/Happiness/006.jpeg 9 32 | NI/Strong/P009/Happiness/008.jpeg 9 33 | NI/Strong/P009/Sadness/010.jpeg 9 34 | NI/Strong/P009/Sadness/002.jpeg 9 35 | NI/Strong/P009/Sadness/000.jpeg 9 36 | NI/Strong/P009/Sadness/007.jpeg 9 37 | NI/Strong/P009/Sadness/008.jpeg 9 38 | NI/Strong/P009/Sadness/001.jpeg 9 39 | NI/Strong/P009/Sadness/011.jpeg 9 40 | NI/Strong/P009/Sadness/003.jpeg 9 41 | NI/Strong/P009/Surprise/016.jpeg 9 42 | NI/Strong/P009/Surprise/013.jpeg 9 43 | NI/Strong/P009/Surprise/015.jpeg 9 44 | NI/Strong/P009/Surprise/010.jpeg 9 45 | NI/Strong/P009/Surprise/000.jpeg 9 46 | NI/Strong/P009/Surprise/017.jpeg 9 47 | NI/Strong/P009/Surprise/019.jpeg 9 48 | NI/Strong/P009/Surprise/005.jpeg 9 49 | NI/Strong/P014/Anger/001.jpeg 14 50 | NI/Strong/P014/Anger/003.jpeg 14 51 | NI/Strong/P014/Anger/013.jpeg 14 52 | NI/Strong/P014/Anger/007.jpeg 14 53 | NI/Strong/P014/Anger/012.jpeg 14 54 | NI/Strong/P014/Anger/015.jpeg 14 55 | NI/Strong/P014/Anger/010.jpeg 14 56 | NI/Strong/P014/Anger/000.jpeg 14 57 | NI/Strong/P014/Disgust/011.jpeg 14 58 | NI/Strong/P014/Disgust/005.jpeg 14 59 | NI/Strong/P014/Disgust/014.jpeg 14 60 | NI/Strong/P014/Disgust/007.jpeg 14 61 | NI/Strong/P014/Disgust/004.jpeg 14 62 | NI/Strong/P014/Disgust/003.jpeg 14 63 | NI/Strong/P014/Disgust/001.jpeg 14 64 | NI/Strong/P014/Disgust/012.jpeg 14 65 | NI/Strong/P014/Fear/003.jpeg 14 66 | NI/Strong/P014/Fear/005.jpeg 14 67 | NI/Strong/P014/Fear/009.jpeg 14 68 | NI/Strong/P014/Fear/001.jpeg 14 69 | NI/Strong/P014/Fear/012.jpeg 14 70 | NI/Strong/P014/Fear/010.jpeg 14 71 | NI/Strong/P014/Fear/004.jpeg 14 72 | NI/Strong/P014/Fear/006.jpeg 14 73 | NI/Strong/P014/Happiness/003.jpeg 14 74 | NI/Strong/P014/Happiness/006.jpeg 14 75 | NI/Strong/P014/Happiness/009.jpeg 14 76 | NI/Strong/P014/Happiness/014.jpeg 14 77 | NI/Strong/P014/Happiness/010.jpeg 14 78 | NI/Strong/P014/Happiness/000.jpeg 14 79 | NI/Strong/P014/Happiness/011.jpeg 14 80 | NI/Strong/P014/Happiness/002.jpeg 14 81 | NI/Strong/P014/Sadness/004.jpeg 14 82 | NI/Strong/P014/Sadness/016.jpeg 14 83 | NI/Strong/P014/Sadness/021.jpeg 14 84 | NI/Strong/P014/Sadness/022.jpeg 14 85 | NI/Strong/P014/Sadness/006.jpeg 14 86 | NI/Strong/P014/Sadness/029.jpeg 14 87 | NI/Strong/P014/Sadness/023.jpeg 14 88 | NI/Strong/P014/Sadness/002.jpeg 14 89 | NI/Strong/P014/Surprise/007.jpeg 14 90 | NI/Strong/P014/Surprise/006.jpeg 14 91 | NI/Strong/P014/Surprise/001.jpeg 14 92 | NI/Strong/P014/Surprise/003.jpeg 14 93 | NI/Strong/P014/Surprise/016.jpeg 14 94 | NI/Strong/P014/Surprise/000.jpeg 14 95 | NI/Strong/P014/Surprise/012.jpeg 14 96 | NI/Strong/P014/Surprise/002.jpeg 14 97 | NI/Strong/P017/Anger/002.jpeg 17 98 | NI/Strong/P017/Anger/009.jpeg 17 99 | NI/Strong/P017/Anger/015.jpeg 17 100 | NI/Strong/P017/Anger/013.jpeg 17 101 | NI/Strong/P017/Anger/012.jpeg 17 102 | NI/Strong/P017/Anger/001.jpeg 17 103 | NI/Strong/P017/Anger/007.jpeg 17 104 | NI/Strong/P017/Anger/004.jpeg 17 105 | NI/Strong/P017/Disgust/002.jpeg 17 106 | NI/Strong/P017/Disgust/001.jpeg 17 107 | NI/Strong/P017/Disgust/016.jpeg 17 108 | NI/Strong/P017/Disgust/019.jpeg 17 109 | NI/Strong/P017/Disgust/005.jpeg 17 110 | NI/Strong/P017/Disgust/007.jpeg 17 111 | NI/Strong/P017/Disgust/022.jpeg 17 112 | NI/Strong/P017/Disgust/011.jpeg 17 113 | NI/Strong/P017/Fear/019.jpeg 17 114 | NI/Strong/P017/Fear/007.jpeg 17 115 | NI/Strong/P017/Fear/000.jpeg 17 116 | NI/Strong/P017/Fear/005.jpeg 17 117 | NI/Strong/P017/Fear/018.jpeg 17 118 | NI/Strong/P017/Fear/009.jpeg 17 119 | NI/Strong/P017/Fear/006.jpeg 17 120 | NI/Strong/P017/Fear/010.jpeg 17 121 | NI/Strong/P017/Happiness/009.jpeg 17 122 | NI/Strong/P017/Happiness/008.jpeg 17 123 | NI/Strong/P017/Happiness/010.jpeg 17 124 | NI/Strong/P017/Happiness/003.jpeg 17 125 | NI/Strong/P017/Happiness/006.jpeg 17 126 | NI/Strong/P017/Happiness/005.jpeg 17 127 | NI/Strong/P017/Happiness/000.jpeg 17 128 | NI/Strong/P017/Happiness/004.jpeg 17 129 | NI/Strong/P017/Sadness/014.jpeg 17 130 | NI/Strong/P017/Sadness/000.jpeg 17 131 | NI/Strong/P017/Sadness/002.jpeg 17 132 | NI/Strong/P017/Sadness/015.jpeg 17 133 | NI/Strong/P017/Sadness/016.jpeg 17 134 | NI/Strong/P017/Sadness/013.jpeg 17 135 | NI/Strong/P017/Sadness/005.jpeg 17 136 | NI/Strong/P017/Sadness/001.jpeg 17 137 | NI/Strong/P017/Surprise/003.jpeg 17 138 | NI/Strong/P017/Surprise/007.jpeg 17 139 | NI/Strong/P017/Surprise/010.jpeg 17 140 | NI/Strong/P017/Surprise/008.jpeg 17 141 | NI/Strong/P017/Surprise/014.jpeg 17 142 | NI/Strong/P017/Surprise/009.jpeg 17 143 | NI/Strong/P017/Surprise/013.jpeg 17 144 | NI/Strong/P017/Surprise/001.jpeg 17 145 | NI/Strong/P018/Anger/015.jpeg 18 146 | NI/Strong/P018/Anger/003.jpeg 18 147 | NI/Strong/P018/Anger/009.jpeg 18 148 | NI/Strong/P018/Anger/012.jpeg 18 149 | NI/Strong/P018/Anger/026.jpeg 18 150 | NI/Strong/P018/Anger/008.jpeg 18 151 | NI/Strong/P018/Anger/005.jpeg 18 152 | NI/Strong/P018/Anger/025.jpeg 18 153 | NI/Strong/P018/Disgust/006.jpeg 18 154 | NI/Strong/P018/Disgust/007.jpeg 18 155 | NI/Strong/P018/Disgust/002.jpeg 18 156 | NI/Strong/P018/Disgust/000.jpeg 18 157 | NI/Strong/P018/Disgust/003.jpeg 18 158 | NI/Strong/P018/Disgust/001.jpeg 18 159 | NI/Strong/P018/Disgust/005.jpeg 18 160 | NI/Strong/P018/Disgust/008.jpeg 18 161 | NI/Strong/P018/Fear/009.jpeg 18 162 | NI/Strong/P018/Fear/016.jpeg 18 163 | NI/Strong/P018/Fear/014.jpeg 18 164 | NI/Strong/P018/Fear/017.jpeg 18 165 | NI/Strong/P018/Fear/012.jpeg 18 166 | NI/Strong/P018/Fear/019.jpeg 18 167 | NI/Strong/P018/Fear/008.jpeg 18 168 | NI/Strong/P018/Fear/021.jpeg 18 169 | NI/Strong/P018/Happiness/003.jpeg 18 170 | NI/Strong/P018/Happiness/013.jpeg 18 171 | NI/Strong/P018/Happiness/015.jpeg 18 172 | NI/Strong/P018/Happiness/011.jpeg 18 173 | NI/Strong/P018/Happiness/004.jpeg 18 174 | NI/Strong/P018/Happiness/007.jpeg 18 175 | NI/Strong/P018/Happiness/002.jpeg 18 176 | NI/Strong/P018/Happiness/016.jpeg 18 177 | NI/Strong/P018/Sadness/010.jpeg 18 178 | NI/Strong/P018/Sadness/004.jpeg 18 179 | NI/Strong/P018/Sadness/009.jpeg 18 180 | NI/Strong/P018/Sadness/000.jpeg 18 181 | NI/Strong/P018/Sadness/015.jpeg 18 182 | NI/Strong/P018/Sadness/005.jpeg 18 183 | NI/Strong/P018/Sadness/002.jpeg 18 184 | NI/Strong/P018/Sadness/008.jpeg 18 185 | NI/Strong/P018/Surprise/013.jpeg 18 186 | NI/Strong/P018/Surprise/014.jpeg 18 187 | NI/Strong/P018/Surprise/019.jpeg 18 188 | NI/Strong/P018/Surprise/016.jpeg 18 189 | NI/Strong/P018/Surprise/015.jpeg 18 190 | NI/Strong/P018/Surprise/010.jpeg 18 191 | NI/Strong/P018/Surprise/003.jpeg 18 192 | NI/Strong/P018/Surprise/009.jpeg 18 193 | NI/Strong/P019/Anger/031.jpeg 19 194 | NI/Strong/P019/Anger/027.jpeg 19 195 | NI/Strong/P019/Anger/015.jpeg 19 196 | NI/Strong/P019/Anger/029.jpeg 19 197 | NI/Strong/P019/Anger/001.jpeg 19 198 | NI/Strong/P019/Anger/013.jpeg 19 199 | NI/Strong/P019/Anger/030.jpeg 19 200 | NI/Strong/P019/Anger/018.jpeg 19 201 | NI/Strong/P019/Disgust/009.jpeg 19 202 | NI/Strong/P019/Disgust/004.jpeg 19 203 | NI/Strong/P019/Disgust/007.jpeg 19 204 | NI/Strong/P019/Disgust/000.jpeg 19 205 | NI/Strong/P019/Disgust/006.jpeg 19 206 | NI/Strong/P019/Disgust/010.jpeg 19 207 | NI/Strong/P019/Disgust/005.jpeg 19 208 | NI/Strong/P019/Disgust/001.jpeg 19 209 | NI/Strong/P019/Fear/019.jpeg 19 210 | NI/Strong/P019/Fear/017.jpeg 19 211 | NI/Strong/P019/Fear/003.jpeg 19 212 | NI/Strong/P019/Fear/002.jpeg 19 213 | NI/Strong/P019/Fear/000.jpeg 19 214 | NI/Strong/P019/Fear/006.jpeg 19 215 | NI/Strong/P019/Fear/009.jpeg 19 216 | NI/Strong/P019/Fear/013.jpeg 19 217 | NI/Strong/P019/Happiness/016.jpeg 19 218 | NI/Strong/P019/Happiness/001.jpeg 19 219 | NI/Strong/P019/Happiness/007.jpeg 19 220 | NI/Strong/P019/Happiness/000.jpeg 19 221 | NI/Strong/P019/Happiness/014.jpeg 19 222 | NI/Strong/P019/Happiness/017.jpeg 19 223 | NI/Strong/P019/Happiness/004.jpeg 19 224 | NI/Strong/P019/Happiness/012.jpeg 19 225 | NI/Strong/P019/Sadness/014.jpeg 19 226 | NI/Strong/P019/Sadness/011.jpeg 19 227 | NI/Strong/P019/Sadness/002.jpeg 19 228 | NI/Strong/P019/Sadness/016.jpeg 19 229 | NI/Strong/P019/Sadness/013.jpeg 19 230 | NI/Strong/P019/Sadness/007.jpeg 19 231 | NI/Strong/P019/Sadness/006.jpeg 19 232 | NI/Strong/P019/Sadness/000.jpeg 19 233 | NI/Strong/P019/Surprise/016.jpeg 19 234 | NI/Strong/P019/Surprise/000.jpeg 19 235 | NI/Strong/P019/Surprise/020.jpeg 19 236 | NI/Strong/P019/Surprise/014.jpeg 19 237 | NI/Strong/P019/Surprise/008.jpeg 19 238 | NI/Strong/P019/Surprise/017.jpeg 19 239 | NI/Strong/P019/Surprise/015.jpeg 19 240 | NI/Strong/P019/Surprise/001.jpeg 19 241 | NI/Strong/P021/Anger/010.jpeg 21 242 | NI/Strong/P021/Anger/003.jpeg 21 243 | NI/Strong/P021/Anger/009.jpeg 21 244 | NI/Strong/P021/Anger/005.jpeg 21 245 | NI/Strong/P021/Anger/004.jpeg 21 246 | NI/Strong/P021/Anger/011.jpeg 21 247 | NI/Strong/P021/Anger/019.jpeg 21 248 | NI/Strong/P021/Anger/002.jpeg 21 249 | NI/Strong/P021/Disgust/002.jpeg 21 250 | NI/Strong/P021/Disgust/005.jpeg 21 251 | NI/Strong/P021/Disgust/004.jpeg 21 252 | NI/Strong/P021/Disgust/007.jpeg 21 253 | NI/Strong/P021/Disgust/000.jpeg 21 254 | NI/Strong/P021/Disgust/003.jpeg 21 255 | NI/Strong/P021/Disgust/008.jpeg 21 256 | NI/Strong/P021/Disgust/006.jpeg 21 257 | NI/Strong/P021/Fear/003.jpeg 21 258 | NI/Strong/P021/Fear/009.jpeg 21 259 | NI/Strong/P021/Fear/006.jpeg 21 260 | NI/Strong/P021/Fear/010.jpeg 21 261 | NI/Strong/P021/Fear/000.jpeg 21 262 | NI/Strong/P021/Fear/011.jpeg 21 263 | NI/Strong/P021/Fear/008.jpeg 21 264 | NI/Strong/P021/Fear/005.jpeg 21 265 | NI/Strong/P021/Happiness/001.jpeg 21 266 | NI/Strong/P021/Happiness/014.jpeg 21 267 | NI/Strong/P021/Happiness/021.jpeg 21 268 | NI/Strong/P021/Happiness/005.jpeg 21 269 | NI/Strong/P021/Happiness/011.jpeg 21 270 | NI/Strong/P021/Happiness/009.jpeg 21 271 | NI/Strong/P021/Happiness/017.jpeg 21 272 | NI/Strong/P021/Happiness/003.jpeg 21 273 | NI/Strong/P021/Sadness/008.jpeg 21 274 | NI/Strong/P021/Sadness/014.jpeg 21 275 | NI/Strong/P021/Sadness/002.jpeg 21 276 | NI/Strong/P021/Sadness/007.jpeg 21 277 | NI/Strong/P021/Sadness/005.jpeg 21 278 | NI/Strong/P021/Sadness/004.jpeg 21 279 | NI/Strong/P021/Sadness/010.jpeg 21 280 | NI/Strong/P021/Sadness/000.jpeg 21 281 | NI/Strong/P021/Surprise/001.jpeg 21 282 | NI/Strong/P021/Surprise/006.jpeg 21 283 | NI/Strong/P021/Surprise/003.jpeg 21 284 | NI/Strong/P021/Surprise/004.jpeg 21 285 | NI/Strong/P021/Surprise/008.jpeg 21 286 | NI/Strong/P021/Surprise/007.jpeg 21 287 | NI/Strong/P021/Surprise/010.jpeg 21 288 | NI/Strong/P021/Surprise/000.jpeg 21 289 | NI/Strong/P025/Anger/004.jpeg 25 290 | NI/Strong/P025/Anger/001.jpeg 25 291 | NI/Strong/P025/Anger/019.jpeg 25 292 | NI/Strong/P025/Anger/020.jpeg 25 293 | NI/Strong/P025/Anger/002.jpeg 25 294 | NI/Strong/P025/Anger/014.jpeg 25 295 | NI/Strong/P025/Anger/017.jpeg 25 296 | NI/Strong/P025/Anger/022.jpeg 25 297 | NI/Strong/P025/Disgust/012.jpeg 25 298 | NI/Strong/P025/Disgust/010.jpeg 25 299 | NI/Strong/P025/Disgust/003.jpeg 25 300 | NI/Strong/P025/Disgust/007.jpeg 25 301 | NI/Strong/P025/Disgust/000.jpeg 25 302 | NI/Strong/P025/Disgust/015.jpeg 25 303 | NI/Strong/P025/Disgust/008.jpeg 25 304 | NI/Strong/P025/Disgust/014.jpeg 25 305 | NI/Strong/P025/Fear/006.jpeg 25 306 | NI/Strong/P025/Fear/033.jpeg 25 307 | NI/Strong/P025/Fear/010.jpeg 25 308 | NI/Strong/P025/Fear/008.jpeg 25 309 | NI/Strong/P025/Fear/042.jpeg 25 310 | NI/Strong/P025/Fear/005.jpeg 25 311 | NI/Strong/P025/Fear/040.jpeg 25 312 | NI/Strong/P025/Fear/038.jpeg 25 313 | NI/Strong/P025/Happiness/008.jpeg 25 314 | NI/Strong/P025/Happiness/014.jpeg 25 315 | NI/Strong/P025/Happiness/013.jpeg 25 316 | NI/Strong/P025/Happiness/002.jpeg 25 317 | NI/Strong/P025/Happiness/016.jpeg 25 318 | NI/Strong/P025/Happiness/018.jpeg 25 319 | NI/Strong/P025/Happiness/028.jpeg 25 320 | NI/Strong/P025/Happiness/007.jpeg 25 321 | NI/Strong/P025/Sadness/021.jpeg 25 322 | NI/Strong/P025/Sadness/012.jpeg 25 323 | NI/Strong/P025/Sadness/004.jpeg 25 324 | NI/Strong/P025/Sadness/026.jpeg 25 325 | NI/Strong/P025/Sadness/029.jpeg 25 326 | NI/Strong/P025/Sadness/028.jpeg 25 327 | NI/Strong/P025/Sadness/018.jpeg 25 328 | NI/Strong/P025/Sadness/008.jpeg 25 329 | NI/Strong/P025/Surprise/002.jpeg 25 330 | NI/Strong/P025/Surprise/009.jpeg 25 331 | NI/Strong/P025/Surprise/017.jpeg 25 332 | NI/Strong/P025/Surprise/003.jpeg 25 333 | NI/Strong/P025/Surprise/016.jpeg 25 334 | NI/Strong/P025/Surprise/010.jpeg 25 335 | NI/Strong/P025/Surprise/012.jpeg 25 336 | NI/Strong/P025/Surprise/001.jpeg 25 337 | NI/Strong/P033/Anger/001.jpeg 33 338 | NI/Strong/P033/Anger/016.jpeg 33 339 | NI/Strong/P033/Anger/006.jpeg 33 340 | NI/Strong/P033/Anger/007.jpeg 33 341 | NI/Strong/P033/Anger/017.jpeg 33 342 | NI/Strong/P033/Anger/011.jpeg 33 343 | NI/Strong/P033/Anger/018.jpeg 33 344 | NI/Strong/P033/Anger/010.jpeg 33 345 | NI/Strong/P033/Disgust/003.jpeg 33 346 | NI/Strong/P033/Disgust/002.jpeg 33 347 | NI/Strong/P033/Disgust/009.jpeg 33 348 | NI/Strong/P033/Disgust/004.jpeg 33 349 | NI/Strong/P033/Disgust/012.jpeg 33 350 | NI/Strong/P033/Disgust/011.jpeg 33 351 | NI/Strong/P033/Disgust/007.jpeg 33 352 | NI/Strong/P033/Disgust/005.jpeg 33 353 | NI/Strong/P033/Fear/013.jpeg 33 354 | NI/Strong/P033/Fear/000.jpeg 33 355 | NI/Strong/P033/Fear/001.jpeg 33 356 | NI/Strong/P033/Fear/016.jpeg 33 357 | NI/Strong/P033/Fear/004.jpeg 33 358 | NI/Strong/P033/Fear/007.jpeg 33 359 | NI/Strong/P033/Fear/012.jpeg 33 360 | NI/Strong/P033/Fear/011.jpeg 33 361 | NI/Strong/P033/Happiness/007.jpeg 33 362 | NI/Strong/P033/Happiness/001.jpeg 33 363 | NI/Strong/P033/Happiness/002.jpeg 33 364 | NI/Strong/P033/Happiness/003.jpeg 33 365 | NI/Strong/P033/Happiness/006.jpeg 33 366 | NI/Strong/P033/Happiness/004.jpeg 33 367 | NI/Strong/P033/Happiness/012.jpeg 33 368 | NI/Strong/P033/Happiness/013.jpeg 33 369 | NI/Strong/P033/Sadness/006.jpeg 33 370 | NI/Strong/P033/Sadness/001.jpeg 33 371 | NI/Strong/P033/Sadness/003.jpeg 33 372 | NI/Strong/P033/Sadness/002.jpeg 33 373 | NI/Strong/P033/Sadness/012.jpeg 33 374 | NI/Strong/P033/Sadness/010.jpeg 33 375 | NI/Strong/P033/Sadness/013.jpeg 33 376 | NI/Strong/P033/Sadness/000.jpeg 33 377 | NI/Strong/P033/Surprise/005.jpeg 33 378 | NI/Strong/P033/Surprise/014.jpeg 33 379 | NI/Strong/P033/Surprise/011.jpeg 33 380 | NI/Strong/P033/Surprise/003.jpeg 33 381 | NI/Strong/P033/Surprise/002.jpeg 33 382 | NI/Strong/P033/Surprise/004.jpeg 33 383 | NI/Strong/P033/Surprise/006.jpeg 33 384 | NI/Strong/P033/Surprise/008.jpeg 33 385 | NI/Strong/P037/Anger/010.jpeg 37 386 | NI/Strong/P037/Anger/004.jpeg 37 387 | NI/Strong/P037/Anger/015.jpeg 37 388 | NI/Strong/P037/Anger/016.jpeg 37 389 | NI/Strong/P037/Anger/000.jpeg 37 390 | NI/Strong/P037/Anger/012.jpeg 37 391 | NI/Strong/P037/Anger/006.jpeg 37 392 | NI/Strong/P037/Anger/007.jpeg 37 393 | NI/Strong/P037/Disgust/010.jpeg 37 394 | NI/Strong/P037/Disgust/009.jpeg 37 395 | NI/Strong/P037/Disgust/005.jpeg 37 396 | NI/Strong/P037/Disgust/006.jpeg 37 397 | NI/Strong/P037/Disgust/011.jpeg 37 398 | NI/Strong/P037/Disgust/012.jpeg 37 399 | NI/Strong/P037/Disgust/001.jpeg 37 400 | NI/Strong/P037/Disgust/002.jpeg 37 401 | NI/Strong/P037/Fear/013.jpeg 37 402 | NI/Strong/P037/Fear/006.jpeg 37 403 | NI/Strong/P037/Fear/012.jpeg 37 404 | NI/Strong/P037/Fear/009.jpeg 37 405 | NI/Strong/P037/Fear/003.jpeg 37 406 | NI/Strong/P037/Fear/000.jpeg 37 407 | NI/Strong/P037/Fear/008.jpeg 37 408 | NI/Strong/P037/Fear/007.jpeg 37 409 | NI/Strong/P037/Happiness/005.jpeg 37 410 | NI/Strong/P037/Happiness/007.jpeg 37 411 | NI/Strong/P037/Happiness/004.jpeg 37 412 | NI/Strong/P037/Happiness/002.jpeg 37 413 | NI/Strong/P037/Happiness/001.jpeg 37 414 | NI/Strong/P037/Happiness/015.jpeg 37 415 | NI/Strong/P037/Happiness/012.jpeg 37 416 | NI/Strong/P037/Happiness/008.jpeg 37 417 | NI/Strong/P037/Sadness/012.jpeg 37 418 | NI/Strong/P037/Sadness/009.jpeg 37 419 | NI/Strong/P037/Sadness/011.jpeg 37 420 | NI/Strong/P037/Sadness/005.jpeg 37 421 | NI/Strong/P037/Sadness/014.jpeg 37 422 | NI/Strong/P037/Sadness/001.jpeg 37 423 | NI/Strong/P037/Sadness/006.jpeg 37 424 | NI/Strong/P037/Sadness/002.jpeg 37 425 | NI/Strong/P037/Surprise/010.jpeg 37 426 | NI/Strong/P037/Surprise/002.jpeg 37 427 | NI/Strong/P037/Surprise/006.jpeg 37 428 | NI/Strong/P037/Surprise/009.jpeg 37 429 | NI/Strong/P037/Surprise/013.jpeg 37 430 | NI/Strong/P037/Surprise/020.jpeg 37 431 | NI/Strong/P037/Surprise/015.jpeg 37 432 | NI/Strong/P037/Surprise/004.jpeg 37 433 | NI/Strong/P046/Anger/016.jpeg 46 434 | NI/Strong/P046/Anger/006.jpeg 46 435 | NI/Strong/P046/Anger/004.jpeg 46 436 | NI/Strong/P046/Anger/008.jpeg 46 437 | NI/Strong/P046/Anger/018.jpeg 46 438 | NI/Strong/P046/Anger/017.jpeg 46 439 | NI/Strong/P046/Anger/009.jpeg 46 440 | NI/Strong/P046/Anger/015.jpeg 46 441 | NI/Strong/P046/Disgust/004.jpeg 46 442 | NI/Strong/P046/Disgust/013.jpeg 46 443 | NI/Strong/P046/Disgust/008.jpeg 46 444 | NI/Strong/P046/Disgust/005.jpeg 46 445 | NI/Strong/P046/Disgust/010.jpeg 46 446 | NI/Strong/P046/Disgust/002.jpeg 46 447 | NI/Strong/P046/Disgust/003.jpeg 46 448 | NI/Strong/P046/Disgust/011.jpeg 46 449 | NI/Strong/P046/Fear/002.jpeg 46 450 | NI/Strong/P046/Fear/017.jpeg 46 451 | NI/Strong/P046/Fear/006.jpeg 46 452 | NI/Strong/P046/Fear/007.jpeg 46 453 | NI/Strong/P046/Fear/001.jpeg 46 454 | NI/Strong/P046/Fear/015.jpeg 46 455 | NI/Strong/P046/Fear/004.jpeg 46 456 | NI/Strong/P046/Fear/011.jpeg 46 457 | NI/Strong/P046/Happiness/014.jpeg 46 458 | NI/Strong/P046/Happiness/009.jpeg 46 459 | NI/Strong/P046/Happiness/000.jpeg 46 460 | NI/Strong/P046/Happiness/011.jpeg 46 461 | NI/Strong/P046/Happiness/003.jpeg 46 462 | NI/Strong/P046/Happiness/005.jpeg 46 463 | NI/Strong/P046/Happiness/010.jpeg 46 464 | NI/Strong/P046/Happiness/020.jpeg 46 465 | NI/Strong/P046/Sadness/002.jpeg 46 466 | NI/Strong/P046/Sadness/005.jpeg 46 467 | NI/Strong/P046/Sadness/001.jpeg 46 468 | NI/Strong/P046/Sadness/020.jpeg 46 469 | NI/Strong/P046/Sadness/019.jpeg 46 470 | NI/Strong/P046/Sadness/021.jpeg 46 471 | NI/Strong/P046/Sadness/014.jpeg 46 472 | NI/Strong/P046/Sadness/023.jpeg 46 473 | NI/Strong/P046/Surprise/016.jpeg 46 474 | NI/Strong/P046/Surprise/005.jpeg 46 475 | NI/Strong/P046/Surprise/008.jpeg 46 476 | NI/Strong/P046/Surprise/001.jpeg 46 477 | NI/Strong/P046/Surprise/014.jpeg 46 478 | NI/Strong/P046/Surprise/015.jpeg 46 479 | NI/Strong/P046/Surprise/006.jpeg 46 480 | NI/Strong/P046/Surprise/004.jpeg 46 481 | NI/Strong/P049/Anger/011.jpeg 49 482 | NI/Strong/P049/Anger/015.jpeg 49 483 | NI/Strong/P049/Anger/024.jpeg 49 484 | NI/Strong/P049/Anger/023.jpeg 49 485 | NI/Strong/P049/Anger/013.jpeg 49 486 | NI/Strong/P049/Anger/009.jpeg 49 487 | NI/Strong/P049/Anger/007.jpeg 49 488 | NI/Strong/P049/Anger/003.jpeg 49 489 | NI/Strong/P049/Disgust/005.jpeg 49 490 | NI/Strong/P049/Disgust/000.jpeg 49 491 | NI/Strong/P049/Disgust/006.jpeg 49 492 | NI/Strong/P049/Disgust/012.jpeg 49 493 | NI/Strong/P049/Disgust/003.jpeg 49 494 | NI/Strong/P049/Disgust/011.jpeg 49 495 | NI/Strong/P049/Disgust/004.jpeg 49 496 | NI/Strong/P049/Disgust/007.jpeg 49 497 | NI/Strong/P049/Fear/011.jpeg 49 498 | NI/Strong/P049/Fear/024.jpeg 49 499 | NI/Strong/P049/Fear/010.jpeg 49 500 | NI/Strong/P049/Fear/007.jpeg 49 501 | NI/Strong/P049/Fear/022.jpeg 49 502 | NI/Strong/P049/Fear/020.jpeg 49 503 | NI/Strong/P049/Fear/018.jpeg 49 504 | NI/Strong/P049/Fear/009.jpeg 49 505 | NI/Strong/P049/Happiness/003.jpeg 49 506 | NI/Strong/P049/Happiness/016.jpeg 49 507 | NI/Strong/P049/Happiness/019.jpeg 49 508 | NI/Strong/P049/Happiness/001.jpeg 49 509 | NI/Strong/P049/Happiness/008.jpeg 49 510 | NI/Strong/P049/Happiness/014.jpeg 49 511 | NI/Strong/P049/Happiness/002.jpeg 49 512 | NI/Strong/P049/Happiness/017.jpeg 49 513 | NI/Strong/P049/Sadness/018.jpeg 49 514 | NI/Strong/P049/Sadness/007.jpeg 49 515 | NI/Strong/P049/Sadness/020.jpeg 49 516 | NI/Strong/P049/Sadness/001.jpeg 49 517 | NI/Strong/P049/Sadness/006.jpeg 49 518 | NI/Strong/P049/Sadness/000.jpeg 49 519 | NI/Strong/P049/Sadness/003.jpeg 49 520 | NI/Strong/P049/Sadness/023.jpeg 49 521 | NI/Strong/P049/Surprise/007.jpeg 49 522 | NI/Strong/P049/Surprise/021.jpeg 49 523 | NI/Strong/P049/Surprise/002.jpeg 49 524 | NI/Strong/P049/Surprise/023.jpeg 49 525 | NI/Strong/P049/Surprise/011.jpeg 49 526 | NI/Strong/P049/Surprise/005.jpeg 49 527 | NI/Strong/P049/Surprise/022.jpeg 49 528 | NI/Strong/P049/Surprise/012.jpeg 49 529 | NI/Strong/P053/Anger/001.jpeg 53 530 | NI/Strong/P053/Anger/000.jpeg 53 531 | NI/Strong/P053/Anger/006.jpeg 53 532 | NI/Strong/P053/Anger/003.jpeg 53 533 | NI/Strong/P053/Anger/012.jpeg 53 534 | NI/Strong/P053/Anger/004.jpeg 53 535 | NI/Strong/P053/Anger/017.jpeg 53 536 | NI/Strong/P053/Anger/019.jpeg 53 537 | NI/Strong/P053/Disgust/005.jpeg 53 538 | NI/Strong/P053/Disgust/019.jpeg 53 539 | NI/Strong/P053/Disgust/009.jpeg 53 540 | NI/Strong/P053/Disgust/002.jpeg 53 541 | NI/Strong/P053/Disgust/021.jpeg 53 542 | NI/Strong/P053/Disgust/014.jpeg 53 543 | NI/Strong/P053/Disgust/016.jpeg 53 544 | NI/Strong/P053/Disgust/001.jpeg 53 545 | NI/Strong/P053/Fear/007.jpeg 53 546 | NI/Strong/P053/Fear/008.jpeg 53 547 | NI/Strong/P053/Fear/019.jpeg 53 548 | NI/Strong/P053/Fear/000.jpeg 53 549 | NI/Strong/P053/Fear/010.jpeg 53 550 | NI/Strong/P053/Fear/012.jpeg 53 551 | NI/Strong/P053/Fear/003.jpeg 53 552 | NI/Strong/P053/Fear/002.jpeg 53 553 | NI/Strong/P053/Happiness/005.jpeg 53 554 | NI/Strong/P053/Happiness/020.jpeg 53 555 | NI/Strong/P053/Happiness/022.jpeg 53 556 | NI/Strong/P053/Happiness/000.jpeg 53 557 | NI/Strong/P053/Happiness/001.jpeg 53 558 | NI/Strong/P053/Happiness/010.jpeg 53 559 | NI/Strong/P053/Happiness/011.jpeg 53 560 | NI/Strong/P053/Happiness/018.jpeg 53 561 | NI/Strong/P053/Sadness/014.jpeg 53 562 | NI/Strong/P053/Sadness/017.jpeg 53 563 | NI/Strong/P053/Sadness/008.jpeg 53 564 | NI/Strong/P053/Sadness/010.jpeg 53 565 | NI/Strong/P053/Sadness/013.jpeg 53 566 | NI/Strong/P053/Sadness/004.jpeg 53 567 | NI/Strong/P053/Sadness/000.jpeg 53 568 | NI/Strong/P053/Sadness/007.jpeg 53 569 | NI/Strong/P053/Surprise/008.jpeg 53 570 | NI/Strong/P053/Surprise/021.jpeg 53 571 | NI/Strong/P053/Surprise/011.jpeg 53 572 | NI/Strong/P053/Surprise/000.jpeg 53 573 | NI/Strong/P053/Surprise/015.jpeg 53 574 | NI/Strong/P053/Surprise/006.jpeg 53 575 | NI/Strong/P053/Surprise/016.jpeg 53 576 | NI/Strong/P053/Surprise/007.jpeg 53 577 | NI/Strong/P057/Anger/003.jpeg 57 578 | NI/Strong/P057/Anger/017.jpeg 57 579 | NI/Strong/P057/Anger/005.jpeg 57 580 | NI/Strong/P057/Anger/001.jpeg 57 581 | NI/Strong/P057/Anger/008.jpeg 57 582 | NI/Strong/P057/Anger/016.jpeg 57 583 | NI/Strong/P057/Anger/011.jpeg 57 584 | NI/Strong/P057/Anger/004.jpeg 57 585 | NI/Strong/P057/Disgust/005.jpeg 57 586 | NI/Strong/P057/Disgust/006.jpeg 57 587 | NI/Strong/P057/Disgust/015.jpeg 57 588 | NI/Strong/P057/Disgust/000.jpeg 57 589 | NI/Strong/P057/Disgust/003.jpeg 57 590 | NI/Strong/P057/Disgust/008.jpeg 57 591 | NI/Strong/P057/Disgust/009.jpeg 57 592 | NI/Strong/P057/Disgust/013.jpeg 57 593 | NI/Strong/P057/Fear/003.jpeg 57 594 | NI/Strong/P057/Fear/007.jpeg 57 595 | NI/Strong/P057/Fear/016.jpeg 57 596 | NI/Strong/P057/Fear/021.jpeg 57 597 | NI/Strong/P057/Fear/014.jpeg 57 598 | NI/Strong/P057/Fear/004.jpeg 57 599 | NI/Strong/P057/Fear/020.jpeg 57 600 | NI/Strong/P057/Fear/019.jpeg 57 601 | NI/Strong/P057/Happiness/011.jpeg 57 602 | NI/Strong/P057/Happiness/001.jpeg 57 603 | NI/Strong/P057/Happiness/013.jpeg 57 604 | NI/Strong/P057/Happiness/007.jpeg 57 605 | NI/Strong/P057/Happiness/002.jpeg 57 606 | NI/Strong/P057/Happiness/015.jpeg 57 607 | NI/Strong/P057/Happiness/009.jpeg 57 608 | NI/Strong/P057/Happiness/017.jpeg 57 609 | NI/Strong/P057/Sadness/016.jpeg 57 610 | NI/Strong/P057/Sadness/017.jpeg 57 611 | NI/Strong/P057/Sadness/008.jpeg 57 612 | NI/Strong/P057/Sadness/007.jpeg 57 613 | NI/Strong/P057/Sadness/000.jpeg 57 614 | NI/Strong/P057/Sadness/009.jpeg 57 615 | NI/Strong/P057/Sadness/021.jpeg 57 616 | NI/Strong/P057/Sadness/018.jpeg 57 617 | NI/Strong/P057/Surprise/012.jpeg 57 618 | NI/Strong/P057/Surprise/001.jpeg 57 619 | NI/Strong/P057/Surprise/016.jpeg 57 620 | NI/Strong/P057/Surprise/004.jpeg 57 621 | NI/Strong/P057/Surprise/003.jpeg 57 622 | NI/Strong/P057/Surprise/000.jpeg 57 623 | NI/Strong/P057/Surprise/006.jpeg 57 624 | NI/Strong/P057/Surprise/019.jpeg 57 625 | NI/Strong/P059/Anger/004.jpeg 59 626 | NI/Strong/P059/Anger/013.jpeg 59 627 | NI/Strong/P059/Anger/001.jpeg 59 628 | NI/Strong/P059/Anger/011.jpeg 59 629 | NI/Strong/P059/Anger/020.jpeg 59 630 | NI/Strong/P059/Anger/006.jpeg 59 631 | NI/Strong/P059/Anger/007.jpeg 59 632 | NI/Strong/P059/Anger/000.jpeg 59 633 | NI/Strong/P059/Disgust/001.jpeg 59 634 | NI/Strong/P059/Disgust/007.jpeg 59 635 | NI/Strong/P059/Disgust/004.jpeg 59 636 | NI/Strong/P059/Disgust/019.jpeg 59 637 | NI/Strong/P059/Disgust/013.jpeg 59 638 | NI/Strong/P059/Disgust/012.jpeg 59 639 | NI/Strong/P059/Disgust/016.jpeg 59 640 | NI/Strong/P059/Disgust/017.jpeg 59 641 | NI/Strong/P059/Fear/007.jpeg 59 642 | NI/Strong/P059/Fear/009.jpeg 59 643 | NI/Strong/P059/Fear/000.jpeg 59 644 | NI/Strong/P059/Fear/006.jpeg 59 645 | NI/Strong/P059/Fear/013.jpeg 59 646 | NI/Strong/P059/Fear/004.jpeg 59 647 | NI/Strong/P059/Fear/023.jpeg 59 648 | NI/Strong/P059/Fear/022.jpeg 59 649 | NI/Strong/P059/Happiness/008.jpeg 59 650 | NI/Strong/P059/Happiness/023.jpeg 59 651 | NI/Strong/P059/Happiness/001.jpeg 59 652 | NI/Strong/P059/Happiness/016.jpeg 59 653 | NI/Strong/P059/Happiness/009.jpeg 59 654 | NI/Strong/P059/Happiness/012.jpeg 59 655 | NI/Strong/P059/Happiness/015.jpeg 59 656 | NI/Strong/P059/Happiness/018.jpeg 59 657 | NI/Strong/P059/Sadness/016.jpeg 59 658 | NI/Strong/P059/Sadness/005.jpeg 59 659 | NI/Strong/P059/Sadness/001.jpeg 59 660 | NI/Strong/P059/Sadness/000.jpeg 59 661 | NI/Strong/P059/Sadness/010.jpeg 59 662 | NI/Strong/P059/Sadness/018.jpeg 59 663 | NI/Strong/P059/Sadness/003.jpeg 59 664 | NI/Strong/P059/Sadness/019.jpeg 59 665 | NI/Strong/P059/Surprise/004.jpeg 59 666 | NI/Strong/P059/Surprise/010.jpeg 59 667 | NI/Strong/P059/Surprise/012.jpeg 59 668 | NI/Strong/P059/Surprise/005.jpeg 59 669 | NI/Strong/P059/Surprise/013.jpeg 59 670 | NI/Strong/P059/Surprise/017.jpeg 59 671 | NI/Strong/P059/Surprise/011.jpeg 59 672 | NI/Strong/P059/Surprise/003.jpeg 59 673 | NI/Strong/P062/Anger/015.jpeg 62 674 | NI/Strong/P062/Anger/021.jpeg 62 675 | NI/Strong/P062/Anger/011.jpeg 62 676 | NI/Strong/P062/Anger/001.jpeg 62 677 | NI/Strong/P062/Anger/008.jpeg 62 678 | NI/Strong/P062/Anger/014.jpeg 62 679 | NI/Strong/P062/Anger/007.jpeg 62 680 | NI/Strong/P062/Anger/018.jpeg 62 681 | NI/Strong/P062/Disgust/020.jpeg 62 682 | NI/Strong/P062/Disgust/009.jpeg 62 683 | NI/Strong/P062/Disgust/001.jpeg 62 684 | NI/Strong/P062/Disgust/011.jpeg 62 685 | NI/Strong/P062/Disgust/002.jpeg 62 686 | NI/Strong/P062/Disgust/021.jpeg 62 687 | NI/Strong/P062/Disgust/006.jpeg 62 688 | NI/Strong/P062/Disgust/013.jpeg 62 689 | NI/Strong/P062/Fear/017.jpeg 62 690 | NI/Strong/P062/Fear/011.jpeg 62 691 | NI/Strong/P062/Fear/008.jpeg 62 692 | NI/Strong/P062/Fear/018.jpeg 62 693 | NI/Strong/P062/Fear/009.jpeg 62 694 | NI/Strong/P062/Fear/019.jpeg 62 695 | NI/Strong/P062/Fear/014.jpeg 62 696 | NI/Strong/P062/Fear/003.jpeg 62 697 | NI/Strong/P062/Happiness/000.jpeg 62 698 | NI/Strong/P062/Happiness/005.jpeg 62 699 | NI/Strong/P062/Happiness/010.jpeg 62 700 | NI/Strong/P062/Happiness/002.jpeg 62 701 | NI/Strong/P062/Happiness/013.jpeg 62 702 | NI/Strong/P062/Happiness/020.jpeg 62 703 | NI/Strong/P062/Happiness/014.jpeg 62 704 | NI/Strong/P062/Happiness/003.jpeg 62 705 | NI/Strong/P062/Sadness/002.jpeg 62 706 | NI/Strong/P062/Sadness/019.jpeg 62 707 | NI/Strong/P062/Sadness/009.jpeg 62 708 | NI/Strong/P062/Sadness/014.jpeg 62 709 | NI/Strong/P062/Sadness/016.jpeg 62 710 | NI/Strong/P062/Sadness/010.jpeg 62 711 | NI/Strong/P062/Sadness/001.jpeg 62 712 | NI/Strong/P062/Sadness/012.jpeg 62 713 | NI/Strong/P062/Surprise/016.jpeg 62 714 | NI/Strong/P062/Surprise/010.jpeg 62 715 | NI/Strong/P062/Surprise/015.jpeg 62 716 | NI/Strong/P062/Surprise/000.jpeg 62 717 | NI/Strong/P062/Surprise/017.jpeg 62 718 | NI/Strong/P062/Surprise/006.jpeg 62 719 | NI/Strong/P062/Surprise/002.jpeg 62 720 | NI/Strong/P062/Surprise/005.jpeg 62 721 | NI/Strong/P063/Anger/006.jpeg 63 722 | NI/Strong/P063/Anger/005.jpeg 63 723 | NI/Strong/P063/Anger/020.jpeg 63 724 | NI/Strong/P063/Anger/013.jpeg 63 725 | NI/Strong/P063/Anger/021.jpeg 63 726 | NI/Strong/P063/Anger/012.jpeg 63 727 | NI/Strong/P063/Anger/009.jpeg 63 728 | NI/Strong/P063/Anger/001.jpeg 63 729 | NI/Strong/P063/Disgust/015.jpeg 63 730 | NI/Strong/P063/Disgust/013.jpeg 63 731 | NI/Strong/P063/Disgust/001.jpeg 63 732 | NI/Strong/P063/Disgust/016.jpeg 63 733 | NI/Strong/P063/Disgust/002.jpeg 63 734 | NI/Strong/P063/Disgust/009.jpeg 63 735 | NI/Strong/P063/Disgust/010.jpeg 63 736 | NI/Strong/P063/Disgust/007.jpeg 63 737 | NI/Strong/P063/Fear/008.jpeg 63 738 | NI/Strong/P063/Fear/010.jpeg 63 739 | NI/Strong/P063/Fear/003.jpeg 63 740 | NI/Strong/P063/Fear/009.jpeg 63 741 | NI/Strong/P063/Fear/018.jpeg 63 742 | NI/Strong/P063/Fear/000.jpeg 63 743 | NI/Strong/P063/Fear/006.jpeg 63 744 | NI/Strong/P063/Fear/005.jpeg 63 745 | NI/Strong/P063/Happiness/017.jpeg 63 746 | NI/Strong/P063/Happiness/014.jpeg 63 747 | NI/Strong/P063/Happiness/002.jpeg 63 748 | NI/Strong/P063/Happiness/013.jpeg 63 749 | NI/Strong/P063/Happiness/009.jpeg 63 750 | NI/Strong/P063/Happiness/008.jpeg 63 751 | NI/Strong/P063/Happiness/003.jpeg 63 752 | NI/Strong/P063/Happiness/010.jpeg 63 753 | NI/Strong/P063/Sadness/000.jpeg 63 754 | NI/Strong/P063/Sadness/013.jpeg 63 755 | NI/Strong/P063/Sadness/018.jpeg 63 756 | NI/Strong/P063/Sadness/001.jpeg 63 757 | NI/Strong/P063/Sadness/006.jpeg 63 758 | NI/Strong/P063/Sadness/003.jpeg 63 759 | NI/Strong/P063/Sadness/015.jpeg 63 760 | NI/Strong/P063/Sadness/004.jpeg 63 761 | NI/Strong/P063/Surprise/013.jpeg 63 762 | NI/Strong/P063/Surprise/005.jpeg 63 763 | NI/Strong/P063/Surprise/012.jpeg 63 764 | NI/Strong/P063/Surprise/001.jpeg 63 765 | NI/Strong/P063/Surprise/002.jpeg 63 766 | NI/Strong/P063/Surprise/003.jpeg 63 767 | NI/Strong/P063/Surprise/017.jpeg 63 768 | NI/Strong/P063/Surprise/007.jpeg 63 769 | NI/Strong/P064/Anger/000.jpeg 64 770 | NI/Strong/P064/Anger/014.jpeg 64 771 | NI/Strong/P064/Anger/002.jpeg 64 772 | NI/Strong/P064/Anger/020.jpeg 64 773 | NI/Strong/P064/Anger/004.jpeg 64 774 | NI/Strong/P064/Anger/019.jpeg 64 775 | NI/Strong/P064/Anger/005.jpeg 64 776 | NI/Strong/P064/Anger/006.jpeg 64 777 | NI/Strong/P064/Disgust/000.jpeg 64 778 | NI/Strong/P064/Disgust/016.jpeg 64 779 | NI/Strong/P064/Disgust/018.jpeg 64 780 | NI/Strong/P064/Disgust/002.jpeg 64 781 | NI/Strong/P064/Disgust/007.jpeg 64 782 | NI/Strong/P064/Disgust/005.jpeg 64 783 | NI/Strong/P064/Disgust/010.jpeg 64 784 | NI/Strong/P064/Disgust/009.jpeg 64 785 | NI/Strong/P064/Fear/014.jpeg 64 786 | NI/Strong/P064/Fear/023.jpeg 64 787 | NI/Strong/P064/Fear/001.jpeg 64 788 | NI/Strong/P064/Fear/019.jpeg 64 789 | NI/Strong/P064/Fear/015.jpeg 64 790 | NI/Strong/P064/Fear/017.jpeg 64 791 | NI/Strong/P064/Fear/004.jpeg 64 792 | NI/Strong/P064/Fear/021.jpeg 64 793 | NI/Strong/P064/Happiness/015.jpeg 64 794 | NI/Strong/P064/Happiness/007.jpeg 64 795 | NI/Strong/P064/Happiness/021.jpeg 64 796 | NI/Strong/P064/Happiness/019.jpeg 64 797 | NI/Strong/P064/Happiness/009.jpeg 64 798 | NI/Strong/P064/Happiness/004.jpeg 64 799 | NI/Strong/P064/Happiness/005.jpeg 64 800 | NI/Strong/P064/Happiness/023.jpeg 64 801 | NI/Strong/P064/Sadness/008.jpeg 64 802 | NI/Strong/P064/Sadness/024.jpeg 64 803 | NI/Strong/P064/Sadness/009.jpeg 64 804 | NI/Strong/P064/Sadness/014.jpeg 64 805 | NI/Strong/P064/Sadness/017.jpeg 64 806 | NI/Strong/P064/Sadness/015.jpeg 64 807 | NI/Strong/P064/Sadness/011.jpeg 64 808 | NI/Strong/P064/Sadness/000.jpeg 64 809 | NI/Strong/P064/Surprise/017.jpeg 64 810 | NI/Strong/P064/Surprise/010.jpeg 64 811 | NI/Strong/P064/Surprise/000.jpeg 64 812 | NI/Strong/P064/Surprise/007.jpeg 64 813 | NI/Strong/P064/Surprise/013.jpeg 64 814 | NI/Strong/P064/Surprise/004.jpeg 64 815 | NI/Strong/P064/Surprise/016.jpeg 64 816 | NI/Strong/P064/Surprise/015.jpeg 64 817 | NI/Strong/P065/Anger/006.jpeg 65 818 | NI/Strong/P065/Anger/000.jpeg 65 819 | NI/Strong/P065/Anger/020.jpeg 65 820 | NI/Strong/P065/Anger/023.jpeg 65 821 | NI/Strong/P065/Anger/005.jpeg 65 822 | NI/Strong/P065/Anger/014.jpeg 65 823 | NI/Strong/P065/Anger/016.jpeg 65 824 | NI/Strong/P065/Anger/021.jpeg 65 825 | NI/Strong/P065/Disgust/017.jpeg 65 826 | NI/Strong/P065/Disgust/020.jpeg 65 827 | NI/Strong/P065/Disgust/001.jpeg 65 828 | NI/Strong/P065/Disgust/010.jpeg 65 829 | NI/Strong/P065/Disgust/004.jpeg 65 830 | NI/Strong/P065/Disgust/003.jpeg 65 831 | NI/Strong/P065/Disgust/018.jpeg 65 832 | NI/Strong/P065/Disgust/002.jpeg 65 833 | NI/Strong/P065/Fear/006.jpeg 65 834 | NI/Strong/P065/Fear/004.jpeg 65 835 | NI/Strong/P065/Fear/005.jpeg 65 836 | NI/Strong/P065/Fear/017.jpeg 65 837 | NI/Strong/P065/Fear/003.jpeg 65 838 | NI/Strong/P065/Fear/020.jpeg 65 839 | NI/Strong/P065/Fear/019.jpeg 65 840 | NI/Strong/P065/Fear/008.jpeg 65 841 | NI/Strong/P065/Happiness/006.jpeg 65 842 | NI/Strong/P065/Happiness/007.jpeg 65 843 | NI/Strong/P065/Happiness/015.jpeg 65 844 | NI/Strong/P065/Happiness/022.jpeg 65 845 | NI/Strong/P065/Happiness/004.jpeg 65 846 | NI/Strong/P065/Happiness/021.jpeg 65 847 | NI/Strong/P065/Happiness/014.jpeg 65 848 | NI/Strong/P065/Happiness/005.jpeg 65 849 | NI/Strong/P065/Sadness/017.jpeg 65 850 | NI/Strong/P065/Sadness/019.jpeg 65 851 | NI/Strong/P065/Sadness/013.jpeg 65 852 | NI/Strong/P065/Sadness/009.jpeg 65 853 | NI/Strong/P065/Sadness/001.jpeg 65 854 | NI/Strong/P065/Sadness/023.jpeg 65 855 | NI/Strong/P065/Sadness/005.jpeg 65 856 | NI/Strong/P065/Sadness/004.jpeg 65 857 | NI/Strong/P065/Surprise/009.jpeg 65 858 | NI/Strong/P065/Surprise/011.jpeg 65 859 | NI/Strong/P065/Surprise/005.jpeg 65 860 | NI/Strong/P065/Surprise/004.jpeg 65 861 | NI/Strong/P065/Surprise/007.jpeg 65 862 | NI/Strong/P065/Surprise/006.jpeg 65 863 | NI/Strong/P065/Surprise/001.jpeg 65 864 | NI/Strong/P065/Surprise/003.jpeg 65 865 | NI/Strong/P069/Anger/016.jpeg 69 866 | NI/Strong/P069/Anger/019.jpeg 69 867 | NI/Strong/P069/Anger/007.jpeg 69 868 | NI/Strong/P069/Anger/002.jpeg 69 869 | NI/Strong/P069/Anger/023.jpeg 69 870 | NI/Strong/P069/Anger/010.jpeg 69 871 | NI/Strong/P069/Anger/005.jpeg 69 872 | NI/Strong/P069/Anger/020.jpeg 69 873 | NI/Strong/P069/Disgust/017.jpeg 69 874 | NI/Strong/P069/Disgust/020.jpeg 69 875 | NI/Strong/P069/Disgust/013.jpeg 69 876 | NI/Strong/P069/Disgust/025.jpeg 69 877 | NI/Strong/P069/Disgust/024.jpeg 69 878 | NI/Strong/P069/Disgust/026.jpeg 69 879 | NI/Strong/P069/Disgust/022.jpeg 69 880 | NI/Strong/P069/Disgust/010.jpeg 69 881 | NI/Strong/P069/Fear/002.jpeg 69 882 | NI/Strong/P069/Fear/013.jpeg 69 883 | NI/Strong/P069/Fear/021.jpeg 69 884 | NI/Strong/P069/Fear/007.jpeg 69 885 | NI/Strong/P069/Fear/003.jpeg 69 886 | NI/Strong/P069/Fear/004.jpeg 69 887 | NI/Strong/P069/Fear/001.jpeg 69 888 | NI/Strong/P069/Fear/015.jpeg 69 889 | NI/Strong/P069/Happiness/021.jpeg 69 890 | NI/Strong/P069/Happiness/004.jpeg 69 891 | NI/Strong/P069/Happiness/024.jpeg 69 892 | NI/Strong/P069/Happiness/022.jpeg 69 893 | NI/Strong/P069/Happiness/000.jpeg 69 894 | NI/Strong/P069/Happiness/002.jpeg 69 895 | NI/Strong/P069/Happiness/023.jpeg 69 896 | NI/Strong/P069/Happiness/012.jpeg 69 897 | NI/Strong/P069/Sadness/011.jpeg 69 898 | NI/Strong/P069/Sadness/010.jpeg 69 899 | NI/Strong/P069/Sadness/015.jpeg 69 900 | NI/Strong/P069/Sadness/000.jpeg 69 901 | NI/Strong/P069/Sadness/012.jpeg 69 902 | NI/Strong/P069/Sadness/003.jpeg 69 903 | NI/Strong/P069/Sadness/008.jpeg 69 904 | NI/Strong/P069/Sadness/009.jpeg 69 905 | NI/Strong/P069/Surprise/010.jpeg 69 906 | NI/Strong/P069/Surprise/009.jpeg 69 907 | NI/Strong/P069/Surprise/002.jpeg 69 908 | NI/Strong/P069/Surprise/004.jpeg 69 909 | NI/Strong/P069/Surprise/011.jpeg 69 910 | NI/Strong/P069/Surprise/020.jpeg 69 911 | NI/Strong/P069/Surprise/019.jpeg 69 912 | NI/Strong/P069/Surprise/017.jpeg 69 913 | NI/Strong/P075/Anger/022.jpeg 75 914 | NI/Strong/P075/Anger/008.jpeg 75 915 | NI/Strong/P075/Anger/017.jpeg 75 916 | NI/Strong/P075/Anger/016.jpeg 75 917 | NI/Strong/P075/Anger/020.jpeg 75 918 | NI/Strong/P075/Anger/012.jpeg 75 919 | NI/Strong/P075/Anger/021.jpeg 75 920 | NI/Strong/P075/Anger/003.jpeg 75 921 | NI/Strong/P075/Disgust/024.jpeg 75 922 | NI/Strong/P075/Disgust/015.jpeg 75 923 | NI/Strong/P075/Disgust/016.jpeg 75 924 | NI/Strong/P075/Disgust/021.jpeg 75 925 | NI/Strong/P075/Disgust/000.jpeg 75 926 | NI/Strong/P075/Disgust/022.jpeg 75 927 | NI/Strong/P075/Disgust/007.jpeg 75 928 | NI/Strong/P075/Disgust/006.jpeg 75 929 | NI/Strong/P075/Fear/009.jpeg 75 930 | NI/Strong/P075/Fear/016.jpeg 75 931 | NI/Strong/P075/Fear/022.jpeg 75 932 | NI/Strong/P075/Fear/011.jpeg 75 933 | NI/Strong/P075/Fear/010.jpeg 75 934 | NI/Strong/P075/Fear/007.jpeg 75 935 | NI/Strong/P075/Fear/005.jpeg 75 936 | NI/Strong/P075/Fear/002.jpeg 75 937 | NI/Strong/P075/Happiness/005.jpeg 75 938 | NI/Strong/P075/Happiness/017.jpeg 75 939 | NI/Strong/P075/Happiness/012.jpeg 75 940 | NI/Strong/P075/Happiness/021.jpeg 75 941 | NI/Strong/P075/Happiness/006.jpeg 75 942 | NI/Strong/P075/Happiness/019.jpeg 75 943 | NI/Strong/P075/Happiness/023.jpeg 75 944 | NI/Strong/P075/Happiness/010.jpeg 75 945 | NI/Strong/P075/Sadness/022.jpeg 75 946 | NI/Strong/P075/Sadness/012.jpeg 75 947 | NI/Strong/P075/Sadness/004.jpeg 75 948 | NI/Strong/P075/Sadness/003.jpeg 75 949 | NI/Strong/P075/Sadness/020.jpeg 75 950 | NI/Strong/P075/Sadness/007.jpeg 75 951 | NI/Strong/P075/Sadness/011.jpeg 75 952 | NI/Strong/P075/Sadness/005.jpeg 75 953 | NI/Strong/P075/Surprise/003.jpeg 75 954 | NI/Strong/P075/Surprise/014.jpeg 75 955 | NI/Strong/P075/Surprise/006.jpeg 75 956 | NI/Strong/P075/Surprise/001.jpeg 75 957 | NI/Strong/P075/Surprise/020.jpeg 75 958 | NI/Strong/P075/Surprise/007.jpeg 75 959 | NI/Strong/P075/Surprise/011.jpeg 75 960 | NI/Strong/P075/Surprise/008.jpeg 75 961 | -------------------------------------------------------------------------------- /data/oulu/test_vis_paths.txt: -------------------------------------------------------------------------------- 1 | VL/Strong/P009/Anger/016.jpeg 9 2 | VL/Strong/P009/Anger/015.jpeg 9 3 | VL/Strong/P009/Anger/008.jpeg 9 4 | VL/Strong/P009/Anger/020.jpeg 9 5 | VL/Strong/P009/Anger/023.jpeg 9 6 | VL/Strong/P009/Anger/004.jpeg 9 7 | VL/Strong/P009/Anger/010.jpeg 9 8 | VL/Strong/P009/Anger/012.jpeg 9 9 | VL/Strong/P009/Disgust/000.jpeg 9 10 | VL/Strong/P009/Disgust/009.jpeg 9 11 | VL/Strong/P009/Disgust/014.jpeg 9 12 | VL/Strong/P009/Disgust/015.jpeg 9 13 | VL/Strong/P009/Disgust/020.jpeg 9 14 | VL/Strong/P009/Disgust/008.jpeg 9 15 | VL/Strong/P009/Disgust/012.jpeg 9 16 | VL/Strong/P009/Disgust/018.jpeg 9 17 | VL/Strong/P009/Fear/007.jpeg 9 18 | VL/Strong/P009/Fear/005.jpeg 9 19 | VL/Strong/P009/Fear/022.jpeg 9 20 | VL/Strong/P009/Fear/016.jpeg 9 21 | VL/Strong/P009/Fear/011.jpeg 9 22 | VL/Strong/P009/Fear/019.jpeg 9 23 | VL/Strong/P009/Fear/014.jpeg 9 24 | VL/Strong/P009/Fear/010.jpeg 9 25 | VL/Strong/P009/Happiness/016.jpeg 9 26 | VL/Strong/P009/Happiness/006.jpeg 9 27 | VL/Strong/P009/Happiness/011.jpeg 9 28 | VL/Strong/P009/Happiness/000.jpeg 9 29 | VL/Strong/P009/Happiness/010.jpeg 9 30 | VL/Strong/P009/Happiness/002.jpeg 9 31 | VL/Strong/P009/Happiness/014.jpeg 9 32 | VL/Strong/P009/Happiness/007.jpeg 9 33 | VL/Strong/P009/Sadness/006.jpeg 9 34 | VL/Strong/P009/Sadness/002.jpeg 9 35 | VL/Strong/P009/Sadness/003.jpeg 9 36 | VL/Strong/P009/Sadness/005.jpeg 9 37 | VL/Strong/P009/Sadness/008.jpeg 9 38 | VL/Strong/P009/Sadness/007.jpeg 9 39 | VL/Strong/P009/Sadness/004.jpeg 9 40 | VL/Strong/P009/Sadness/000.jpeg 9 41 | VL/Strong/P009/Surprise/002.jpeg 9 42 | VL/Strong/P009/Surprise/014.jpeg 9 43 | VL/Strong/P009/Surprise/016.jpeg 9 44 | VL/Strong/P009/Surprise/008.jpeg 9 45 | VL/Strong/P009/Surprise/003.jpeg 9 46 | VL/Strong/P009/Surprise/010.jpeg 9 47 | VL/Strong/P009/Surprise/011.jpeg 9 48 | VL/Strong/P009/Surprise/009.jpeg 9 49 | VL/Strong/P014/Anger/014.jpeg 14 50 | VL/Strong/P014/Anger/012.jpeg 14 51 | VL/Strong/P014/Anger/008.jpeg 14 52 | VL/Strong/P014/Anger/001.jpeg 14 53 | VL/Strong/P014/Anger/002.jpeg 14 54 | VL/Strong/P014/Anger/016.jpeg 14 55 | VL/Strong/P014/Anger/015.jpeg 14 56 | VL/Strong/P014/Anger/005.jpeg 14 57 | VL/Strong/P014/Disgust/000.jpeg 14 58 | VL/Strong/P014/Disgust/013.jpeg 14 59 | VL/Strong/P014/Disgust/007.jpeg 14 60 | VL/Strong/P014/Disgust/012.jpeg 14 61 | VL/Strong/P014/Disgust/008.jpeg 14 62 | VL/Strong/P014/Disgust/005.jpeg 14 63 | VL/Strong/P014/Disgust/002.jpeg 14 64 | VL/Strong/P014/Disgust/010.jpeg 14 65 | VL/Strong/P014/Fear/010.jpeg 14 66 | VL/Strong/P014/Fear/002.jpeg 14 67 | VL/Strong/P014/Fear/009.jpeg 14 68 | VL/Strong/P014/Fear/012.jpeg 14 69 | VL/Strong/P014/Fear/007.jpeg 14 70 | VL/Strong/P014/Fear/014.jpeg 14 71 | VL/Strong/P014/Fear/013.jpeg 14 72 | VL/Strong/P014/Fear/004.jpeg 14 73 | VL/Strong/P014/Happiness/009.jpeg 14 74 | VL/Strong/P014/Happiness/010.jpeg 14 75 | VL/Strong/P014/Happiness/015.jpeg 14 76 | VL/Strong/P014/Happiness/014.jpeg 14 77 | VL/Strong/P014/Happiness/012.jpeg 14 78 | VL/Strong/P014/Happiness/002.jpeg 14 79 | VL/Strong/P014/Happiness/008.jpeg 14 80 | VL/Strong/P014/Happiness/016.jpeg 14 81 | VL/Strong/P014/Sadness/002.jpeg 14 82 | VL/Strong/P014/Sadness/030.jpeg 14 83 | VL/Strong/P014/Sadness/009.jpeg 14 84 | VL/Strong/P014/Sadness/023.jpeg 14 85 | VL/Strong/P014/Sadness/018.jpeg 14 86 | VL/Strong/P014/Sadness/025.jpeg 14 87 | VL/Strong/P014/Sadness/000.jpeg 14 88 | VL/Strong/P014/Sadness/031.jpeg 14 89 | VL/Strong/P014/Surprise/005.jpeg 14 90 | VL/Strong/P014/Surprise/011.jpeg 14 91 | VL/Strong/P014/Surprise/012.jpeg 14 92 | VL/Strong/P014/Surprise/002.jpeg 14 93 | VL/Strong/P014/Surprise/000.jpeg 14 94 | VL/Strong/P014/Surprise/015.jpeg 14 95 | VL/Strong/P014/Surprise/014.jpeg 14 96 | VL/Strong/P014/Surprise/004.jpeg 14 97 | VL/Strong/P017/Anger/003.jpeg 17 98 | VL/Strong/P017/Anger/016.jpeg 17 99 | VL/Strong/P017/Anger/012.jpeg 17 100 | VL/Strong/P017/Anger/013.jpeg 17 101 | VL/Strong/P017/Anger/006.jpeg 17 102 | VL/Strong/P017/Anger/014.jpeg 17 103 | VL/Strong/P017/Anger/002.jpeg 17 104 | VL/Strong/P017/Anger/008.jpeg 17 105 | VL/Strong/P017/Disgust/006.jpeg 17 106 | VL/Strong/P017/Disgust/003.jpeg 17 107 | VL/Strong/P017/Disgust/026.jpeg 17 108 | VL/Strong/P017/Disgust/013.jpeg 17 109 | VL/Strong/P017/Disgust/020.jpeg 17 110 | VL/Strong/P017/Disgust/011.jpeg 17 111 | VL/Strong/P017/Disgust/010.jpeg 17 112 | VL/Strong/P017/Disgust/023.jpeg 17 113 | VL/Strong/P017/Fear/013.jpeg 17 114 | VL/Strong/P017/Fear/012.jpeg 17 115 | VL/Strong/P017/Fear/000.jpeg 17 116 | VL/Strong/P017/Fear/003.jpeg 17 117 | VL/Strong/P017/Fear/005.jpeg 17 118 | VL/Strong/P017/Fear/014.jpeg 17 119 | VL/Strong/P017/Fear/010.jpeg 17 120 | VL/Strong/P017/Fear/002.jpeg 17 121 | VL/Strong/P017/Happiness/008.jpeg 17 122 | VL/Strong/P017/Happiness/010.jpeg 17 123 | VL/Strong/P017/Happiness/002.jpeg 17 124 | VL/Strong/P017/Happiness/000.jpeg 17 125 | VL/Strong/P017/Happiness/007.jpeg 17 126 | VL/Strong/P017/Happiness/017.jpeg 17 127 | VL/Strong/P017/Happiness/015.jpeg 17 128 | VL/Strong/P017/Happiness/012.jpeg 17 129 | VL/Strong/P017/Sadness/010.jpeg 17 130 | VL/Strong/P017/Sadness/006.jpeg 17 131 | VL/Strong/P017/Sadness/016.jpeg 17 132 | VL/Strong/P017/Sadness/003.jpeg 17 133 | VL/Strong/P017/Sadness/011.jpeg 17 134 | VL/Strong/P017/Sadness/002.jpeg 17 135 | VL/Strong/P017/Sadness/014.jpeg 17 136 | VL/Strong/P017/Sadness/012.jpeg 17 137 | VL/Strong/P017/Surprise/001.jpeg 17 138 | VL/Strong/P017/Surprise/011.jpeg 17 139 | VL/Strong/P017/Surprise/015.jpeg 17 140 | VL/Strong/P017/Surprise/012.jpeg 17 141 | VL/Strong/P017/Surprise/007.jpeg 17 142 | VL/Strong/P017/Surprise/006.jpeg 17 143 | VL/Strong/P017/Surprise/002.jpeg 17 144 | VL/Strong/P017/Surprise/005.jpeg 17 145 | VL/Strong/P018/Anger/010.jpeg 18 146 | VL/Strong/P018/Anger/026.jpeg 18 147 | VL/Strong/P018/Anger/017.jpeg 18 148 | VL/Strong/P018/Anger/013.jpeg 18 149 | VL/Strong/P018/Anger/012.jpeg 18 150 | VL/Strong/P018/Anger/020.jpeg 18 151 | VL/Strong/P018/Anger/001.jpeg 18 152 | VL/Strong/P018/Anger/019.jpeg 18 153 | VL/Strong/P018/Disgust/006.jpeg 18 154 | VL/Strong/P018/Disgust/003.jpeg 18 155 | VL/Strong/P018/Disgust/005.jpeg 18 156 | VL/Strong/P018/Disgust/002.jpeg 18 157 | VL/Strong/P018/Disgust/004.jpeg 18 158 | VL/Strong/P018/Disgust/000.jpeg 18 159 | VL/Strong/P018/Disgust/001.jpeg 18 160 | VL/Strong/P018/Disgust/007.jpeg 18 161 | VL/Strong/P018/Fear/018.jpeg 18 162 | VL/Strong/P018/Fear/006.jpeg 18 163 | VL/Strong/P018/Fear/007.jpeg 18 164 | VL/Strong/P018/Fear/012.jpeg 18 165 | VL/Strong/P018/Fear/002.jpeg 18 166 | VL/Strong/P018/Fear/004.jpeg 18 167 | VL/Strong/P018/Fear/000.jpeg 18 168 | VL/Strong/P018/Fear/001.jpeg 18 169 | VL/Strong/P018/Happiness/026.jpeg 18 170 | VL/Strong/P018/Happiness/017.jpeg 18 171 | VL/Strong/P018/Happiness/025.jpeg 18 172 | VL/Strong/P018/Happiness/008.jpeg 18 173 | VL/Strong/P018/Happiness/027.jpeg 18 174 | VL/Strong/P018/Happiness/002.jpeg 18 175 | VL/Strong/P018/Happiness/030.jpeg 18 176 | VL/Strong/P018/Happiness/029.jpeg 18 177 | VL/Strong/P018/Sadness/008.jpeg 18 178 | VL/Strong/P018/Sadness/012.jpeg 18 179 | VL/Strong/P018/Sadness/002.jpeg 18 180 | VL/Strong/P018/Sadness/010.jpeg 18 181 | VL/Strong/P018/Sadness/000.jpeg 18 182 | VL/Strong/P018/Sadness/011.jpeg 18 183 | VL/Strong/P018/Sadness/006.jpeg 18 184 | VL/Strong/P018/Sadness/005.jpeg 18 185 | VL/Strong/P018/Surprise/020.jpeg 18 186 | VL/Strong/P018/Surprise/010.jpeg 18 187 | VL/Strong/P018/Surprise/012.jpeg 18 188 | VL/Strong/P018/Surprise/021.jpeg 18 189 | VL/Strong/P018/Surprise/005.jpeg 18 190 | VL/Strong/P018/Surprise/019.jpeg 18 191 | VL/Strong/P018/Surprise/018.jpeg 18 192 | VL/Strong/P018/Surprise/015.jpeg 18 193 | VL/Strong/P019/Anger/017.jpeg 19 194 | VL/Strong/P019/Anger/005.jpeg 19 195 | VL/Strong/P019/Anger/014.jpeg 19 196 | VL/Strong/P019/Anger/015.jpeg 19 197 | VL/Strong/P019/Anger/007.jpeg 19 198 | VL/Strong/P019/Anger/010.jpeg 19 199 | VL/Strong/P019/Anger/009.jpeg 19 200 | VL/Strong/P019/Anger/004.jpeg 19 201 | VL/Strong/P019/Disgust/000.jpeg 19 202 | VL/Strong/P019/Disgust/002.jpeg 19 203 | VL/Strong/P019/Disgust/001.jpeg 19 204 | VL/Strong/P019/Disgust/003.jpeg 19 205 | VL/Strong/P019/Disgust/004.jpeg 19 206 | VL/Strong/P019/Disgust/010.jpeg 19 207 | VL/Strong/P019/Disgust/009.jpeg 19 208 | VL/Strong/P019/Disgust/007.jpeg 19 209 | VL/Strong/P019/Fear/015.jpeg 19 210 | VL/Strong/P019/Fear/004.jpeg 19 211 | VL/Strong/P019/Fear/009.jpeg 19 212 | VL/Strong/P019/Fear/002.jpeg 19 213 | VL/Strong/P019/Fear/018.jpeg 19 214 | VL/Strong/P019/Fear/003.jpeg 19 215 | VL/Strong/P019/Fear/008.jpeg 19 216 | VL/Strong/P019/Fear/007.jpeg 19 217 | VL/Strong/P019/Happiness/003.jpeg 19 218 | VL/Strong/P019/Happiness/000.jpeg 19 219 | VL/Strong/P019/Happiness/007.jpeg 19 220 | VL/Strong/P019/Happiness/010.jpeg 19 221 | VL/Strong/P019/Happiness/018.jpeg 19 222 | VL/Strong/P019/Happiness/012.jpeg 19 223 | VL/Strong/P019/Happiness/009.jpeg 19 224 | VL/Strong/P019/Happiness/005.jpeg 19 225 | VL/Strong/P019/Sadness/005.jpeg 19 226 | VL/Strong/P019/Sadness/001.jpeg 19 227 | VL/Strong/P019/Sadness/006.jpeg 19 228 | VL/Strong/P019/Sadness/000.jpeg 19 229 | VL/Strong/P019/Sadness/002.jpeg 19 230 | VL/Strong/P019/Sadness/004.jpeg 19 231 | VL/Strong/P019/Sadness/003.jpeg 19 232 | VL/Strong/P019/Sadness/010.jpeg 19 233 | VL/Strong/P019/Surprise/008.jpeg 19 234 | VL/Strong/P019/Surprise/004.jpeg 19 235 | VL/Strong/P019/Surprise/002.jpeg 19 236 | VL/Strong/P019/Surprise/003.jpeg 19 237 | VL/Strong/P019/Surprise/007.jpeg 19 238 | VL/Strong/P019/Surprise/006.jpeg 19 239 | VL/Strong/P019/Surprise/011.jpeg 19 240 | VL/Strong/P019/Surprise/014.jpeg 19 241 | VL/Strong/P021/Anger/005.jpeg 21 242 | VL/Strong/P021/Anger/004.jpeg 21 243 | VL/Strong/P021/Anger/001.jpeg 21 244 | VL/Strong/P021/Anger/012.jpeg 21 245 | VL/Strong/P021/Anger/007.jpeg 21 246 | VL/Strong/P021/Anger/015.jpeg 21 247 | VL/Strong/P021/Anger/006.jpeg 21 248 | VL/Strong/P021/Anger/011.jpeg 21 249 | VL/Strong/P021/Disgust/009.jpeg 21 250 | VL/Strong/P021/Disgust/003.jpeg 21 251 | VL/Strong/P021/Disgust/006.jpeg 21 252 | VL/Strong/P021/Disgust/001.jpeg 21 253 | VL/Strong/P021/Disgust/002.jpeg 21 254 | VL/Strong/P021/Disgust/007.jpeg 21 255 | VL/Strong/P021/Disgust/000.jpeg 21 256 | VL/Strong/P021/Disgust/004.jpeg 21 257 | VL/Strong/P021/Fear/001.jpeg 21 258 | VL/Strong/P021/Fear/003.jpeg 21 259 | VL/Strong/P021/Fear/009.jpeg 21 260 | VL/Strong/P021/Fear/010.jpeg 21 261 | VL/Strong/P021/Fear/004.jpeg 21 262 | VL/Strong/P021/Fear/000.jpeg 21 263 | VL/Strong/P021/Fear/005.jpeg 21 264 | VL/Strong/P021/Fear/002.jpeg 21 265 | VL/Strong/P021/Happiness/007.jpeg 21 266 | VL/Strong/P021/Happiness/006.jpeg 21 267 | VL/Strong/P021/Happiness/008.jpeg 21 268 | VL/Strong/P021/Happiness/012.jpeg 21 269 | VL/Strong/P021/Happiness/014.jpeg 21 270 | VL/Strong/P021/Happiness/013.jpeg 21 271 | VL/Strong/P021/Happiness/004.jpeg 21 272 | VL/Strong/P021/Happiness/002.jpeg 21 273 | VL/Strong/P021/Sadness/015.jpeg 21 274 | VL/Strong/P021/Sadness/011.jpeg 21 275 | VL/Strong/P021/Sadness/009.jpeg 21 276 | VL/Strong/P021/Sadness/008.jpeg 21 277 | VL/Strong/P021/Sadness/004.jpeg 21 278 | VL/Strong/P021/Sadness/012.jpeg 21 279 | VL/Strong/P021/Sadness/006.jpeg 21 280 | VL/Strong/P021/Sadness/014.jpeg 21 281 | VL/Strong/P021/Surprise/005.jpeg 21 282 | VL/Strong/P021/Surprise/006.jpeg 21 283 | VL/Strong/P021/Surprise/001.jpeg 21 284 | VL/Strong/P021/Surprise/004.jpeg 21 285 | VL/Strong/P021/Surprise/009.jpeg 21 286 | VL/Strong/P021/Surprise/000.jpeg 21 287 | VL/Strong/P021/Surprise/003.jpeg 21 288 | VL/Strong/P021/Surprise/002.jpeg 21 289 | VL/Strong/P025/Anger/008.jpeg 25 290 | VL/Strong/P025/Anger/025.jpeg 25 291 | VL/Strong/P025/Anger/010.jpeg 25 292 | VL/Strong/P025/Anger/002.jpeg 25 293 | VL/Strong/P025/Anger/012.jpeg 25 294 | VL/Strong/P025/Anger/019.jpeg 25 295 | VL/Strong/P025/Anger/014.jpeg 25 296 | VL/Strong/P025/Anger/017.jpeg 25 297 | VL/Strong/P025/Disgust/010.jpeg 25 298 | VL/Strong/P025/Disgust/017.jpeg 25 299 | VL/Strong/P025/Disgust/002.jpeg 25 300 | VL/Strong/P025/Disgust/015.jpeg 25 301 | VL/Strong/P025/Disgust/021.jpeg 25 302 | VL/Strong/P025/Disgust/024.jpeg 25 303 | VL/Strong/P025/Disgust/029.jpeg 25 304 | VL/Strong/P025/Disgust/030.jpeg 25 305 | VL/Strong/P025/Fear/032.jpeg 25 306 | VL/Strong/P025/Fear/024.jpeg 25 307 | VL/Strong/P025/Fear/038.jpeg 25 308 | VL/Strong/P025/Fear/049.jpeg 25 309 | VL/Strong/P025/Fear/022.jpeg 25 310 | VL/Strong/P025/Fear/016.jpeg 25 311 | VL/Strong/P025/Fear/008.jpeg 25 312 | VL/Strong/P025/Fear/029.jpeg 25 313 | VL/Strong/P025/Happiness/021.jpeg 25 314 | VL/Strong/P025/Happiness/007.jpeg 25 315 | VL/Strong/P025/Happiness/011.jpeg 25 316 | VL/Strong/P025/Happiness/005.jpeg 25 317 | VL/Strong/P025/Happiness/001.jpeg 25 318 | VL/Strong/P025/Happiness/019.jpeg 25 319 | VL/Strong/P025/Happiness/027.jpeg 25 320 | VL/Strong/P025/Happiness/009.jpeg 25 321 | VL/Strong/P025/Sadness/003.jpeg 25 322 | VL/Strong/P025/Sadness/029.jpeg 25 323 | VL/Strong/P025/Sadness/031.jpeg 25 324 | VL/Strong/P025/Sadness/024.jpeg 25 325 | VL/Strong/P025/Sadness/027.jpeg 25 326 | VL/Strong/P025/Sadness/032.jpeg 25 327 | VL/Strong/P025/Sadness/013.jpeg 25 328 | VL/Strong/P025/Sadness/010.jpeg 25 329 | VL/Strong/P025/Surprise/018.jpeg 25 330 | VL/Strong/P025/Surprise/020.jpeg 25 331 | VL/Strong/P025/Surprise/001.jpeg 25 332 | VL/Strong/P025/Surprise/009.jpeg 25 333 | VL/Strong/P025/Surprise/017.jpeg 25 334 | VL/Strong/P025/Surprise/006.jpeg 25 335 | VL/Strong/P025/Surprise/008.jpeg 25 336 | VL/Strong/P025/Surprise/015.jpeg 25 337 | VL/Strong/P033/Anger/014.jpeg 33 338 | VL/Strong/P033/Anger/013.jpeg 33 339 | VL/Strong/P033/Anger/012.jpeg 33 340 | VL/Strong/P033/Anger/010.jpeg 33 341 | VL/Strong/P033/Anger/008.jpeg 33 342 | VL/Strong/P033/Anger/005.jpeg 33 343 | VL/Strong/P033/Anger/016.jpeg 33 344 | VL/Strong/P033/Anger/003.jpeg 33 345 | VL/Strong/P033/Disgust/007.jpeg 33 346 | VL/Strong/P033/Disgust/013.jpeg 33 347 | VL/Strong/P033/Disgust/016.jpeg 33 348 | VL/Strong/P033/Disgust/005.jpeg 33 349 | VL/Strong/P033/Disgust/010.jpeg 33 350 | VL/Strong/P033/Disgust/015.jpeg 33 351 | VL/Strong/P033/Disgust/002.jpeg 33 352 | VL/Strong/P033/Disgust/011.jpeg 33 353 | VL/Strong/P033/Fear/014.jpeg 33 354 | VL/Strong/P033/Fear/004.jpeg 33 355 | VL/Strong/P033/Fear/000.jpeg 33 356 | VL/Strong/P033/Fear/001.jpeg 33 357 | VL/Strong/P033/Fear/006.jpeg 33 358 | VL/Strong/P033/Fear/015.jpeg 33 359 | VL/Strong/P033/Fear/011.jpeg 33 360 | VL/Strong/P033/Fear/007.jpeg 33 361 | VL/Strong/P033/Happiness/000.jpeg 33 362 | VL/Strong/P033/Happiness/005.jpeg 33 363 | VL/Strong/P033/Happiness/003.jpeg 33 364 | VL/Strong/P033/Happiness/014.jpeg 33 365 | VL/Strong/P033/Happiness/008.jpeg 33 366 | VL/Strong/P033/Happiness/002.jpeg 33 367 | VL/Strong/P033/Happiness/015.jpeg 33 368 | VL/Strong/P033/Happiness/011.jpeg 33 369 | VL/Strong/P033/Sadness/015.jpeg 33 370 | VL/Strong/P033/Sadness/000.jpeg 33 371 | VL/Strong/P033/Sadness/001.jpeg 33 372 | VL/Strong/P033/Sadness/011.jpeg 33 373 | VL/Strong/P033/Sadness/014.jpeg 33 374 | VL/Strong/P033/Sadness/002.jpeg 33 375 | VL/Strong/P033/Sadness/013.jpeg 33 376 | VL/Strong/P033/Sadness/007.jpeg 33 377 | VL/Strong/P033/Surprise/011.jpeg 33 378 | VL/Strong/P033/Surprise/012.jpeg 33 379 | VL/Strong/P033/Surprise/002.jpeg 33 380 | VL/Strong/P033/Surprise/000.jpeg 33 381 | VL/Strong/P033/Surprise/010.jpeg 33 382 | VL/Strong/P033/Surprise/013.jpeg 33 383 | VL/Strong/P033/Surprise/004.jpeg 33 384 | VL/Strong/P033/Surprise/009.jpeg 33 385 | VL/Strong/P037/Anger/003.jpeg 37 386 | VL/Strong/P037/Anger/012.jpeg 37 387 | VL/Strong/P037/Anger/008.jpeg 37 388 | VL/Strong/P037/Anger/014.jpeg 37 389 | VL/Strong/P037/Anger/001.jpeg 37 390 | VL/Strong/P037/Anger/005.jpeg 37 391 | VL/Strong/P037/Anger/018.jpeg 37 392 | VL/Strong/P037/Anger/002.jpeg 37 393 | VL/Strong/P037/Disgust/004.jpeg 37 394 | VL/Strong/P037/Disgust/001.jpeg 37 395 | VL/Strong/P037/Disgust/002.jpeg 37 396 | VL/Strong/P037/Disgust/014.jpeg 37 397 | VL/Strong/P037/Disgust/003.jpeg 37 398 | VL/Strong/P037/Disgust/009.jpeg 37 399 | VL/Strong/P037/Disgust/010.jpeg 37 400 | VL/Strong/P037/Disgust/013.jpeg 37 401 | VL/Strong/P037/Fear/011.jpeg 37 402 | VL/Strong/P037/Fear/005.jpeg 37 403 | VL/Strong/P037/Fear/001.jpeg 37 404 | VL/Strong/P037/Fear/003.jpeg 37 405 | VL/Strong/P037/Fear/015.jpeg 37 406 | VL/Strong/P037/Fear/002.jpeg 37 407 | VL/Strong/P037/Fear/012.jpeg 37 408 | VL/Strong/P037/Fear/013.jpeg 37 409 | VL/Strong/P037/Happiness/003.jpeg 37 410 | VL/Strong/P037/Happiness/002.jpeg 37 411 | VL/Strong/P037/Happiness/011.jpeg 37 412 | VL/Strong/P037/Happiness/008.jpeg 37 413 | VL/Strong/P037/Happiness/015.jpeg 37 414 | VL/Strong/P037/Happiness/013.jpeg 37 415 | VL/Strong/P037/Happiness/006.jpeg 37 416 | VL/Strong/P037/Happiness/000.jpeg 37 417 | VL/Strong/P037/Sadness/018.jpeg 37 418 | VL/Strong/P037/Sadness/002.jpeg 37 419 | VL/Strong/P037/Sadness/005.jpeg 37 420 | VL/Strong/P037/Sadness/008.jpeg 37 421 | VL/Strong/P037/Sadness/000.jpeg 37 422 | VL/Strong/P037/Sadness/014.jpeg 37 423 | VL/Strong/P037/Sadness/009.jpeg 37 424 | VL/Strong/P037/Sadness/012.jpeg 37 425 | VL/Strong/P037/Surprise/012.jpeg 37 426 | VL/Strong/P037/Surprise/003.jpeg 37 427 | VL/Strong/P037/Surprise/018.jpeg 37 428 | VL/Strong/P037/Surprise/005.jpeg 37 429 | VL/Strong/P037/Surprise/013.jpeg 37 430 | VL/Strong/P037/Surprise/015.jpeg 37 431 | VL/Strong/P037/Surprise/009.jpeg 37 432 | VL/Strong/P037/Surprise/000.jpeg 37 433 | VL/Strong/P046/Anger/006.jpeg 46 434 | VL/Strong/P046/Anger/004.jpeg 46 435 | VL/Strong/P046/Anger/001.jpeg 46 436 | VL/Strong/P046/Anger/012.jpeg 46 437 | VL/Strong/P046/Anger/011.jpeg 46 438 | VL/Strong/P046/Anger/007.jpeg 46 439 | VL/Strong/P046/Anger/005.jpeg 46 440 | VL/Strong/P046/Anger/016.jpeg 46 441 | VL/Strong/P046/Disgust/004.jpeg 46 442 | VL/Strong/P046/Disgust/002.jpeg 46 443 | VL/Strong/P046/Disgust/012.jpeg 46 444 | VL/Strong/P046/Disgust/013.jpeg 46 445 | VL/Strong/P046/Disgust/001.jpeg 46 446 | VL/Strong/P046/Disgust/007.jpeg 46 447 | VL/Strong/P046/Disgust/008.jpeg 46 448 | VL/Strong/P046/Disgust/006.jpeg 46 449 | VL/Strong/P046/Fear/012.jpeg 46 450 | VL/Strong/P046/Fear/002.jpeg 46 451 | VL/Strong/P046/Fear/016.jpeg 46 452 | VL/Strong/P046/Fear/014.jpeg 46 453 | VL/Strong/P046/Fear/010.jpeg 46 454 | VL/Strong/P046/Fear/018.jpeg 46 455 | VL/Strong/P046/Fear/013.jpeg 46 456 | VL/Strong/P046/Fear/007.jpeg 46 457 | VL/Strong/P046/Happiness/020.jpeg 46 458 | VL/Strong/P046/Happiness/001.jpeg 46 459 | VL/Strong/P046/Happiness/019.jpeg 46 460 | VL/Strong/P046/Happiness/009.jpeg 46 461 | VL/Strong/P046/Happiness/008.jpeg 46 462 | VL/Strong/P046/Happiness/000.jpeg 46 463 | VL/Strong/P046/Happiness/012.jpeg 46 464 | VL/Strong/P046/Happiness/011.jpeg 46 465 | VL/Strong/P046/Sadness/012.jpeg 46 466 | VL/Strong/P046/Sadness/002.jpeg 46 467 | VL/Strong/P046/Sadness/004.jpeg 46 468 | VL/Strong/P046/Sadness/011.jpeg 46 469 | VL/Strong/P046/Sadness/006.jpeg 46 470 | VL/Strong/P046/Sadness/015.jpeg 46 471 | VL/Strong/P046/Sadness/018.jpeg 46 472 | VL/Strong/P046/Sadness/019.jpeg 46 473 | VL/Strong/P046/Surprise/010.jpeg 46 474 | VL/Strong/P046/Surprise/008.jpeg 46 475 | VL/Strong/P046/Surprise/016.jpeg 46 476 | VL/Strong/P046/Surprise/004.jpeg 46 477 | VL/Strong/P046/Surprise/009.jpeg 46 478 | VL/Strong/P046/Surprise/012.jpeg 46 479 | VL/Strong/P046/Surprise/017.jpeg 46 480 | VL/Strong/P046/Surprise/013.jpeg 46 481 | VL/Strong/P049/Anger/002.jpeg 49 482 | VL/Strong/P049/Anger/018.jpeg 49 483 | VL/Strong/P049/Anger/023.jpeg 49 484 | VL/Strong/P049/Anger/022.jpeg 49 485 | VL/Strong/P049/Anger/001.jpeg 49 486 | VL/Strong/P049/Anger/009.jpeg 49 487 | VL/Strong/P049/Anger/016.jpeg 49 488 | VL/Strong/P049/Anger/006.jpeg 49 489 | VL/Strong/P049/Disgust/004.jpeg 49 490 | VL/Strong/P049/Disgust/002.jpeg 49 491 | VL/Strong/P049/Disgust/000.jpeg 49 492 | VL/Strong/P049/Disgust/009.jpeg 49 493 | VL/Strong/P049/Disgust/007.jpeg 49 494 | VL/Strong/P049/Disgust/008.jpeg 49 495 | VL/Strong/P049/Disgust/006.jpeg 49 496 | VL/Strong/P049/Disgust/011.jpeg 49 497 | VL/Strong/P049/Fear/019.jpeg 49 498 | VL/Strong/P049/Fear/011.jpeg 49 499 | VL/Strong/P049/Fear/020.jpeg 49 500 | VL/Strong/P049/Fear/014.jpeg 49 501 | VL/Strong/P049/Fear/015.jpeg 49 502 | VL/Strong/P049/Fear/009.jpeg 49 503 | VL/Strong/P049/Fear/024.jpeg 49 504 | VL/Strong/P049/Fear/012.jpeg 49 505 | VL/Strong/P049/Happiness/013.jpeg 49 506 | VL/Strong/P049/Happiness/011.jpeg 49 507 | VL/Strong/P049/Happiness/010.jpeg 49 508 | VL/Strong/P049/Happiness/012.jpeg 49 509 | VL/Strong/P049/Happiness/000.jpeg 49 510 | VL/Strong/P049/Happiness/003.jpeg 49 511 | VL/Strong/P049/Happiness/018.jpeg 49 512 | VL/Strong/P049/Happiness/019.jpeg 49 513 | VL/Strong/P049/Sadness/001.jpeg 49 514 | VL/Strong/P049/Sadness/021.jpeg 49 515 | VL/Strong/P049/Sadness/020.jpeg 49 516 | VL/Strong/P049/Sadness/009.jpeg 49 517 | VL/Strong/P049/Sadness/016.jpeg 49 518 | VL/Strong/P049/Sadness/004.jpeg 49 519 | VL/Strong/P049/Sadness/011.jpeg 49 520 | VL/Strong/P049/Sadness/005.jpeg 49 521 | VL/Strong/P049/Surprise/011.jpeg 49 522 | VL/Strong/P049/Surprise/004.jpeg 49 523 | VL/Strong/P049/Surprise/012.jpeg 49 524 | VL/Strong/P049/Surprise/003.jpeg 49 525 | VL/Strong/P049/Surprise/014.jpeg 49 526 | VL/Strong/P049/Surprise/020.jpeg 49 527 | VL/Strong/P049/Surprise/002.jpeg 49 528 | VL/Strong/P049/Surprise/016.jpeg 49 529 | VL/Strong/P053/Anger/000.jpeg 53 530 | VL/Strong/P053/Anger/006.jpeg 53 531 | VL/Strong/P053/Anger/007.jpeg 53 532 | VL/Strong/P053/Anger/012.jpeg 53 533 | VL/Strong/P053/Anger/008.jpeg 53 534 | VL/Strong/P053/Anger/001.jpeg 53 535 | VL/Strong/P053/Anger/013.jpeg 53 536 | VL/Strong/P053/Anger/010.jpeg 53 537 | VL/Strong/P053/Disgust/009.jpeg 53 538 | VL/Strong/P053/Disgust/021.jpeg 53 539 | VL/Strong/P053/Disgust/014.jpeg 53 540 | VL/Strong/P053/Disgust/017.jpeg 53 541 | VL/Strong/P053/Disgust/018.jpeg 53 542 | VL/Strong/P053/Disgust/016.jpeg 53 543 | VL/Strong/P053/Disgust/012.jpeg 53 544 | VL/Strong/P053/Disgust/011.jpeg 53 545 | VL/Strong/P053/Fear/011.jpeg 53 546 | VL/Strong/P053/Fear/000.jpeg 53 547 | VL/Strong/P053/Fear/010.jpeg 53 548 | VL/Strong/P053/Fear/003.jpeg 53 549 | VL/Strong/P053/Fear/006.jpeg 53 550 | VL/Strong/P053/Fear/008.jpeg 53 551 | VL/Strong/P053/Fear/009.jpeg 53 552 | VL/Strong/P053/Fear/001.jpeg 53 553 | VL/Strong/P053/Happiness/022.jpeg 53 554 | VL/Strong/P053/Happiness/026.jpeg 53 555 | VL/Strong/P053/Happiness/012.jpeg 53 556 | VL/Strong/P053/Happiness/013.jpeg 53 557 | VL/Strong/P053/Happiness/016.jpeg 53 558 | VL/Strong/P053/Happiness/000.jpeg 53 559 | VL/Strong/P053/Happiness/005.jpeg 53 560 | VL/Strong/P053/Happiness/017.jpeg 53 561 | VL/Strong/P053/Sadness/015.jpeg 53 562 | VL/Strong/P053/Sadness/002.jpeg 53 563 | VL/Strong/P053/Sadness/011.jpeg 53 564 | VL/Strong/P053/Sadness/007.jpeg 53 565 | VL/Strong/P053/Sadness/003.jpeg 53 566 | VL/Strong/P053/Sadness/000.jpeg 53 567 | VL/Strong/P053/Sadness/010.jpeg 53 568 | VL/Strong/P053/Sadness/013.jpeg 53 569 | VL/Strong/P053/Surprise/020.jpeg 53 570 | VL/Strong/P053/Surprise/007.jpeg 53 571 | VL/Strong/P053/Surprise/019.jpeg 53 572 | VL/Strong/P053/Surprise/006.jpeg 53 573 | VL/Strong/P053/Surprise/017.jpeg 53 574 | VL/Strong/P053/Surprise/012.jpeg 53 575 | VL/Strong/P053/Surprise/018.jpeg 53 576 | VL/Strong/P053/Surprise/010.jpeg 53 577 | VL/Strong/P057/Anger/014.jpeg 57 578 | VL/Strong/P057/Anger/005.jpeg 57 579 | VL/Strong/P057/Anger/000.jpeg 57 580 | VL/Strong/P057/Anger/019.jpeg 57 581 | VL/Strong/P057/Anger/011.jpeg 57 582 | VL/Strong/P057/Anger/016.jpeg 57 583 | VL/Strong/P057/Anger/009.jpeg 57 584 | VL/Strong/P057/Anger/017.jpeg 57 585 | VL/Strong/P057/Disgust/003.jpeg 57 586 | VL/Strong/P057/Disgust/005.jpeg 57 587 | VL/Strong/P057/Disgust/004.jpeg 57 588 | VL/Strong/P057/Disgust/018.jpeg 57 589 | VL/Strong/P057/Disgust/000.jpeg 57 590 | VL/Strong/P057/Disgust/014.jpeg 57 591 | VL/Strong/P057/Disgust/012.jpeg 57 592 | VL/Strong/P057/Disgust/016.jpeg 57 593 | VL/Strong/P057/Fear/015.jpeg 57 594 | VL/Strong/P057/Fear/017.jpeg 57 595 | VL/Strong/P057/Fear/014.jpeg 57 596 | VL/Strong/P057/Fear/005.jpeg 57 597 | VL/Strong/P057/Fear/006.jpeg 57 598 | VL/Strong/P057/Fear/001.jpeg 57 599 | VL/Strong/P057/Fear/004.jpeg 57 600 | VL/Strong/P057/Fear/022.jpeg 57 601 | VL/Strong/P057/Happiness/009.jpeg 57 602 | VL/Strong/P057/Happiness/001.jpeg 57 603 | VL/Strong/P057/Happiness/014.jpeg 57 604 | VL/Strong/P057/Happiness/016.jpeg 57 605 | VL/Strong/P057/Happiness/015.jpeg 57 606 | VL/Strong/P057/Happiness/013.jpeg 57 607 | VL/Strong/P057/Happiness/000.jpeg 57 608 | VL/Strong/P057/Happiness/003.jpeg 57 609 | VL/Strong/P057/Sadness/012.jpeg 57 610 | VL/Strong/P057/Sadness/013.jpeg 57 611 | VL/Strong/P057/Sadness/005.jpeg 57 612 | VL/Strong/P057/Sadness/007.jpeg 57 613 | VL/Strong/P057/Sadness/003.jpeg 57 614 | VL/Strong/P057/Sadness/002.jpeg 57 615 | VL/Strong/P057/Sadness/011.jpeg 57 616 | VL/Strong/P057/Sadness/021.jpeg 57 617 | VL/Strong/P057/Surprise/012.jpeg 57 618 | VL/Strong/P057/Surprise/017.jpeg 57 619 | VL/Strong/P057/Surprise/011.jpeg 57 620 | VL/Strong/P057/Surprise/007.jpeg 57 621 | VL/Strong/P057/Surprise/003.jpeg 57 622 | VL/Strong/P057/Surprise/008.jpeg 57 623 | VL/Strong/P057/Surprise/020.jpeg 57 624 | VL/Strong/P057/Surprise/016.jpeg 57 625 | VL/Strong/P059/Anger/010.jpeg 59 626 | VL/Strong/P059/Anger/000.jpeg 59 627 | VL/Strong/P059/Anger/005.jpeg 59 628 | VL/Strong/P059/Anger/008.jpeg 59 629 | VL/Strong/P059/Anger/011.jpeg 59 630 | VL/Strong/P059/Anger/007.jpeg 59 631 | VL/Strong/P059/Anger/003.jpeg 59 632 | VL/Strong/P059/Anger/014.jpeg 59 633 | VL/Strong/P059/Disgust/010.jpeg 59 634 | VL/Strong/P059/Disgust/007.jpeg 59 635 | VL/Strong/P059/Disgust/008.jpeg 59 636 | VL/Strong/P059/Disgust/003.jpeg 59 637 | VL/Strong/P059/Disgust/000.jpeg 59 638 | VL/Strong/P059/Disgust/005.jpeg 59 639 | VL/Strong/P059/Disgust/015.jpeg 59 640 | VL/Strong/P059/Disgust/002.jpeg 59 641 | VL/Strong/P059/Fear/010.jpeg 59 642 | VL/Strong/P059/Fear/000.jpeg 59 643 | VL/Strong/P059/Fear/002.jpeg 59 644 | VL/Strong/P059/Fear/014.jpeg 59 645 | VL/Strong/P059/Fear/012.jpeg 59 646 | VL/Strong/P059/Fear/009.jpeg 59 647 | VL/Strong/P059/Fear/006.jpeg 59 648 | VL/Strong/P059/Fear/008.jpeg 59 649 | VL/Strong/P059/Happiness/013.jpeg 59 650 | VL/Strong/P059/Happiness/019.jpeg 59 651 | VL/Strong/P059/Happiness/017.jpeg 59 652 | VL/Strong/P059/Happiness/005.jpeg 59 653 | VL/Strong/P059/Happiness/002.jpeg 59 654 | VL/Strong/P059/Happiness/018.jpeg 59 655 | VL/Strong/P059/Happiness/012.jpeg 59 656 | VL/Strong/P059/Happiness/000.jpeg 59 657 | VL/Strong/P059/Sadness/017.jpeg 59 658 | VL/Strong/P059/Sadness/008.jpeg 59 659 | VL/Strong/P059/Sadness/002.jpeg 59 660 | VL/Strong/P059/Sadness/003.jpeg 59 661 | VL/Strong/P059/Sadness/000.jpeg 59 662 | VL/Strong/P059/Sadness/012.jpeg 59 663 | VL/Strong/P059/Sadness/010.jpeg 59 664 | VL/Strong/P059/Sadness/001.jpeg 59 665 | VL/Strong/P059/Surprise/015.jpeg 59 666 | VL/Strong/P059/Surprise/006.jpeg 59 667 | VL/Strong/P059/Surprise/023.jpeg 59 668 | VL/Strong/P059/Surprise/004.jpeg 59 669 | VL/Strong/P059/Surprise/019.jpeg 59 670 | VL/Strong/P059/Surprise/017.jpeg 59 671 | VL/Strong/P059/Surprise/007.jpeg 59 672 | VL/Strong/P059/Surprise/016.jpeg 59 673 | VL/Strong/P062/Anger/006.jpeg 62 674 | VL/Strong/P062/Anger/001.jpeg 62 675 | VL/Strong/P062/Anger/002.jpeg 62 676 | VL/Strong/P062/Anger/012.jpeg 62 677 | VL/Strong/P062/Anger/003.jpeg 62 678 | VL/Strong/P062/Anger/008.jpeg 62 679 | VL/Strong/P062/Anger/022.jpeg 62 680 | VL/Strong/P062/Anger/011.jpeg 62 681 | VL/Strong/P062/Disgust/000.jpeg 62 682 | VL/Strong/P062/Disgust/012.jpeg 62 683 | VL/Strong/P062/Disgust/013.jpeg 62 684 | VL/Strong/P062/Disgust/005.jpeg 62 685 | VL/Strong/P062/Disgust/003.jpeg 62 686 | VL/Strong/P062/Disgust/006.jpeg 62 687 | VL/Strong/P062/Disgust/016.jpeg 62 688 | VL/Strong/P062/Disgust/017.jpeg 62 689 | VL/Strong/P062/Fear/003.jpeg 62 690 | VL/Strong/P062/Fear/020.jpeg 62 691 | VL/Strong/P062/Fear/006.jpeg 62 692 | VL/Strong/P062/Fear/021.jpeg 62 693 | VL/Strong/P062/Fear/023.jpeg 62 694 | VL/Strong/P062/Fear/012.jpeg 62 695 | VL/Strong/P062/Fear/014.jpeg 62 696 | VL/Strong/P062/Fear/009.jpeg 62 697 | VL/Strong/P062/Happiness/006.jpeg 62 698 | VL/Strong/P062/Happiness/009.jpeg 62 699 | VL/Strong/P062/Happiness/013.jpeg 62 700 | VL/Strong/P062/Happiness/011.jpeg 62 701 | VL/Strong/P062/Happiness/005.jpeg 62 702 | VL/Strong/P062/Happiness/010.jpeg 62 703 | VL/Strong/P062/Happiness/000.jpeg 62 704 | VL/Strong/P062/Happiness/001.jpeg 62 705 | VL/Strong/P062/Sadness/000.jpeg 62 706 | VL/Strong/P062/Sadness/020.jpeg 62 707 | VL/Strong/P062/Sadness/004.jpeg 62 708 | VL/Strong/P062/Sadness/003.jpeg 62 709 | VL/Strong/P062/Sadness/014.jpeg 62 710 | VL/Strong/P062/Sadness/001.jpeg 62 711 | VL/Strong/P062/Sadness/016.jpeg 62 712 | VL/Strong/P062/Sadness/006.jpeg 62 713 | VL/Strong/P062/Surprise/004.jpeg 62 714 | VL/Strong/P062/Surprise/013.jpeg 62 715 | VL/Strong/P062/Surprise/012.jpeg 62 716 | VL/Strong/P062/Surprise/002.jpeg 62 717 | VL/Strong/P062/Surprise/009.jpeg 62 718 | VL/Strong/P062/Surprise/018.jpeg 62 719 | VL/Strong/P062/Surprise/001.jpeg 62 720 | VL/Strong/P062/Surprise/005.jpeg 62 721 | VL/Strong/P063/Anger/004.jpeg 63 722 | VL/Strong/P063/Anger/022.jpeg 63 723 | VL/Strong/P063/Anger/018.jpeg 63 724 | VL/Strong/P063/Anger/020.jpeg 63 725 | VL/Strong/P063/Anger/006.jpeg 63 726 | VL/Strong/P063/Anger/015.jpeg 63 727 | VL/Strong/P063/Anger/011.jpeg 63 728 | VL/Strong/P063/Anger/009.jpeg 63 729 | VL/Strong/P063/Disgust/021.jpeg 63 730 | VL/Strong/P063/Disgust/008.jpeg 63 731 | VL/Strong/P063/Disgust/017.jpeg 63 732 | VL/Strong/P063/Disgust/010.jpeg 63 733 | VL/Strong/P063/Disgust/023.jpeg 63 734 | VL/Strong/P063/Disgust/001.jpeg 63 735 | VL/Strong/P063/Disgust/015.jpeg 63 736 | VL/Strong/P063/Disgust/009.jpeg 63 737 | VL/Strong/P063/Fear/001.jpeg 63 738 | VL/Strong/P063/Fear/009.jpeg 63 739 | VL/Strong/P063/Fear/010.jpeg 63 740 | VL/Strong/P063/Fear/004.jpeg 63 741 | VL/Strong/P063/Fear/016.jpeg 63 742 | VL/Strong/P063/Fear/006.jpeg 63 743 | VL/Strong/P063/Fear/003.jpeg 63 744 | VL/Strong/P063/Fear/014.jpeg 63 745 | VL/Strong/P063/Happiness/001.jpeg 63 746 | VL/Strong/P063/Happiness/018.jpeg 63 747 | VL/Strong/P063/Happiness/005.jpeg 63 748 | VL/Strong/P063/Happiness/016.jpeg 63 749 | VL/Strong/P063/Happiness/012.jpeg 63 750 | VL/Strong/P063/Happiness/010.jpeg 63 751 | VL/Strong/P063/Happiness/003.jpeg 63 752 | VL/Strong/P063/Happiness/002.jpeg 63 753 | VL/Strong/P063/Sadness/008.jpeg 63 754 | VL/Strong/P063/Sadness/000.jpeg 63 755 | VL/Strong/P063/Sadness/020.jpeg 63 756 | VL/Strong/P063/Sadness/009.jpeg 63 757 | VL/Strong/P063/Sadness/015.jpeg 63 758 | VL/Strong/P063/Sadness/006.jpeg 63 759 | VL/Strong/P063/Sadness/017.jpeg 63 760 | VL/Strong/P063/Sadness/023.jpeg 63 761 | VL/Strong/P063/Surprise/019.jpeg 63 762 | VL/Strong/P063/Surprise/018.jpeg 63 763 | VL/Strong/P063/Surprise/000.jpeg 63 764 | VL/Strong/P063/Surprise/012.jpeg 63 765 | VL/Strong/P063/Surprise/004.jpeg 63 766 | VL/Strong/P063/Surprise/016.jpeg 63 767 | VL/Strong/P063/Surprise/015.jpeg 63 768 | VL/Strong/P063/Surprise/001.jpeg 63 769 | VL/Strong/P064/Anger/014.jpeg 64 770 | VL/Strong/P064/Anger/013.jpeg 64 771 | VL/Strong/P064/Anger/007.jpeg 64 772 | VL/Strong/P064/Anger/003.jpeg 64 773 | VL/Strong/P064/Anger/002.jpeg 64 774 | VL/Strong/P064/Anger/011.jpeg 64 775 | VL/Strong/P064/Anger/015.jpeg 64 776 | VL/Strong/P064/Anger/018.jpeg 64 777 | VL/Strong/P064/Disgust/013.jpeg 64 778 | VL/Strong/P064/Disgust/012.jpeg 64 779 | VL/Strong/P064/Disgust/005.jpeg 64 780 | VL/Strong/P064/Disgust/009.jpeg 64 781 | VL/Strong/P064/Disgust/018.jpeg 64 782 | VL/Strong/P064/Disgust/004.jpeg 64 783 | VL/Strong/P064/Disgust/003.jpeg 64 784 | VL/Strong/P064/Disgust/008.jpeg 64 785 | VL/Strong/P064/Fear/009.jpeg 64 786 | VL/Strong/P064/Fear/016.jpeg 64 787 | VL/Strong/P064/Fear/005.jpeg 64 788 | VL/Strong/P064/Fear/010.jpeg 64 789 | VL/Strong/P064/Fear/018.jpeg 64 790 | VL/Strong/P064/Fear/015.jpeg 64 791 | VL/Strong/P064/Fear/013.jpeg 64 792 | VL/Strong/P064/Fear/000.jpeg 64 793 | VL/Strong/P064/Happiness/001.jpeg 64 794 | VL/Strong/P064/Happiness/006.jpeg 64 795 | VL/Strong/P064/Happiness/011.jpeg 64 796 | VL/Strong/P064/Happiness/021.jpeg 64 797 | VL/Strong/P064/Happiness/016.jpeg 64 798 | VL/Strong/P064/Happiness/010.jpeg 64 799 | VL/Strong/P064/Happiness/005.jpeg 64 800 | VL/Strong/P064/Happiness/004.jpeg 64 801 | VL/Strong/P064/Sadness/006.jpeg 64 802 | VL/Strong/P064/Sadness/008.jpeg 64 803 | VL/Strong/P064/Sadness/018.jpeg 64 804 | VL/Strong/P064/Sadness/025.jpeg 64 805 | VL/Strong/P064/Sadness/001.jpeg 64 806 | VL/Strong/P064/Sadness/017.jpeg 64 807 | VL/Strong/P064/Sadness/023.jpeg 64 808 | VL/Strong/P064/Sadness/005.jpeg 64 809 | VL/Strong/P064/Surprise/002.jpeg 64 810 | VL/Strong/P064/Surprise/010.jpeg 64 811 | VL/Strong/P064/Surprise/000.jpeg 64 812 | VL/Strong/P064/Surprise/014.jpeg 64 813 | VL/Strong/P064/Surprise/005.jpeg 64 814 | VL/Strong/P064/Surprise/019.jpeg 64 815 | VL/Strong/P064/Surprise/006.jpeg 64 816 | VL/Strong/P064/Surprise/009.jpeg 64 817 | VL/Strong/P065/Anger/001.jpeg 65 818 | VL/Strong/P065/Anger/011.jpeg 65 819 | VL/Strong/P065/Anger/019.jpeg 65 820 | VL/Strong/P065/Anger/007.jpeg 65 821 | VL/Strong/P065/Anger/012.jpeg 65 822 | VL/Strong/P065/Anger/017.jpeg 65 823 | VL/Strong/P065/Anger/000.jpeg 65 824 | VL/Strong/P065/Anger/015.jpeg 65 825 | VL/Strong/P065/Disgust/021.jpeg 65 826 | VL/Strong/P065/Disgust/013.jpeg 65 827 | VL/Strong/P065/Disgust/000.jpeg 65 828 | VL/Strong/P065/Disgust/005.jpeg 65 829 | VL/Strong/P065/Disgust/008.jpeg 65 830 | VL/Strong/P065/Disgust/020.jpeg 65 831 | VL/Strong/P065/Disgust/022.jpeg 65 832 | VL/Strong/P065/Disgust/012.jpeg 65 833 | VL/Strong/P065/Fear/012.jpeg 65 834 | VL/Strong/P065/Fear/002.jpeg 65 835 | VL/Strong/P065/Fear/007.jpeg 65 836 | VL/Strong/P065/Fear/008.jpeg 65 837 | VL/Strong/P065/Fear/000.jpeg 65 838 | VL/Strong/P065/Fear/001.jpeg 65 839 | VL/Strong/P065/Fear/017.jpeg 65 840 | VL/Strong/P065/Fear/010.jpeg 65 841 | VL/Strong/P065/Happiness/012.jpeg 65 842 | VL/Strong/P065/Happiness/017.jpeg 65 843 | VL/Strong/P065/Happiness/009.jpeg 65 844 | VL/Strong/P065/Happiness/007.jpeg 65 845 | VL/Strong/P065/Happiness/015.jpeg 65 846 | VL/Strong/P065/Happiness/004.jpeg 65 847 | VL/Strong/P065/Happiness/003.jpeg 65 848 | VL/Strong/P065/Happiness/008.jpeg 65 849 | VL/Strong/P065/Sadness/005.jpeg 65 850 | VL/Strong/P065/Sadness/014.jpeg 65 851 | VL/Strong/P065/Sadness/007.jpeg 65 852 | VL/Strong/P065/Sadness/015.jpeg 65 853 | VL/Strong/P065/Sadness/011.jpeg 65 854 | VL/Strong/P065/Sadness/010.jpeg 65 855 | VL/Strong/P065/Sadness/013.jpeg 65 856 | VL/Strong/P065/Sadness/003.jpeg 65 857 | VL/Strong/P065/Surprise/015.jpeg 65 858 | VL/Strong/P065/Surprise/007.jpeg 65 859 | VL/Strong/P065/Surprise/006.jpeg 65 860 | VL/Strong/P065/Surprise/001.jpeg 65 861 | VL/Strong/P065/Surprise/005.jpeg 65 862 | VL/Strong/P065/Surprise/010.jpeg 65 863 | VL/Strong/P065/Surprise/000.jpeg 65 864 | VL/Strong/P065/Surprise/008.jpeg 65 865 | VL/Strong/P069/Anger/002.jpeg 69 866 | VL/Strong/P069/Anger/014.jpeg 69 867 | VL/Strong/P069/Anger/018.jpeg 69 868 | VL/Strong/P069/Anger/004.jpeg 69 869 | VL/Strong/P069/Anger/006.jpeg 69 870 | VL/Strong/P069/Anger/020.jpeg 69 871 | VL/Strong/P069/Anger/010.jpeg 69 872 | VL/Strong/P069/Anger/001.jpeg 69 873 | VL/Strong/P069/Disgust/015.jpeg 69 874 | VL/Strong/P069/Disgust/022.jpeg 69 875 | VL/Strong/P069/Disgust/017.jpeg 69 876 | VL/Strong/P069/Disgust/007.jpeg 69 877 | VL/Strong/P069/Disgust/020.jpeg 69 878 | VL/Strong/P069/Disgust/008.jpeg 69 879 | VL/Strong/P069/Disgust/012.jpeg 69 880 | VL/Strong/P069/Disgust/014.jpeg 69 881 | VL/Strong/P069/Fear/016.jpeg 69 882 | VL/Strong/P069/Fear/004.jpeg 69 883 | VL/Strong/P069/Fear/017.jpeg 69 884 | VL/Strong/P069/Fear/014.jpeg 69 885 | VL/Strong/P069/Fear/009.jpeg 69 886 | VL/Strong/P069/Fear/019.jpeg 69 887 | VL/Strong/P069/Fear/001.jpeg 69 888 | VL/Strong/P069/Fear/011.jpeg 69 889 | VL/Strong/P069/Happiness/004.jpeg 69 890 | VL/Strong/P069/Happiness/016.jpeg 69 891 | VL/Strong/P069/Happiness/008.jpeg 69 892 | VL/Strong/P069/Happiness/000.jpeg 69 893 | VL/Strong/P069/Happiness/020.jpeg 69 894 | VL/Strong/P069/Happiness/010.jpeg 69 895 | VL/Strong/P069/Happiness/006.jpeg 69 896 | VL/Strong/P069/Happiness/013.jpeg 69 897 | VL/Strong/P069/Sadness/017.jpeg 69 898 | VL/Strong/P069/Sadness/006.jpeg 69 899 | VL/Strong/P069/Sadness/010.jpeg 69 900 | VL/Strong/P069/Sadness/000.jpeg 69 901 | VL/Strong/P069/Sadness/012.jpeg 69 902 | VL/Strong/P069/Sadness/004.jpeg 69 903 | VL/Strong/P069/Sadness/018.jpeg 69 904 | VL/Strong/P069/Sadness/013.jpeg 69 905 | VL/Strong/P069/Surprise/009.jpeg 69 906 | VL/Strong/P069/Surprise/020.jpeg 69 907 | VL/Strong/P069/Surprise/016.jpeg 69 908 | VL/Strong/P069/Surprise/007.jpeg 69 909 | VL/Strong/P069/Surprise/019.jpeg 69 910 | VL/Strong/P069/Surprise/015.jpeg 69 911 | VL/Strong/P069/Surprise/005.jpeg 69 912 | VL/Strong/P069/Surprise/008.jpeg 69 913 | VL/Strong/P075/Anger/011.jpeg 75 914 | VL/Strong/P075/Anger/007.jpeg 75 915 | VL/Strong/P075/Anger/018.jpeg 75 916 | VL/Strong/P075/Anger/016.jpeg 75 917 | VL/Strong/P075/Anger/002.jpeg 75 918 | VL/Strong/P075/Anger/005.jpeg 75 919 | VL/Strong/P075/Anger/014.jpeg 75 920 | VL/Strong/P075/Anger/017.jpeg 75 921 | VL/Strong/P075/Disgust/001.jpeg 75 922 | VL/Strong/P075/Disgust/007.jpeg 75 923 | VL/Strong/P075/Disgust/023.jpeg 75 924 | VL/Strong/P075/Disgust/014.jpeg 75 925 | VL/Strong/P075/Disgust/009.jpeg 75 926 | VL/Strong/P075/Disgust/022.jpeg 75 927 | VL/Strong/P075/Disgust/004.jpeg 75 928 | VL/Strong/P075/Disgust/025.jpeg 75 929 | VL/Strong/P075/Fear/013.jpeg 75 930 | VL/Strong/P075/Fear/023.jpeg 75 931 | VL/Strong/P075/Fear/010.jpeg 75 932 | VL/Strong/P075/Fear/012.jpeg 75 933 | VL/Strong/P075/Fear/020.jpeg 75 934 | VL/Strong/P075/Fear/022.jpeg 75 935 | VL/Strong/P075/Fear/007.jpeg 75 936 | VL/Strong/P075/Fear/001.jpeg 75 937 | VL/Strong/P075/Happiness/010.jpeg 75 938 | VL/Strong/P075/Happiness/017.jpeg 75 939 | VL/Strong/P075/Happiness/014.jpeg 75 940 | VL/Strong/P075/Happiness/012.jpeg 75 941 | VL/Strong/P075/Happiness/007.jpeg 75 942 | VL/Strong/P075/Happiness/001.jpeg 75 943 | VL/Strong/P075/Happiness/000.jpeg 75 944 | VL/Strong/P075/Happiness/011.jpeg 75 945 | VL/Strong/P075/Sadness/017.jpeg 75 946 | VL/Strong/P075/Sadness/011.jpeg 75 947 | VL/Strong/P075/Sadness/010.jpeg 75 948 | VL/Strong/P075/Sadness/001.jpeg 75 949 | VL/Strong/P075/Sadness/015.jpeg 75 950 | VL/Strong/P075/Sadness/013.jpeg 75 951 | VL/Strong/P075/Sadness/018.jpeg 75 952 | VL/Strong/P075/Sadness/012.jpeg 75 953 | VL/Strong/P075/Surprise/010.jpeg 75 954 | VL/Strong/P075/Surprise/005.jpeg 75 955 | VL/Strong/P075/Surprise/004.jpeg 75 956 | VL/Strong/P075/Surprise/001.jpeg 75 957 | VL/Strong/P075/Surprise/007.jpeg 75 958 | VL/Strong/P075/Surprise/012.jpeg 75 959 | VL/Strong/P075/Surprise/002.jpeg 75 960 | VL/Strong/P075/Surprise/013.jpeg 75 961 | --------------------------------------------------------------------------------