Commit a0d5cc56 authored by Amir MOHAMMADI's avatar Amir MOHAMMADI

Merge branch 'dry' into 'master'

Recreate the PAD protocols and add a global face and voice pad protocol

See merge request !3
parents ebf34931 d283649c
Pipeline #21316 passed with stages
in 8 minutes and 1 second
......@@ -76,9 +76,11 @@ def swan_file_metadata(path):
_, path = split(path)
# path: 4_00001_m_01_01_t_2.mp4
path, extension = splitext(path)
parts = path.split('_')
if len(parts) == 8:
parts = parts[1:]
# path: 4_00001_m_01_01_t_2
site, identity, gender, session, nrecording, device, modality = \
path.split('_')
site, identity, gender, session, nrecording, device, modality = parts
site = SITE_MAPPING[site]
client = Client(site, identity, gender)
device = DEVICE_MAPPING[device]
......@@ -110,7 +112,12 @@ class SwanVideoFile(VideoBioFile, SwanFile):
if extension is None:
video_path = self.make_path(directory or self.original_directory,
extension)
video = load(video_path)
for _ in range(100):
try:
video = load(video_path)
break
except RuntimeError:
pass
video = self.swap(video)
return frame_selector(video)
else:
......
from functools import partial
from bob.bio.video.annotator import FailSafeVideo
from bob.bio.video.annotator import Wrapper
from bob.bio.face.annotator.bobipfacedetect import BobIpFacedetect
from bob.bio.face.annotator.bobipflandmark import BobIpFlandmark
from bob.bio.face.annotator.bobipmtcnn import BobIpMTCNN
from bob.bio.face.annotator.bobipdlib import BobIpDlib
from bob.bio.face.annotator import min_face_size_validator
from bob.bio.base.annotator import FailSafe
from .query_bio import load_frames
required_keys = ['leye', 'reye']
flandmark_annotator = FailSafe(
[BobIpFacedetect(), BobIpFlandmark()],
required_keys,
)
def load_frames(biofile, directory, extension):
return [f for f in biofile.frames]
annotator = FailSafeVideo(
[BobIpMTCNN(), BobIpDlib(), flandmark_annotator],
required_keys,
annotator = Wrapper(
FailSafe([BobIpMTCNN(), BobIpDlib(), BobIpFacedetect(), BobIpFlandmark()],
['leye', 'reye'], only_required_keys=True),
normalize=True,
validator=partial(min_face_size_validator, min_face_size=(256, 256)),
max_age=5,
read_original_data=load_frames)
database.protocol = 'PA_F'
from collections import OrderedDict
from os.path import join, dirname, abspath, sep
from glob import glob
import random
import numpy as np
import pkg_resources
from bob.extension import rc
from bob.io.base import create_directories_safe
from .common import swan_bio_file_metadata
from .common import swan_file_metadata
def create_subparser(subparsers):
......@@ -23,61 +23,92 @@ for pa in ['PA.F.1', 'PA.F.5', 'PA.F.6', 'PA.V.4', 'PA.V.7']:
PAD_PROTOCOLS[pa]['attack'] = OrderedDict()
PAD_PROTOCOLS[pa]['real'] = OrderedDict()
PAD_PROTOCOLS['PA.F.1']['extension'] = '.mp4'
PAD_PROTOCOLS['PA.F.1']['attack']['train'] = ([1], .5, 'iPhone')
PAD_PROTOCOLS['PA.F.1']['attack']['dev'] = ([1], .2, 'iPhone')
PAD_PROTOCOLS['PA.F.1']['attack']['eval'] = ([1], .3, 'iPhone')
PAD_PROTOCOLS['PA.F.1']['attack']['eval'] = ([1], .4, 'iPhone')
PAD_PROTOCOLS['PA.F.1']['real']['train'] = ([2], .5, 'iPhone')
PAD_PROTOCOLS['PA.F.1']['real']['dev'] = ([2], .2, 'iPhone')
PAD_PROTOCOLS['PA.F.1']['real']['eval'] = ([2, 3, 4, 5, 6], .3, 'iPhone')
PAD_PROTOCOLS['PA.F.1']['real']['eval'] = ([2, 3, 4, 5, 6], .4, 'iPhone')
PAD_PROTOCOLS['PA.F.5']['extension'] = '.mp4'
PAD_PROTOCOLS['PA.F.5']['attack']['train'] = ([1], .5, 'iPhone')
PAD_PROTOCOLS['PA.F.5']['attack']['dev'] = ([1], .2, 'iPhone')
PAD_PROTOCOLS['PA.F.5']['attack']['eval'] = ([1], .3, 'iPhone')
PAD_PROTOCOLS['PA.F.5']['attack']['eval'] = ([1], .4, 'iPhone')
PAD_PROTOCOLS['PA.F.5']['real']['train'] = ([2], .5, 'iPhone')
PAD_PROTOCOLS['PA.F.5']['real']['dev'] = ([2], .2, 'iPhone')
PAD_PROTOCOLS['PA.F.5']['real']['eval'] = ([2, 3, 4, 5, 6], .3, 'iPhone')
PAD_PROTOCOLS['PA.F.5']['real']['eval'] = ([2, 3, 4, 5, 6], .4, 'iPhone')
PAD_PROTOCOLS['PA.F.6']['extension'] = '.mp4'
PAD_PROTOCOLS['PA.F.6']['attack']['train'] = ([1], .5, 'iPhone')
PAD_PROTOCOLS['PA.F.6']['attack']['dev'] = ([1], .2, 'iPhone')
PAD_PROTOCOLS['PA.F.6']['attack']['eval'] = ([1], .3, 'iPhone')
PAD_PROTOCOLS['PA.F.6']['attack']['eval'] = ([1], .4, 'iPhone')
PAD_PROTOCOLS['PA.F.6']['real']['train'] = ([2], .5, 'iPhone')
PAD_PROTOCOLS['PA.F.6']['real']['dev'] = ([2], .2, 'iPhone')
PAD_PROTOCOLS['PA.F.6']['real']['eval'] = ([2, 3, 4, 5, 6], .3, 'iPhone')
PAD_PROTOCOLS['PA.F.6']['real']['eval'] = ([2, 3, 4, 5, 6], .4, 'iPhone')
PAD_PROTOCOLS['PA.V.4']['extension'] = '.wav'
PAD_PROTOCOLS['PA.V.4']['attack']['train'] = ([1], .5, 'iPad')
PAD_PROTOCOLS['PA.V.4']['attack']['dev'] = ([1], .2, 'iPad')
PAD_PROTOCOLS['PA.V.4']['attack']['eval'] = ([1], .3, 'iPad')
PAD_PROTOCOLS['PA.V.4']['attack']['eval'] = ([1], .4, 'iPad')
PAD_PROTOCOLS['PA.V.4']['real']['train'] = ([2], .5, 'iPhone')
PAD_PROTOCOLS['PA.V.4']['real']['dev'] = ([2], .2, 'iPhone')
PAD_PROTOCOLS['PA.V.4']['real']['eval'] = ([2, 3, 4, 5, 6], .3, 'iPhone')
PAD_PROTOCOLS['PA.V.4']['real']['eval'] = ([2, 3, 4, 5, 6], .4, 'iPhone')
PAD_PROTOCOLS['PA.V.7']['extension'] = '.wav'
PAD_PROTOCOLS['PA.V.7']['attack']['train'] = ([1], .5, 'iPhone')
PAD_PROTOCOLS['PA.V.7']['attack']['dev'] = ([1], .2, 'iPhone')
PAD_PROTOCOLS['PA.V.7']['attack']['eval'] = ([1], .3, 'iPhone')
PAD_PROTOCOLS['PA.V.7']['attack']['eval'] = ([1], .4, 'iPhone')
PAD_PROTOCOLS['PA.V.7']['real']['train'] = ([2], .5, 'iPhone')
PAD_PROTOCOLS['PA.V.7']['real']['dev'] = ([2], .2, 'iPhone')
PAD_PROTOCOLS['PA.V.7']['real']['eval'] = ([2, 3, 4, 5, 6], .3, 'iPhone')
PAD_PROTOCOLS['PA.V.7']['real']['eval'] = ([2, 3, 4, 5, 6], .4, 'iPhone')
def _remove_root(file_list, root):
root = abspath(root) + sep
return [f.replace(root, '') for f in file_list]
def _filter_files(path):
# NTNU_00011: the person changes at session 5 and 6 and audio is mute
if 'NTNU' in path and '00011' in path:
return False
return True
return filter(_filter_files, (f.replace(root, '') for f in file_list))
def _add_clientid(file_list, attack_type):
if attack_type is None:
return ['{} {}'.format(
f, swan_bio_file_metadata(f)[0].id) for f in file_list]
f, swan_file_metadata(f)[0].id) for f in file_list]
else:
return ['{} {} {}'.format(
f, swan_bio_file_metadata(f)[0].id, attack_type)
f, swan_file_metadata(f)[0].id, attack_type)
for f in file_list]
def _create_aggregate_pad_protocol(protocol_name, protocols):
path_mask = 'lists/{p}/{g}/for_{r}.lst'
path_mask = pkg_resources.resource_filename(__name__, path_mask)
for g in ('train', 'dev', 'eval'):
for real in ('real', 'attack'):
file_list = []
for i, p in enumerate(protocols):
if i != 0 and real == 'real':
continue
file_list += open(
path_mask.format(p=p, g=g, r=real)).readlines()
if not file_list[-1].endswith('\n'):
file_list[-1] += '\n'
path = path_mask.format(p=protocol_name, g=g, r=real)
create_directories_safe(dirname(path))
with open(path, 'wt') as f:
f.writelines(file_list)
def _create(args):
root = args.directory
K = 10
random.seed(K)
np.random.seed(K)
# list all files
for k in range(K):
for pa_type in PAD_PROTOCOLS:
......@@ -85,16 +116,19 @@ def _create(args):
modality_name = 'Face' if modality == 'F' else 'Voice'
modality_number = '1' if modality == 'F' else '2'
protocol = '{}-{}'.format(pa_type, k)
extension = PAD_PROTOCOLS[pa_type]['extension']
for real in PAD_PROTOCOLS[pa_type]:
if real == 'extension':
continue
all_sessions, _, device = PAD_PROTOCOLS[pa_type][real]['eval']
real_files, rest_real_files = [], []
real_files, rest_real_files, attack_files = [], [], []
if real == 'attack':
attack_files = glob(
join(root, 'pa-database', modality_name, pa_type, '*'))
attack_files = _remove_root(sorted(attack_files), root)
random.shuffle(attack_files)
join(root, 'pa-database', modality_name, pa_type,
'*' + extension))
attack_files = sorted(_remove_root(attack_files, root))
np.random.shuffle(attack_files)
else:
attack_files = []
# IDIAP/session_01/iPad/00001/4_00001_m_01_01_t_1.mp4
for sess in all_sessions:
files = real_files if sess == 2 else rest_real_files
......@@ -103,10 +137,10 @@ def _create(args):
join(root, site, 'session_0{}'.format(sess),
device, '*',
'*_{}.mp4'.format(modality_number)))
real_files = _remove_root(sorted(real_files), root)
rest_real_files = _remove_root(
sorted(rest_real_files), root)
random.shuffle(real_files)
real_files = sorted(_remove_root(real_files, root))
rest_real_files = sorted(_remove_root(
rest_real_files, root))
np.random.shuffle(real_files)
file_lists = {'real': [real_files, rest_real_files],
'attack': attack_files}
index = 0
......@@ -114,14 +148,14 @@ def _create(args):
_, number, _ = PAD_PROTOCOLS[pa_type][real][grp]
if real == 'real':
if isinstance(number, float):
number = int(len(file_lists[real][0]) * number)
number = round(len(file_lists[real][0]) * number)
files = file_lists[real][0][index:index + number]
if grp == 'eval':
files += file_lists[real][1]
files = _add_clientid(files, None)
else:
if isinstance(number, float):
number = int(len(file_lists[real]) * number)
number = round(len(file_lists[real]) * number)
files = file_lists[real][index:index + number]
files = _add_clientid(files, pa_type)
path = 'lists/{p}/{g}/for_{r}.lst'.format(
......@@ -131,3 +165,7 @@ def _create(args):
with open(path, 'wt') as f:
f.write('\n'.join(sorted(files)))
index += number
_create_aggregate_pad_protocol(
'PA_F', ['PA.F.1-0', 'PA.F.5-0', 'PA.F.6-0'])
_create_aggregate_pad_protocol(
'PA_V', ['PA.V.4-0', 'PA.V.7-0'])
pa-database/Face/PA.F.1/1_00005_f_01_01_p_1.mp4 NTNU_00005 PA.F.1
pa-database/Face/PA.F.1/1_00011_m_01_01_p_1.mp4 NTNU_00011 PA.F.1
pa-database/Face/PA.F.1/1_00012_m_01_01_p_1.mp4 NTNU_00012 PA.F.1
pa-database/Face/PA.F.1/1_00022_f_01_01_p_1.mp4 NTNU_00022 PA.F.1
pa-database/Face/PA.F.1/1_00026_m_01_01_p_1.mp4 NTNU_00026 PA.F.1
pa-database/Face/PA.F.1/1_00030_m_01_01_p_1.mp4 NTNU_00030 PA.F.1
pa-database/Face/PA.F.1/1_00042_f_01_01_p_1.mp4 NTNU_00042 PA.F.1
pa-database/Face/PA.F.1/3_00007_m_01_01_p_1.mp4 MPH-FRA_00007 PA.F.1
pa-database/Face/PA.F.1/4_00002_f_01_01_p_1.mp4 IDIAP_00002 PA.F.1
pa-database/Face/PA.F.1/4_00005_m_01_01_p_1.mp4 IDIAP_00005 PA.F.1
pa-database/Face/PA.F.1/4_00012_m_01_01_p_1.mp4 IDIAP_00012 PA.F.1
pa-database/Face/PA.F.1/4_00016_m_01_01_p_1.mp4 IDIAP_00016 PA.F.1
pa-database/Face/PA.F.1/4_00018_f_01_01_p_1.mp4 IDIAP_00018 PA.F.1
pa-database/Face/PA.F.1/4_00026_m_01_01_p_1.mp4 IDIAP_00026 PA.F.1
pa-database/Face/PA.F.1/4_00034_m_01_01_p_1.mp4 IDIAP_00034 PA.F.1
pa-database/Face/PA.F.1/4_00041_m_01_01_p_1.mp4 IDIAP_00041 PA.F.1
pa-database/Face/PA.F.1/4_00051_f_01_01_p_1.mp4 IDIAP_00051 PA.F.1
pa-database/Face/PA.F.1/4_00055_m_01_01_p_1.mp4 IDIAP_00055 PA.F.1
pa-database/Face/PA.F.1/4_00058_f_01_01_p_1.mp4 IDIAP_00058 PA.F.1
pa-database/Face/PA.F.1/6_00001_m_01_01_p_1.mp4 MPH-IND_00001 PA.F.1
pa-database/Face/PA.F.1/6_00004_f_01_01_p_1.mp4 MPH-IND_00004 PA.F.1
pa-database/Face/PA.F.1/6_00011_m_01_01_p_1.mp4 MPH-IND_00011 PA.F.1
pa-database/Face/PA.F.1/6_00016_m_01_01_p_1.mp4 MPH-IND_00016 PA.F.1
pa-database/Face/PA.F.1/6_00037_f_01_01_p_1.mp4 MPH-IND_00037 PA.F.1
pa-database/Face/PA.F.1/6_00038_f_01_01_p_1.mp4 MPH-IND_00038 PA.F.1
pa-database/Face/PA.F.1/6_00039_f_01_01_p_1.mp4 MPH-IND_00039 PA.F.1
pa-database/Face/PA.F.1/6_00042_f_01_01_p_1.mp4 MPH-IND_00042 PA.F.1
pa-database/Face/PA.F.1/6_00043_m_01_01_p_1.mp4 MPH-IND_00043 PA.F.1
pa-database/Face/PA.F.1/6_00046_m_01_01_p_1.mp4 MPH-IND_00046 PA.F.1
pa-database/Face/PA.F.1/6_00047_m_01_01_p_1.mp4 MPH-IND_00047 PA.F.1
\ No newline at end of file
pa-database/Face/PA.F.1/1_1_00005_f_01_01_p_1.mp4 NTNU_00005 PA.F.1
pa-database/Face/PA.F.1/1_1_00006_m_01_01_p_1.mp4 NTNU_00006 PA.F.1
pa-database/Face/PA.F.1/1_1_00007_f_01_01_p_1.mp4 NTNU_00007 PA.F.1
pa-database/Face/PA.F.1/1_1_00008_m_01_01_p_1.mp4 NTNU_00008 PA.F.1
pa-database/Face/PA.F.1/1_1_00013_m_01_01_p_1.mp4 NTNU_00013 PA.F.1
pa-database/Face/PA.F.1/1_1_00019_m_01_01_p_1.mp4 NTNU_00019 PA.F.1
pa-database/Face/PA.F.1/1_1_00030_m_01_01_p_1.mp4 NTNU_00030 PA.F.1
pa-database/Face/PA.F.1/1_1_00036_f_01_01_p_1.mp4 NTNU_00036 PA.F.1
pa-database/Face/PA.F.1/1_1_00046_m_01_01_p_1.mp4 NTNU_00046 PA.F.1
pa-database/Face/PA.F.1/1_1_00051_m_01_01_p_1.mp4 NTNU_00051 PA.F.1
pa-database/Face/PA.F.1/1_3_00001_f_01_01_p_1.mp4 MPH-FRA_00001 PA.F.1
pa-database/Face/PA.F.1/1_4_00019_m_01_01_p_1.mp4 IDIAP_00019 PA.F.1
pa-database/Face/PA.F.1/1_4_00022_f_01_01_p_1.mp4 IDIAP_00022 PA.F.1
pa-database/Face/PA.F.1/1_4_00024_m_01_01_p_1.mp4 IDIAP_00024 PA.F.1
pa-database/Face/PA.F.1/1_4_00029_m_01_01_p_1.mp4 IDIAP_00029 PA.F.1
pa-database/Face/PA.F.1/1_4_00033_m_01_01_p_1.mp4 IDIAP_00033 PA.F.1
pa-database/Face/PA.F.1/1_4_00049_m_01_01_p_1.mp4 IDIAP_00049 PA.F.1
pa-database/Face/PA.F.1/1_4_00050_f_01_01_p_1.mp4 IDIAP_00050 PA.F.1
pa-database/Face/PA.F.1/1_4_00055_m_01_01_p_1.mp4 IDIAP_00055 PA.F.1
pa-database/Face/PA.F.1/1_4_00059_m_01_01_p_1.mp4 IDIAP_00059 PA.F.1
pa-database/Face/PA.F.1/1_4_00060_f_01_01_p_1.mp4 IDIAP_00060 PA.F.1
pa-database/Face/PA.F.1/1_6_00004_f_01_01_p_1.mp4 MPH-IND_00004 PA.F.1
pa-database/Face/PA.F.1/1_6_00005_m_01_01_p_1.mp4 MPH-IND_00005 PA.F.1
pa-database/Face/PA.F.1/1_6_00007_m_01_01_p_1.mp4 MPH-IND_00007 PA.F.1
pa-database/Face/PA.F.1/1_6_00030_m_01_01_p_1.mp4 MPH-IND_00030 PA.F.1
pa-database/Face/PA.F.1/1_6_00031_m_01_01_p_1.mp4 MPH-IND_00031 PA.F.1
pa-database/Face/PA.F.1/1_6_00032_f_01_01_p_1.mp4 MPH-IND_00032 PA.F.1
pa-database/Face/PA.F.1/1_6_00037_f_01_01_p_1.mp4 MPH-IND_00037 PA.F.1
pa-database/Face/PA.F.1/1_6_00050_f_01_01_p_1.mp4 MPH-IND_00050 PA.F.1
pa-database/Face/PA.F.1/1_6_00055_m_01_01_p_1.mp4 MPH-IND_00055 PA.F.1
\ No newline at end of file
IDIAP/session_02/iPhone/00003/4_00003_m_02_01_p_1.mp4 IDIAP_00003
IDIAP/session_02/iPhone/00010/4_00010_m_02_02_p_1.mp4 IDIAP_00010
IDIAP/session_02/iPhone/00011/4_00011_m_02_01_p_1.mp4 IDIAP_00011
IDIAP/session_02/iPhone/00014/4_00014_f_02_02_p_1.mp4 IDIAP_00014
IDIAP/session_02/iPhone/00015/4_00015_f_02_01_p_1.mp4 IDIAP_00015
IDIAP/session_02/iPhone/00026/4_00026_m_02_02_p_1.mp4 IDIAP_00026
IDIAP/session_02/iPhone/00035/4_00035_m_02_02_p_1.mp4 IDIAP_00035
IDIAP/session_02/iPhone/00038/4_00038_f_02_02_p_1.mp4 IDIAP_00038
IDIAP/session_02/iPhone/00039/4_00039_m_02_02_p_1.mp4 IDIAP_00039
IDIAP/session_02/iPhone/00041/4_00041_m_02_01_p_1.mp4 IDIAP_00041
IDIAP/session_02/iPhone/00043/4_00043_f_02_02_p_1.mp4 IDIAP_00043
IDIAP/session_02/iPhone/00049/4_00049_m_02_01_p_1.mp4 IDIAP_00049
IDIAP/session_02/iPhone/00002/4_00002_f_02_01_p_1.mp4 IDIAP_00002
IDIAP/session_02/iPhone/00003/4_00003_m_02_02_p_1.mp4 IDIAP_00003
IDIAP/session_02/iPhone/00006/4_00006_m_02_02_p_1.mp4 IDIAP_00006
IDIAP/session_02/iPhone/00012/4_00012_m_02_02_p_1.mp4 IDIAP_00012
IDIAP/session_02/iPhone/00013/4_00013_m_02_02_p_1.mp4 IDIAP_00013
IDIAP/session_02/iPhone/00014/4_00014_f_02_01_p_1.mp4 IDIAP_00014
IDIAP/session_02/iPhone/00016/4_00016_m_02_02_p_1.mp4 IDIAP_00016
IDIAP/session_02/iPhone/00018/4_00018_f_02_02_p_1.mp4 IDIAP_00018
IDIAP/session_02/iPhone/00021/4_00021_f_02_02_p_1.mp4 IDIAP_00021
IDIAP/session_02/iPhone/00022/4_00022_f_02_01_p_1.mp4 IDIAP_00022
IDIAP/session_02/iPhone/00025/4_00025_m_02_02_p_1.mp4 IDIAP_00025
IDIAP/session_02/iPhone/00032/4_00032_m_02_01_p_1.mp4 IDIAP_00032
IDIAP/session_02/iPhone/00033/4_00033_m_02_02_p_1.mp4 IDIAP_00033
IDIAP/session_02/iPhone/00034/4_00034_m_02_02_p_1.mp4 IDIAP_00034
IDIAP/session_02/iPhone/00036/4_00036_f_02_01_p_1.mp4 IDIAP_00036
IDIAP/session_02/iPhone/00036/4_00036_f_02_02_p_1.mp4 IDIAP_00036
IDIAP/session_02/iPhone/00050/4_00050_f_02_02_p_1.mp4 IDIAP_00050
IDIAP/session_02/iPhone/00051/4_00051_f_02_02_p_1.mp4 IDIAP_00051
IDIAP/session_02/iPhone/00052/4_00052_f_02_02_p_1.mp4 IDIAP_00052
IDIAP/session_02/iPhone/00055/4_00055_m_02_01_p_1.mp4 IDIAP_00055
IDIAP/session_02/iPhone/00058/4_00058_f_02_02_p_1.mp4 IDIAP_00058
MPH-FRA/session_02/iPhone/00001/3_00001_f_02_02_p_1.mp4 MPH-FRA_00001
MPH-FRA/session_02/iPhone/00002/3_00002_m_02_02_p_1.mp4 MPH-FRA_00002
MPH-FRA/session_02/iPhone/00005/3_00005_m_02_01_p_1.mp4 MPH-FRA_00005
MPH-IND/session_02/iPhone/00001/6_00001_m_02_02_p_1.mp4 MPH-IND_00001
MPH-IND/session_02/iPhone/00004/6_00004_f_02_01_p_1.mp4 MPH-IND_00004
MPH-IND/session_02/iPhone/00005/6_00005_m_02_02_p_1.mp4 MPH-IND_00005
MPH-IND/session_02/iPhone/00007/6_00007_m_02_01_p_1.mp4 MPH-IND_00007
MPH-IND/session_02/iPhone/00007/6_00007_m_02_02_p_1.mp4 MPH-IND_00007
MPH-IND/session_02/iPhone/00009/6_00009_f_02_02_p_1.mp4 MPH-IND_00009
MPH-IND/session_02/iPhone/00010/6_00010_m_02_02_p_1.mp4 MPH-IND_00010
IDIAP/session_02/iPhone/00059/4_00059_m_02_01_p_1.mp4 IDIAP_00059
MPH-FRA/session_02/iPhone/00006/3_00006_m_02_01_p_1.mp4 MPH-FRA_00006
MPH-IND/session_02/iPhone/00006/6_00006_f_02_01_p_1.mp4 MPH-IND_00006
MPH-IND/session_02/iPhone/00008/6_00008_m_02_01_p_1.mp4 MPH-IND_00008
MPH-IND/session_02/iPhone/00010/6_00010_m_02_01_p_1.mp4 MPH-IND_00010
MPH-IND/session_02/iPhone/00013/6_00013_m_02_02_p_1.mp4 MPH-IND_00013
MPH-IND/session_02/iPhone/00015/6_00015_f_02_01_p_1.mp4 MPH-IND_00015
MPH-IND/session_02/iPhone/00018/6_00018_f_02_01_p_1.mp4 MPH-IND_00018
MPH-IND/session_02/iPhone/00024/6_00024_m_02_01_p_1.mp4 MPH-IND_00024
MPH-IND/session_02/iPhone/00026/6_00026_m_02_01_p_1.mp4 MPH-IND_00026
MPH-IND/session_02/iPhone/00026/6_00026_m_02_02_p_1.mp4 MPH-IND_00026
MPH-IND/session_02/iPhone/00032/6_00032_f_02_02_p_1.mp4 MPH-IND_00032
MPH-IND/session_02/iPhone/00039/6_00039_f_02_01_p_1.mp4 MPH-IND_00039
MPH-IND/session_02/iPhone/00040/6_00040_m_02_01_p_1.mp4 MPH-IND_00040
MPH-IND/session_02/iPhone/00033/6_00033_f_02_01_p_1.mp4 MPH-IND_00033
MPH-IND/session_02/iPhone/00034/6_00034_f_02_01_p_1.mp4 MPH-IND_00034
MPH-IND/session_02/iPhone/00039/6_00039_f_02_02_p_1.mp4 MPH-IND_00039
MPH-IND/session_02/iPhone/00041/6_00041_m_02_02_p_1.mp4 MPH-IND_00041
MPH-IND/session_02/iPhone/00043/6_00043_m_02_01_p_1.mp4 MPH-IND_00043
MPH-IND/session_02/iPhone/00044/6_00044_m_02_02_p_1.mp4 MPH-IND_00044
MPH-IND/session_02/iPhone/00046/6_00046_m_02_02_p_1.mp4 MPH-IND_00046
MPH-IND/session_02/iPhone/00047/6_00047_m_02_02_p_1.mp4 MPH-IND_00047
MPH-IND/session_02/iPhone/00049/6_00049_m_02_01_p_1.mp4 MPH-IND_00049
MPH-IND/session_02/iPhone/00049/6_00049_m_02_02_p_1.mp4 MPH-IND_00049
MPH-IND/session_02/iPhone/00048/6_00048_m_02_02_p_1.mp4 MPH-IND_00048
MPH-IND/session_02/iPhone/00051/6_00051_m_02_01_p_1.mp4 MPH-IND_00051
MPH-IND/session_02/iPhone/00051/6_00051_m_02_02_p_1.mp4 MPH-IND_00051
NTNU/session_02/iPhone/00004/1_00004_m_02_01_p_1.mp4 NTNU_00004
NTNU/session_02/iPhone/00006/1_00006_m_02_01_p_1.mp4 NTNU_00006
NTNU/session_02/iPhone/00013/1_00013_f_02_02_p_1.mp4 NTNU_00013
MPH-IND/session_02/iPhone/00055/6_00055_m_02_01_p_1.mp4 MPH-IND_00055
NTNU/session_02/iPhone/00001/1_00001_m_02_01_p_1.mp4 NTNU_00001
NTNU/session_02/iPhone/00005/1_00005_f_02_02_p_1.mp4 NTNU_00005
NTNU/session_02/iPhone/00008/1_00008_m_02_02_p_1.mp4 NTNU_00008
NTNU/session_02/iPhone/00010/1_00010_m_02_02_p_1.mp4 NTNU_00010
NTNU/session_02/iPhone/00015/1_00015_m_02_02_p_1.mp4 NTNU_00015
NTNU/session_02/iPhone/00018/1_00018_f_02_02_p_1.mp4 NTNU_00018
NTNU/session_02/iPhone/00021/1_00021_m_02_01_p_1.mp4 NTNU_00021
NTNU/session_02/iPhone/00022/1_00022_f_02_02_p_1.mp4 NTNU_00022
NTNU/session_02/iPhone/00024/1_00024_m_02_01_p_1.mp4 NTNU_00024
NTNU/session_02/iPhone/00026/1_00026_m_02_02_p_1.mp4 NTNU_00026
NTNU/session_02/iPhone/00024/1_00024_m_02_02_p_1.mp4 NTNU_00024
NTNU/session_02/iPhone/00027/1_00027_m_02_01_p_1.mp4 NTNU_00027
NTNU/session_02/iPhone/00030/1_00030_m_02_02_p_1.mp4 NTNU_00030
NTNU/session_02/iPhone/00031/1_00031_m_02_02_p_1.mp4 NTNU_00031
NTNU/session_02/iPhone/00030/1_00030_m_02_01_p_1.mp4 NTNU_00030
NTNU/session_02/iPhone/00032/1_00032_m_02_01_p_1.mp4 NTNU_00032
NTNU/session_02/iPhone/00032/1_00032_m_02_02_p_1.mp4 NTNU_00032
NTNU/session_02/iPhone/00034/1_00034_m_02_01_p_1.mp4 NTNU_00034
NTNU/session_02/iPhone/00035/1_00035_m_02_02_p_1.mp4 NTNU_00035
NTNU/session_02/iPhone/00036/1_00036_m_02_01_p_1.mp4 NTNU_00036
NTNU/session_02/iPhone/00038/1_00038_f_02_01_p_1.mp4 NTNU_00038
NTNU/session_02/iPhone/00041/1_00041_m_02_01_p_1.mp4 NTNU_00041
NTNU/session_02/iPhone/00043/1_00043_f_02_02_p_1.mp4 NTNU_00043
NTNU/session_02/iPhone/00046/1_00046_m_02_01_p_1.mp4 NTNU_00046
NTNU/session_02/iPhone/00046/1_00046_m_02_02_p_1.mp4 NTNU_00046
NTNU/session_02/iPhone/00051/1_00051_m_02_01_p_1.mp4 NTNU_00051
NTNU/session_02/iPhone/00053/1_00053_m_02_01_p_1.mp4 NTNU_00053
NTNU/session_02/iPhone/00053/1_00053_m_02_02_p_1.mp4 NTNU_00053
NTNU/session_02/iPhone/00054/1_00054_m_02_02_p_1.mp4 NTNU_00054
\ No newline at end of file
NTNU/session_02/iPhone/00044/1_00044_m_02_01_p_1.mp4 NTNU_00044
NTNU/session_02/iPhone/00051/1_00051_m_02_02_p_1.mp4 NTNU_00051
NTNU/session_02/iPhone/00054/1_00054_m_02_01_p_1.mp4 NTNU_00054
\ No newline at end of file
pa-database/Face/PA.F.1/1_00001_m_01_01_p_1.mp4 NTNU_00001 PA.F.1
pa-database/Face/PA.F.1/1_00004_m_01_01_p_1.mp4 NTNU_00004 PA.F.1
pa-database/Face/PA.F.1/1_00006_m_01_01_p_1.mp4 NTNU_00006 PA.F.1
pa-database/Face/PA.F.1/1_00010_m_01_01_p_1.mp4 NTNU_00010 PA.F.1
pa-database/Face/PA.F.1/1_00013_m_01_01_p_1.mp4 NTNU_00013 PA.F.1
pa-database/Face/PA.F.1/1_00019_m_01_01_p_1.mp4 NTNU_00019 PA.F.1
pa-database/Face/PA.F.1/1_00021_m_01_01_p_1.mp4 NTNU_00021 PA.F.1
pa-database/Face/PA.F.1/1_00024_m_01_01_p_1.mp4 NTNU_00024 PA.F.1
pa-database/Face/PA.F.1/1_00032_m_01_01_p_1.mp4 NTNU_00032 PA.F.1
pa-database/Face/PA.F.1/1_00035_m_01_01_p_1.mp4 NTNU_00035 PA.F.1
pa-database/Face/PA.F.1/1_00037_f_01_01_p_1.mp4 NTNU_00037 PA.F.1
pa-database/Face/PA.F.1/1_00040_m_01_01_p_1.mp4 NTNU_00040 PA.F.1
pa-database/Face/PA.F.1/1_00043_f_01_01_p_1.mp4 NTNU_00043 PA.F.1
pa-database/Face/PA.F.1/1_00051_m_01_01_p_1.mp4 NTNU_00051 PA.F.1
pa-database/Face/PA.F.1/1_00053_m_01_01_p_1.mp4 NTNU_00053 PA.F.1
pa-database/Face/PA.F.1/3_00003_f_01_01_p_1.mp4 MPH-FRA_00003 PA.F.1
pa-database/Face/PA.F.1/4_00001_m_01_01_p_1.mp4 IDIAP_00001 PA.F.1
pa-database/Face/PA.F.1/4_00003_m_01_01_p_1.mp4 IDIAP_00003 PA.F.1
pa-database/Face/PA.F.1/4_00011_m_01_01_p_1.mp4 IDIAP_00011 PA.F.1
pa-database/Face/PA.F.1/4_00019_m_01_01_p_1.mp4 IDIAP_00019 PA.F.1
pa-database/Face/PA.F.1/4_00020_m_01_01_p_1.mp4 IDIAP_00020 PA.F.1
pa-database/Face/PA.F.1/4_00022_f_01_01_p_1.mp4 IDIAP_00022 PA.F.1
pa-database/Face/PA.F.1/4_00027_m_01_01_p_1.mp4 IDIAP_00027 PA.F.1
pa-database/Face/PA.F.1/4_00032_m_01_01_p_1.mp4 IDIAP_00032 PA.F.1
pa-database/Face/PA.F.1/4_00033_m_01_01_p_1.mp4 IDIAP_00033 PA.F.1
pa-database/Face/PA.F.1/4_00035_m_01_01_p_1.mp4 IDIAP_00035 PA.F.1
pa-database/Face/PA.F.1/4_00036_f_01_01_p_1.mp4 IDIAP_00036 PA.F.1
pa-database/Face/PA.F.1/4_00040_m_01_01_p_1.mp4 IDIAP_00040 PA.F.1
pa-database/Face/PA.F.1/4_00042_f_01_01_p_1.mp4 IDIAP_00042 PA.F.1
pa-database/Face/PA.F.1/4_00049_m_01_01_p_1.mp4 IDIAP_00049 PA.F.1
pa-database/Face/PA.F.1/4_00050_f_01_01_p_1.mp4 IDIAP_00050 PA.F.1
pa-database/Face/PA.F.1/4_00060_f_01_01_p_1.mp4 IDIAP_00060 PA.F.1
pa-database/Face/PA.F.1/6_00002_m_01_01_p_1.mp4 MPH-IND_00002 PA.F.1
pa-database/Face/PA.F.1/6_00005_m_01_01_p_1.mp4 MPH-IND_00005 PA.F.1
pa-database/Face/PA.F.1/6_00006_f_01_01_p_1.mp4 MPH-IND_00006 PA.F.1
pa-database/Face/PA.F.1/6_00009_f_01_01_p_1.mp4 MPH-IND_00009 PA.F.1
pa-database/Face/PA.F.1/6_00013_m_01_01_p_1.mp4 MPH-IND_00013 PA.F.1
pa-database/Face/PA.F.1/6_00014_m_01_01_p_1.mp4 MPH-IND_00014 PA.F.1
pa-database/Face/PA.F.1/6_00020_m_01_01_p_1.mp4 MPH-IND_00020 PA.F.1
pa-database/Face/PA.F.1/6_00024_m_01_01_p_1.mp4 MPH-IND_00024 PA.F.1
pa-database/Face/PA.F.1/6_00033_f_01_01_p_1.mp4 MPH-IND_00033 PA.F.1
pa-database/Face/PA.F.1/6_00034_f_01_01_p_1.mp4 MPH-IND_00034 PA.F.1
pa-database/Face/PA.F.1/6_00045_f_01_01_p_1.mp4 MPH-IND_00045 PA.F.1
pa-database/Face/PA.F.1/6_00049_m_01_01_p_1.mp4 MPH-IND_00049 PA.F.1
pa-database/Face/PA.F.1/6_00051_m_01_01_p_1.mp4 MPH-IND_00051 PA.F.1
\ No newline at end of file
pa-database/Face/PA.F.1/1_1_00001_m_01_01_p_1.mp4 NTNU_00001 PA.F.1
pa-database/Face/PA.F.1/1_1_00010_m_01_01_p_1.mp4 NTNU_00010 PA.F.1
pa-database/Face/PA.F.1/1_1_00011_m_01_01_p_1.mp4 NTNU_00011 PA.F.1
pa-database/Face/PA.F.1/1_1_00014_m_01_01_p_1.mp4 NTNU_00014 PA.F.1
pa-database/Face/PA.F.1/1_1_00015_m_01_01_p_1.mp4 NTNU_00015 PA.F.1
pa-database/Face/PA.F.1/1_1_00017_f_01_01_p_1.mp4 NTNU_00017 PA.F.1
pa-database/Face/PA.F.1/1_1_00018_f_01_01_p_1.mp4 NTNU_00018 PA.F.1
pa-database/Face/PA.F.1/1_1_00020_m_01_01_p_1.mp4 NTNU_00020 PA.F.1
pa-database/Face/PA.F.1/1_1_00024_m_01_01_p_1.mp4 NTNU_00024 PA.F.1
pa-database/Face/PA.F.1/1_1_00025_m_01_01_p_1.mp4 NTNU_00025 PA.F.1
pa-database/Face/PA.F.1/1_1_00027_m_01_01_p_1.mp4 NTNU_00027 PA.F.1
pa-database/Face/PA.F.1/1_1_00029_m_01_01_p_1.mp4 NTNU_00029 PA.F.1
pa-database/Face/PA.F.1/1_1_00032_m_01_01_p_1.mp4 NTNU_00032 PA.F.1
pa-database/Face/PA.F.1/1_1_00033_f_01_01_p_1.mp4 NTNU_00033 PA.F.1
pa-database/Face/PA.F.1/1_1_00035_m_01_01_p_1.mp4 NTNU_00035 PA.F.1
pa-database/Face/PA.F.1/1_1_00038_f_01_01_p_1.mp4 NTNU_00038 PA.F.1
pa-database/Face/PA.F.1/1_1_00042_f_01_01_p_1.mp4 NTNU_00042 PA.F.1
pa-database/Face/PA.F.1/1_3_00006_m_01_01_p_1.mp4 MPH-FRA_00006 PA.F.1
pa-database/Face/PA.F.1/1_4_00002_f_01_01_p_1.mp4 IDIAP_00002 PA.F.1
pa-database/Face/PA.F.1/1_4_00010_m_01_01_p_1.mp4 IDIAP_00010 PA.F.1
pa-database/Face/PA.F.1/1_4_00012_m_01_01_p_1.mp4 IDIAP_00012 PA.F.1
pa-database/Face/PA.F.1/1_4_00013_m_01_01_p_1.mp4 IDIAP_00013 PA.F.1
pa-database/Face/PA.F.1/1_4_00017_m_01_01_p_1.mp4 IDIAP_00017 PA.F.1
pa-database/Face/PA.F.1/1_4_00021_f_01_01_p_1.mp4 IDIAP_00021 PA.F.1
pa-database/Face/PA.F.1/1_4_00026_m_01_01_p_1.mp4 IDIAP_00026 PA.F.1
pa-database/Face/PA.F.1/1_4_00035_m_01_01_p_1.mp4 IDIAP_00035 PA.F.1
pa-database/Face/PA.F.1/1_4_00038_f_01_01_p_1.mp4 IDIAP_00038 PA.F.1
pa-database/Face/PA.F.1/1_4_00039_m_01_01_p_1.mp4 IDIAP_00039 PA.F.1
pa-database/Face/PA.F.1/1_4_00042_f_01_01_p_1.mp4 IDIAP_00042 PA.F.1
pa-database/Face/PA.F.1/1_4_00043_f_01_01_p_1.mp4 IDIAP_00043 PA.F.1
pa-database/Face/PA.F.1/1_4_00046_f_01_01_p_1.mp4 IDIAP_00046 PA.F.1
pa-database/Face/PA.F.1/1_4_00052_f_01_01_p_1.mp4 IDIAP_00052 PA.F.1
pa-database/Face/PA.F.1/1_6_00002_m_01_01_p_1.mp4 MPH-IND_00002 PA.F.1
pa-database/Face/PA.F.1/1_6_00009_f_01_01_p_1.mp4 MPH-IND_00009 PA.F.1
pa-database/Face/PA.F.1/1_6_00011_m_01_01_p_1.mp4 MPH-IND_00011 PA.F.1
pa-database/Face/PA.F.1/1_6_00016_m_01_01_p_1.mp4 MPH-IND_00016 PA.F.1
pa-database/Face/PA.F.1/1_6_00018_f_01_01_p_1.mp4 MPH-IND_00018 PA.F.1
pa-database/Face/PA.F.1/1_6_00020_m_01_01_p_1.mp4 MPH-IND_00020 PA.F.1
pa-database/Face/PA.F.1/1_6_00024_m_01_01_p_1.mp4 MPH-IND_00024 PA.F.1
pa-database/Face/PA.F.1/1_6_00025_f_01_01_p_1.mp4 MPH-IND_00025 PA.F.1
pa-database/Face/PA.F.1/1_6_00028_m_01_01_p_1.mp4 MPH-IND_00028 PA.F.1
pa-database/Face/PA.F.1/1_6_00038_f_01_01_p_1.mp4 MPH-IND_00038 PA.F.1
pa-database/Face/PA.F.1/1_6_00039_f_01_01_p_1.mp4 MPH-IND_00039 PA.F.1
pa-database/Face/PA.F.1/1_6_00041_m_01_01_p_1.mp4 MPH-IND_00041 PA.F.1
pa-database/Face/PA.F.1/1_6_00048_m_01_01_p_1.mp4 MPH-IND_00048 PA.F.1
\ No newline at end of file
pa-database/Face/PA.F.1/1_00005_f_01_01_p_1.mp4 NTNU_00005 PA.F.1
pa-database/Face/PA.F.1/1_00006_m_01_01_p_1.mp4 NTNU_00006 PA.F.1
pa-database/Face/PA.F.1/1_00013_m_01_01_p_1.mp4 NTNU_00013 PA.F.1
pa-database/Face/PA.F.1/1_00015_m_01_01_p_1.mp4 NTNU_00015 PA.F.1
pa-database/Face/PA.F.1/1_00017_f_01_01_p_1.mp4 NTNU_00017 PA.F.1
pa-database/Face/PA.F.1/1_00019_m_01_01_p_1.mp4 NTNU_00019 PA.F.1
pa-database/Face/PA.F.1/1_00023_m_01_01_p_1.mp4 NTNU_00023 PA.F.1
pa-database/Face/PA.F.1/1_00026_m_01_01_p_1.mp4 NTNU_00026 PA.F.1
pa-database/Face/PA.F.1/1_00033_f_01_01_p_1.mp4 NTNU_00033 PA.F.1
pa-database/Face/PA.F.1/1_00037_f_01_01_p_1.mp4 NTNU_00037 PA.F.1
pa-database/Face/PA.F.1/1_00044_m_01_01_p_1.mp4 NTNU_00044 PA.F.1
pa-database/Face/PA.F.1/1_00046_m_01_01_p_1.mp4 NTNU_00046 PA.F.1
pa-database/Face/PA.F.1/4_00012_m_01_01_p_1.mp4 IDIAP_00012 PA.F.1
pa-database/Face/PA.F.1/4_00013_m_01_01_p_1.mp4 IDIAP_00013 PA.F.1
pa-database/Face/PA.F.1/4_00016_m_01_01_p_1.mp4 IDIAP_00016 PA.F.1
pa-database/Face/PA.F.1/4_00020_m_01_01_p_1.mp4 IDIAP_00020 PA.F.1
pa-database/Face/PA.F.1/4_00024_m_01_01_p_1.mp4 IDIAP_00024 PA.F.1
pa-database/Face/PA.F.1/4_00038_f_01_01_p_1.mp4 IDIAP_00038 PA.F.1
pa-database/Face/PA.F.1/4_00039_m_01_01_p_1.mp4 IDIAP_00039 PA.F.1
pa-database/Face/PA.F.1/4_00041_m_01_01_p_1.mp4 IDIAP_00041 PA.F.1
pa-database/Face/PA.F.1/4_00043_f_01_01_p_1.mp4 IDIAP_00043 PA.F.1
pa-database/Face/PA.F.1/4_00047_m_01_01_p_1.mp4 IDIAP_00047 PA.F.1
pa-database/Face/PA.F.1/4_00048_m_01_01_p_1.mp4 IDIAP_00048 PA.F.1
pa-database/Face/PA.F.1/6_00001_m_01_01_p_1.mp4 MPH-IND_00001 PA.F.1
pa-database/Face/PA.F.1/6_00002_m_01_01_p_1.mp4 MPH-IND_00002 PA.F.1
pa-database/Face/PA.F.1/6_00005_m_01_01_p_1.mp4 MPH-IND_00005 PA.F.1
pa-database/Face/PA.F.1/6_00023_f_01_01_p_1.mp4 MPH-IND_00023 PA.F.1
pa-database/Face/PA.F.1/6_00024_m_01_01_p_1.mp4 MPH-IND_00024 PA.F.1
pa-database/Face/PA.F.1/6_00036_m_01_01_p_1.mp4 MPH-IND_00036 PA.F.1
pa-database/Face/PA.F.1/6_00038_f_01_01_p_1.mp4 MPH-IND_00038 PA.F.1
\ No newline at end of file
pa-database/Face/PA.F.1/1_1_00004_m_01_01_p_1.mp4 NTNU_00004 PA.F.1
pa-database/Face/PA.F.1/1_1_00005_f_01_01_p_1.mp4 NTNU_00005 PA.F.1