From d01587cd37cec3b76b198056eea97bbfb0cc45b7 Mon Sep 17 00:00:00 2001
From: Alain KOMATY <alain.komaty@idiap.ch>
Date: Wed, 20 Sep 2023 17:59:53 +0200
Subject: [PATCH] tested the whole pipeline using test_videos.txt

---
 database/create_database_dataframe.py | 237 +++++++++++++++----
 frames.csv                            | 319 --------------------------
 pipeline_vuln.py                      |  26 +--
 preprocessor/extract_frames.py        |   8 +-
 videos.txt => test_videos.txt         |   6 +-
 utils/_utils.py                       |   3 +-
 utils/load_annotations.py             |  16 +-
 7 files changed, 226 insertions(+), 389 deletions(-)
 delete mode 100644 frames.csv
 rename videos.txt => test_videos.txt (77%)

diff --git a/database/create_database_dataframe.py b/database/create_database_dataframe.py
index 05bfedb..91304f5 100644
--- a/database/create_database_dataframe.py
+++ b/database/create_database_dataframe.py
@@ -22,6 +22,7 @@ import argparse
 import pandas as pd
 from bob.bio.face.annotator import MTCNN
 from bob.io.base import load
+import csv
 
 def detect_faces(frame, min_face_size):
     """_summary_
@@ -35,59 +36,197 @@ def detect_faces(frame, min_face_size):
     landmarks = landmarks.numpy()
     return nb_detected_faces, probs, boxes, landmarks
 
-def create_metadata_file(frames_list, output_path, metadata_filename, save_mode, min_face_size):
+def create_metadata_file(frames_list, output_path, metadata_filename, min_face_size):
     # Check if output path exists
     if not os.path.exists(output_path):
         os.makedirs(output_path)
     
+    metadata_bonafide = []
+    metadata_print = []
+    metadata_replay = []
+    metadata_hygmask = []
+
     # Open the file containing the list of frames
-    my_file = open(frames_list, "r")
-    metadata = []
-
-    for line in my_file.readlines():
-        path = os.path.split(line)[0]
-        filename = os.path.split(line)[-1].strip()
-        filename_split = filename.split("_")
-        subject_id = filename_split[0]
-        recording_device = filename_split[1]
-        camera = filename_split[2]
-        attack_type = filename_split[3]
-        scenario = filename_split[4]
-        replay_device = filename_split[5]
-        source_video = filename_split[6]
-        session = filename_split[7]
-        frame_nb = filename_split[-1].split(".")[0].split("-")[-1]
-        reference_id = '_'.join((filename_split[0])) # Should be replaced by template_id
-        frame = load(line)
-        nb_detected_faces, probs, boxes, landmarks = detect_faces(frame, min_face_size)
-        
-        metadata.append(
-                {
-                    'path': os.path.join(path, filename),
-                    'key': os.path.join(subject_id, filename), # the key is used to save files when checkpointing is set to True
-                    'filename':  filename,
-                    'subject_id': int(subject_id),
-                    'reference_id': reference_id, # Should be replaced by template_id
-                    'camera': camera,
-                    'recording_device': recording_device,
-                    'replay_device': replay_device,
-                    'source_video': source_video,
-                    'scenario': scenario,
-                    'session': session,
-                    'attack_type': attack_type,
-                    'frame_nb': frame_nb,
-                    'no_faces': nb_detected_faces,
-                    'probs_faces': probs,
-                    'boxes': boxes,
-                    'landmarks': landmarks,
-                }
-        )
-
-    my_file.close()
-    # Put your list in a dataframe
-    df = pd.DataFrame(metadata)
-    # Save the dataframe into pickle
-    df.to_pickle(os.path.join(output_path, '.'.join((metadata_filename, 'pkl'))))
+    with open(frames_list, 'r') as my_file:
+        csvreader = csv.reader(my_file)
+        for row in csvreader:
+            row = row[0]
+            # import ipdb; ipdb.set_trace()
+            # Check if the string contains the word bonafide (case insensitive)
+            if "bonafide" in row.lower():
+                metadata_bonafide.append(create_dataframe_bonafide(row, min_face_size))
+            # Check if the string contains the word print (case insensitive)
+            elif "print" in row.lower():
+                metadata_print.append(create_dataframe_print(row, min_face_size))
+            # Check if the string contains the word replay (case insensitive)
+            elif "replay" in row.lower():
+                metadata_replay.append(create_dataframe_replay(row, min_face_size))
+            # Check if the string contains the word hygmask (case insensitive)
+            elif "hyg-mask" in row.lower():
+                metadata_hygmask.append(create_dataframe_hygmask(row, min_face_size))
+            else:
+                raise ValueError("The path does not contain any information about the type of the data: {bonafide, print, replay, hygmask}")
+
+    # Put your bonafide list in a dataframe
+    df = pd.DataFrame(metadata_bonafide)
+    # Save the bonafide dataframe into pickle
+    df.to_pickle(os.path.join(output_path, '.'.join((metadata_filename + "_bonafide", 'pkl'))))
+
+    # Put your print list in a dataframe
+    df = pd.DataFrame(metadata_print)
+    # Save the print dataframe into pickle
+    df.to_pickle(os.path.join(output_path, '.'.join((metadata_filename + "_print", 'pkl'))))
+
+    # Put your replay list in a dataframe
+    df = pd.DataFrame(metadata_replay)
+    # Save the replay dataframe into pickle
+    df.to_pickle(os.path.join(output_path, '.'.join((metadata_filename + "_replay", 'pkl'))))
+
+    # Put your hygmask list in a dataframe
+    df = pd.DataFrame(metadata_hygmask)
+    # Save the hygmask dataframe into pickle
+    df.to_pickle(os.path.join(output_path, '.'.join((metadata_filename + "_hygmask", 'pkl'))))
+
+
+def create_dataframe_bonafide(full_path, min_face_size):
+    path = os.path.split(full_path)[0]
+    filename = os.path.split(full_path)[-1].strip()
+    filename_split = filename.split("_")
+    subject_id = filename_split[0]
+    recording_device = filename_split[1]
+    camera = filename_split[2]
+    attack_type = ""
+    scenario = filename_split[4]
+    session = filename_split[5]
+    frame_nb = filename_split[-1].split(".")[0].split("-")[-1]
+    reference_id = '_'.join((filename_split[0])) # Should be replaced by template_id
+    frame = load(full_path)
+    nb_detected_faces, probs, boxes, landmarks = detect_faces(frame, min_face_size)
+
+    return {
+            'path': os.path.join(path, filename),
+            'key': os.path.join(subject_id, filename), # the key is used to save files when checkpointing is set to True
+            'filename':  filename,
+            'subject_id': int(subject_id),
+            'reference_id': reference_id, # Should be replaced by template_id
+            'camera': camera,
+            'recording_device': recording_device,
+            'replay_device': "",
+            'source_video': "",
+            'scenario': scenario,
+            'session': session,
+            'attack_type': attack_type,
+            'frame_nb': frame_nb,
+            'no_faces': nb_detected_faces,
+            'probs_faces': probs,
+            'boxes': boxes,
+            'landmarks': landmarks,
+            }
+
+def create_dataframe_print(full_path, min_face_size):
+    path = os.path.split(full_path)[0]
+    filename = os.path.split(full_path)[-1].strip()
+    filename_split = filename.split("_")
+    subject_id = filename_split[0]
+    recording_device = filename_split[1]
+    camera = filename_split[2]
+    attack_type = filename_split[4]
+    frame_nb = filename_split[-1].split(".")[0].split("-")[-1]
+    reference_id = '_'.join((filename_split[0])) # Should be replaced by template_id
+    frame = load(full_path)
+    nb_detected_faces, probs, boxes, landmarks = detect_faces(frame, min_face_size)
+
+    return {
+            'path': os.path.join(path, filename),
+            'key': os.path.join(subject_id, filename), # the key is used to save files when checkpointing is set to True
+            'filename':  filename,
+            'subject_id': int(subject_id),
+            'reference_id': reference_id, # Should be replaced by template_id
+            'camera': camera,
+            'recording_device': recording_device,
+            'replay_device': "",
+            'source_video': "",
+            'scenario': "",
+            'session': "",
+            'attack_type': attack_type,
+            'frame_nb': frame_nb,
+            'no_faces': nb_detected_faces,
+            'probs_faces': probs,
+            'boxes': boxes,
+            'landmarks': landmarks,
+            }
+
+def create_dataframe_replay(full_path, min_face_size):
+    path = os.path.split(full_path)[0]
+    filename = os.path.split(full_path)[-1].strip()
+    filename_split = filename.split("_")
+    subject_id = filename_split[0]
+    recording_device = filename_split[1]
+    camera = filename_split[2]
+    attack_type = filename_split[4]
+    scenario = filename_split[5]
+    replay_device = filename_split[6]
+    source_video = filename_split[7]
+    session = filename_split[8]
+    frame_nb = filename_split[-1].split(".")[0].split("-")[-1]
+    reference_id = '_'.join((filename_split[0])) # Should be replaced by template_id
+    frame = load(full_path)
+    nb_detected_faces, probs, boxes, landmarks = detect_faces(frame, min_face_size)
+
+    return {
+            'path': os.path.join(path, filename),
+            'key': os.path.join(subject_id, filename), # the key is used to save files when checkpointing is set to True
+            'filename':  filename,
+            'subject_id': int(subject_id),
+            'reference_id': reference_id, # Should be replaced by template_id
+            'camera': camera,
+            'recording_device': recording_device,
+            'replay_device': replay_device,
+            'source_video': source_video,
+            'scenario': scenario,
+            'session': session,
+            'attack_type': attack_type,
+            'frame_nb': frame_nb,
+            'no_faces': nb_detected_faces,
+            'probs_faces': probs,
+            'boxes': boxes,
+            'landmarks': landmarks,
+            }
+
+def create_dataframe_hygmask(full_path, min_face_size):
+    path = os.path.split(full_path)[0]
+    filename = os.path.split(full_path)[-1].strip()
+    filename_split = filename.split("_")
+    subject_id = filename_split[0]
+    recording_device = filename_split[1]
+    camera = filename_split[2]
+    attack_type = filename_split[4]
+    scenario = filename_split[5]
+    frame_nb = filename_split[-1].split(".")[0].split("-")[-1]
+    reference_id = subject_id # Should be replaced by template_id
+    frame = load(full_path)
+    nb_detected_faces, probs, boxes, landmarks = detect_faces(frame, min_face_size)
+
+    return {
+            'path': os.path.join(path, filename),
+            'key': os.path.join(subject_id, filename), # the key is used to save files when checkpointing is set to True
+            'filename':  filename,
+            'subject_id': int(subject_id),
+            'reference_id': reference_id, # Should be replaced by template_id
+            'camera': camera,
+            'recording_device': recording_device,
+            'replay_device': "",
+            'source_video': "",
+            'scenario': scenario,
+            'session': "",
+            'attack_type': attack_type,
+            'frame_nb': frame_nb,
+            'no_faces': nb_detected_faces,
+            'probs_faces': probs,
+            'boxes': boxes,
+            'landmarks': landmarks,
+            }
+
 
 
 if __name__ == '__main__':
@@ -102,4 +241,4 @@ if __name__ == '__main__':
 
     # Parse the arguments
     args = parser.parse_args()
-    create_metadata_file(args.frames_list, args.output_path, args.metadata_filename, args.save_mode, args.min_face_size)
+    create_metadata_file(args.frames_list, args.output_path, args.metadata_filename, args.min_face_size)
diff --git a/frames.csv b/frames.csv
deleted file mode 100644
index 047f6ac..0000000
--- a/frames.csv
+++ /dev/null
@@ -1,319 +0,0 @@
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/1/1_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-19-15_frame-0.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/1/1_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-19-15_frame-1.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/1/1_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-19-15_frame-2.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/1/1_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-19-15_frame-3.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/1/1_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-19-15_frame-4.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/1/1_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-19-15_frame-5.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/1/1_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-19-15_frame-6.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/1/1_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-19-15_frame-7.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/1/1_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-19-15_frame-8.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/1/1_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-19-15_frame-9.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/1/1_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-19-15_frame-10.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/1/1_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-19-15_frame-11.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/1/1_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-19-15_frame-12.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/1/1_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-19-15_frame-13.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/1/1_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-19-15_frame-14.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/1/1_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-19-15_frame-15.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/1/1_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-19-15_frame-16.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/1/1_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-19-15_frame-17.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/1/1_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-19-15_frame-18.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/1/1_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-19-15_frame-19.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/2/2_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-21-40_frame-0.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/2/2_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-21-40_frame-1.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/2/2_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-21-40_frame-2.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/2/2_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-21-40_frame-3.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/2/2_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-21-40_frame-4.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/2/2_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-21-40_frame-5.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/2/2_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-21-40_frame-6.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/2/2_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-21-40_frame-7.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/2/2_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-21-40_frame-8.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/2/2_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-21-40_frame-9.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/2/2_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-21-40_frame-10.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/2/2_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-21-40_frame-11.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/2/2_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-21-40_frame-12.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/2/2_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-21-40_frame-13.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/2/2_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-21-40_frame-14.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/2/2_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-21-40_frame-15.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/2/2_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-21-40_frame-16.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/2/2_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-21-40_frame-17.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/2/2_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-21-40_frame-18.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/3/3_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-23-35_frame-0.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/3/3_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-23-35_frame-1.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/3/3_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-23-35_frame-2.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/3/3_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-23-35_frame-3.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/3/3_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-23-35_frame-4.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/3/3_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-23-35_frame-5.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/3/3_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-23-35_frame-6.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/3/3_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-23-35_frame-7.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/3/3_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-23-35_frame-8.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/3/3_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-23-35_frame-9.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/3/3_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-23-35_frame-10.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/3/3_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-23-35_frame-11.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/3/3_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-23-35_frame-12.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/3/3_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-23-35_frame-13.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/3/3_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-23-35_frame-14.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/3/3_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-23-35_frame-15.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/3/3_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-23-35_frame-16.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/3/3_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-23-35_frame-17.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/3/3_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-23-35_frame-18.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/3/3_Redmi6pro_Front_ATTACK_hyg-mask_set-4_2023-02-41T15-23-35_frame-19.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/4/4_iPhone12_Front_ATTACK_hyg-mask_set-4_2023-02-10T14-25-54_frame-0.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/4/4_iPhone12_Front_ATTACK_hyg-mask_set-4_2023-02-10T14-25-54_frame-1.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/4/4_iPhone12_Front_ATTACK_hyg-mask_set-4_2023-02-10T14-25-54_frame-2.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/4/4_iPhone12_Front_ATTACK_hyg-mask_set-4_2023-02-10T14-25-54_frame-3.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/4/4_iPhone12_Front_ATTACK_hyg-mask_set-4_2023-02-10T14-25-54_frame-4.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/4/4_iPhone12_Front_ATTACK_hyg-mask_set-4_2023-02-10T14-25-54_frame-5.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/4/4_iPhone12_Front_ATTACK_hyg-mask_set-4_2023-02-10T14-25-54_frame-6.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/4/4_iPhone12_Front_ATTACK_hyg-mask_set-4_2023-02-10T14-25-54_frame-7.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/4/4_iPhone12_Front_ATTACK_hyg-mask_set-4_2023-02-10T14-25-54_frame-8.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/4/4_iPhone12_Front_ATTACK_hyg-mask_set-4_2023-02-10T14-25-54_frame-9.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/4/4_iPhone12_Front_ATTACK_hyg-mask_set-4_2023-02-10T14-25-54_frame-10.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/4/4_iPhone12_Front_ATTACK_hyg-mask_set-4_2023-02-10T14-25-54_frame-11.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/4/4_iPhone12_Front_ATTACK_hyg-mask_set-4_2023-02-10T14-25-54_frame-12.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/4/4_iPhone12_Front_ATTACK_hyg-mask_set-4_2023-02-10T14-25-54_frame-13.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/4/4_iPhone12_Front_ATTACK_hyg-mask_set-4_2023-02-10T14-25-54_frame-14.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/4/4_iPhone12_Front_ATTACK_hyg-mask_set-4_2023-02-10T14-25-54_frame-15.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/4/4_iPhone12_Front_ATTACK_hyg-mask_set-4_2023-02-10T14-25-54_frame-16.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/4/4_iPhone12_Front_ATTACK_hyg-mask_set-4_2023-02-10T14-25-54_frame-17.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/4/4_iPhone12_Front_ATTACK_hyg-mask_set-4_2023-02-10T14-25-54_frame-18.jpg
-/idiap/temp/akomaty/trash/data/hyg_mask_attack/4/4_iPhone12_Front_ATTACK_hyg-mask_set-4_2023-02-10T14-25-54_frame-19.jpg
-/idiap/temp/akomaty/trash/data/print_attack/1/1_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-05_frame-0.jpg
-/idiap/temp/akomaty/trash/data/print_attack/1/1_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-05_frame-1.jpg
-/idiap/temp/akomaty/trash/data/print_attack/1/1_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-05_frame-2.jpg
-/idiap/temp/akomaty/trash/data/print_attack/1/1_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-05_frame-3.jpg
-/idiap/temp/akomaty/trash/data/print_attack/1/1_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-05_frame-4.jpg
-/idiap/temp/akomaty/trash/data/print_attack/1/1_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-05_frame-5.jpg
-/idiap/temp/akomaty/trash/data/print_attack/1/1_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-05_frame-6.jpg
-/idiap/temp/akomaty/trash/data/print_attack/1/1_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-05_frame-7.jpg
-/idiap/temp/akomaty/trash/data/print_attack/1/1_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-05_frame-8.jpg
-/idiap/temp/akomaty/trash/data/print_attack/1/1_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-05_frame-9.jpg
-/idiap/temp/akomaty/trash/data/print_attack/1/1_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-05_frame-10.jpg
-/idiap/temp/akomaty/trash/data/print_attack/1/1_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-05_frame-11.jpg
-/idiap/temp/akomaty/trash/data/print_attack/1/1_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-05_frame-12.jpg
-/idiap/temp/akomaty/trash/data/print_attack/1/1_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-05_frame-13.jpg
-/idiap/temp/akomaty/trash/data/print_attack/1/1_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-05_frame-14.jpg
-/idiap/temp/akomaty/trash/data/print_attack/1/1_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-05_frame-15.jpg
-/idiap/temp/akomaty/trash/data/print_attack/1/1_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-05_frame-16.jpg
-/idiap/temp/akomaty/trash/data/print_attack/1/1_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-05_frame-17.jpg
-/idiap/temp/akomaty/trash/data/print_attack/1/1_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-05_frame-18.jpg
-/idiap/temp/akomaty/trash/data/print_attack/1/1_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-05_frame-19.jpg
-/idiap/temp/akomaty/trash/data/print_attack/2/2_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-21_frame-0.jpg
-/idiap/temp/akomaty/trash/data/print_attack/2/2_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-21_frame-1.jpg
-/idiap/temp/akomaty/trash/data/print_attack/2/2_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-21_frame-2.jpg
-/idiap/temp/akomaty/trash/data/print_attack/2/2_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-21_frame-3.jpg
-/idiap/temp/akomaty/trash/data/print_attack/2/2_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-21_frame-4.jpg
-/idiap/temp/akomaty/trash/data/print_attack/2/2_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-21_frame-5.jpg
-/idiap/temp/akomaty/trash/data/print_attack/2/2_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-21_frame-6.jpg
-/idiap/temp/akomaty/trash/data/print_attack/2/2_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-21_frame-7.jpg
-/idiap/temp/akomaty/trash/data/print_attack/2/2_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-21_frame-8.jpg
-/idiap/temp/akomaty/trash/data/print_attack/2/2_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-21_frame-9.jpg
-/idiap/temp/akomaty/trash/data/print_attack/2/2_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-21_frame-10.jpg
-/idiap/temp/akomaty/trash/data/print_attack/2/2_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-21_frame-11.jpg
-/idiap/temp/akomaty/trash/data/print_attack/2/2_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-21_frame-12.jpg
-/idiap/temp/akomaty/trash/data/print_attack/2/2_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-21_frame-13.jpg
-/idiap/temp/akomaty/trash/data/print_attack/2/2_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-21_frame-14.jpg
-/idiap/temp/akomaty/trash/data/print_attack/2/2_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-21_frame-15.jpg
-/idiap/temp/akomaty/trash/data/print_attack/2/2_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-21_frame-16.jpg
-/idiap/temp/akomaty/trash/data/print_attack/2/2_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-21_frame-17.jpg
-/idiap/temp/akomaty/trash/data/print_attack/2/2_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-21_frame-18.jpg
-/idiap/temp/akomaty/trash/data/print_attack/2/2_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-21_frame-19.jpg
-/idiap/temp/akomaty/trash/data/print_attack/3/3_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-36_frame-0.jpg
-/idiap/temp/akomaty/trash/data/print_attack/3/3_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-36_frame-1.jpg
-/idiap/temp/akomaty/trash/data/print_attack/3/3_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-36_frame-2.jpg
-/idiap/temp/akomaty/trash/data/print_attack/3/3_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-36_frame-3.jpg
-/idiap/temp/akomaty/trash/data/print_attack/3/3_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-36_frame-4.jpg
-/idiap/temp/akomaty/trash/data/print_attack/3/3_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-36_frame-5.jpg
-/idiap/temp/akomaty/trash/data/print_attack/3/3_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-36_frame-6.jpg
-/idiap/temp/akomaty/trash/data/print_attack/3/3_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-36_frame-7.jpg
-/idiap/temp/akomaty/trash/data/print_attack/3/3_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-36_frame-8.jpg
-/idiap/temp/akomaty/trash/data/print_attack/3/3_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-36_frame-9.jpg
-/idiap/temp/akomaty/trash/data/print_attack/3/3_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-36_frame-10.jpg
-/idiap/temp/akomaty/trash/data/print_attack/3/3_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-36_frame-11.jpg
-/idiap/temp/akomaty/trash/data/print_attack/3/3_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-36_frame-12.jpg
-/idiap/temp/akomaty/trash/data/print_attack/3/3_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-36_frame-13.jpg
-/idiap/temp/akomaty/trash/data/print_attack/3/3_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-36_frame-14.jpg
-/idiap/temp/akomaty/trash/data/print_attack/3/3_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-36_frame-15.jpg
-/idiap/temp/akomaty/trash/data/print_attack/3/3_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-36_frame-16.jpg
-/idiap/temp/akomaty/trash/data/print_attack/3/3_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-36_frame-17.jpg
-/idiap/temp/akomaty/trash/data/print_attack/3/3_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-36_frame-18.jpg
-/idiap/temp/akomaty/trash/data/print_attack/3/3_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-36_frame-19.jpg
-/idiap/temp/akomaty/trash/data/print_attack/4/4_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-51_frame-0.jpg
-/idiap/temp/akomaty/trash/data/print_attack/4/4_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-51_frame-1.jpg
-/idiap/temp/akomaty/trash/data/print_attack/4/4_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-51_frame-2.jpg
-/idiap/temp/akomaty/trash/data/print_attack/4/4_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-51_frame-3.jpg
-/idiap/temp/akomaty/trash/data/print_attack/4/4_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-51_frame-4.jpg
-/idiap/temp/akomaty/trash/data/print_attack/4/4_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-51_frame-5.jpg
-/idiap/temp/akomaty/trash/data/print_attack/4/4_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-51_frame-6.jpg
-/idiap/temp/akomaty/trash/data/print_attack/4/4_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-51_frame-7.jpg
-/idiap/temp/akomaty/trash/data/print_attack/4/4_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-51_frame-8.jpg
-/idiap/temp/akomaty/trash/data/print_attack/4/4_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-51_frame-9.jpg
-/idiap/temp/akomaty/trash/data/print_attack/4/4_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-51_frame-10.jpg
-/idiap/temp/akomaty/trash/data/print_attack/4/4_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-51_frame-11.jpg
-/idiap/temp/akomaty/trash/data/print_attack/4/4_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-51_frame-12.jpg
-/idiap/temp/akomaty/trash/data/print_attack/4/4_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-51_frame-13.jpg
-/idiap/temp/akomaty/trash/data/print_attack/4/4_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-51_frame-14.jpg
-/idiap/temp/akomaty/trash/data/print_attack/4/4_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-51_frame-15.jpg
-/idiap/temp/akomaty/trash/data/print_attack/4/4_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-51_frame-16.jpg
-/idiap/temp/akomaty/trash/data/print_attack/4/4_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-51_frame-17.jpg
-/idiap/temp/akomaty/trash/data/print_attack/4/4_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-51_frame-18.jpg
-/idiap/temp/akomaty/trash/data/print_attack/4/4_iPhone12_Front_ATTACK_a1-print_2022-12-14T14-13-51_frame-19.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/1/1_iPhone6s_front_ATTACK_replay-attack_1_Redmi6pro_iPhone12_s1_frame-0.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/1/1_iPhone6s_front_ATTACK_replay-attack_1_Redmi6pro_iPhone12_s1_frame-1.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/1/1_iPhone6s_front_ATTACK_replay-attack_1_Redmi6pro_iPhone12_s1_frame-2.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/1/1_iPhone6s_front_ATTACK_replay-attack_1_Redmi6pro_iPhone12_s1_frame-3.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/1/1_iPhone6s_front_ATTACK_replay-attack_1_Redmi6pro_iPhone12_s1_frame-4.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/1/1_iPhone6s_front_ATTACK_replay-attack_1_Redmi6pro_iPhone12_s1_frame-5.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/1/1_iPhone6s_front_ATTACK_replay-attack_1_Redmi6pro_iPhone12_s1_frame-6.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/1/1_iPhone6s_front_ATTACK_replay-attack_1_Redmi6pro_iPhone12_s1_frame-7.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/1/1_iPhone6s_front_ATTACK_replay-attack_1_Redmi6pro_iPhone12_s1_frame-8.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/1/1_iPhone6s_front_ATTACK_replay-attack_1_Redmi6pro_iPhone12_s1_frame-9.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/1/1_iPhone6s_front_ATTACK_replay-attack_1_Redmi6pro_iPhone12_s1_frame-10.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/1/1_iPhone6s_front_ATTACK_replay-attack_1_Redmi6pro_iPhone12_s1_frame-11.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/1/1_iPhone6s_front_ATTACK_replay-attack_1_Redmi6pro_iPhone12_s1_frame-12.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/1/1_iPhone6s_front_ATTACK_replay-attack_1_Redmi6pro_iPhone12_s1_frame-13.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/1/1_iPhone6s_front_ATTACK_replay-attack_1_Redmi6pro_iPhone12_s1_frame-14.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/1/1_iPhone6s_front_ATTACK_replay-attack_1_Redmi6pro_iPhone12_s1_frame-15.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/1/1_iPhone6s_front_ATTACK_replay-attack_1_Redmi6pro_iPhone12_s1_frame-16.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/1/1_iPhone6s_front_ATTACK_replay-attack_1_Redmi6pro_iPhone12_s1_frame-17.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/1/1_iPhone6s_front_ATTACK_replay-attack_1_Redmi6pro_iPhone12_s1_frame-18.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/1/1_iPhone6s_front_ATTACK_replay-attack_1_Redmi6pro_iPhone12_s1_frame-19.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/2/2_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-0.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/2/2_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-1.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/2/2_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-2.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/2/2_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-3.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/2/2_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-4.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/2/2_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-5.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/2/2_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-6.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/2/2_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-7.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/2/2_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-8.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/2/2_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-9.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/2/2_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-10.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/2/2_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-11.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/2/2_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-12.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/2/2_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-13.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/2/2_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-14.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/2/2_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-15.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/2/2_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-16.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/2/2_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-17.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/2/2_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-18.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/2/2_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-19.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/3/3_iPhone6s_front_ATTACK_replay-attack_1_iPhone12_Redmi9A_s1_frame-0.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/3/3_iPhone6s_front_ATTACK_replay-attack_1_iPhone12_Redmi9A_s1_frame-1.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/3/3_iPhone6s_front_ATTACK_replay-attack_1_iPhone12_Redmi9A_s1_frame-2.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/3/3_iPhone6s_front_ATTACK_replay-attack_1_iPhone12_Redmi9A_s1_frame-3.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/3/3_iPhone6s_front_ATTACK_replay-attack_1_iPhone12_Redmi9A_s1_frame-4.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/3/3_iPhone6s_front_ATTACK_replay-attack_1_iPhone12_Redmi9A_s1_frame-5.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/3/3_iPhone6s_front_ATTACK_replay-attack_1_iPhone12_Redmi9A_s1_frame-6.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/3/3_iPhone6s_front_ATTACK_replay-attack_1_iPhone12_Redmi9A_s1_frame-7.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/3/3_iPhone6s_front_ATTACK_replay-attack_1_iPhone12_Redmi9A_s1_frame-8.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/3/3_iPhone6s_front_ATTACK_replay-attack_1_iPhone12_Redmi9A_s1_frame-9.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/3/3_iPhone6s_front_ATTACK_replay-attack_1_iPhone12_Redmi9A_s1_frame-10.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/3/3_iPhone6s_front_ATTACK_replay-attack_1_iPhone12_Redmi9A_s1_frame-11.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/3/3_iPhone6s_front_ATTACK_replay-attack_1_iPhone12_Redmi9A_s1_frame-12.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/3/3_iPhone6s_front_ATTACK_replay-attack_1_iPhone12_Redmi9A_s1_frame-13.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/3/3_iPhone6s_front_ATTACK_replay-attack_1_iPhone12_Redmi9A_s1_frame-14.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/3/3_iPhone6s_front_ATTACK_replay-attack_1_iPhone12_Redmi9A_s1_frame-15.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/3/3_iPhone6s_front_ATTACK_replay-attack_1_iPhone12_Redmi9A_s1_frame-16.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/3/3_iPhone6s_front_ATTACK_replay-attack_1_iPhone12_Redmi9A_s1_frame-17.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/3/3_iPhone6s_front_ATTACK_replay-attack_1_iPhone12_Redmi9A_s1_frame-18.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/3/3_iPhone6s_front_ATTACK_replay-attack_1_iPhone12_Redmi9A_s1_frame-19.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/4/4_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-0.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/4/4_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-1.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/4/4_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-2.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/4/4_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-3.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/4/4_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-4.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/4/4_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-5.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/4/4_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-6.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/4/4_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-7.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/4/4_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-8.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/4/4_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-9.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/4/4_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-10.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/4/4_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-11.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/4/4_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-12.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/4/4_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-13.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/4/4_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-14.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/4/4_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-15.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/4/4_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-16.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/4/4_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-17.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/4/4_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-18.jpg
-/idiap/temp/akomaty/trash/data/replay_attack/4/4_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1_frame-19.jpg
-/idiap/temp/akomaty/trash/data/bonafide/1/1_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-07-58_frame-0.jpg
-/idiap/temp/akomaty/trash/data/bonafide/1/1_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-07-58_frame-1.jpg
-/idiap/temp/akomaty/trash/data/bonafide/1/1_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-07-58_frame-2.jpg
-/idiap/temp/akomaty/trash/data/bonafide/1/1_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-07-58_frame-3.jpg
-/idiap/temp/akomaty/trash/data/bonafide/1/1_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-07-58_frame-4.jpg
-/idiap/temp/akomaty/trash/data/bonafide/1/1_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-07-58_frame-5.jpg
-/idiap/temp/akomaty/trash/data/bonafide/1/1_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-07-58_frame-6.jpg
-/idiap/temp/akomaty/trash/data/bonafide/1/1_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-07-58_frame-7.jpg
-/idiap/temp/akomaty/trash/data/bonafide/1/1_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-07-58_frame-8.jpg
-/idiap/temp/akomaty/trash/data/bonafide/1/1_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-07-58_frame-9.jpg
-/idiap/temp/akomaty/trash/data/bonafide/1/1_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-07-58_frame-10.jpg
-/idiap/temp/akomaty/trash/data/bonafide/1/1_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-07-58_frame-11.jpg
-/idiap/temp/akomaty/trash/data/bonafide/1/1_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-07-58_frame-12.jpg
-/idiap/temp/akomaty/trash/data/bonafide/1/1_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-07-58_frame-13.jpg
-/idiap/temp/akomaty/trash/data/bonafide/1/1_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-07-58_frame-14.jpg
-/idiap/temp/akomaty/trash/data/bonafide/1/1_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-07-58_frame-15.jpg
-/idiap/temp/akomaty/trash/data/bonafide/1/1_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-07-58_frame-16.jpg
-/idiap/temp/akomaty/trash/data/bonafide/1/1_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-07-58_frame-17.jpg
-/idiap/temp/akomaty/trash/data/bonafide/1/1_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-07-58_frame-18.jpg
-/idiap/temp/akomaty/trash/data/bonafide/1/1_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-07-58_frame-19.jpg
-/idiap/temp/akomaty/trash/data/bonafide/2/2_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-21-16_frame-0.jpg
-/idiap/temp/akomaty/trash/data/bonafide/2/2_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-21-16_frame-1.jpg
-/idiap/temp/akomaty/trash/data/bonafide/2/2_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-21-16_frame-2.jpg
-/idiap/temp/akomaty/trash/data/bonafide/2/2_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-21-16_frame-3.jpg
-/idiap/temp/akomaty/trash/data/bonafide/2/2_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-21-16_frame-4.jpg
-/idiap/temp/akomaty/trash/data/bonafide/2/2_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-21-16_frame-5.jpg
-/idiap/temp/akomaty/trash/data/bonafide/2/2_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-21-16_frame-6.jpg
-/idiap/temp/akomaty/trash/data/bonafide/2/2_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-21-16_frame-7.jpg
-/idiap/temp/akomaty/trash/data/bonafide/2/2_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-21-16_frame-8.jpg
-/idiap/temp/akomaty/trash/data/bonafide/2/2_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-21-16_frame-9.jpg
-/idiap/temp/akomaty/trash/data/bonafide/2/2_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-21-16_frame-10.jpg
-/idiap/temp/akomaty/trash/data/bonafide/2/2_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-21-16_frame-11.jpg
-/idiap/temp/akomaty/trash/data/bonafide/2/2_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-21-16_frame-12.jpg
-/idiap/temp/akomaty/trash/data/bonafide/2/2_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-21-16_frame-13.jpg
-/idiap/temp/akomaty/trash/data/bonafide/2/2_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-21-16_frame-14.jpg
-/idiap/temp/akomaty/trash/data/bonafide/2/2_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-21-16_frame-15.jpg
-/idiap/temp/akomaty/trash/data/bonafide/2/2_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-21-16_frame-16.jpg
-/idiap/temp/akomaty/trash/data/bonafide/2/2_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-21-16_frame-17.jpg
-/idiap/temp/akomaty/trash/data/bonafide/2/2_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-21-16_frame-18.jpg
-/idiap/temp/akomaty/trash/data/bonafide/2/2_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-21-16_frame-19.jpg
-/idiap/temp/akomaty/trash/data/bonafide/3/3_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-33-49_frame-0.jpg
-/idiap/temp/akomaty/trash/data/bonafide/3/3_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-33-49_frame-1.jpg
-/idiap/temp/akomaty/trash/data/bonafide/3/3_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-33-49_frame-2.jpg
-/idiap/temp/akomaty/trash/data/bonafide/3/3_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-33-49_frame-3.jpg
-/idiap/temp/akomaty/trash/data/bonafide/3/3_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-33-49_frame-4.jpg
-/idiap/temp/akomaty/trash/data/bonafide/3/3_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-33-49_frame-5.jpg
-/idiap/temp/akomaty/trash/data/bonafide/3/3_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-33-49_frame-6.jpg
-/idiap/temp/akomaty/trash/data/bonafide/3/3_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-33-49_frame-7.jpg
-/idiap/temp/akomaty/trash/data/bonafide/3/3_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-33-49_frame-8.jpg
-/idiap/temp/akomaty/trash/data/bonafide/3/3_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-33-49_frame-9.jpg
-/idiap/temp/akomaty/trash/data/bonafide/3/3_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-33-49_frame-10.jpg
-/idiap/temp/akomaty/trash/data/bonafide/3/3_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-33-49_frame-11.jpg
-/idiap/temp/akomaty/trash/data/bonafide/3/3_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-33-49_frame-12.jpg
-/idiap/temp/akomaty/trash/data/bonafide/3/3_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-33-49_frame-13.jpg
-/idiap/temp/akomaty/trash/data/bonafide/3/3_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-33-49_frame-14.jpg
-/idiap/temp/akomaty/trash/data/bonafide/3/3_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-33-49_frame-15.jpg
-/idiap/temp/akomaty/trash/data/bonafide/3/3_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-33-49_frame-16.jpg
-/idiap/temp/akomaty/trash/data/bonafide/3/3_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-33-49_frame-17.jpg
-/idiap/temp/akomaty/trash/data/bonafide/3/3_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-33-49_frame-18.jpg
-/idiap/temp/akomaty/trash/data/bonafide/3/3_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-33-49_frame-19.jpg
-/idiap/temp/akomaty/trash/data/bonafide/4/4_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-12T07-20-18_frame-0.jpg
-/idiap/temp/akomaty/trash/data/bonafide/4/4_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-12T07-20-18_frame-1.jpg
-/idiap/temp/akomaty/trash/data/bonafide/4/4_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-12T07-20-18_frame-2.jpg
-/idiap/temp/akomaty/trash/data/bonafide/4/4_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-12T07-20-18_frame-3.jpg
-/idiap/temp/akomaty/trash/data/bonafide/4/4_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-12T07-20-18_frame-4.jpg
-/idiap/temp/akomaty/trash/data/bonafide/4/4_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-12T07-20-18_frame-5.jpg
-/idiap/temp/akomaty/trash/data/bonafide/4/4_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-12T07-20-18_frame-6.jpg
-/idiap/temp/akomaty/trash/data/bonafide/4/4_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-12T07-20-18_frame-7.jpg
-/idiap/temp/akomaty/trash/data/bonafide/4/4_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-12T07-20-18_frame-8.jpg
-/idiap/temp/akomaty/trash/data/bonafide/4/4_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-12T07-20-18_frame-9.jpg
-/idiap/temp/akomaty/trash/data/bonafide/4/4_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-12T07-20-18_frame-10.jpg
-/idiap/temp/akomaty/trash/data/bonafide/4/4_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-12T07-20-18_frame-11.jpg
-/idiap/temp/akomaty/trash/data/bonafide/4/4_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-12T07-20-18_frame-12.jpg
-/idiap/temp/akomaty/trash/data/bonafide/4/4_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-12T07-20-18_frame-13.jpg
-/idiap/temp/akomaty/trash/data/bonafide/4/4_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-12T07-20-18_frame-14.jpg
-/idiap/temp/akomaty/trash/data/bonafide/4/4_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-12T07-20-18_frame-15.jpg
-/idiap/temp/akomaty/trash/data/bonafide/4/4_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-12T07-20-18_frame-16.jpg
-/idiap/temp/akomaty/trash/data/bonafide/4/4_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-12T07-20-18_frame-17.jpg
-/idiap/temp/akomaty/trash/data/bonafide/4/4_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-12T07-20-18_frame-18.jpg
-/idiap/temp/akomaty/trash/data/bonafide/4/4_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-12T07-20-18_frame-19.jpg
diff --git a/pipeline_vuln.py b/pipeline_vuln.py
index 71ad2c1..56c6341 100644
--- a/pipeline_vuln.py
+++ b/pipeline_vuln.py
@@ -29,11 +29,11 @@ def run_pipeline(root, bonafide_annotations_path, print_path, replay_path, hyg_a
 
     # Create a references dataframe containing only files from the first session, the main camera only, and the first scenario: indoor normal light
     session_id = "s1"
-    scene_id = 0
+    scene = "indoor-normal-light"
     nb_of_frames = 4 # the number of frames to be selected
 
-    protocol_references_dev = '((session==@session_id) & (frame_nb < @nb_of_frames) & (scenario_id == @scene_id) & (with_mask==False) &(subject_id <= 70))'
-    protocol_references_eval = '((session==@session_id) & (frame_nb < @nb_of_frames) & (scenario_id == @scene_id) & (with_mask==False) &(subject_id > 69))'
+    protocol_references_dev = '((session==@session_id) & (frame_nb < @nb_of_frames) & (scenario == @scene)  &(subject_id <= 3))'
+    protocol_references_eval = '((session==@session_id) & (frame_nb < @nb_of_frames) & (scenario == @scene) &(subject_id > 3))'
 
     ## Dataframes for references, dev and eval
     references_df_dev=df.query(protocol_references_dev)
@@ -42,8 +42,8 @@ def run_pipeline(root, bonafide_annotations_path, print_path, replay_path, hyg_a
     # Create a probes dataframe containing only files from the second session,  the main camera only, and the first scenario: indoor normal light
     session_id = "s2"
 
-    protocol_probes_dev = '((session==@session_id) & (frame_nb < @nb_of_frames) & (scenario_id == @scene_id) & (with_mask==False) & (subject_id <= 70))'
-    protocol_probes_eval = '((session==@session_id) & (frame_nb < @nb_of_frames) & (scenario_id == @scene_id) & (with_mask==False) & (subject_id > 69))'
+    protocol_probes_dev = '((session==@session_id) & (frame_nb < @nb_of_frames) & (scenario == @scene) & (subject_id <= 3))'
+    protocol_probes_eval = '((session==@session_id) & (frame_nb < @nb_of_frames) & (scenario == @scene) & (subject_id > 3))'
 
     probes_df_dev=df.query(protocol_probes_dev)
     probes_df_eval=df.query(protocol_probes_eval)
@@ -58,8 +58,8 @@ def run_pipeline(root, bonafide_annotations_path, print_path, replay_path, hyg_a
     # Add the print attack frames to the probes dataframe
     df_print = load_annotations(print_path)
 
-    protocol_probes_dev_print = '((frame_nb < @nb_of_frames) & (subject_id <= 70))'
-    protocol_probes_eval_print = '((frame_nb < @nb_of_frames) & (subject_id > 69))'
+    protocol_probes_dev_print = '((frame_nb < @nb_of_frames) & (subject_id <= 3))'
+    protocol_probes_eval_print = '((frame_nb < @nb_of_frames) & (subject_id > 3))'
 
     probes_df_dev_print=df_print.query(protocol_probes_dev_print)
     probes_df_eval_print=df_print.query(protocol_probes_eval_print)
@@ -79,8 +79,8 @@ def run_pipeline(root, bonafide_annotations_path, print_path, replay_path, hyg_a
 
     rep_att_scene = '1'
 
-    protocol_probes_dev_replay = '((frame_nb < @nb_of_frames) & (rep_att_scenario == @rep_att_scene) & (subject_id <= 70))'
-    protocol_probes_eval_replay = '((frame_nb < @nb_of_frames) & (rep_att_scenario == @rep_att_scene) & (subject_id > 69))'
+    protocol_probes_dev_replay = '((frame_nb < @nb_of_frames) & (scenario == @rep_att_scene) & (subject_id <= 3))'
+    protocol_probes_eval_replay = '((frame_nb < @nb_of_frames) & (scenario == @rep_att_scene) & (subject_id > 3))'
 
     probes_df_dev_replay=df_replay.query(protocol_probes_dev_replay)
     probes_df_eval_replay=df_replay.query(protocol_probes_eval_replay)
@@ -98,8 +98,8 @@ def run_pipeline(root, bonafide_annotations_path, print_path, replay_path, hyg_a
     # Add the hygienic mask attack frames to the probes dataframe
     df_hyg = load_annotations(hyg_attack_path)
 
-    protocol_probes_dev_hyg = '(subject_id <= 70)'
-    protocol_probes_eval_hyg = '(subject_id > 69)'
+    protocol_probes_dev_hyg = '(subject_id <= 3)'
+    protocol_probes_eval_hyg = '(subject_id > 3)'
 
     probes_df_dev_hyg=df_hyg.query(protocol_probes_dev_hyg)
     probes_df_eval_hyg=df_hyg.query(protocol_probes_eval_hyg)
@@ -168,7 +168,6 @@ def run_pipeline(root, bonafide_annotations_path, print_path, replay_path, hyg_a
                                 matching_dev=matching_dev,
                                 original_directory=root)
 
-    from bob.pipelines.config.distributed.sge_demanding import dask_client
     from bob.extension.log import setup, set_verbosity_level
 
     logger = setup('bob')
@@ -176,8 +175,7 @@ def run_pipeline(root, bonafide_annotations_path, print_path, replay_path, hyg_a
 
     pipeline = iresnet_template()
 
-    # dask_client = "single-threaded"
-    bob.bio.base.pipelines.entry_points.execute_pipeline_simple(pipeline, soteria_db, dask_client = dask_client, groups=["dev", "eval"], output=OUTPUT_PATH, dask_n_partitions=None, write_metadata_scores=True, checkpoint=True, dask_partition_size=16, dask_n_workers=None)
+    bob.bio.base.pipelines.entry_points.execute_pipeline_simple(pipeline, soteria_db, dask_client = "single-threaded", groups=["dev", "eval"], output=OUTPUT_PATH, dask_n_partitions=None, write_metadata_scores=True, checkpoint=True, dask_partition_size=16, dask_n_workers=None)
 
 
 if __name__ == '__main__':
diff --git a/preprocessor/extract_frames.py b/preprocessor/extract_frames.py
index 30b0cd3..3dd74a5 100644
--- a/preprocessor/extract_frames.py
+++ b/preprocessor/extract_frames.py
@@ -24,7 +24,7 @@ from bob.bio.video import VideoAsArray
 from bob.io.image import to_matplotlib
 
 def extract_frames(video_list, output_path, max_number_of_frames):
-
+  frames_list = []
   with open(video_list, 'r') as fp:
     for video_path in fp:
       video_path = video_path.strip()
@@ -38,8 +38,14 @@ def extract_frames(video_list, output_path, max_number_of_frames):
       index = 0
       for frame in myvid:
         dest_file_path = os.path.join(id_path, filename + "_frame-" + str(index)+ '.jpg')
+        frames_list.append(dest_file_path)
         matplotlib.image.imsave(dest_file_path, to_matplotlib(frame))
         index +=1
+  # save the frames list to a csv file
+  with open(os.path.join(output_path, "frames.csv"), 'w') as f:
+    for item in frames_list:
+        f.write("%s\n" % item)
+
 
 if __name__ == '__main__':
     # Create an ArgumentParser object
diff --git a/videos.txt b/test_videos.txt
similarity index 77%
rename from videos.txt
rename to test_videos.txt
index 91e2d14..f67d053 100644
--- a/videos.txt
+++ b/test_videos.txt
@@ -11,6 +11,10 @@
 /idiap/resource/database/PHyMAtt/attack/replay_attack/3_iPhone6s_front_ATTACK_replay-attack_1_iPhone12_Redmi9A_s1.mp4
 /idiap/resource/database/PHyMAtt/attack/replay_attack/4_iPhone12_front_ATTACK_replay-attack_1_iPhone6s_Redmi9A_s1.mp4
 /idiap/resource/database/PHyMAtt/bonafide/1_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-07-58.mp4
+/idiap/resource/database/PHyMAtt/bonafide/1_iPhone12_Front_BONAFIDE_indoor-normal-light_s2_2022-10-25T12-29-24.mp4
 /idiap/resource/database/PHyMAtt/bonafide/2_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-21-16.mp4
+/idiap/resource/database/PHyMAtt/bonafide/2_iPhone12_Front_BONAFIDE_indoor-normal-light_s2_2022-10-25T12-15-40.mp4
 /idiap/resource/database/PHyMAtt/bonafide/3_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-09T12-33-49.mp4
-/idiap/resource/database/PHyMAtt/bonafide/4_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-12T07-20-18.mp4
\ No newline at end of file
+/idiap/resource/database/PHyMAtt/bonafide/3_iPhone12_Front_BONAFIDE_indoor-normal-light_s2_2022-10-25T12-29-44.mp4
+/idiap/resource/database/PHyMAtt/bonafide/4_iPhone12_Front_BONAFIDE_indoor-normal-light_s1_2022-09-12T07-20-18.mp4
+/idiap/resource/database/PHyMAtt/bonafide/4_iPhone12_Front_BONAFIDE_indoor-normal-light_s2_2022-10-04T14-15-33.mp4
\ No newline at end of file
diff --git a/utils/_utils.py b/utils/_utils.py
index d9cb8ab..d9bd585 100644
--- a/utils/_utils.py
+++ b/utils/_utils.py
@@ -141,7 +141,8 @@ def create_matchings_for_attacks(probes_df):
         probes (pandas dataframe): _description_
         references (set of reference_ids (template_ids)): _description_
     """
-    id = probes_df['filename'].str.split('_').str[0] + '_s1'
+    # id = probes_df['filename'].str.split('_').str[0] + '_s1'
+    id = probes_df['filename'].str.split('_').str[0]
     matching = probes_df['filename']
     matching = pd.DataFrame(matching)
     matching.columns = ["probe_reference_id"]
diff --git a/utils/load_annotations.py b/utils/load_annotations.py
index da498ba..0a12d4d 100644
--- a/utils/load_annotations.py
+++ b/utils/load_annotations.py
@@ -11,10 +11,18 @@ from utils import _utils
 import pandas as pd
 
 def load_annotations(annotations_path):
-    frames = [ _utils.process_df(os.path.join(annotations_path, f)) for f in os.listdir(annotations_path)]
-    df = pd.concat(frames)
-    df['frame_nb'] = df['frame_nb'].astype(int)
-    return df
+    # check if annoation_path is a file or a directory
+    if os.path.isfile(annotations_path):
+        df = _utils.process_df(annotations_path)
+        df['frame_nb'] = df['frame_nb'].astype(int)
+        return df
+    elif os.path.isdir(annotations_path):
+        frames = [ _utils.process_df(os.path.join(annotations_path, f)) for f in os.listdir(annotations_path)]
+        df = pd.concat(frames)
+        df['frame_nb'] = df['frame_nb'].astype(int)
+        return df
+    else:
+        raise ValueError("The annotations_path is neither a file nor a directory.")
 
 
 if __name__ == '__main__':
-- 
GitLab