import sys sys.path.insert(0, '..') import os if os.getcwd().endswith('test'): os.chdir('..') import pathlib import shutil import pandas as pd import unittest from index_ffpp import main as index_ffpp_main from extract_faces import main as extract_faces_main class TestFFPP(unittest.TestCase): def test_1_index(self): df_out = 'test/data/ffpp_videos.pkl' if os.path.isfile(df_out): os.unlink(df_out) argv = ['--source', 'test/data/ffpp', '--videodataset', df_out] index_ffpp_main(argv) videos_df = pd.read_pickle(df_out) self.assertEqual(videos_df.shape, (10, 10)) self.assertEqual(videos_df[videos_df.frames > 0].shape, (10, 10)) def test_2_extract_faces(self): facesfolder_path = 'test/data/facecache/ffpp' faces_df_path = 'test/data/faces_df/ffpp_faces.pkl' checkpoint_path = 'test/data/tmp/ffpp' if os.path.isdir(facesfolder_path): shutil.rmtree(facesfolder_path) if os.path.isfile(faces_df_path): os.unlink(faces_df_path) if os.path.isdir(checkpoint_path): shutil.rmtree(checkpoint_path) fpv = 5 argv = ['--source', 'test/data/ffpp', '--facesfolder', facesfolder_path, '--videodf', 'test/data/ffpp_videos.pkl', '--facesdf', faces_df_path, '--checkpoint', checkpoint_path, '--fpv', str(fpv), # '--device', 'cuda:5' # TODO: remove this ] extract_faces_main(argv) self.assertEqual(len(list(pathlib.Path(facesfolder_path) .joinpath('manipulated_sequences/DeepFakeDetection/c23/videos/' '24_23__outside_talking_still_laughing__YR5OVD4S.mp4') .glob('*.jpg'))), 5) self.assertEqual(len(list(pathlib.Path(facesfolder_path) .joinpath('manipulated_sequences/Deepfakes/c23/videos/' '519_515.mp4') .glob('*.jpg'))), 5) self.assertEqual(len(list(pathlib.Path(facesfolder_path) .joinpath('manipulated_sequences/Face2Face/c23/videos/' '750_743.mp4') .glob('*.jpg'))), 5) self.assertEqual(len(list(pathlib.Path(facesfolder_path) .joinpath('manipulated_sequences/FaceSwap/c23/videos/' '634_660.mp4') .glob('*.jpg'))), 5) self.assertEqual(len(list(pathlib.Path(facesfolder_path) .joinpath('manipulated_sequences/NeuralTextures/c23/videos/' '004_982.mp4') .glob('*.jpg'))), 5) self.assertEqual(len(list(pathlib.Path(facesfolder_path) .joinpath('original_sequences/actors/c23/videos/' '24__outside_talking_still_laughing.mp4') .glob('*.jpg'))), 5) self.assertEqual(len(list(pathlib.Path(facesfolder_path) .joinpath('original_sequences/youtube/c23/videos/' '004.mp4') .glob('*.jpg'))), 5) self.assertEqual(len(list(pathlib.Path(facesfolder_path) .joinpath('original_sequences/youtube/c23/videos/' '519.mp4') .glob('*.jpg'))), 5) self.assertEqual(len(list(pathlib.Path(facesfolder_path) .joinpath('original_sequences/youtube/c23/videos/' '634.mp4') .glob('*.jpg'))), 5) self.assertEqual(len(list(pathlib.Path(facesfolder_path) .joinpath('original_sequences/youtube/c23/videos/' '750.mp4') .glob('*.jpg'))), 5) faces_df = pd.read_pickle(faces_df_path) self.assertEqual(faces_df.shape, (50, 25))