SivaResearch commited on
Commit
b6d5990
1 Parent(s): a983048
.gitattributes CHANGED
@@ -33,3 +33,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ checkpoints/model.pth filter=lfs diff=lfs merge=lfs -text
37
+ checkpoints/efficientnet.onnx filter=lfs diff=lfs merge=lfs -text
.gitignore ADDED
@@ -0,0 +1 @@
 
 
1
+ checkpoints/RawNet2.pth
Multimodal_deepfake_training_notebook.ipynb ADDED
@@ -0,0 +1,248 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "metadata": {
6
+ "colab_type": "text",
7
+ "id": "view-in-github"
8
+ },
9
+ "source": [
10
+ "<a href=\"https://colab.research.google.com/github/AlvinKimata/ml-projects/blob/main/DFDT%20TMC/Multimodal_deepfake_training_notebook.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
11
+ ]
12
+ },
13
+ {
14
+ "cell_type": "code",
15
+ "execution_count": 1,
16
+ "metadata": {
17
+ "colab": {
18
+ "base_uri": "https://localhost:8080/"
19
+ },
20
+ "id": "FK1MZWm7oFa6",
21
+ "outputId": "ec19e080-086b-4cd6-997f-14dce5c61540"
22
+ },
23
+ "outputs": [
24
+ {
25
+ "name": "stdout",
26
+ "output_type": "stream",
27
+ "text": [
28
+ "Cloning into 'ml-projects'...\n",
29
+ "remote: Enumerating objects: 3730, done.\u001b[K\n",
30
+ "remote: Counting objects: 100% (719/719), done.\u001b[K\n",
31
+ "remote: Compressing objects: 100% (392/392), done.\u001b[K\n",
32
+ "remote: Total 3730 (delta 305), reused 710 (delta 298), pack-reused 3011\u001b[K\n",
33
+ "Receiving objects: 100% (3730/3730), 218.98 MiB | 9.61 MiB/s, done.\n",
34
+ "Resolving deltas: 100% (307/307), done.\n"
35
+ ]
36
+ }
37
+ ],
38
+ "source": [
39
+ "!git clone 'https://github.com/AlvinKimata/ml-projects.git'"
40
+ ]
41
+ },
42
+ {
43
+ "cell_type": "code",
44
+ "execution_count": 2,
45
+ "metadata": {
46
+ "colab": {
47
+ "base_uri": "https://localhost:8080/"
48
+ },
49
+ "id": "IUb5rFqssg2j",
50
+ "outputId": "665d0e33-6d70-4873-d8ad-614dffdcf843"
51
+ },
52
+ "outputs": [
53
+ {
54
+ "name": "stdout",
55
+ "output_type": "stream",
56
+ "text": [
57
+ "{\"username\":\"kaggle_username\",\"key\":\"kaggle_api_key\"}\n"
58
+ ]
59
+ }
60
+ ],
61
+ "source": [
62
+ "!mkdir ../root/.kaggle/\n",
63
+ "!echo '{\"username\":\"kaggle_username\",\"key\":\"kaggle_api_key\"}' >> /root/.kaggle/kaggle.json\n",
64
+ "!chmod 400 ../root/.kaggle/kaggle.json #Read-only\n",
65
+ "!cat ../root/.kaggle/kaggle.json"
66
+ ]
67
+ },
68
+ {
69
+ "cell_type": "code",
70
+ "execution_count": 4,
71
+ "metadata": {
72
+ "colab": {
73
+ "base_uri": "https://localhost:8080/"
74
+ },
75
+ "id": "owPZaNL8qAW8",
76
+ "outputId": "60e95755-df58-4906-e7ca-c9bb950c95cb"
77
+ },
78
+ "outputs": [
79
+ {
80
+ "name": "stdout",
81
+ "output_type": "stream",
82
+ "text": [
83
+ "Downloading fakeavceleb-tfrecord.zip to /content\n",
84
+ " 98% 1.52G/1.55G [00:20<00:00, 116MB/s]\n",
85
+ "100% 1.55G/1.55G [00:21<00:00, 79.2MB/s]\n"
86
+ ]
87
+ }
88
+ ],
89
+ "source": [
90
+ "!kaggle datasets download -d kimatadebonair/fakeavceleb-tfrecord"
91
+ ]
92
+ },
93
+ {
94
+ "cell_type": "code",
95
+ "execution_count": 5,
96
+ "metadata": {
97
+ "id": "SG3kuPIJstaN"
98
+ },
99
+ "outputs": [],
100
+ "source": [
101
+ "!unzip -q '/content/fakeavceleb-tfrecord.zip' -d inputs/"
102
+ ]
103
+ },
104
+ {
105
+ "cell_type": "code",
106
+ "execution_count": null,
107
+ "metadata": {
108
+ "id": "CyAvPAhKgi9K"
109
+ },
110
+ "outputs": [],
111
+ "source": [
112
+ "!pip install -r 'DFDT TMC/requirements.txt'"
113
+ ]
114
+ },
115
+ {
116
+ "cell_type": "code",
117
+ "execution_count": 6,
118
+ "metadata": {
119
+ "id": "sbBCy3Nps3V-"
120
+ },
121
+ "outputs": [],
122
+ "source": [
123
+ "!cp -r '/content/ml-projects/DFDT TMC' ./"
124
+ ]
125
+ },
126
+ {
127
+ "cell_type": "code",
128
+ "execution_count": 8,
129
+ "metadata": {
130
+ "colab": {
131
+ "base_uri": "https://localhost:8080/"
132
+ },
133
+ "id": "LYmBafKPuGOM",
134
+ "outputId": "cebc40c2-40c2-4425-f4e8-55e7656df4d3"
135
+ },
136
+ "outputs": [
137
+ {
138
+ "name": "stdout",
139
+ "output_type": "stream",
140
+ "text": [
141
+ "cp: cannot stat '/content/inputs/fakeavceleb_1k-000010-of-00015': No such file or directory\n",
142
+ "cp: cannot stat '/content/inputs/fakeavceleb_1k-000011-of-00015': No such file or directory\n",
143
+ "cp: cannot stat '/content/inputs/fakeavceleb_1k-000012-of-00015': No such file or directory\n",
144
+ "cp: cannot stat '/content/inputs/fakeavceleb_1k-000013-of-00015': No such file or directory\n"
145
+ ]
146
+ }
147
+ ],
148
+ "source": [
149
+ "for i in range(14):\n",
150
+ " !cp '/content/inputs/fakeavceleb_1k-0000{i}-of-00015' '/content/DFDT TMC/datasets/train'"
151
+ ]
152
+ },
153
+ {
154
+ "cell_type": "code",
155
+ "execution_count": 11,
156
+ "metadata": {
157
+ "id": "O1mT677Uc0qu"
158
+ },
159
+ "outputs": [],
160
+ "source": [
161
+ "for i in range(10, 15):\n",
162
+ " !cp '/content/inputs/fakeavceleb_1k-000{i}-of-00015' '/content/DFDT TMC/datasets/train'"
163
+ ]
164
+ },
165
+ {
166
+ "cell_type": "code",
167
+ "execution_count": 32,
168
+ "metadata": {
169
+ "colab": {
170
+ "base_uri": "https://localhost:8080/"
171
+ },
172
+ "id": "_-TCpjHVqT36",
173
+ "outputId": "88873108-392c-4830-f4e4-76b3a2cc8b3c"
174
+ },
175
+ "outputs": [
176
+ {
177
+ "name": "stdout",
178
+ "output_type": "stream",
179
+ "text": [
180
+ "--2023-07-14 09:10:01-- https://github.com/selimsef/dfdc_deepfake_challenge/releases/download/0.0.1/final_999_DeepFakeClassifier_tf_efficientnet_b7_ns_0_23\n",
181
+ "Resolving github.com (github.com)... 192.30.255.112\n",
182
+ "Connecting to github.com (github.com)|192.30.255.112|:443... connected.\n",
183
+ "HTTP request sent, awaiting response... 302 Found\n",
184
+ "Location: https://objects.githubusercontent.com/github-production-release-asset-2e65be/270020698/6e91bf80-a835-11ea-8950-51c980e899ce?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20230714%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20230714T091002Z&X-Amz-Expires=300&X-Amz-Signature=8623af355287f61ac5b0e7857ae8c21efdbeb265ccc3662b57cee5f04f31f572&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=270020698&response-content-disposition=attachment%3B%20filename%3Dfinal_999_DeepFakeClassifier_tf_efficientnet_b7_ns_0_23&response-content-type=application%2Foctet-stream [following]\n",
185
+ "--2023-07-14 09:10:02-- https://objects.githubusercontent.com/github-production-release-asset-2e65be/270020698/6e91bf80-a835-11ea-8950-51c980e899ce?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20230714%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20230714T091002Z&X-Amz-Expires=300&X-Amz-Signature=8623af355287f61ac5b0e7857ae8c21efdbeb265ccc3662b57cee5f04f31f572&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=270020698&response-content-disposition=attachment%3B%20filename%3Dfinal_999_DeepFakeClassifier_tf_efficientnet_b7_ns_0_23&response-content-type=application%2Foctet-stream\n",
186
+ "Resolving objects.githubusercontent.com (objects.githubusercontent.com)... 185.199.111.133, 185.199.109.133, 185.199.110.133, ...\n",
187
+ "Connecting to objects.githubusercontent.com (objects.githubusercontent.com)|185.199.111.133|:443... connected.\n",
188
+ "HTTP request sent, awaiting response... 200 OK\n",
189
+ "Length: 266910615 (255M) [application/octet-stream]\n",
190
+ "Saving to: ‘final_999_DeepFakeClassifier_tf_efficientnet_b7_ns_0_23’\n",
191
+ "\n",
192
+ "final_999_DeepFakeC 100%[===================>] 254.54M 66.8MB/s in 3.8s \n",
193
+ "\n",
194
+ "2023-07-14 09:10:06 (66.4 MB/s) - ‘final_999_DeepFakeClassifier_tf_efficientnet_b7_ns_0_23’ saved [266910615/266910615]\n",
195
+ "\n"
196
+ ]
197
+ }
198
+ ],
199
+ "source": [
200
+ "!cd '/content/DFDT TMC/pretrained' && wget 'https://github.com/selimsef/dfdc_deepfake_challenge/releases/download/0.0.1/final_999_DeepFakeClassifier_tf_efficientnet_b7_ns_0_23'''"
201
+ ]
202
+ },
203
+ {
204
+ "cell_type": "code",
205
+ "execution_count": null,
206
+ "metadata": {
207
+ "colab": {
208
+ "base_uri": "https://localhost:8080/"
209
+ },
210
+ "id": "DvA-myf8s9-9",
211
+ "outputId": "477f4488-e1fb-44bb-b867-71c325c85dcb"
212
+ },
213
+ "outputs": [],
214
+ "source": [
215
+ "!python '/content/DFDT TMC/train_dfdc_tf.py' --device='cuda' \\\n",
216
+ " --data_dir=\"/content/DFDT TMC/datasets/train/fakeavceleb_1k*\" \\\n",
217
+ " --pretrained_image_encoder=True --pretrained_audio_encoder=True"
218
+ ]
219
+ },
220
+ {
221
+ "cell_type": "code",
222
+ "execution_count": null,
223
+ "metadata": {
224
+ "id": "kGfym7pEn4aP"
225
+ },
226
+ "outputs": [],
227
+ "source": []
228
+ }
229
+ ],
230
+ "metadata": {
231
+ "accelerator": "GPU",
232
+ "colab": {
233
+ "authorship_tag": "ABX9TyNzEVTklkrYn6Mgz+yxoZaI",
234
+ "gpuType": "T4",
235
+ "include_colab_link": true,
236
+ "provenance": []
237
+ },
238
+ "kernelspec": {
239
+ "display_name": "Python 3",
240
+ "name": "python3"
241
+ },
242
+ "language_info": {
243
+ "name": "python"
244
+ }
245
+ },
246
+ "nbformat": 4,
247
+ "nbformat_minor": 0
248
+ }
__pycache__/inference.cpython-39.pyc ADDED
Binary file (5.97 kB). View file
 
__pycache__/inference_2.cpython-39.pyc ADDED
Binary file (5.97 kB). View file
 
app.py ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import inference_2 as inference
3
+
4
+
5
+ title="Multimodal deepfake detector"
6
+ description="Deepfake detection for videos, images and audio modalities."
7
+
8
+
9
+ video_interface = gr.Interface(inference.deepfakes_video_predict,
10
+ gr.Video(),
11
+ "text",
12
+ examples = ["videos/celeb_synthesis.mp4", "videos/real-1.mp4"],
13
+ cache_examples = False
14
+ )
15
+
16
+
17
+ image_interface = gr.Interface(inference.deepfakes_image_predict,
18
+ gr.Image(),
19
+ "text",
20
+ examples = ["images/lady.jpg", "images/fake_image.jpg"],
21
+ cache_examples=False
22
+ )
23
+
24
+ audio_interface = gr.Interface(inference.deepfakes_spec_predict,
25
+ gr.Audio(),
26
+ "text",
27
+ examples = ["audios/DF_E_2000027.flac", "audios/DF_E_2000031.flac"],
28
+ cache_examples = False)
29
+
30
+
31
+ app = gr.TabbedInterface(interface_list= [image_interface, video_interface, audio_interface],
32
+ tab_names = ['Image inference', 'Video inference', 'Audio inference'])
33
+
34
+ if __name__ == '__main__':
35
+ app.launch(share = False)
audios/DF_E_2000027.flac ADDED
Binary file (30.3 kB). View file
 
audios/DF_E_2000028.flac ADDED
Binary file (29.7 kB). View file
 
audios/DF_E_2000031.flac ADDED
Binary file (65.2 kB). View file
 
audios/DF_E_2000032.flac ADDED
Binary file (80.3 kB). View file
 
checkpoints/efficientnet.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:206f99f4c4efe6d088ba6e53bfcdec76ffa796a345d50770c037005e3cd11639
3
+ size 23510323
checkpoints/model.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3de812710093068acee6200b8d162aab074975edffa3edf2ccbe562868e4adf6
3
+ size 117418889
data/__init__.py ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch.utils.data
2
+
3
+ class DataProvider():
4
+
5
+ def __init__(self, cfg, dataset, batch_size=None, shuffle=True):
6
+ super().__init__()
7
+ self.dataset = dataset
8
+ if batch_size is None:
9
+ batch_size = cfg.BATCH_SIZE
10
+ self.dataloader = torch.utils.data.DataLoader(
11
+ self.dataset,
12
+ batch_size=batch_size,
13
+ shuffle=shuffle,
14
+ num_workers=int(cfg.WORKERS),
15
+ drop_last=False)
16
+
17
+ def __len__(self):
18
+ return len(self.dataset)
19
+
20
+ def __iter__(self):
21
+ for i, data in enumerate(self.dataloader):
22
+ yield data
data/__pycache__/__init__.cpython-39.pyc ADDED
Binary file (1.05 kB). View file
 
data/__pycache__/augmentation_utils.cpython-39.pyc ADDED
Binary file (3.55 kB). View file
 
data/__pycache__/dfdt_dataset.cpython-39.pyc ADDED
Binary file (4.56 kB). View file
 
data/augmentation_utils.py ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import cv2
2
+ import librosa
3
+ import numpy as np
4
+ import albumentations
5
+ from albumentations import (Compose, ImageCompression, GaussNoise, HorizontalFlip,
6
+ PadIfNeeded, OneOf,ToGray, ShiftScaleRotate, GaussianBlur,
7
+ RandomBrightnessContrast, FancyPCA, HueSaturationValue, BasicTransform)
8
+
9
+
10
+ class AudioTransform(BasicTransform):
11
+ """ Transform for audio task. This is the main class where we override the targets and update params function for our need"""
12
+ @property
13
+ def targets(self):
14
+ return {"data": self.apply}
15
+
16
+ def update_params(self, params, **kwargs):
17
+ if hasattr(self, "interpolation"):
18
+ params["interpolation"] = self.interpolation
19
+ if hasattr(self, "fill_value"):
20
+ params["fill_value"] = self.fill_value
21
+ return params
22
+
23
+ class TimeShifting(AudioTransform):
24
+ """ Do time shifting of audio """
25
+ def __init__(self, always_apply=False, p=0.5):
26
+ super(TimeShifting, self).__init__(always_apply, p)
27
+
28
+ def apply(self,data,**params):
29
+ '''
30
+ data : ndarray of audio timeseries
31
+ '''
32
+ start_ = int(np.random.uniform(-80000,80000))
33
+ if start_ >= 0:
34
+ audio_time_shift = np.r_[data[start_:], np.random.uniform(-0.001,0.001, start_)]
35
+ else:
36
+ audio_time_shift = np.r_[np.random.uniform(-0.001,0.001, -start_), data[:start_]]
37
+
38
+ return audio_time_shift
39
+
40
+ class PitchShift(AudioTransform):
41
+ """ Do time shifting of audio """
42
+ def __init__(self, always_apply=False, p=0.5 , n_steps=None):
43
+ super(PitchShift, self).__init__(always_apply, p)
44
+ '''
45
+ nsteps here is equal to number of semitones
46
+ '''
47
+
48
+ self.n_steps = n_steps
49
+
50
+ def apply(self,data,**params):
51
+ '''
52
+ data : ndarray of audio timeseries
53
+ '''
54
+ return librosa.effects.pitch_shift(data,sr=16000,n_steps=self.n_steps)
55
+
56
+
57
+ class AddGaussianNoise(AudioTransform):
58
+ """ Do time shifting of audio """
59
+ def __init__(self, always_apply=False, p=0.5):
60
+ super(AddGaussianNoise, self).__init__(always_apply, p)
61
+
62
+
63
+ def apply(self,data,**params):
64
+ '''
65
+ data : ndarray of audio timeseries
66
+ '''
67
+ noise = np.random.randn(len(data))
68
+ data_wn = data + 0.005*noise
69
+ return data_wn
70
+
71
+
72
+ create_frame_transforms = Compose([
73
+ ImageCompression(quality_lower=60, quality_upper=100, p=0.5),
74
+ GaussNoise(p=0.1),
75
+ GaussianBlur(blur_limit=3, p=0.05),
76
+ HorizontalFlip(),
77
+ PadIfNeeded(min_height=256, min_width=256, border_mode=cv2.BORDER_CONSTANT),
78
+ OneOf([RandomBrightnessContrast(), FancyPCA(), HueSaturationValue()], p=0.7),
79
+ ToGray(p=0.2),
80
+ ShiftScaleRotate(shift_limit=0.1, scale_limit=0.2, rotate_limit=10, border_mode=cv2.BORDER_CONSTANT, p=0.5),])
81
+
82
+
83
+
84
+ create_spec_transforms = albumentations.Compose([
85
+ TimeShifting(p=0.9), # here not p=1.0 because your nets should get some difficulties
86
+ AddGaussianNoise(p=0.8),
87
+ PitchShift(p=0.5,n_steps=4)
88
+ ])
data/dfdt_dataset.py ADDED
@@ -0,0 +1,130 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ '''Module for loading the fakeavceleb dataset from tfrecord format'''
2
+ import numpy as np
3
+ import tensorflow as tf
4
+ from data.augmentation_utils import create_frame_transforms, create_spec_transforms
5
+
6
+ FEATURE_DESCRIPTION = {
7
+ 'video_path': tf.io.FixedLenFeature([], tf.string),
8
+ 'image/encoded': tf.io.FixedLenFeature([], tf.string),
9
+ 'clip/label/index': tf.io.FixedLenFeature([], tf.int64),
10
+ 'clip/label/text': tf.io.FixedLenFeature([], tf.string),
11
+ 'WAVEFORM/feature/floats': tf.io.FixedLenFeature([], tf.string)
12
+ }
13
+
14
+ @tf.function
15
+ def _parse_function(example_proto):
16
+
17
+ #Parse the input `tf.train.Example` proto using the dictionary above.
18
+ example = tf.io.parse_single_example(example_proto, FEATURE_DESCRIPTION)
19
+
20
+ video_path = example['video_path']
21
+ video = tf.io.decode_raw(example['image/encoded'], tf.int8)
22
+ spectrogram = tf.io.decode_raw(example['WAVEFORM/feature/floats'], tf.float32)
23
+
24
+ label = example["clip/label/text"]
25
+ label_map = example["clip/label/index"]
26
+
27
+ return video, spectrogram, label_map
28
+
29
+ @tf.function
30
+ def decode_inputs(video, spectrogram, label_map):
31
+ '''Decode tensors to arrays with desired shape'''
32
+ frame = tf.reshape(video, [10, 3, 256, 256])
33
+ frame = frame[0] / 255 #Pick the first frame and normalize it.
34
+ # frame = tf.cast(frame, tf.float32)
35
+
36
+ label_map = tf.expand_dims(label_map, axis = 0)
37
+
38
+ sample = {'video_reshaped': frame, 'spectrogram': spectrogram, 'label_map': label_map}
39
+ return sample
40
+
41
+
42
+ def decode_train_inputs(video, spectrogram, label_map):
43
+ #Data augmentation for spectograms
44
+ spectrogram_shape = spectrogram.shape
45
+ spec_augmented = tf.py_function(aug_spec_fn, [spectrogram], tf.float32)
46
+ spec_augmented.set_shape(spectrogram_shape)
47
+
48
+ frame = tf.reshape(video, [10, 256, 256, 3])
49
+ frame = frame[0] #Pick the first frame.
50
+ frame = frame / 255 #Normalize tensor.
51
+
52
+ frame_augmented = tf.py_function(aug_img_fn, [frame], tf.uint8)
53
+ # frame_augmented.set_shape(frame_shape)
54
+
55
+ frame_augmented.set_shape([3, 256, 256])
56
+ label_map = tf.expand_dims(label_map, axis = 0)
57
+
58
+ augmented_sample = {'video_reshaped': frame_augmented, 'spectrogram': spec_augmented, 'label_map': label_map}
59
+ return augmented_sample
60
+
61
+
62
+ def aug_img_fn(frame):
63
+ frame = frame.numpy().astype(np.uint8)
64
+ frame_data = {'image': frame}
65
+ aug_frame_data = create_frame_transforms(**frame_data)
66
+ aug_img = aug_frame_data['image']
67
+ aug_img = aug_img.transpose(2, 0, 1)
68
+ return aug_img
69
+
70
+ def aug_spec_fn(spec):
71
+ spec = spec.numpy()
72
+ spec_data = {'spec': spec}
73
+ aug_spec_data = create_spec_transforms(**spec_data)
74
+ aug_spec = aug_spec_data['spec']
75
+ return aug_spec
76
+
77
+
78
+ class FakeAVCelebDatasetTrain:
79
+
80
+ def __init__(self, args):
81
+ self.args = args
82
+ self.samples = self.load_features_from_tfrec()
83
+
84
+ def load_features_from_tfrec(self):
85
+ '''Loads raw features from a tfrecord file and returns them as raw inputs'''
86
+ ds = tf.io.matching_files(self.args.data_dir)
87
+ files = tf.random.shuffle(ds)
88
+
89
+ shards = tf.data.Dataset.from_tensor_slices(files)
90
+ dataset = shards.interleave(tf.data.TFRecordDataset)
91
+ dataset = dataset.shuffle(buffer_size=100)
92
+
93
+ dataset = dataset.map(_parse_function, num_parallel_calls = tf.data.AUTOTUNE)
94
+ dataset = dataset.map(decode_train_inputs, num_parallel_calls = tf.data.AUTOTUNE)
95
+ dataset = dataset.padded_batch(batch_size = self.args.batch_size)
96
+ return dataset
97
+
98
+
99
+ def __len__(self):
100
+ self.samples = self.load_features_from_tfrec(self.args.data_dir)
101
+ cnt = self.samples.reduce(np.int64(0), lambda x, _: x + 1)
102
+ cnt = cnt.numpy()
103
+ return cnt
104
+
105
+ class FakeAVCelebDatasetVal:
106
+
107
+ def __init__(self, args):
108
+ self.args = args
109
+ self.samples = self.load_features_from_tfrec()
110
+
111
+ def load_features_from_tfrec(self):
112
+ '''Loads raw features from a tfrecord file and returns them as raw inputs'''
113
+ ds = tf.io.matching_files(self.args.data_dir)
114
+ files = tf.random.shuffle(ds)
115
+
116
+ shards = tf.data.Dataset.from_tensor_slices(files)
117
+ dataset = shards.interleave(tf.data.TFRecordDataset)
118
+ dataset = dataset.shuffle(buffer_size=100)
119
+
120
+ dataset = dataset.map(_parse_function, num_parallel_calls = tf.data.AUTOTUNE)
121
+ dataset = dataset.map(decode_inputs, num_parallel_calls = tf.data.AUTOTUNE)
122
+ dataset = dataset.padded_batch(batch_size = self.args.batch_size)
123
+ return dataset
124
+
125
+
126
+ def __len__(self):
127
+ self.samples = self.load_features_from_tfrec(self.args.data_dir)
128
+ cnt = self.samples.reduce(np.int64(0), lambda x, _: x + 1)
129
+ cnt = cnt.numpy()
130
+ return cnt
data/generate_dataset_to_tfrecord.py ADDED
@@ -0,0 +1,178 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #Code outsourced from https://github.com/deepmind/dmvr/tree/master and later modified.
2
+
3
+ """Python script to generate TFRecords of SequenceExample from raw videos."""
4
+
5
+ import contextlib
6
+ import math
7
+ import os
8
+ import cv2
9
+ from typing import Dict, Optional, Sequence
10
+ import moviepy.editor
11
+ from absl import app
12
+ from absl import flags
13
+ import ffmpeg
14
+ import numpy as np
15
+ import pandas as pd
16
+ import tensorflow as tf
17
+
18
+ import warnings
19
+ warnings.filterwarnings('ignore')
20
+
21
+ flags.DEFINE_string("csv_path", "fakeavceleb_1k.csv", "Input csv")
22
+ flags.DEFINE_string("output_path", "fakeavceleb_tfrec", "Tfrecords output path.")
23
+ flags.DEFINE_string("video_root_path", "./",
24
+ "Root directory containing the raw videos.")
25
+ flags.DEFINE_integer(
26
+ "num_shards", 4, "Number of shards to output, -1 means"
27
+ "it will automatically adapt to the sqrt(num_examples).")
28
+ flags.DEFINE_bool("decode_audio", False, "Whether or not to decode the audio")
29
+ flags.DEFINE_bool("shuffle_csv", False, "Whether or not to shuffle the csv.")
30
+ FLAGS = flags.FLAGS
31
+
32
+
33
+ _JPEG_HEADER = b"\xff\xd8"
34
+
35
+
36
+ @contextlib.contextmanager
37
+ def _close_on_exit(writers):
38
+ """Call close on all writers on exit."""
39
+ try:
40
+ yield writers
41
+ finally:
42
+ for writer in writers:
43
+ writer.close()
44
+
45
+
46
+ def add_float_list(key: str, values: Sequence[float],
47
+ sequence: tf.train.SequenceExample):
48
+ sequence.feature_lists.feature_list[key].feature.add(
49
+ ).float_list.value[:] = values
50
+
51
+
52
+ def add_bytes_list(key: str, values: Sequence[bytes],
53
+ sequence: tf.train.SequenceExample):
54
+ sequence.feature_lists.feature_list[key].feature.add().bytes_list.value[:] = values
55
+
56
+
57
+ def add_int_list(key: str, values: Sequence[int],
58
+ sequence: tf.train.SequenceExample):
59
+ sequence.feature_lists.feature_list[key].feature.add().int64_list.value[:] = values
60
+
61
+
62
+ def set_context_int_list(key: str, value: Sequence[int],
63
+ sequence: tf.train.SequenceExample):
64
+ sequence.context.feature[key].int64_list.value[:] = value
65
+
66
+
67
+ def set_context_bytes(key: str, value: bytes,
68
+ sequence: tf.train.SequenceExample):
69
+ sequence.context.feature[key].bytes_list.value[:] = (value,)
70
+
71
+ def set_context_bytes_list(key: str, value: Sequence[bytes],
72
+ sequence: tf.train.SequenceExample):
73
+ sequence.context.feature[key].bytes_list.value[:] = value
74
+
75
+
76
+ def set_context_float(key: str, value: float,
77
+ sequence: tf.train.SequenceExample):
78
+ sequence.context.feature[key].float_list.value[:] = (value,)
79
+
80
+
81
+ def set_context_int(key: str, value: int, sequence: tf.train.SequenceExample):
82
+ sequence.context.feature[key].int64_list.value[:] = (value,)
83
+
84
+
85
+ def extract_frames(video_path, fps = 10, min_resize = 256):
86
+ '''Load n number of frames from a video'''
87
+ v_cap = cv2.VideoCapture(video_path)
88
+ v_len = int(v_cap.get(cv2.CAP_PROP_FRAME_COUNT))
89
+
90
+ if fps is None:
91
+ sample = np.arange(0, v_len)
92
+ else:
93
+ sample = np.linspace(0, v_len - 1, fps).astype(int)
94
+
95
+ frames = []
96
+ for j in range(v_len):
97
+ success = v_cap.grab()
98
+ if j in sample:
99
+ success, frame = v_cap.retrieve()
100
+ if not success:
101
+ continue
102
+
103
+ frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
104
+ frame = cv2.resize(frame, (min_resize, min_resize))
105
+ frames.append(frame)
106
+
107
+ v_cap.release()
108
+ frame_np = np.stack(frames)
109
+ return frame_np.tobytes()
110
+
111
+ def extract_audio(video_path: str,
112
+ sampling_rate: int = 16_000):
113
+ """Extract raw mono audio float list from video_path with ffmpeg."""
114
+ video = moviepy.editor.VideoFileClip(video_path)
115
+ audio = video.audio.to_soundarray()
116
+ #Load first channel.
117
+ audio = audio[:, 0]
118
+
119
+ return np.array(audio)
120
+
121
+ #Each of the features can be coerced into a tf.train.Example-compatible type using one of the _bytes_feature, _float_feature and the _int64_feature.
122
+ #You can then create a tf.train.Example message from these encoded features.
123
+
124
+ def serialize_example(video_path: str, label_name: str, label_map: Optional[Dict[str, int]] = None):
125
+ # Initiate the sequence example.
126
+ seq_example = tf.train.SequenceExample()
127
+
128
+ imgs_encoded = extract_frames(video_path, fps = 10)
129
+
130
+ audio = extract_audio(video_path)
131
+
132
+ set_context_bytes(f'image/encoded', imgs_encoded, seq_example)
133
+ set_context_bytes("video_path", video_path.encode(), seq_example)
134
+ set_context_bytes("WAVEFORM/feature/floats", audio.tobytes(), seq_example)
135
+ set_context_int("clip/label/index", label_map[label_name], seq_example)
136
+ set_context_bytes("clip/label/text", label_name.encode(), seq_example)
137
+ return seq_example
138
+
139
+
140
+ def main(argv):
141
+ del argv
142
+ # reads the input csv.
143
+ input_csv = pd.read_csv(FLAGS.csv_path)
144
+ if FLAGS.num_shards == -1:
145
+ num_shards = int(math.sqrt(len(input_csv)))
146
+ else:
147
+ num_shards = FLAGS.num_shards
148
+ # Set up the TFRecordWriters.
149
+ basename = os.path.splitext(os.path.basename(FLAGS.csv_path))[0]
150
+ shard_names = [
151
+ os.path.join(FLAGS.output_path, f"{basename}-{i:05d}-of-{num_shards:05d}")
152
+ for i in range(num_shards)
153
+ ]
154
+ writers = [tf.io.TFRecordWriter(shard_name) for shard_name in shard_names]
155
+
156
+ if "label" in input_csv:
157
+ unique_labels = list(set(input_csv["label"].values))
158
+ l_map = {unique_labels[i]: i for i in range(len(unique_labels))}
159
+ else:
160
+ l_map = None
161
+
162
+ if FLAGS.shuffle_csv:
163
+ input_csv = input_csv.sample(frac=1)
164
+ with _close_on_exit(writers) as writers:
165
+ row_count = 0
166
+ for row in input_csv.itertuples():
167
+ index = row[0]
168
+ v = row[1]
169
+ if os.name == 'posix':
170
+ v = v.str.replace('\\', '/')
171
+ l = row[2]
172
+ row_count += 1
173
+ print("Processing example %d of %d (%d%%) \r" %(row_count, len(input_csv), row_count * 100 / len(input_csv)), end="")
174
+ seq_ex = serialize_example(video_path = v, label_name = l,label_map = l_map)
175
+ writers[index % len(writers)].write(seq_ex.SerializeToString())
176
+
177
+ if __name__ == "__main__":
178
+ app.run(main)
datasets/fakeavceleb_100.csv ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ video_path,label
2
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id00076/00109.mp4,real
3
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id00166/00010.mp4,real
4
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id00173/00118.mp4,real
5
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id00366/00118.mp4,real
6
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id00391/00052.mp4,real
7
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id00475/00099.mp4,real
8
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id00476/00109.mp4,real
9
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id00478/00206.mp4,real
10
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id00518/00031.mp4,real
11
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id00701/00092.mp4,real
12
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id00761/00072.mp4,real
13
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id00781/00092.mp4,real
14
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id00830/00143.mp4,real
15
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id00944/00135.mp4,real
16
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id00987/00160.mp4,real
17
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id01036/00010.mp4,real
18
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id01076/00005.mp4,real
19
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id01170/00021.mp4,real
20
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id01171/00053.mp4,real
21
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id01179/00160.mp4,real
22
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id01207/00320.mp4,real
23
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id01236/00005.mp4,real
24
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id01392/00167.mp4,real
25
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id01452/00001.mp4,real
26
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id01521/00109.mp4,real
27
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id01528/00017.mp4,real
28
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id01530/00002.mp4,real
29
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id01544/00044.mp4,real
30
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id01597/00005.mp4,real
31
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id01598/00044.mp4,real
32
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id01610/00090.mp4,real
33
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id01637/00002.mp4,real
34
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id01691/00045.mp4,real
35
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id01717/00005.mp4,real
36
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id01779/00010.mp4,real
37
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id01835/00130.mp4,real
38
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id01856/00006.mp4,real
39
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id01920/00099.mp4,real
40
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id01933/00028.mp4,real
41
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id01972/00078.mp4,real
42
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id01995/00071.mp4,real
43
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id02005/00052.mp4,real
44
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id02040/00476.mp4,real
45
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id02051/00015.mp4,real
46
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id02268/00036.mp4,real
47
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id02296/00019.mp4,real
48
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id02316/00094.mp4,real
49
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id02342/00191.mp4,real
50
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id02494/00050.mp4,real
51
+ FakeAVCeleb/RealVideo-RealAudio/African/men/id04727/00007.mp4,real
52
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_10_id00476_wavtolip.mp4,fake
53
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_10_id01076_wavtolip.mp4,fake
54
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_10_id01179_wavtolip.mp4,fake
55
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_10_id02005_wavtolip.mp4,fake
56
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_10_id02342_wavtolip.mp4,fake
57
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_12_id00518_wavtolip.mp4,fake
58
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_12_id00761_wavtolip.mp4,fake
59
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_12_id00987_wavtolip.mp4,fake
60
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_12_id01856_wavtolip.mp4,fake
61
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_12_id02296_wavtolip.mp4,fake
62
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_2_id00166_wavtolip.mp4,fake
63
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_2_id00701_wavtolip.mp4,fake
64
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_2_id01236_wavtolip.mp4,fake
65
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_2_id01521_wavtolip.mp4,fake
66
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_2_id01598_wavtolip.mp4,fake
67
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_4_id01392_wavtolip.mp4,fake
68
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_4_id01528_wavtolip.mp4,fake
69
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_4_id01691_wavtolip.mp4,fake
70
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_4_id01995_wavtolip.mp4,fake
71
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_4_id02296_wavtolip.mp4,fake
72
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_7_id00166_wavtolip.mp4,fake
73
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_7_id00478_wavtolip.mp4,fake
74
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_7_id01452_wavtolip.mp4,fake
75
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_7_id01717_wavtolip.mp4,fake
76
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_7_id01995_wavtolip.mp4,fake
77
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_8_id00166_wavtolip.mp4,fake
78
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_8_id00701_wavtolip.mp4,fake
79
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_8_id00761_wavtolip.mp4,fake
80
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_8_id01170_wavtolip.mp4,fake
81
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_8_id02005_wavtolip.mp4,fake
82
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_9_id00076_wavtolip.mp4,fake
83
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_9_id01036_wavtolip.mp4,fake
84
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_9_id01452_wavtolip.mp4,fake
85
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_9_id01528_wavtolip.mp4,fake
86
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00076/00109_9_id02005_wavtolip.mp4,fake
87
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00166/00010_id01637_5VjcPZm8knM_faceswap_id00166_wavtolip.mp4,fake
88
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00166/00010_id01637_5VjcPZm8knM_faceswap_id00761_wavtolip.mp4,fake
89
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00166/00010_id01637_5VjcPZm8knM_faceswap_id01171_wavtolip.mp4,fake
90
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00166/00010_id01637_5VjcPZm8knM_faceswap_id01530_wavtolip.mp4,fake
91
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00166/00010_id01637_5VjcPZm8knM_faceswap_id01598_wavtolip.mp4,fake
92
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00173/00118_id00476_UgdYVJ6xPYg_faceswap_id00166_wavtolip.mp4,fake
93
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00173/00118_id00476_UgdYVJ6xPYg_faceswap_id00173_wavtolip.mp4,fake
94
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00173/00118_id00476_UgdYVJ6xPYg_faceswap_id01530_wavtolip.mp4,fake
95
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00173/00118_id00476_UgdYVJ6xPYg_faceswap_id01598_wavtolip.mp4,fake
96
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00173/00118_id00476_UgdYVJ6xPYg_faceswap_id01779_wavtolip.mp4,fake
97
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00366/00118_id00076_Isiq7cA-DNE_faceswap_id01170_wavtolip.mp4,fake
98
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00366/00118_id00076_Isiq7cA-DNE_faceswap_id01779_wavtolip.mp4,fake
99
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00366/00118_id00076_Isiq7cA-DNE_faceswap_id02316_wavtolip.mp4,fake
100
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00366/00118_id00076_Isiq7cA-DNE_faceswap_id02342_wavtolip.mp4,fake
101
+ FakeAVCeleb/FakeVideo-FakeAudio/African/men/id00366/00118_id00076_Isiq7cA-DNE_faceswap_id02494_wavtolip.mp4,fake
datasets/fakeavceleb_1k.csv ADDED
@@ -0,0 +1,1001 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ video_path,label
2
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id00076\00109.mp4,real
3
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id00166\00010.mp4,real
4
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id00173\00118.mp4,real
5
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id00366\00118.mp4,real
6
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id00391\00052.mp4,real
7
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id00475\00099.mp4,real
8
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id00476\00109.mp4,real
9
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id00478\00206.mp4,real
10
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id00518\00031.mp4,real
11
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id00701\00092.mp4,real
12
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id00761\00072.mp4,real
13
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id00781\00092.mp4,real
14
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id00830\00143.mp4,real
15
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id00944\00135.mp4,real
16
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id00987\00160.mp4,real
17
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id01036\00010.mp4,real
18
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id01076\00005.mp4,real
19
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id01170\00021.mp4,real
20
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id01171\00053.mp4,real
21
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id01179\00160.mp4,real
22
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id01207\00320.mp4,real
23
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id01236\00005.mp4,real
24
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id01392\00167.mp4,real
25
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id01452\00001.mp4,real
26
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id01521\00109.mp4,real
27
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id01528\00017.mp4,real
28
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id01530\00002.mp4,real
29
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id01544\00044.mp4,real
30
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id01597\00005.mp4,real
31
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id01598\00044.mp4,real
32
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id01610\00090.mp4,real
33
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id01637\00002.mp4,real
34
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id01691\00045.mp4,real
35
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id01717\00005.mp4,real
36
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id01779\00010.mp4,real
37
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id01835\00130.mp4,real
38
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id01856\00006.mp4,real
39
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id01920\00099.mp4,real
40
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id01933\00028.mp4,real
41
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id01972\00078.mp4,real
42
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id01995\00071.mp4,real
43
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id02005\00052.mp4,real
44
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id02040\00476.mp4,real
45
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id02051\00015.mp4,real
46
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id02268\00036.mp4,real
47
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id02296\00019.mp4,real
48
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id02316\00094.mp4,real
49
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id02342\00191.mp4,real
50
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id02494\00050.mp4,real
51
+ FakeAVCeleb\RealVideo-RealAudio\African\men\id04727\00007.mp4,real
52
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id00220\00027.mp4,real
53
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id00359\00053.mp4,real
54
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id00371\00099.mp4,real
55
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id00460\00005.mp4,real
56
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id00568\00384.mp4,real
57
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id00577\00010.mp4,real
58
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id00592\00017.mp4,real
59
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id00707\00052.mp4,real
60
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id00829\00271.mp4,real
61
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id00832\00078.mp4,real
62
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id01178\00028.mp4,real
63
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id01532\00065.mp4,real
64
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id01661\00059.mp4,real
65
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id01783\00015.mp4,real
66
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id01838\00126.mp4,real
67
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id01907\00148.mp4,real
68
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id02071\00195.mp4,real
69
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id02301\00092.mp4,real
70
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id02508\00083.mp4,real
71
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id02586\00042.mp4,real
72
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id02617\00028.mp4,real
73
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id02721\00424.mp4,real
74
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id02808\00056.mp4,real
75
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id02824\00130.mp4,real
76
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id02838\00080.mp4,real
77
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id02948\00298.mp4,real
78
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id03103\00130.mp4,real
79
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id03569\00065.mp4,real
80
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id03656\00052.mp4,real
81
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id03658\00077.mp4,real
82
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id03713\00249.mp4,real
83
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id03747\00273.mp4,real
84
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id04055\00001.mp4,real
85
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id04245\00072.mp4,real
86
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id04374\00032.mp4,real
87
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id04376\00181.mp4,real
88
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id04437\00002.mp4,real
89
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id04540\00078.mp4,real
90
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id04547\00052.mp4,real
91
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id04689\00005.mp4,real
92
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id04705\00408.mp4,real
93
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id04736\00083.mp4,real
94
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id04820\00015.mp4,real
95
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id04939\00174.mp4,real
96
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id05106\00078.mp4,real
97
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id05231\00149.mp4,real
98
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id05235\00052.mp4,real
99
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id05251\00033.mp4,real
100
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id05252\00052.mp4,real
101
+ FakeAVCeleb\RealVideo-RealAudio\African\women\id05980\00143.mp4,real
102
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id00018\00181.mp4,real
103
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id00020\00206.mp4,real
104
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id00021\00010.mp4,real
105
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id00029\00288.mp4,real
106
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id00049\00118.mp4,real
107
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id00052\00015.mp4,real
108
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id00060\00307.mp4,real
109
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id00062\00278.mp4,real
110
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id00087\00002.mp4,real
111
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id00088\00005.mp4,real
112
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id00169\00021.mp4,real
113
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id00179\00143.mp4,real
114
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id00184\00241.mp4,real
115
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id00243\00037.mp4,real
116
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id00264\00257.mp4,real
117
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id00345\00243.mp4,real
118
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id00529\00409.mp4,real
119
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id00696\00005.mp4,real
120
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id00708\00043.mp4,real
121
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id00775\00092.mp4,real
122
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id00777\00160.mp4,real
123
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id00943\00304.mp4,real
124
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id00945\00107.mp4,real
125
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id00971\00253.mp4,real
126
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id01035\00012.mp4,real
127
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id01042\00154.mp4,real
128
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id01044\00336.mp4,real
129
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id01048\00160.mp4,real
130
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id01096\00037.mp4,real
131
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id01105\00083.mp4,real
132
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id01124\00063.mp4,real
133
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id01163\00195.mp4,real
134
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id01168\00028.mp4,real
135
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id01172\00015.mp4,real
136
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id01175\00025.mp4,real
137
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id01182\00167.mp4,real
138
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id01192\00217.mp4,real
139
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id01201\00028.mp4,real
140
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id01210\00283.mp4,real
141
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id01211\00023.mp4,real
142
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id01239\00280.mp4,real
143
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id03525\00048.mp4,real
144
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id03668\00143.mp4,real
145
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id03678\00078.mp4,real
146
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id03757\00149.mp4,real
147
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id04034\00009.mp4,real
148
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id04073\00021.mp4,real
149
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id04216\00470.mp4,real
150
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id04219\00130.mp4,real
151
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\men\id04221\00053.mp4,real
152
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id00025\00025.mp4,real
153
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id00097\00162.mp4,real
154
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id00098\00004.mp4,real
155
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id00100\00028.mp4,real
156
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id00145\00043.mp4,real
157
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id00180\00206.mp4,real
158
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id00190\00072.mp4,real
159
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id00231\00037.mp4,real
160
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id00261\00048.mp4,real
161
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id00272\00195.mp4,real
162
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id00291\00052.mp4,real
163
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id00381\00030.mp4,real
164
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id00383\00171.mp4,real
165
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id00385\00439.mp4,real
166
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id00398\00016.mp4,real
167
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id00418\00052.mp4,real
168
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id00428\00017.mp4,real
169
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id00431\00039.mp4,real
170
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id00458\00072.mp4,real
171
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id00462\00143.mp4,real
172
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id00555\00005.mp4,real
173
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id00575\00092.mp4,real
174
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id00616\00305.mp4,real
175
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id00618\00195.mp4,real
176
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id00680\00110.mp4,real
177
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id00752\00340.mp4,real
178
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id00835\00195.mp4,real
179
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id00841\00078.mp4,real
180
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id00842\00043.mp4,real
181
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id00848\00028.mp4,real
182
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id01004\00028.mp4,real
183
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id01005\00028.mp4,real
184
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id01075\00160.mp4,real
185
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id01091\00236.mp4,real
186
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id01216\00025.mp4,real
187
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id01217\00005.mp4,real
188
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id01223\00255.mp4,real
189
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id01225\00300.mp4,real
190
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id01227\00052.mp4,real
191
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id01231\00015.mp4,real
192
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id01238\00037.mp4,real
193
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id01245\00028.mp4,real
194
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id01248\00005.mp4,real
195
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id02464\00002.mp4,real
196
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id02466\00136.mp4,real
197
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id03556\00043.mp4,real
198
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id03605\00048.mp4,real
199
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id03696\00160.mp4,real
200
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id03707\00055.mp4,real
201
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (American)\women\id03781\00113.mp4,real
202
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id00056\00028.mp4,real
203
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id00126\00173.mp4,real
204
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id00560\00041.mp4,real
205
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id00597\00019.mp4,real
206
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id00740\00015.mp4,real
207
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id00863\00069.mp4,real
208
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id01204\00092.mp4,real
209
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id01212\00183.mp4,real
210
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id01215\00001.mp4,real
211
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id01589\00017.mp4,real
212
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id01683\00052.mp4,real
213
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id02332\00055.mp4,real
214
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id02365\00028.mp4,real
215
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id02493\00073.mp4,real
216
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id02553\00043.mp4,real
217
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id02561\02561.mp4,real
218
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id03028\00466.mp4,real
219
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id03168\03168.mp4,real
220
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id03889\00052.mp4,real
221
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id03965\00051.mp4,real
222
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id04111\00015.mp4,real
223
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id04222\00078.mp4,real
224
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id04687\00066.mp4,real
225
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id04691\1.mp4,real
226
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id04726\00245.mp4,real
227
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id04774\00032.mp4,real
228
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id04789\002121.mp4,real
229
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id04884\00028.mp4,real
230
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id05268\00010.mp4,real
231
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id05332\00065.mp4,real
232
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id05383\00015.mp4,real
233
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id05479\05479.mp4,real
234
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id05743\00015.mp4,real
235
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id06152\06152.mp4,real
236
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id06269\00005.mp4,real
237
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id06467\00010.mp4,real
238
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id06470\00052.mp4,real
239
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id06535\00183.mp4,real
240
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id06591\00021.mp4,real
241
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id06594\00002.mp4,real
242
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id06776\00021.mp4,real
243
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id06807\00015.mp4,real
244
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id06878\00001.mp4,real
245
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id07102\00052.mp4,real
246
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id07338\00003.mp4,real
247
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id08299\00110.mp4,real
248
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id08613\00074.mp4,real
249
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id08652\00006.mp4,real
250
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id09053\00005.mp4,real
251
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\men\id09143\00056.mp4,real
252
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id00137\00025.mp4,real
253
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id00363\00014.mp4,real
254
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id00430\00209.mp4,real
255
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id00566\00032.mp4,real
256
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id00579\00030.mp4,real
257
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id00582\00006.mp4,real
258
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id00763\00074.mp4,real
259
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id00935\00005.mp4,real
260
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id01281\00040.mp4,real
261
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id01451\00099.mp4,real
262
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id02587\00020.mp4,real
263
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id02807\00032.mp4,real
264
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id03211\00032.mp4,real
265
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id03379\00032.mp4,real
266
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id03940\00025.mp4,real
267
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id04057\00015.mp4,real
268
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id04066\00013.mp4,real
269
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id04144\00028.mp4,real
270
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id04414\00001.mp4,real
271
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id04701\00017.mp4,real
272
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id05576\00368.mp4,real
273
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id05620\00005.mp4,real
274
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id05631\00073.mp4,real
275
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id05844\00072.mp4,real
276
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id06054\00010.mp4,real
277
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id06060\00219.mp4,real
278
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id06061\00002.mp4,real
279
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id06065\00160.mp4,real
280
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id06066\00028.mp4,real
281
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id06158\00015.mp4,real
282
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id06225\00005.mp4,real
283
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id06388\00005.mp4,real
284
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id06427\00138.mp4,real
285
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id06443\00232.mp4,real
286
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id06462\00014.mp4,real
287
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id07039\00105.mp4,real
288
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id07383\00011.mp4,real
289
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id07739\00019.mp4,real
290
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id07799\00063.mp4,real
291
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id07901\00040.mp4,real
292
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id08139\00067.mp4,real
293
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id08397\00167.mp4,real
294
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id08402\00092.mp4,real
295
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id08819\00052.mp4,real
296
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id09116\00026.mp4,real
297
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id09125\00098.mp4,real
298
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id09171\00092.mp4,real
299
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id09174\00015.mp4,real
300
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id09175\00072.mp4,real
301
+ FakeAVCeleb\RealVideo-RealAudio\Asian (East)\women\id09181\00048.mp4,real
302
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00055\00120.mp4,real
303
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00063\00021.mp4,real
304
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00171\00092.mp4,real
305
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00183\00015.mp4,real
306
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00185\00015.mp4,real
307
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00186\00120.mp4,real
308
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00187\00360.mp4,real
309
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00192\00078.mp4,real
310
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00225\00078.mp4,real
311
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00241\00015.mp4,real
312
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00253\00021.mp4,real
313
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00265\00130.mp4,real
314
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00266\00470.mp4,real
315
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00282\00268.mp4,real
316
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00292\00072.mp4,real
317
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00305\00113.mp4,real
318
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00306\00015.mp4,real
319
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00358\00217.mp4,real
320
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00368\00078.mp4,real
321
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00415\00017.mp4,real
322
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00498\00014.mp4,real
323
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00519\00028.mp4,real
324
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00520\00187.mp4,real
325
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00535\00005.mp4,real
326
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00548\00015.mp4,real
327
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00554\00028.mp4,real
328
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00559\00078.mp4,real
329
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00594\00005.mp4,real
330
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00694\00340.mp4,real
331
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00709\00206.mp4,real
332
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00909\00037.mp4,real
333
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00919\00063.mp4,real
334
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00946\00126.mp4,real
335
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00963\00028.mp4,real
336
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00981\00092.mp4,real
337
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00990\00160.mp4,real
338
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id00999\00028.mp4,real
339
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id01051\00322.mp4,real
340
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id01052\00076.mp4,real
341
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id01058\00005.mp4,real
342
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id01098\00044.mp4,real
343
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id01099\00206.mp4,real
344
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id01102\00197.mp4,real
345
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id01123\00072.mp4,real
346
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id01126\00040.mp4,real
347
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id01154\00118.mp4,real
348
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id01156\00078.mp4,real
349
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id01157\00048.mp4,real
350
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id02567\00040.mp4,real
351
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\men\id03205\00150.mp4,real
352
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00042\00028.mp4,real
353
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00068\00004.mp4,real
354
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00071\00014.mp4,real
355
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00188\00020.mp4,real
356
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00232\00025.mp4,real
357
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00234\00063.mp4,real
358
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00262\00028.mp4,real
359
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00270\00088.mp4,real
360
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00271\00028.mp4,real
361
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00287\00005.mp4,real
362
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00325\00015.mp4,real
363
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00328\00092.mp4,real
364
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00330\00118.mp4,real
365
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00332\00293.mp4,real
366
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00365\00078.mp4,real
367
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00373\00028.mp4,real
368
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00374\00311.mp4,real
369
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00379\00043.mp4,real
370
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00395\00420.mp4,real
371
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00403\00052.mp4,real
372
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00434\00046.mp4,real
373
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00484\00202.mp4,real
374
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00491\00122.mp4,real
375
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00495\00027.mp4,real
376
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00496\00015.mp4,real
377
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00569\00239.mp4,real
378
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00581\00010.mp4,real
379
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00589\00130.mp4,real
380
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00591\00001.mp4,real
381
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00633\00088.mp4,real
382
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00634\00078.mp4,real
383
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00735\00037.mp4,real
384
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00806\00005.mp4,real
385
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00813\00169.mp4,real
386
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00823\00125.mp4,real
387
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00826\00065.mp4,real
388
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id00897\00005.mp4,real
389
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id01001\00086.mp4,real
390
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id01002\00043.mp4,real
391
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id01018\00072.mp4,real
392
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id03371\00430.mp4,real
393
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id03589\00002.mp4,real
394
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id03620\00081.mp4,real
395
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id03649\00001.mp4,real
396
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id03651\00092.mp4,real
397
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id03716\00040.mp4,real
398
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id03816\00093.mp4,real
399
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id03844\00028.mp4,real
400
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id03858\00092.mp4,real
401
+ FakeAVCeleb\RealVideo-RealAudio\Caucasian (European)\women\id03941\00021.mp4,real
402
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id00032\00028.mp4,real
403
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id00033\00276.mp4,real
404
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id00078\00114.mp4,real
405
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id00082\00052.mp4,real
406
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id00103\00241.mp4,real
407
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id00350\00015.mp4,real
408
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id00414\00052.mp4,real
409
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id00459\00382.mp4,real
410
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id00685\00146.mp4,real
411
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id00732\00118.mp4,real
412
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id00745\00165.mp4,real
413
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id00769\00015.mp4,real
414
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id00773\00038.mp4,real
415
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id00816\00118.mp4,real
416
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id00857\00347.mp4,real
417
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id00860\00154.mp4,real
418
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id03180\00039.mp4,real
419
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id03344\00114.mp4,real
420
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id03599\00072.mp4,real
421
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id03945\00063.mp4,real
422
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id04526\00317.mp4,real
423
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id04537\00083.mp4,real
424
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id04554\00118.mp4,real
425
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id04560\00195.mp4,real
426
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id04561\00248.mp4,real
427
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id04562\00221.mp4,real
428
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id04599\00111.mp4,real
429
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id04601\00118.mp4,real
430
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id04928\00027.mp4,real
431
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id06334\00015.mp4,real
432
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id06354\00021.mp4,real
433
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id06355\00347.mp4,real
434
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id06753\00021.mp4,real
435
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id07058\00010.mp4,real
436
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id07108\00412.mp4,real
437
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id07161\00159.mp4,real
438
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id07163\00141.mp4,real
439
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id07165\00368.mp4,real
440
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id07179\00206.mp4,real
441
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id07182\00040.mp4,real
442
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id07194\00014.mp4,real
443
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id07195\00186.mp4,real
444
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id07200\00045.mp4,real
445
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id07210\00005.mp4,real
446
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id07233\00010.mp4,real
447
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id07463\00028.mp4,real
448
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id07768\00143.mp4,real
449
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id08313\00202.mp4,real
450
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id08314\00028.mp4,real
451
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\men\id08457\00417.mp4,real
452
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id00043\00135.mp4,real
453
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id00080\00281.mp4,real
454
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id00149\00284.mp4,real
455
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id00235\00052.mp4,real
456
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id00417\00069.mp4,real
457
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id00461\00043.mp4,real
458
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id00488\00028.mp4,real
459
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id00739\00005.mp4,real
460
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id00747\00053.mp4,real
461
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id01026\00083.mp4,real
462
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id02089\00092.mp4,real
463
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id02310\00139.mp4,real
464
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id02619\00015.mp4,real
465
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id03559\00023.mp4,real
466
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id03815\00118.mp4,real
467
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id03897\00021.mp4,real
468
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id03985\00005.mp4,real
469
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id04070\00072.mp4,real
470
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id04490\00054.mp4,real
471
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id04529\00186.mp4,real
472
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id04530\00231.mp4,real
473
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id04564\00417.mp4,real
474
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id04582\00180.mp4,real
475
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id04583\00077.mp4,real
476
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id04927\00013.mp4,real
477
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id05434\00052.mp4,real
478
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id05435\00107.mp4,real
479
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id05478\00135.mp4,real
480
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id05845\00027.mp4,real
481
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id05920\00161.mp4,real
482
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id05931\00013.mp4,real
483
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id06232\00025.mp4,real
484
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id06254\00043.mp4,real
485
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id06268\00159.mp4,real
486
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id06343\00023.mp4,real
487
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id06428\00043.mp4,real
488
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id06437\00028.mp4,real
489
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id06438\00110.mp4,real
490
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id06439\00118.mp4,real
491
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id06445\00150.mp4,real
492
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id06752\00221.mp4,real
493
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id07008\00175.mp4,real
494
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id07049\00043.mp4,real
495
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id07051\00083.mp4,real
496
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id07078\00405.mp4,real
497
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id07136\00052.mp4,real
498
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id07236\00143.mp4,real
499
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id07377\00025.mp4,real
500
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id07686\00254.mp4,real
501
+ FakeAVCeleb\RealVideo-RealAudio\Asian (South)\women\id07689\00028.mp4,real
502
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_10_id00476_wavtolip.mp4,fake
503
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_10_id01076_wavtolip.mp4,fake
504
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_10_id01179_wavtolip.mp4,fake
505
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_10_id02005_wavtolip.mp4,fake
506
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_10_id02342_wavtolip.mp4,fake
507
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_12_id00518_wavtolip.mp4,fake
508
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_12_id00761_wavtolip.mp4,fake
509
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_12_id00987_wavtolip.mp4,fake
510
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_12_id01856_wavtolip.mp4,fake
511
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_12_id02296_wavtolip.mp4,fake
512
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_2_id00166_wavtolip.mp4,fake
513
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_2_id00701_wavtolip.mp4,fake
514
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_2_id01236_wavtolip.mp4,fake
515
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_2_id01521_wavtolip.mp4,fake
516
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_2_id01598_wavtolip.mp4,fake
517
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_4_id01392_wavtolip.mp4,fake
518
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_4_id01528_wavtolip.mp4,fake
519
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_4_id01691_wavtolip.mp4,fake
520
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_4_id01995_wavtolip.mp4,fake
521
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_4_id02296_wavtolip.mp4,fake
522
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_7_id00166_wavtolip.mp4,fake
523
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_7_id00478_wavtolip.mp4,fake
524
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_7_id01452_wavtolip.mp4,fake
525
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_7_id01717_wavtolip.mp4,fake
526
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_7_id01995_wavtolip.mp4,fake
527
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_8_id00166_wavtolip.mp4,fake
528
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_8_id00701_wavtolip.mp4,fake
529
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_8_id00761_wavtolip.mp4,fake
530
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_8_id01170_wavtolip.mp4,fake
531
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_8_id02005_wavtolip.mp4,fake
532
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_9_id00076_wavtolip.mp4,fake
533
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_9_id01036_wavtolip.mp4,fake
534
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_9_id01452_wavtolip.mp4,fake
535
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_9_id01528_wavtolip.mp4,fake
536
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00076\00109_9_id02005_wavtolip.mp4,fake
537
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00166\00010_id01637_5VjcPZm8knM_faceswap_id00166_wavtolip.mp4,fake
538
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00166\00010_id01637_5VjcPZm8knM_faceswap_id00761_wavtolip.mp4,fake
539
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00166\00010_id01637_5VjcPZm8knM_faceswap_id01171_wavtolip.mp4,fake
540
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00166\00010_id01637_5VjcPZm8knM_faceswap_id01530_wavtolip.mp4,fake
541
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00166\00010_id01637_5VjcPZm8knM_faceswap_id01598_wavtolip.mp4,fake
542
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00173\00118_id00476_UgdYVJ6xPYg_faceswap_id00166_wavtolip.mp4,fake
543
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00173\00118_id00476_UgdYVJ6xPYg_faceswap_id00173_wavtolip.mp4,fake
544
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00173\00118_id00476_UgdYVJ6xPYg_faceswap_id01530_wavtolip.mp4,fake
545
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00173\00118_id00476_UgdYVJ6xPYg_faceswap_id01598_wavtolip.mp4,fake
546
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00173\00118_id00476_UgdYVJ6xPYg_faceswap_id01779_wavtolip.mp4,fake
547
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00366\00118_id00076_Isiq7cA-DNE_faceswap_id01170_wavtolip.mp4,fake
548
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00366\00118_id00076_Isiq7cA-DNE_faceswap_id01779_wavtolip.mp4,fake
549
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00366\00118_id00076_Isiq7cA-DNE_faceswap_id02316_wavtolip.mp4,fake
550
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00366\00118_id00076_Isiq7cA-DNE_faceswap_id02342_wavtolip.mp4,fake
551
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00366\00118_id00076_Isiq7cA-DNE_faceswap_id02494_wavtolip.mp4,fake
552
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00391\00052_id00476_UgdYVJ6xPYg_faceswap_id00761_wavtolip.mp4,fake
553
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00391\00052_id00476_UgdYVJ6xPYg_faceswap_id01179_wavtolip.mp4,fake
554
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00391\00052_id00476_UgdYVJ6xPYg_faceswap_id01610_wavtolip.mp4,fake
555
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00391\00052_id00476_UgdYVJ6xPYg_faceswap_id02005_wavtolip.mp4,fake
556
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00391\00052_id00476_UgdYVJ6xPYg_faceswap_id02342_wavtolip.mp4,fake
557
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00475\00099_0_id01530_wavtolip.mp4,fake
558
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00475\00099_0_id01920_wavtolip.mp4,fake
559
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00475\00099_0_id01972_wavtolip.mp4,fake
560
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00475\00099_0_id02316_wavtolip.mp4,fake
561
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00475\00099_0_id04727_wavtolip.mp4,fake
562
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00476\00109_id00476_UgdYVJ6xPYg_faceswap_id00076_wavtolip.mp4,fake
563
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00476\00109_id00476_UgdYVJ6xPYg_faceswap_id00761_wavtolip.mp4,fake
564
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00476\00109_id00476_UgdYVJ6xPYg_faceswap_id00781_wavtolip.mp4,fake
565
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00476\00109_id00476_UgdYVJ6xPYg_faceswap_id00830_wavtolip.mp4,fake
566
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00476\00109_id00476_UgdYVJ6xPYg_faceswap_id01207_wavtolip.mp4,fake
567
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00476\00109_id00781_fvsSae9yc0A_faceswap_id00476_wavtolip.mp4,fake
568
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00476\00109_id00781_fvsSae9yc0A_faceswap_id00944_wavtolip.mp4,fake
569
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00476\00109_id00781_fvsSae9yc0A_faceswap_id01597_wavtolip.mp4,fake
570
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00476\00109_id00781_fvsSae9yc0A_faceswap_id01691_wavtolip.mp4,fake
571
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00476\00109_id00781_fvsSae9yc0A_faceswap_id04727_wavtolip.mp4,fake
572
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00478\00109_11_id00478_wavtolip.mp4,fake
573
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00478\00109_11_id01610_wavtolip.mp4,fake
574
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00478\00109_11_id01856_wavtolip.mp4,fake
575
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00478\00109_11_id02005_wavtolip.mp4,fake
576
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00478\00109_11_id02342_wavtolip.mp4,fake
577
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00518\00031_0_id00166_wavtolip.mp4,fake
578
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00518\00031_0_id00391_wavtolip.mp4,fake
579
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00518\00031_0_id00830_wavtolip.mp4,fake
580
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00518\00031_0_id01170_wavtolip.mp4,fake
581
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00518\00031_0_id02268_wavtolip.mp4,fake
582
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00518\00031_1_id00478_wavtolip.mp4,fake
583
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00518\00031_1_id00987_wavtolip.mp4,fake
584
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00518\00031_1_id01076_wavtolip.mp4,fake
585
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00518\00031_1_id01207_wavtolip.mp4,fake
586
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00518\00031_1_id02494_wavtolip.mp4,fake
587
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00518\00031_2_id01544_wavtolip.mp4,fake
588
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00518\00031_2_id01598_wavtolip.mp4,fake
589
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00518\00031_2_id01717_wavtolip.mp4,fake
590
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00518\00031_2_id01835_wavtolip.mp4,fake
591
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00518\00031_2_id02296_wavtolip.mp4,fake
592
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00518\00031_3_id00475_wavtolip.mp4,fake
593
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00518\00031_3_id01528_wavtolip.mp4,fake
594
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00518\00031_3_id01691_wavtolip.mp4,fake
595
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00518\00031_3_id02040_wavtolip.mp4,fake
596
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00518\00031_3_id02268_wavtolip.mp4,fake
597
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00701\00092_id01036_AohKaMtIHxA_faceswap_id00391_wavtolip.mp4,fake
598
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00701\00092_id01036_AohKaMtIHxA_faceswap_id01392_wavtolip.mp4,fake
599
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00701\00092_id01036_AohKaMtIHxA_faceswap_id01528_wavtolip.mp4,fake
600
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00701\00092_id01036_AohKaMtIHxA_faceswap_id01610_wavtolip.mp4,fake
601
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00701\00092_id01036_AohKaMtIHxA_faceswap_id01972_wavtolip.mp4,fake
602
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00761\00072_id01835_UZbWA0QfXXA_faceswap_id00478_wavtolip.mp4,fake
603
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00761\00072_id01835_UZbWA0QfXXA_faceswap_id00761_wavtolip.mp4,fake
604
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00761\00072_id01835_UZbWA0QfXXA_faceswap_id01036_wavtolip.mp4,fake
605
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00761\00072_id01835_UZbWA0QfXXA_faceswap_id01528_wavtolip.mp4,fake
606
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00761\00072_id01835_UZbWA0QfXXA_faceswap_id01717_wavtolip.mp4,fake
607
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00781\00092_id00476_UgdYVJ6xPYg_faceswap_id01170_wavtolip.mp4,fake
608
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00781\00092_id00476_UgdYVJ6xPYg_faceswap_id01610_wavtolip.mp4,fake
609
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00781\00092_id00476_UgdYVJ6xPYg_faceswap_id01972_wavtolip.mp4,fake
610
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00781\00092_id00476_UgdYVJ6xPYg_faceswap_id01995_wavtolip.mp4,fake
611
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00781\00092_id00476_UgdYVJ6xPYg_faceswap_id02494_wavtolip.mp4,fake
612
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00830\00143_id00076_Isiq7cA-DNE_faceswap_id00478_wavtolip.mp4,fake
613
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00830\00143_id00076_Isiq7cA-DNE_faceswap_id01207_wavtolip.mp4,fake
614
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00830\00143_id00076_Isiq7cA-DNE_faceswap_id01544_wavtolip.mp4,fake
615
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00830\00143_id00076_Isiq7cA-DNE_faceswap_id01920_wavtolip.mp4,fake
616
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00944\00135_id01528_SBAS9Kcb8QY_faceswap_id01179_wavtolip.mp4,fake
617
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00987\00160_id02005_7_Egh9mW5y4_faceswap_id01236_wavtolip.mp4,fake
618
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00987\00160_id02005_7_Egh9mW5y4_faceswap_id01528_wavtolip.mp4,fake
619
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00987\00160_id02005_7_Egh9mW5y4_faceswap_id01691_wavtolip.mp4,fake
620
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00987\00160_id02005_7_Egh9mW5y4_faceswap_id02040_wavtolip.mp4,fake
621
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id00987\00160_id02005_7_Egh9mW5y4_faceswap_id02342_wavtolip.mp4,fake
622
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01036\00010_id00701_lW6uzLIOwd0_faceswap_id00475_wavtolip.mp4,fake
623
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01036\00010_id00701_lW6uzLIOwd0_faceswap_id01171_wavtolip.mp4,fake
624
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01036\00010_id00701_lW6uzLIOwd0_faceswap_id01530_wavtolip.mp4,fake
625
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01036\00010_id00701_lW6uzLIOwd0_faceswap_id01597_wavtolip.mp4,fake
626
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01076\00005_id01207_mt129WTRSII_faceswap_id00391_wavtolip.mp4,fake
627
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01076\00005_id01207_mt129WTRSII_faceswap_id00781_wavtolip.mp4,fake
628
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01076\00005_id01207_mt129WTRSII_faceswap_id01530_wavtolip.mp4,fake
629
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01076\00005_id01207_mt129WTRSII_faceswap_id02040_wavtolip.mp4,fake
630
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01076\00005_id01207_mt129WTRSII_faceswap_id02342_wavtolip.mp4,fake
631
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01170\00021_id01933_I5XXxgK7QpE_faceswap_id00478_wavtolip.mp4,fake
632
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01170\00021_id01933_I5XXxgK7QpE_faceswap_id01597_wavtolip.mp4,fake
633
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01170\00021_id01933_I5XXxgK7QpE_faceswap_id01637_wavtolip.mp4,fake
634
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01170\00021_id01933_I5XXxgK7QpE_faceswap_id01856_wavtolip.mp4,fake
635
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01171\00053_id02494_lObg47hQleE_faceswap_id00475_wavtolip.mp4,fake
636
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01171\00053_id02494_lObg47hQleE_faceswap_id00476_wavtolip.mp4,fake
637
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01171\00053_id02494_lObg47hQleE_faceswap_id01779_wavtolip.mp4,fake
638
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01171\00053_id02494_lObg47hQleE_faceswap_id01835_wavtolip.mp4,fake
639
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01171\00053_id02494_lObg47hQleE_faceswap_id02051_wavtolip.mp4,fake
640
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01179\00160_id02005_7_Egh9mW5y4_faceswap_id01528_wavtolip.mp4,fake
641
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01179\00160_id02005_7_Egh9mW5y4_faceswap_id01779_wavtolip.mp4,fake
642
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01179\00160_id02005_7_Egh9mW5y4_faceswap_id01835_wavtolip.mp4,fake
643
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01179\00160_id02005_7_Egh9mW5y4_faceswap_id01972_wavtolip.mp4,fake
644
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01179\00160_id02005_7_Egh9mW5y4_faceswap_id02316_wavtolip.mp4,fake
645
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01207\00320_id00076_Isiq7cA-DNE_faceswap_id00366_wavtolip.mp4,fake
646
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01207\00320_id00076_Isiq7cA-DNE_faceswap_id00701_wavtolip.mp4,fake
647
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01207\00320_id00076_Isiq7cA-DNE_faceswap_id01530_wavtolip.mp4,fake
648
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01207\00320_id00076_Isiq7cA-DNE_faceswap_id01597_wavtolip.mp4,fake
649
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01207\00320_id00076_Isiq7cA-DNE_faceswap_id04727_wavtolip.mp4,fake
650
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01236\00005_id01610_l8zb_iaDJJA_faceswap_id00366_wavtolip.mp4,fake
651
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01236\00005_id01610_l8zb_iaDJJA_faceswap_id00830_wavtolip.mp4,fake
652
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01236\00005_id01610_l8zb_iaDJJA_faceswap_id01076_wavtolip.mp4,fake
653
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01236\00005_id01610_l8zb_iaDJJA_faceswap_id01691_wavtolip.mp4,fake
654
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01236\00005_id01610_l8zb_iaDJJA_faceswap_id01779_wavtolip.mp4,fake
655
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01392\00167_2_id00166_wavtolip.mp4,fake
656
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01392\00167_2_id00475_wavtolip.mp4,fake
657
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01392\00167_2_id00478_wavtolip.mp4,fake
658
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01392\00167_2_id01207_wavtolip.mp4,fake
659
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01392\00167_2_id01521_wavtolip.mp4,fake
660
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01392\00167_3_id00830_wavtolip.mp4,fake
661
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01392\00167_3_id01392_wavtolip.mp4,fake
662
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01392\00167_3_id01610_wavtolip.mp4,fake
663
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01392\00167_3_id01933_wavtolip.mp4,fake
664
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01392\00167_3_id02040_wavtolip.mp4,fake
665
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01452\00001_id01528_SBAS9Kcb8QY_faceswap_id00173_wavtolip.mp4,fake
666
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01452\00001_id01528_SBAS9Kcb8QY_faceswap_id00475_wavtolip.mp4,fake
667
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01452\00001_id01528_SBAS9Kcb8QY_faceswap_id00987_wavtolip.mp4,fake
668
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01452\00001_id01528_SBAS9Kcb8QY_faceswap_id01392_wavtolip.mp4,fake
669
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01452\00001_id01528_SBAS9Kcb8QY_faceswap_id01717_wavtolip.mp4,fake
670
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01528\00017_id01452_4MqeoSxSy3w_faceswap_id00701_wavtolip.mp4,fake
671
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01528\00017_id01452_4MqeoSxSy3w_faceswap_id01076_wavtolip.mp4,fake
672
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01528\00017_id01452_4MqeoSxSy3w_faceswap_id01610_wavtolip.mp4,fake
673
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01528\00017_id01452_4MqeoSxSy3w_faceswap_id02005_wavtolip.mp4,fake
674
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01528\00017_id01452_4MqeoSxSy3w_faceswap_id02494_wavtolip.mp4,fake
675
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01544\00044_3_id00166_wavtolip.mp4,fake
676
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01544\00044_3_id00173_wavtolip.mp4,fake
677
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01544\00044_3_id00830_wavtolip.mp4,fake
678
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01544\00044_3_id01530_wavtolip.mp4,fake
679
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01544\00044_3_id02268_wavtolip.mp4,fake
680
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01597\00005_0_id00076_wavtolip.mp4,fake
681
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01597\00005_1_id01171_wavtolip.mp4,fake
682
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01597\00005_1_id01392_wavtolip.mp4,fake
683
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01597\00005_1_id01544_wavtolip.mp4,fake
684
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01597\00005_1_id02005_wavtolip.mp4,fake
685
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01597\00005_1_id02494_wavtolip.mp4,fake
686
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01597\00005_2_id00987_wavtolip.mp4,fake
687
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01597\00005_2_id01236_wavtolip.mp4,fake
688
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01597\00005_2_id01995_wavtolip.mp4,fake
689
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01597\00005_2_id02040_wavtolip.mp4,fake
690
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01597\00005_2_id02494_wavtolip.mp4,fake
691
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01597\00005_3_id00761_wavtolip.mp4,fake
692
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01597\00005_3_id00781_wavtolip.mp4,fake
693
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01597\00005_3_id01528_wavtolip.mp4,fake
694
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01597\00005_3_id01920_wavtolip.mp4,fake
695
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01597\00005_3_id02268_wavtolip.mp4,fake
696
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01598\00109_1_id01637_wavtolip.mp4,fake
697
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01598\00109_1_id01691_wavtolip.mp4,fake
698
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01598\00109_1_id02005_wavtolip.mp4,fake
699
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01598\00109_1_id02051_wavtolip.mp4,fake
700
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01598\00109_1_id02316_wavtolip.mp4,fake
701
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01610\00090_id01236_7WdumGR5-JM_faceswap_id00475_wavtolip.mp4,fake
702
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01610\00090_id01236_7WdumGR5-JM_faceswap_id00761_wavtolip.mp4,fake
703
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01610\00090_id01236_7WdumGR5-JM_faceswap_id01392_wavtolip.mp4,fake
704
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01610\00090_id01236_7WdumGR5-JM_faceswap_id02040_wavtolip.mp4,fake
705
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01610\00090_id01236_7WdumGR5-JM_faceswap_id02051_wavtolip.mp4,fake
706
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01637\00002_1_id01598_wavtolip.mp4,fake
707
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01637\00002_1_id01610_wavtolip.mp4,fake
708
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01637\00002_1_id01920_wavtolip.mp4,fake
709
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01637\00002_1_id02296_wavtolip.mp4,fake
710
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01637\00002_1_id02342_wavtolip.mp4,fake
711
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01637\00002_2_id00701_wavtolip.mp4,fake
712
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01637\00002_2_id00761_wavtolip.mp4,fake
713
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01637\00002_2_id00944_wavtolip.mp4,fake
714
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01637\00002_2_id01392_wavtolip.mp4,fake
715
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01637\00002_2_id01452_wavtolip.mp4,fake
716
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01691\00045_id01779_HgyHpDEo_jk_faceswap_id00830_wavtolip.mp4,fake
717
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01691\00045_id01779_HgyHpDEo_jk_faceswap_id01236_wavtolip.mp4,fake
718
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01691\00045_id01779_HgyHpDEo_jk_faceswap_id02040_wavtolip.mp4,fake
719
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01691\00045_id01779_HgyHpDEo_jk_faceswap_id02268_wavtolip.mp4,fake
720
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01717\00005_id02005_7_Egh9mW5y4_faceswap_id01170_wavtolip.mp4,fake
721
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01717\00005_id02005_7_Egh9mW5y4_faceswap_id01392_wavtolip.mp4,fake
722
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01717\00005_id02005_7_Egh9mW5y4_faceswap_id01691_wavtolip.mp4,fake
723
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01717\00005_id02005_7_Egh9mW5y4_faceswap_id01779_wavtolip.mp4,fake
724
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01717\00005_id02005_7_Egh9mW5y4_faceswap_id04727_wavtolip.mp4,fake
725
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01779\00010_id01691_IVtS5z8Jrrk_faceswap_id00173_wavtolip.mp4,fake
726
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01779\00010_id01691_IVtS5z8Jrrk_faceswap_id00478_wavtolip.mp4,fake
727
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01779\00010_id01691_IVtS5z8Jrrk_faceswap_id00701_wavtolip.mp4,fake
728
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01779\00010_id01691_IVtS5z8Jrrk_faceswap_id01170_wavtolip.mp4,fake
729
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01779\00010_id01691_IVtS5z8Jrrk_faceswap_id01779_wavtolip.mp4,fake
730
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01835\00130_id00761_QtTNFhCCgzw_faceswap_id00391_wavtolip.mp4,fake
731
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01835\00130_id00761_QtTNFhCCgzw_faceswap_id00518_wavtolip.mp4,fake
732
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01835\00130_id00761_QtTNFhCCgzw_faceswap_id01170_wavtolip.mp4,fake
733
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01835\00130_id00761_QtTNFhCCgzw_faceswap_id02051_wavtolip.mp4,fake
734
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01835\00130_id00761_QtTNFhCCgzw_faceswap_id02494_wavtolip.mp4,fake
735
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01856\00109_3_id01207_wavtolip.mp4,fake
736
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01856\00109_3_id01392_wavtolip.mp4,fake
737
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01856\00109_3_id01530_wavtolip.mp4,fake
738
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01856\00109_3_id01610_wavtolip.mp4,fake
739
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01856\00109_3_id02051_wavtolip.mp4,fake
740
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01920\00099_id00476_UgdYVJ6xPYg_faceswap_id00476_wavtolip.mp4,fake
741
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01920\00099_id00476_UgdYVJ6xPYg_faceswap_id00944_wavtolip.mp4,fake
742
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01920\00099_id00476_UgdYVJ6xPYg_faceswap_id01597_wavtolip.mp4,fake
743
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01920\00099_id00476_UgdYVJ6xPYg_faceswap_id01779_wavtolip.mp4,fake
744
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01920\00099_id00476_UgdYVJ6xPYg_faceswap_id02316_wavtolip.mp4,fake
745
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01933\00028_3_id00475_wavtolip.mp4,fake
746
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01933\00028_3_id00518_wavtolip.mp4,fake
747
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01933\00028_3_id00987_wavtolip.mp4,fake
748
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01933\00028_3_id01995_wavtolip.mp4,fake
749
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01933\00028_3_id02494_wavtolip.mp4,fake
750
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01972\00078_2_id01171_wavtolip.mp4,fake
751
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01972\00078_2_id01179_wavtolip.mp4,fake
752
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01972\00078_2_id01207_wavtolip.mp4,fake
753
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01972\00078_2_id01597_wavtolip.mp4,fake
754
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01972\00078_2_id01717_wavtolip.mp4,fake
755
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01972\00078_3_id00366_wavtolip.mp4,fake
756
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01972\00078_3_id01392_wavtolip.mp4,fake
757
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01972\00078_3_id01544_wavtolip.mp4,fake
758
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01972\00078_3_id01779_wavtolip.mp4,fake
759
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id01972\00078_3_id02005_wavtolip.mp4,fake
760
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id02005\00052_id02342_RJPBPhJB8TA_faceswap_id00478_wavtolip.mp4,fake
761
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id02005\00052_id02342_RJPBPhJB8TA_faceswap_id00518_wavtolip.mp4,fake
762
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id02005\00052_id02342_RJPBPhJB8TA_faceswap_id01207_wavtolip.mp4,fake
763
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id02005\00052_id02342_RJPBPhJB8TA_faceswap_id01544_wavtolip.mp4,fake
764
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id02005\00052_id02342_RJPBPhJB8TA_faceswap_id01717_wavtolip.mp4,fake
765
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id02296\00019_0_id00761_wavtolip.mp4,fake
766
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id02296\00019_0_id01076_wavtolip.mp4,fake
767
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id02296\00019_0_id01835_wavtolip.mp4,fake
768
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id02296\00019_0_id02051_wavtolip.mp4,fake
769
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id02296\00019_0_id02296_wavtolip.mp4,fake
770
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id02296\00019_2_id00478_wavtolip.mp4,fake
771
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id02296\00019_2_id01170_wavtolip.mp4,fake
772
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id02296\00019_2_id01452_wavtolip.mp4,fake
773
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id02296\00019_2_id01610_wavtolip.mp4,fake
774
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id02296\00019_2_id01920_wavtolip.mp4,fake
775
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id02342\00191_id02005_7_Egh9mW5y4_faceswap_id01076_wavtolip.mp4,fake
776
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id02342\00191_id02005_7_Egh9mW5y4_faceswap_id01598_wavtolip.mp4,fake
777
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id02342\00191_id02005_7_Egh9mW5y4_faceswap_id01835_wavtolip.mp4,fake
778
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id02342\00191_id02005_7_Egh9mW5y4_faceswap_id02316_wavtolip.mp4,fake
779
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id02342\00191_id02005_7_Egh9mW5y4_faceswap_id02342_wavtolip.mp4,fake
780
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id02494\00050_id00475_xQjvXRcnPvw_faceswap_id00475_wavtolip.mp4,fake
781
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id02494\00050_id00475_xQjvXRcnPvw_faceswap_id01995_wavtolip.mp4,fake
782
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id02494\00050_id00475_xQjvXRcnPvw_faceswap_id02005_wavtolip.mp4,fake
783
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id02494\00050_id00475_xQjvXRcnPvw_faceswap_id02296_wavtolip.mp4,fake
784
+ FakeAVCeleb\FakeVideo-FakeAudio\African\men\id02494\00050_id00475_xQjvXRcnPvw_faceswap_id04727_wavtolip.mp4,fake
785
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00220\00027_id02586_wavtolip.mp4,fake
786
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00220\00027_id03569_wavtolip.mp4,fake
787
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00220\00027_id03658_wavtolip.mp4,fake
788
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00220\00027_id04376_wavtolip.mp4,fake
789
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00220\00027_id05251_wavtolip.mp4,fake
790
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00359\00053_id01838_q_lUk55OrL0_faceswap_id00568_wavtolip.mp4,fake
791
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00359\00053_id01838_q_lUk55OrL0_faceswap_id03658_wavtolip.mp4,fake
792
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00359\00053_id01838_q_lUk55OrL0_faceswap_id04736_wavtolip.mp4,fake
793
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00359\00053_id01838_q_lUk55OrL0_faceswap_id05106_wavtolip.mp4,fake
794
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00359\00053_id01838_q_lUk55OrL0_faceswap_id05252_wavtolip.mp4,fake
795
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00460\00005_id00371_wavtolip.mp4,fake
796
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00460\00005_id00460_wavtolip.mp4,fake
797
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00460\00005_id01178_wavtolip.mp4,fake
798
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00460\00005_id02721_wavtolip.mp4,fake
799
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00460\00005_id02808_wavtolip.mp4,fake
800
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00568\00384_id05252_CMxIX3absYM_faceswap_id00577_wavtolip.mp4,fake
801
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00568\00384_id05252_CMxIX3absYM_faceswap_id00707_wavtolip.mp4,fake
802
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00568\00384_id05252_CMxIX3absYM_faceswap_id01661_wavtolip.mp4,fake
803
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00568\00384_id05252_CMxIX3absYM_faceswap_id03747_wavtolip.mp4,fake
804
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00568\00384_id05252_CMxIX3absYM_faceswap_id05252_wavtolip.mp4,fake
805
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00577\00010_id01532_wavtolip.mp4,fake
806
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00577\00010_id01907_wavtolip.mp4,fake
807
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00577\00010_id04055_wavtolip.mp4,fake
808
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00577\00010_id04376_wavtolip.mp4,fake
809
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00577\00010_id04736_wavtolip.mp4,fake
810
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00592\00017_id00371_wavtolip.mp4,fake
811
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00592\00017_id01661_wavtolip.mp4,fake
812
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00592\00017_id01838_wavtolip.mp4,fake
813
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00592\00017_id04055_wavtolip.mp4,fake
814
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00592\00017_id05252_wavtolip.mp4,fake
815
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00707\00052_id04820_64ybrA1atlM_faceswap_id02824_wavtolip.mp4,fake
816
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00707\00052_id04820_64ybrA1atlM_faceswap_id04376_wavtolip.mp4,fake
817
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00707\00052_id04820_64ybrA1atlM_faceswap_id04547_wavtolip.mp4,fake
818
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00707\00052_id04820_64ybrA1atlM_faceswap_id04689_wavtolip.mp4,fake
819
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00707\00052_id04820_64ybrA1atlM_faceswap_id04820_wavtolip.mp4,fake
820
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00829\00271_id01178_wavtolip.mp4,fake
821
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00829\00271_id03103_wavtolip.mp4,fake
822
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00829\00271_id04705_wavtolip.mp4,fake
823
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00829\00271_id04736_wavtolip.mp4,fake
824
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00829\00271_id05106_wavtolip.mp4,fake
825
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00832\00078_id00371_t20i0HtPwW0_faceswap_id00371_wavtolip.mp4,fake
826
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00832\00078_id00371_t20i0HtPwW0_faceswap_id00832_wavtolip.mp4,fake
827
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00832\00078_id00371_t20i0HtPwW0_faceswap_id01178_wavtolip.mp4,fake
828
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00832\00078_id00371_t20i0HtPwW0_faceswap_id04055_wavtolip.mp4,fake
829
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id00832\00078_id00371_t20i0HtPwW0_faceswap_id04540_wavtolip.mp4,fake
830
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id01178\00028_id05252_CMxIX3absYM_faceswap_id00371_wavtolip.mp4,fake
831
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id01178\00028_id05252_CMxIX3absYM_faceswap_id01838_wavtolip.mp4,fake
832
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id01178\00028_id05252_CMxIX3absYM_faceswap_id02071_wavtolip.mp4,fake
833
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id01178\00028_id05252_CMxIX3absYM_faceswap_id02721_wavtolip.mp4,fake
834
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id01178\00028_id05252_CMxIX3absYM_faceswap_id04437_wavtolip.mp4,fake
835
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id01532\00065_id00220_wavtolip.mp4,fake
836
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id01532\00065_id00371_wavtolip.mp4,fake
837
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id01532\00065_id02508_wavtolip.mp4,fake
838
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id01532\00065_id02824_wavtolip.mp4,fake
839
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id01532\00065_id05231_wavtolip.mp4,fake
840
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id01661\00059_id00577_wavtolip.mp4,fake
841
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id01661\00059_id00832_wavtolip.mp4,fake
842
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id01661\00059_id01178_wavtolip.mp4,fake
843
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id01661\00059_id02586_wavtolip.mp4,fake
844
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id01661\00059_id04055_wavtolip.mp4,fake
845
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id01783\00015_id02948_wavtolip.mp4,fake
846
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id01783\00015_id03569_wavtolip.mp4,fake
847
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id01783\00015_id03713_wavtolip.mp4,fake
848
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id01783\00015_id04705_wavtolip.mp4,fake
849
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id01783\00015_id05235_wavtolip.mp4,fake
850
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id01838\00126_id05235_ASy8lP3SRtw_faceswap_id00568_wavtolip.mp4,fake
851
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id01838\00126_id05235_ASy8lP3SRtw_faceswap_id00829_wavtolip.mp4,fake
852
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id01838\00126_id05235_ASy8lP3SRtw_faceswap_id01838_wavtolip.mp4,fake
853
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id01838\00126_id05235_ASy8lP3SRtw_faceswap_id02071_wavtolip.mp4,fake
854
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id01838\00126_id05235_ASy8lP3SRtw_faceswap_id05106_wavtolip.mp4,fake
855
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id01907\00148_id05235_ASy8lP3SRtw_faceswap_id00371_wavtolip.mp4,fake
856
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id01907\00148_id05235_ASy8lP3SRtw_faceswap_id03656_wavtolip.mp4,fake
857
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id01907\00148_id05235_ASy8lP3SRtw_faceswap_id04437_wavtolip.mp4,fake
858
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id01907\00148_id05235_ASy8lP3SRtw_faceswap_id05251_wavtolip.mp4,fake
859
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id01907\00148_id05235_ASy8lP3SRtw_faceswap_id05252_wavtolip.mp4,fake
860
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02301\00092_id00829_aMEvVaUBq2Y_faceswap_id00371_wavtolip.mp4,fake
861
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02301\00092_id00829_aMEvVaUBq2Y_faceswap_id01838_wavtolip.mp4,fake
862
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02301\00092_id00829_aMEvVaUBq2Y_faceswap_id02508_wavtolip.mp4,fake
863
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02301\00092_id00829_aMEvVaUBq2Y_faceswap_id04055_wavtolip.mp4,fake
864
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02301\00092_id00829_aMEvVaUBq2Y_faceswap_id04705_wavtolip.mp4,fake
865
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02508\00083_id03658_8Wtu9VXKqjY_faceswap_id01532_wavtolip.mp4,fake
866
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02508\00083_id03658_8Wtu9VXKqjY_faceswap_id01661_wavtolip.mp4,fake
867
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02508\00083_id03658_8Wtu9VXKqjY_faceswap_id04540_wavtolip.mp4,fake
868
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02508\00083_id03658_8Wtu9VXKqjY_faceswap_id04705_wavtolip.mp4,fake
869
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02508\00083_id03658_8Wtu9VXKqjY_faceswap_id05980_wavtolip.mp4,fake
870
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02586\00042_id04939_i4v2cXo9HIQ_faceswap_id00460_wavtolip.mp4,fake
871
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02586\00042_id04939_i4v2cXo9HIQ_faceswap_id04245_wavtolip.mp4,fake
872
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02586\00042_id04939_i4v2cXo9HIQ_faceswap_id04374_wavtolip.mp4,fake
873
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02586\00042_id04939_i4v2cXo9HIQ_faceswap_id04820_wavtolip.mp4,fake
874
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02586\00042_id04939_i4v2cXo9HIQ_faceswap_id05106_wavtolip.mp4,fake
875
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02617\00028_id00592_wavtolip.mp4,fake
876
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02617\00028_id02838_wavtolip.mp4,fake
877
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02617\00028_id03713_wavtolip.mp4,fake
878
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02617\00028_id04689_wavtolip.mp4,fake
879
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02617\00028_id04736_wavtolip.mp4,fake
880
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02721\00424_id03658_8Wtu9VXKqjY_faceswap_id00371_wavtolip.mp4,fake
881
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02721\00424_id03658_8Wtu9VXKqjY_faceswap_id02824_wavtolip.mp4,fake
882
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02721\00424_id03658_8Wtu9VXKqjY_faceswap_id02838_wavtolip.mp4,fake
883
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02721\00424_id03658_8Wtu9VXKqjY_faceswap_id02948_wavtolip.mp4,fake
884
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02721\00424_id03658_8Wtu9VXKqjY_faceswap_id04820_wavtolip.mp4,fake
885
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02808\00056_id03103_wiCYm3THQPw_faceswap_id00371_wavtolip.mp4,fake
886
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02808\00056_id03103_wiCYm3THQPw_faceswap_id00832_wavtolip.mp4,fake
887
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02808\00056_id03103_wiCYm3THQPw_faceswap_id02301_wavtolip.mp4,fake
888
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02808\00056_id03103_wiCYm3THQPw_faceswap_id05235_wavtolip.mp4,fake
889
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02808\00056_id03103_wiCYm3THQPw_faceswap_id05252_wavtolip.mp4,fake
890
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02824\00130_id03747_wQOOhZvnrq4_faceswap_id01783_wavtolip.mp4,fake
891
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02824\00130_id03747_wQOOhZvnrq4_faceswap_id02617_wavtolip.mp4,fake
892
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02824\00130_id03747_wQOOhZvnrq4_faceswap_id04245_wavtolip.mp4,fake
893
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02824\00130_id03747_wQOOhZvnrq4_faceswap_id05106_wavtolip.mp4,fake
894
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02824\00130_id03747_wQOOhZvnrq4_faceswap_id05231_wavtolip.mp4,fake
895
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02948\00298_id04820_64ybrA1atlM_faceswap_id00460_wavtolip.mp4,fake
896
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02948\00298_id04820_64ybrA1atlM_faceswap_id01178_wavtolip.mp4,fake
897
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02948\00298_id04820_64ybrA1atlM_faceswap_id02721_wavtolip.mp4,fake
898
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02948\00298_id04820_64ybrA1atlM_faceswap_id04374_wavtolip.mp4,fake
899
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id02948\00298_id04820_64ybrA1atlM_faceswap_id05251_wavtolip.mp4,fake
900
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id03569\00065_id00220_WlHLlTQKj8g_faceswap_id00220_wavtolip.mp4,fake
901
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id03569\00065_id00220_WlHLlTQKj8g_faceswap_id01178_wavtolip.mp4,fake
902
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id03569\00065_id00220_WlHLlTQKj8g_faceswap_id02586_wavtolip.mp4,fake
903
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id03569\00065_id00220_WlHLlTQKj8g_faceswap_id04705_wavtolip.mp4,fake
904
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id03569\00065_id00220_WlHLlTQKj8g_faceswap_id05252_wavtolip.mp4,fake
905
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id03656\00052_1_id00359_wavtolip.mp4,fake
906
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id03656\00052_1_id00460_wavtolip.mp4,fake
907
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id03656\00052_1_id00592_wavtolip.mp4,fake
908
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id03656\00052_1_id02721_wavtolip.mp4,fake
909
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id03656\00052_1_id02838_wavtolip.mp4,fake
910
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id03656\00052_3_id00371_wavtolip.mp4,fake
911
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id03656\00052_3_id00592_wavtolip.mp4,fake
912
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id03656\00052_3_id01532_wavtolip.mp4,fake
913
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id03656\00052_3_id02301_wavtolip.mp4,fake
914
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id03656\00052_3_id04705_wavtolip.mp4,fake
915
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id03658\00077_id00371_t20i0HtPwW0_faceswap_id00220_wavtolip.mp4,fake
916
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id03658\00077_id00371_t20i0HtPwW0_faceswap_id02301_wavtolip.mp4,fake
917
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id03658\00077_id00371_t20i0HtPwW0_faceswap_id03713_wavtolip.mp4,fake
918
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id03658\00077_id00371_t20i0HtPwW0_faceswap_id04245_wavtolip.mp4,fake
919
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id03658\00077_id00371_t20i0HtPwW0_faceswap_id04705_wavtolip.mp4,fake
920
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id03713\00249_id02617_4EZjRXC4fLk_faceswap_id00220_wavtolip.mp4,fake
921
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id03713\00249_id02617_4EZjRXC4fLk_faceswap_id00832_wavtolip.mp4,fake
922
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id03713\00249_id02617_4EZjRXC4fLk_faceswap_id01178_wavtolip.mp4,fake
923
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id03713\00249_id02617_4EZjRXC4fLk_faceswap_id01532_wavtolip.mp4,fake
924
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id03713\00249_id02617_4EZjRXC4fLk_faceswap_id04245_wavtolip.mp4,fake
925
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id03747\00273_id02824_glBy_mYcXZw_faceswap_id01661_wavtolip.mp4,fake
926
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id03747\00273_id02824_glBy_mYcXZw_faceswap_id04055_wavtolip.mp4,fake
927
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id03747\00273_id02824_glBy_mYcXZw_faceswap_id04374_wavtolip.mp4,fake
928
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id03747\00273_id02824_glBy_mYcXZw_faceswap_id04547_wavtolip.mp4,fake
929
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id03747\00273_id02824_glBy_mYcXZw_faceswap_id05235_wavtolip.mp4,fake
930
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04055\00001_id05252_CMxIX3absYM_faceswap_id00577_wavtolip.mp4,fake
931
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04055\00001_id05252_CMxIX3absYM_faceswap_id03569_wavtolip.mp4,fake
932
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04055\00001_id05252_CMxIX3absYM_faceswap_id04705_wavtolip.mp4,fake
933
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04055\00001_id05252_CMxIX3absYM_faceswap_id05251_wavtolip.mp4,fake
934
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04055\00001_id05252_CMxIX3absYM_faceswap_id05980_wavtolip.mp4,fake
935
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04374\00032_id04689_0YqK1ksKjLg_faceswap_id00371_wavtolip.mp4,fake
936
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04374\00032_id04689_0YqK1ksKjLg_faceswap_id01532_wavtolip.mp4,fake
937
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04374\00032_id04689_0YqK1ksKjLg_faceswap_id04689_wavtolip.mp4,fake
938
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04374\00032_id04689_0YqK1ksKjLg_faceswap_id05231_wavtolip.mp4,fake
939
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04376\00181_id04437_2csrqaF55pk_faceswap_id00371_wavtolip.mp4,fake
940
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04376\00181_id04437_2csrqaF55pk_faceswap_id00460_wavtolip.mp4,fake
941
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04376\00181_id04437_2csrqaF55pk_faceswap_id00577_wavtolip.mp4,fake
942
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04376\00181_id04437_2csrqaF55pk_faceswap_id01838_wavtolip.mp4,fake
943
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04376\00181_id04437_2csrqaF55pk_faceswap_id02721_wavtolip.mp4,fake
944
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04547\00052_2_id00832_wavtolip.mp4,fake
945
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04547\00052_2_id02617_wavtolip.mp4,fake
946
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04547\00052_2_id02808_wavtolip.mp4,fake
947
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04547\00052_2_id02824_wavtolip.mp4,fake
948
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04547\00052_2_id05251_wavtolip.mp4,fake
949
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04705\00408_id05252_CMxIX3absYM_faceswap_id00460_wavtolip.mp4,fake
950
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04705\00408_id05252_CMxIX3absYM_faceswap_id01838_wavtolip.mp4,fake
951
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04705\00408_id05252_CMxIX3absYM_faceswap_id02948_wavtolip.mp4,fake
952
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04705\00408_id05252_CMxIX3absYM_faceswap_id03747_wavtolip.mp4,fake
953
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04705\00408_id05252_CMxIX3absYM_faceswap_id04736_wavtolip.mp4,fake
954
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04736\00083_id05235_ASy8lP3SRtw_faceswap_id00592_wavtolip.mp4,fake
955
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04736\00083_id05235_ASy8lP3SRtw_faceswap_id01907_wavtolip.mp4,fake
956
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04736\00083_id05235_ASy8lP3SRtw_faceswap_id02721_wavtolip.mp4,fake
957
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04736\00083_id05235_ASy8lP3SRtw_faceswap_id04245_wavtolip.mp4,fake
958
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04820\00015_id02948__ZEDGNWjuFE_faceswap_id00568_wavtolip.mp4,fake
959
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04820\00015_id02948__ZEDGNWjuFE_faceswap_id01783_wavtolip.mp4,fake
960
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04820\00015_id02948__ZEDGNWjuFE_faceswap_id02721_wavtolip.mp4,fake
961
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04820\00015_id02948__ZEDGNWjuFE_faceswap_id04376_wavtolip.mp4,fake
962
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04820\00015_id02948__ZEDGNWjuFE_faceswap_id04689_wavtolip.mp4,fake
963
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04939\00174_id02586_dEYzYDsbAeo_faceswap_id00460_wavtolip.mp4,fake
964
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04939\00174_id02586_dEYzYDsbAeo_faceswap_id01907_wavtolip.mp4,fake
965
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04939\00174_id02586_dEYzYDsbAeo_faceswap_id03747_wavtolip.mp4,fake
966
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04939\00174_id02586_dEYzYDsbAeo_faceswap_id04939_wavtolip.mp4,fake
967
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id04939\00174_id02586_dEYzYDsbAeo_faceswap_id05235_wavtolip.mp4,fake
968
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id05106\00078_id04820_64ybrA1atlM_faceswap_id00371_wavtolip.mp4,fake
969
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id05106\00078_id04820_64ybrA1atlM_faceswap_id00592_wavtolip.mp4,fake
970
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id05106\00078_id04820_64ybrA1atlM_faceswap_id01661_wavtolip.mp4,fake
971
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id05106\00078_id04820_64ybrA1atlM_faceswap_id04437_wavtolip.mp4,fake
972
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id05106\00078_id04820_64ybrA1atlM_faceswap_id05231_wavtolip.mp4,fake
973
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id05231\00149_id01178_6XpgYMiKxhc_faceswap_id00371_wavtolip.mp4,fake
974
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id05231\00149_id01178_6XpgYMiKxhc_faceswap_id00592_wavtolip.mp4,fake
975
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id05231\00149_id01178_6XpgYMiKxhc_faceswap_id01907_wavtolip.mp4,fake
976
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id05231\00149_id01178_6XpgYMiKxhc_faceswap_id02301_wavtolip.mp4,fake
977
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id05231\00149_id01178_6XpgYMiKxhc_faceswap_id02721_wavtolip.mp4,fake
978
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id05235\00052_id01907_LBcRkuRq0uY_faceswap_id01783_wavtolip.mp4,fake
979
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id05235\00052_id01907_LBcRkuRq0uY_faceswap_id02808_wavtolip.mp4,fake
980
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id05235\00052_id01907_LBcRkuRq0uY_faceswap_id04055_wavtolip.mp4,fake
981
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id05235\00052_id01907_LBcRkuRq0uY_faceswap_id04736_wavtolip.mp4,fake
982
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id05235\00052_id01907_LBcRkuRq0uY_faceswap_id05251_wavtolip.mp4,fake
983
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id05251\00033_id01178_6XpgYMiKxhc_faceswap_id00568_wavtolip.mp4,fake
984
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id05251\00033_id01178_6XpgYMiKxhc_faceswap_id03569_wavtolip.mp4,fake
985
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id05251\00033_id01178_6XpgYMiKxhc_faceswap_id03658_wavtolip.mp4,fake
986
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id05251\00033_id01178_6XpgYMiKxhc_faceswap_id04437_wavtolip.mp4,fake
987
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id05252\00052_id01178_6XpgYMiKxhc_faceswap_id00220_wavtolip.mp4,fake
988
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id05252\00052_id01178_6XpgYMiKxhc_faceswap_id00832_wavtolip.mp4,fake
989
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id05252\00052_id01178_6XpgYMiKxhc_faceswap_id02824_wavtolip.mp4,fake
990
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id05252\00052_id01178_6XpgYMiKxhc_faceswap_id04376_wavtolip.mp4,fake
991
+ FakeAVCeleb\FakeVideo-FakeAudio\African\women\id05252\00052_id01178_6XpgYMiKxhc_faceswap_id04437_wavtolip.mp4,fake
992
+ FakeAVCeleb\FakeVideo-FakeAudio\Caucasian (American)\men\id00018\00181_id01201_Q8XWfmNiWYA_faceswap_id00243_wavtolip.mp4,fake
993
+ FakeAVCeleb\FakeVideo-FakeAudio\Caucasian (American)\men\id00018\00181_id01201_Q8XWfmNiWYA_faceswap_id00777_wavtolip.mp4,fake
994
+ FakeAVCeleb\FakeVideo-FakeAudio\Caucasian (American)\men\id00018\00181_id01201_Q8XWfmNiWYA_faceswap_id00945_wavtolip.mp4,fake
995
+ FakeAVCeleb\FakeVideo-FakeAudio\Caucasian (American)\men\id00018\00181_id01201_Q8XWfmNiWYA_faceswap_id01239_wavtolip.mp4,fake
996
+ FakeAVCeleb\FakeVideo-FakeAudio\Caucasian (American)\men\id00018\00181_id01201_Q8XWfmNiWYA_faceswap_id03678_wavtolip.mp4,fake
997
+ FakeAVCeleb\FakeVideo-FakeAudio\Caucasian (American)\men\id00020\00206_id01182_zca-PHR_U40_faceswap_id00018_wavtolip.mp4,fake
998
+ FakeAVCeleb\FakeVideo-FakeAudio\Caucasian (American)\men\id00020\00206_id01182_zca-PHR_U40_faceswap_id00049_wavtolip.mp4,fake
999
+ FakeAVCeleb\FakeVideo-FakeAudio\Caucasian (American)\men\id00020\00206_id01182_zca-PHR_U40_faceswap_id00696_wavtolip.mp4,fake
1000
+ FakeAVCeleb\FakeVideo-FakeAudio\Caucasian (American)\men\id00020\00206_id01182_zca-PHR_U40_faceswap_id01048_wavtolip.mp4,fake
1001
+ FakeAVCeleb\FakeVideo-FakeAudio\Caucasian (American)\men\id00020\00206_id01182_zca-PHR_U40_faceswap_id01201_wavtolip.mp4,fake
datasets/train/.gitkeep ADDED
File without changes
datasets/val/.gitkeep ADDED
File without changes
images/fake_image.jpg ADDED
images/lady.jpg ADDED
inference.py ADDED
@@ -0,0 +1,211 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import cv2
3
+ import torch
4
+ import argparse
5
+ import numpy as np
6
+ import torch.nn as nn
7
+ from models.TMC import ETMC
8
+ from models import image
9
+
10
+ #Set random seed for reproducibility.
11
+ torch.manual_seed(42)
12
+
13
+
14
+ # Define the audio_args dictionary
15
+ audio_args = {
16
+ 'nb_samp': 64600,
17
+ 'first_conv': 1024,
18
+ 'in_channels': 1,
19
+ 'filts': [20, [20, 20], [20, 128], [128, 128]],
20
+ 'blocks': [2, 4],
21
+ 'nb_fc_node': 1024,
22
+ 'gru_node': 1024,
23
+ 'nb_gru_layer': 3,
24
+ }
25
+
26
+
27
+ def get_args(parser):
28
+ parser.add_argument("--batch_size", type=int, default=8)
29
+ parser.add_argument("--data_dir", type=str, default="datasets/train/fakeavceleb*")
30
+ parser.add_argument("--LOAD_SIZE", type=int, default=256)
31
+ parser.add_argument("--FINE_SIZE", type=int, default=224)
32
+ parser.add_argument("--dropout", type=float, default=0.2)
33
+ parser.add_argument("--gradient_accumulation_steps", type=int, default=1)
34
+ parser.add_argument("--hidden", nargs="*", type=int, default=[])
35
+ parser.add_argument("--hidden_sz", type=int, default=768)
36
+ parser.add_argument("--img_embed_pool_type", type=str, default="avg", choices=["max", "avg"])
37
+ parser.add_argument("--img_hidden_sz", type=int, default=1024)
38
+ parser.add_argument("--include_bn", type=int, default=True)
39
+ parser.add_argument("--lr", type=float, default=1e-4)
40
+ parser.add_argument("--lr_factor", type=float, default=0.3)
41
+ parser.add_argument("--lr_patience", type=int, default=10)
42
+ parser.add_argument("--max_epochs", type=int, default=500)
43
+ parser.add_argument("--n_workers", type=int, default=12)
44
+ parser.add_argument("--name", type=str, default="MMDF")
45
+ parser.add_argument("--num_image_embeds", type=int, default=1)
46
+ parser.add_argument("--patience", type=int, default=20)
47
+ parser.add_argument("--savedir", type=str, default="./savepath/")
48
+ parser.add_argument("--seed", type=int, default=1)
49
+ parser.add_argument("--n_classes", type=int, default=2)
50
+ parser.add_argument("--annealing_epoch", type=int, default=10)
51
+ parser.add_argument("--device", type=str, default='cpu')
52
+ parser.add_argument("--pretrained_image_encoder", type=bool, default = False)
53
+ parser.add_argument("--freeze_image_encoder", type=bool, default = False)
54
+ parser.add_argument("--pretrained_audio_encoder", type = bool, default=False)
55
+ parser.add_argument("--freeze_audio_encoder", type = bool, default = False)
56
+ parser.add_argument("--augment_dataset", type = bool, default = True)
57
+
58
+ for key, value in audio_args.items():
59
+ parser.add_argument(f"--{key}", type=type(value), default=value)
60
+
61
+ def model_summary(args):
62
+ '''Prints the model summary.'''
63
+ model = ETMC(args)
64
+
65
+ for name, layer in model.named_modules():
66
+ print(name, layer)
67
+
68
+ def load_multimodal_model(args):
69
+ '''Load multimodal model'''
70
+ model = ETMC(args)
71
+ ckpt = torch.load('checkpoints/model_best.pt', map_location = torch.device('cpu'))
72
+ model.load_state_dict(ckpt,strict = False)
73
+ model.eval()
74
+ return model
75
+
76
+ def load_img_modality_model(args):
77
+ '''Loads image modality model.'''
78
+ rgb_encoder = image.ImageEncoder(args)
79
+ ckpt = torch.load('checkpoints/model_best.pt', map_location = torch.device('cpu'))
80
+ rgb_encoder.load_state_dict(ckpt,strict = False)
81
+ rgb_encoder.eval()
82
+ return rgb_encoder
83
+
84
+ def load_spec_modality_model(args):
85
+ spec_encoder = image.RawNet(args)
86
+ ckpt = torch.load('checkpoints/model_best.pt', map_location = torch.device('cpu'))
87
+ spec_encoder.load_state_dict(ckpt,strict = False)
88
+ spec_encoder.eval()
89
+ return spec_encoder
90
+
91
+
92
+ #Load models.
93
+ parser = argparse.ArgumentParser(description="Train Models")
94
+ get_args(parser)
95
+ args, remaining_args = parser.parse_known_args()
96
+ assert remaining_args == [], remaining_args
97
+
98
+ multimodal = load_multimodal_model(args)
99
+ spec_model = load_spec_modality_model(args)
100
+ img_model = load_img_modality_model(args)
101
+
102
+
103
+ def preprocess_img(face):
104
+ face = face / 255
105
+ face = cv2.resize(face, (256, 256))
106
+ face = face.transpose(2, 0, 1) #(W, H, C) -> (C, W, H)
107
+ face_pt = torch.unsqueeze(torch.Tensor(face), dim = 0)
108
+ return face_pt
109
+
110
+ def preprocess_audio(audio_file):
111
+ audio_pt = torch.unsqueeze(torch.Tensor(audio_file), dim = 0)
112
+ return audio_pt
113
+
114
+ def deepfakes_spec_predict(input_audio):
115
+ x, _ = input_audio
116
+ audio = preprocess_audio(x)
117
+ spec_grads = spec_model.forward(audio)
118
+ multimodal_grads = multimodal.spec_depth[0].forward(spec_grads)
119
+
120
+ out = nn.Softmax()(multimodal_grads)
121
+ max = torch.argmax(out, dim = -1) #Index of the max value in the tensor.
122
+ max_value = out[max] #Actual value of the tensor.
123
+ max_value = np.argmax(out[max].detach().numpy())
124
+
125
+ if max_value > 0.5:
126
+ preds = round(100 - (max_value*100), 3)
127
+ text2 = f"The audio is REAL."
128
+
129
+ else:
130
+ preds = round(max_value*100, 3)
131
+ text2 = f"The audio is FAKE."
132
+
133
+ return text2
134
+
135
+ def deepfakes_image_predict(input_image):
136
+ face = preprocess_img(input_image)
137
+
138
+ img_grads = img_model.forward(face)
139
+ multimodal_grads = multimodal.clf_rgb[0].forward(img_grads)
140
+
141
+ out = nn.Softmax()(multimodal_grads)
142
+ max = torch.argmax(out, dim=-1) #Index of the max value in the tensor.
143
+ max = max.cpu().detach().numpy()
144
+ max_value = out[max] #Actual value of the tensor.
145
+ max_value = np.argmax(out[max].detach().numpy())
146
+
147
+ if max_value > 0.5:
148
+ preds = round(100 - (max_value*100), 3)
149
+ text2 = f"The image is REAL."
150
+
151
+ else:
152
+ preds = round(max_value*100, 3)
153
+ text2 = f"The image is FAKE."
154
+
155
+ return text2
156
+
157
+
158
+ def preprocess_video(input_video, n_frames = 5):
159
+ v_cap = cv2.VideoCapture(input_video)
160
+ v_len = int(v_cap.get(cv2.CAP_PROP_FRAME_COUNT))
161
+
162
+ # Pick 'n_frames' evenly spaced frames to sample
163
+ if n_frames is None:
164
+ sample = np.arange(0, v_len)
165
+ else:
166
+ sample = np.linspace(0, v_len - 1, n_frames).astype(int)
167
+
168
+ #Loop through frames.
169
+ frames = []
170
+ for j in range(v_len):
171
+ success = v_cap.grab()
172
+ if j in sample:
173
+ # Load frame
174
+ success, frame = v_cap.retrieve()
175
+ if not success:
176
+ continue
177
+ frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
178
+ frame = preprocess_img(frame)
179
+ frames.append(frame)
180
+ v_cap.release()
181
+ return frames
182
+
183
+
184
+ def deepfakes_video_predict(input_video):
185
+ '''Perform inference on a video.'''
186
+ video_frames = preprocess_video(input_video)
187
+
188
+ real_grads = []
189
+ fake_grads = []
190
+
191
+ for face in video_frames:
192
+ img_grads = img_model.forward(face)
193
+ multimodal_grads = multimodal.clf_rgb[0].forward(img_grads)
194
+
195
+ out = nn.Softmax()(multimodal_grads)
196
+ real_grads.append(out.cpu().detach().numpy()[0])
197
+ print(f"Video out tensor shape is: {out.shape}, {out}")
198
+
199
+ fake_grads.append(out.cpu().detach().numpy()[0])
200
+
201
+ real_grads_mean = np.mean(real_grads)
202
+ fake_grads_mean = np.mean(fake_grads)
203
+
204
+ if real_grads_mean > fake_grads_mean:
205
+ res = round(real_grads_mean * 100, 3)
206
+ text = f"The video is REAL."
207
+ else:
208
+ res = round(100 - (real_grads_mean * 100), 3)
209
+ text = f"The video is FAKE."
210
+ return text
211
+
inference_2.py ADDED
@@ -0,0 +1,216 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import cv2
3
+ import onnx
4
+ import torch
5
+ import argparse
6
+ import numpy as np
7
+ import torch.nn as nn
8
+ from models.TMC import ETMC
9
+ from models import image
10
+
11
+ from onnx2pytorch import ConvertModel
12
+
13
+ onnx_model = onnx.load('checkpoints/efficientnet.onnx')
14
+ pytorch_model = ConvertModel(onnx_model)
15
+
16
+ #Set random seed for reproducibility.
17
+ torch.manual_seed(42)
18
+
19
+
20
+ # Define the audio_args dictionary
21
+ audio_args = {
22
+ 'nb_samp': 64600,
23
+ 'first_conv': 1024,
24
+ 'in_channels': 1,
25
+ 'filts': [20, [20, 20], [20, 128], [128, 128]],
26
+ 'blocks': [2, 4],
27
+ 'nb_fc_node': 1024,
28
+ 'gru_node': 1024,
29
+ 'nb_gru_layer': 3,
30
+ 'nb_classes': 2
31
+ }
32
+
33
+
34
+ def get_args(parser):
35
+ parser.add_argument("--batch_size", type=int, default=8)
36
+ parser.add_argument("--data_dir", type=str, default="datasets/train/fakeavceleb*")
37
+ parser.add_argument("--LOAD_SIZE", type=int, default=256)
38
+ parser.add_argument("--FINE_SIZE", type=int, default=224)
39
+ parser.add_argument("--dropout", type=float, default=0.2)
40
+ parser.add_argument("--gradient_accumulation_steps", type=int, default=1)
41
+ parser.add_argument("--hidden", nargs="*", type=int, default=[])
42
+ parser.add_argument("--hidden_sz", type=int, default=768)
43
+ parser.add_argument("--img_embed_pool_type", type=str, default="avg", choices=["max", "avg"])
44
+ parser.add_argument("--img_hidden_sz", type=int, default=1024)
45
+ parser.add_argument("--include_bn", type=int, default=True)
46
+ parser.add_argument("--lr", type=float, default=1e-4)
47
+ parser.add_argument("--lr_factor", type=float, default=0.3)
48
+ parser.add_argument("--lr_patience", type=int, default=10)
49
+ parser.add_argument("--max_epochs", type=int, default=500)
50
+ parser.add_argument("--n_workers", type=int, default=12)
51
+ parser.add_argument("--name", type=str, default="MMDF")
52
+ parser.add_argument("--num_image_embeds", type=int, default=1)
53
+ parser.add_argument("--patience", type=int, default=20)
54
+ parser.add_argument("--savedir", type=str, default="./savepath/")
55
+ parser.add_argument("--seed", type=int, default=1)
56
+ parser.add_argument("--n_classes", type=int, default=2)
57
+ parser.add_argument("--annealing_epoch", type=int, default=10)
58
+ parser.add_argument("--device", type=str, default='cpu')
59
+ parser.add_argument("--pretrained_image_encoder", type=bool, default = False)
60
+ parser.add_argument("--freeze_image_encoder", type=bool, default = False)
61
+ parser.add_argument("--pretrained_audio_encoder", type = bool, default=False)
62
+ parser.add_argument("--freeze_audio_encoder", type = bool, default = False)
63
+ parser.add_argument("--augment_dataset", type = bool, default = True)
64
+
65
+ for key, value in audio_args.items():
66
+ parser.add_argument(f"--{key}", type=type(value), default=value)
67
+
68
+ def model_summary(args):
69
+ '''Prints the model summary.'''
70
+ model = ETMC(args)
71
+
72
+ for name, layer in model.named_modules():
73
+ print(name, layer)
74
+
75
+ def load_multimodal_model(args):
76
+ '''Load multimodal model'''
77
+ model = ETMC(args)
78
+ ckpt = torch.load('checkpoints/model.pth', map_location = torch.device('cpu'))
79
+ model.load_state_dict(ckpt, strict = True)
80
+ model.eval()
81
+ return model
82
+
83
+ def load_img_modality_model(args):
84
+ '''Loads image modality model.'''
85
+ rgb_encoder = pytorch_model
86
+
87
+ ckpt = torch.load('checkpoints/model.pth', map_location = torch.device('cpu'))
88
+ rgb_encoder.load_state_dict(ckpt['rgb_encoder'], strict = True)
89
+ rgb_encoder.eval()
90
+ return rgb_encoder
91
+
92
+ def load_spec_modality_model(args):
93
+ spec_encoder = image.RawNet(args)
94
+ ckpt = torch.load('checkpoints/model.pth', map_location = torch.device('cpu'))
95
+ spec_encoder.load_state_dict(ckpt['spec_encoder'], strict = True)
96
+ spec_encoder.eval()
97
+ return spec_encoder
98
+
99
+
100
+ #Load models.
101
+ parser = argparse.ArgumentParser(description="Inference models")
102
+ get_args(parser)
103
+ args, remaining_args = parser.parse_known_args()
104
+ assert remaining_args == [], remaining_args
105
+
106
+ spec_model = load_spec_modality_model(args)
107
+
108
+ img_model = load_img_modality_model(args)
109
+
110
+
111
+ def preprocess_img(face):
112
+ face = face / 255
113
+ face = cv2.resize(face, (256, 256))
114
+ # face = face.transpose(2, 0, 1) #(W, H, C) -> (C, W, H)
115
+ face_pt = torch.unsqueeze(torch.Tensor(face), dim = 0)
116
+ return face_pt
117
+
118
+ def preprocess_audio(audio_file):
119
+ audio_pt = torch.unsqueeze(torch.Tensor(audio_file), dim = 0)
120
+ return audio_pt
121
+
122
+ def deepfakes_spec_predict(input_audio):
123
+ x, _ = input_audio
124
+ audio = preprocess_audio(x)
125
+ spec_grads = spec_model.forward(audio)
126
+ spec_grads_inv = np.exp(spec_grads.cpu().detach().numpy().squeeze())
127
+
128
+ # multimodal_grads = multimodal.spec_depth[0].forward(spec_grads)
129
+
130
+ # out = nn.Softmax()(multimodal_grads)
131
+ # max = torch.argmax(out, dim = -1) #Index of the max value in the tensor.
132
+ # max_value = out[max] #Actual value of the tensor.
133
+ max_value = np.argmax(spec_grads_inv)
134
+
135
+ if max_value > 0.5:
136
+ preds = round(100 - (max_value*100), 3)
137
+ text2 = f"The audio is REAL."
138
+
139
+ else:
140
+ preds = round(max_value*100, 3)
141
+ text2 = f"The audio is FAKE."
142
+
143
+ return text2
144
+
145
+ def deepfakes_image_predict(input_image):
146
+ face = preprocess_img(input_image)
147
+ print(f"Face shape is: {face.shape}")
148
+ img_grads = img_model.forward(face)
149
+ img_grads = img_grads.cpu().detach().numpy()
150
+ img_grads_np = np.squeeze(img_grads)
151
+
152
+ if img_grads_np[0] > 0.5:
153
+ preds = round(img_grads_np[0] * 100, 3)
154
+ text2 = f"The image is REAL. \nConfidence score is: {preds}"
155
+
156
+ else:
157
+ preds = round(img_grads_np[1] * 100, 3)
158
+ text2 = f"The image is FAKE. \nConfidence score is: {preds}"
159
+
160
+ return text2
161
+
162
+
163
+ def preprocess_video(input_video, n_frames = 3):
164
+ v_cap = cv2.VideoCapture(input_video)
165
+ v_len = int(v_cap.get(cv2.CAP_PROP_FRAME_COUNT))
166
+
167
+ # Pick 'n_frames' evenly spaced frames to sample
168
+ if n_frames is None:
169
+ sample = np.arange(0, v_len)
170
+ else:
171
+ sample = np.linspace(0, v_len - 1, n_frames).astype(int)
172
+
173
+ #Loop through frames.
174
+ frames = []
175
+ for j in range(v_len):
176
+ success = v_cap.grab()
177
+ if j in sample:
178
+ # Load frame
179
+ success, frame = v_cap.retrieve()
180
+ if not success:
181
+ continue
182
+ frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
183
+ frame = preprocess_img(frame)
184
+ frames.append(frame)
185
+ v_cap.release()
186
+ return frames
187
+
188
+
189
+ def deepfakes_video_predict(input_video):
190
+ '''Perform inference on a video.'''
191
+ video_frames = preprocess_video(input_video)
192
+ real_faces_list = []
193
+ fake_faces_list = []
194
+
195
+ for face in video_frames:
196
+ # face = preprocess_img(face)
197
+
198
+ img_grads = img_model.forward(face)
199
+ img_grads = img_grads.cpu().detach().numpy()
200
+ img_grads_np = np.squeeze(img_grads)
201
+ real_faces_list.append(img_grads_np[0])
202
+ fake_faces_list.append(img_grads_np[1])
203
+
204
+ real_faces_mean = np.mean(real_faces_list)
205
+ fake_faces_mean = np.mean(fake_faces_list)
206
+
207
+ if real_faces_mean > 0.5:
208
+ preds = round(real_faces_mean * 100, 3)
209
+ text2 = f"The video is REAL. \nConfidence score is: {preds}%"
210
+
211
+ else:
212
+ preds = round(fake_faces_mean * 100, 3)
213
+ text2 = f"The video is FAKE. \nConfidence score is: {preds}%"
214
+
215
+ return text2
216
+
main.py ADDED
@@ -0,0 +1,247 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import argparse
3
+ from tqdm import tqdm
4
+ import torch.nn as nn
5
+ import tensorflow as tf
6
+ import torch.optim as optim
7
+
8
+ from models.TMC import ETMC, ce_loss
9
+ import torchvision.transforms as transforms
10
+ from data.dfdt_dataset import FakeAVCelebDatasetTrain, FakeAVCelebDatasetVal
11
+
12
+
13
+ from utils.utils import *
14
+ from utils.logger import create_logger
15
+ from sklearn.metrics import accuracy_score
16
+ from torch.utils.tensorboard import SummaryWriter
17
+
18
+ # Define the audio_args dictionary
19
+ audio_args = {
20
+ 'nb_samp': 64600,
21
+ 'first_conv': 1024,
22
+ 'in_channels': 1,
23
+ 'filts': [20, [20, 20], [20, 128], [128, 128]],
24
+ 'blocks': [2, 4],
25
+ 'nb_fc_node': 1024,
26
+ 'gru_node': 1024,
27
+ 'nb_gru_layer': 3,
28
+ }
29
+
30
+
31
+ def get_args(parser):
32
+ parser.add_argument("--batch_size", type=int, default=8)
33
+ parser.add_argument("--data_dir", type=str, default="datasets/train/fakeavceleb*")
34
+ parser.add_argument("--LOAD_SIZE", type=int, default=256)
35
+ parser.add_argument("--FINE_SIZE", type=int, default=224)
36
+ parser.add_argument("--dropout", type=float, default=0.2)
37
+ parser.add_argument("--gradient_accumulation_steps", type=int, default=1)
38
+ parser.add_argument("--hidden", nargs="*", type=int, default=[])
39
+ parser.add_argument("--hidden_sz", type=int, default=768)
40
+ parser.add_argument("--img_embed_pool_type", type=str, default="avg", choices=["max", "avg"])
41
+ parser.add_argument("--img_hidden_sz", type=int, default=1024)
42
+ parser.add_argument("--include_bn", type=int, default=True)
43
+ parser.add_argument("--lr", type=float, default=1e-4)
44
+ parser.add_argument("--lr_factor", type=float, default=0.3)
45
+ parser.add_argument("--lr_patience", type=int, default=10)
46
+ parser.add_argument("--max_epochs", type=int, default=500)
47
+ parser.add_argument("--n_workers", type=int, default=12)
48
+ parser.add_argument("--name", type=str, default="MMDF")
49
+ parser.add_argument("--num_image_embeds", type=int, default=1)
50
+ parser.add_argument("--patience", type=int, default=20)
51
+ parser.add_argument("--savedir", type=str, default="./savepath/")
52
+ parser.add_argument("--seed", type=int, default=1)
53
+ parser.add_argument("--n_classes", type=int, default=2)
54
+ parser.add_argument("--annealing_epoch", type=int, default=10)
55
+ parser.add_argument("--device", type=str, default='cpu')
56
+ parser.add_argument("--pretrained_image_encoder", type=bool, default = False)
57
+ parser.add_argument("--freeze_image_encoder", type=bool, default = True)
58
+ parser.add_argument("--pretrained_audio_encoder", type = bool, default=False)
59
+ parser.add_argument("--freeze_audio_encoder", type = bool, default = True)
60
+ parser.add_argument("--augment_dataset", type = bool, default = True)
61
+
62
+ for key, value in audio_args.items():
63
+ parser.add_argument(f"--{key}", type=type(value), default=value)
64
+
65
+ def get_optimizer(model, args):
66
+ optimizer = optim.Adam(model.parameters(), lr=args.lr, weight_decay=1e-5)
67
+ return optimizer
68
+
69
+
70
+ def get_scheduler(optimizer, args):
71
+ return optim.lr_scheduler.ReduceLROnPlateau(
72
+ optimizer, "max", patience=args.lr_patience, verbose=True, factor=args.lr_factor
73
+ )
74
+
75
+ def model_forward(i_epoch, model, args, ce_loss, batch):
76
+ rgb, spec, tgt = batch['video_reshaped'], batch['spectrogram'], batch['label_map']
77
+ rgb_pt = torch.Tensor(rgb.numpy())
78
+ spec = spec.numpy()
79
+ spec_pt = torch.Tensor(spec)
80
+ tgt_pt = torch.Tensor(tgt.numpy())
81
+
82
+ if torch.cuda.is_available():
83
+ rgb_pt, spec_pt, tgt_pt = rgb_pt.cuda(), spec_pt.cuda(), tgt_pt.cuda()
84
+
85
+ # depth_alpha, rgb_alpha, depth_rgb_alpha = model(rgb_pt, spec_pt)
86
+
87
+ # loss = ce_loss(tgt_pt, depth_alpha, args.n_classes, i_epoch, args.annealing_epoch) + \
88
+ # ce_loss(tgt_pt, rgb_alpha, args.n_classes, i_epoch, args.annealing_epoch) + \
89
+ # ce_loss(tgt_pt, depth_rgb_alpha, args.n_classes, i_epoch, args.annealing_epoch)
90
+ # return loss, depth_alpha, rgb_alpha, depth_rgb_alpha, tgt_pt
91
+
92
+ depth_alpha, rgb_alpha, pseudo_alpha, depth_rgb_alpha = model(rgb_pt, spec_pt)
93
+
94
+ loss = ce_loss(tgt_pt, depth_alpha, args.n_classes, i_epoch, args.annealing_epoch) + \
95
+ ce_loss(tgt_pt, rgb_alpha, args.n_classes, i_epoch, args.annealing_epoch) + \
96
+ ce_loss(tgt_pt, pseudo_alpha, args.n_classes, i_epoch, args.annealing_epoch) + \
97
+ ce_loss(tgt_pt, depth_rgb_alpha, args.n_classes, i_epoch, args.annealing_epoch)
98
+ return loss, depth_alpha, rgb_alpha, depth_rgb_alpha, tgt_pt
99
+
100
+
101
+
102
+ def model_eval(i_epoch, data, model, args, criterion):
103
+ model.eval()
104
+ with torch.no_grad():
105
+ losses, depth_preds, rgb_preds, depthrgb_preds, tgts = [], [], [], [], []
106
+ for batch in tqdm(data):
107
+ loss, depth_alpha, rgb_alpha, depth_rgb_alpha, tgt = model_forward(i_epoch, model, args, criterion, batch)
108
+ losses.append(loss.item())
109
+
110
+ depth_pred = depth_alpha.argmax(dim=1).cpu().detach().numpy()
111
+ rgb_pred = rgb_alpha.argmax(dim=1).cpu().detach().numpy()
112
+ depth_rgb_pred = depth_rgb_alpha.argmax(dim=1).cpu().detach().numpy()
113
+
114
+ depth_preds.append(depth_pred)
115
+ rgb_preds.append(rgb_pred)
116
+ depthrgb_preds.append(depth_rgb_pred)
117
+ tgt = tgt.cpu().detach().numpy()
118
+ tgts.append(tgt)
119
+
120
+ metrics = {"loss": np.mean(losses)}
121
+ print(f"Mean loss is: {metrics['loss']}")
122
+
123
+ tgts = [l for sl in tgts for l in sl]
124
+ depth_preds = [l for sl in depth_preds for l in sl]
125
+ rgb_preds = [l for sl in rgb_preds for l in sl]
126
+ depthrgb_preds = [l for sl in depthrgb_preds for l in sl]
127
+ metrics["spec_acc"] = accuracy_score(tgts, depth_preds)
128
+ metrics["rgb_acc"] = accuracy_score(tgts, rgb_preds)
129
+ metrics["specrgb_acc"] = accuracy_score(tgts, depthrgb_preds)
130
+ return metrics
131
+
132
+ def write_weight_histograms(writer, step, model):
133
+ for idx, item in enumerate(model.named_parameters()):
134
+ name = item[0]
135
+ weights = item[1].data
136
+ if weights.size(dim = 0) > 2:
137
+ try:
138
+ writer.add_histogram(name, weights, idx)
139
+ except ValueError as e:
140
+ continue
141
+
142
+ writer = SummaryWriter()
143
+
144
+ def train(args):
145
+ set_seed(args.seed)
146
+ args.savedir = os.path.join(args.savedir, args.name)
147
+ os.makedirs(args.savedir, exist_ok=True)
148
+
149
+ train_ds = FakeAVCelebDatasetTrain(args)
150
+ train_ds = train_ds.load_features_from_tfrec()
151
+
152
+ val_ds = FakeAVCelebDatasetVal(args)
153
+ val_ds = val_ds.load_features_from_tfrec()
154
+
155
+ model = ETMC(args)
156
+ optimizer = get_optimizer(model, args)
157
+ scheduler = get_scheduler(optimizer, args)
158
+ logger = create_logger("%s/logfile.log" % args.savedir, args)
159
+ if torch.cuda.is_available():
160
+ model.cuda()
161
+
162
+ torch.save(args, os.path.join(args.savedir, "checkpoint.pt"))
163
+ start_epoch, global_step, n_no_improve, best_metric = 0, 0, 0, -np.inf
164
+
165
+ for i_epoch in range(start_epoch, args.max_epochs):
166
+ train_losses = []
167
+ model.train()
168
+ optimizer.zero_grad()
169
+
170
+ for index, batch in tqdm(enumerate(train_ds)):
171
+ loss, depth_out, rgb_out, depthrgb, tgt = model_forward(i_epoch, model, args, ce_loss, batch)
172
+ if args.gradient_accumulation_steps > 1:
173
+ loss = loss / args.gradient_accumulation_steps
174
+
175
+ train_losses.append(loss.item())
176
+ loss.backward()
177
+ global_step += 1
178
+ if global_step % args.gradient_accumulation_steps == 0:
179
+ optimizer.step()
180
+ optimizer.zero_grad()
181
+
182
+ #Write weight histograms to Tensorboard.
183
+ write_weight_histograms(writer, i_epoch, model)
184
+
185
+ model.eval()
186
+ metrics = model_eval(
187
+ np.inf, val_ds, model, args, ce_loss
188
+ )
189
+ logger.info("Train Loss: {:.4f}".format(np.mean(train_losses)))
190
+ log_metrics("val", metrics, logger)
191
+ logger.info(
192
+ "{}: Loss: {:.5f} | spec_acc: {:.5f}, rgb_acc: {:.5f}, depth rgb acc: {:.5f}".format(
193
+ "val", metrics["loss"], metrics["spec_acc"], metrics["rgb_acc"], metrics["specrgb_acc"]
194
+ )
195
+ )
196
+ tuning_metric = metrics["specrgb_acc"]
197
+
198
+ scheduler.step(tuning_metric)
199
+ is_improvement = tuning_metric > best_metric
200
+ if is_improvement:
201
+ best_metric = tuning_metric
202
+ n_no_improve = 0
203
+ else:
204
+ n_no_improve += 1
205
+
206
+ save_checkpoint(
207
+ {
208
+ "epoch": i_epoch + 1,
209
+ "optimizer": optimizer.state_dict(),
210
+ "scheduler": scheduler.state_dict(),
211
+ "n_no_improve": n_no_improve,
212
+ "best_metric": best_metric,
213
+ },
214
+ is_improvement,
215
+ args.savedir,
216
+ )
217
+
218
+ if n_no_improve >= args.patience:
219
+ logger.info("No improvement. Breaking out of loop.")
220
+ break
221
+ writer.close()
222
+ # load_checkpoint(model, os.path.join(args.savedir, "model_best.pt"))
223
+ model.eval()
224
+ test_metrics = model_eval(
225
+ np.inf, val_ds, model, args, ce_loss
226
+ )
227
+ logger.info(
228
+ "{}: Loss: {:.5f} | spec_acc: {:.5f}, rgb_acc: {:.5f}, depth rgb acc: {:.5f}".format(
229
+ "Test", test_metrics["loss"], test_metrics["spec_acc"], test_metrics["rgb_acc"],
230
+ test_metrics["depthrgb_acc"]
231
+ )
232
+ )
233
+ log_metrics(f"Test", test_metrics, logger)
234
+
235
+
236
+ def cli_main():
237
+ parser = argparse.ArgumentParser(description="Train Models")
238
+ get_args(parser)
239
+ args, remaining_args = parser.parse_known_args()
240
+ assert remaining_args == [], remaining_args
241
+ train(args)
242
+
243
+
244
+ if __name__ == "__main__":
245
+ import warnings
246
+ warnings.filterwarnings("ignore")
247
+ cli_main()
models/TMC.py ADDED
@@ -0,0 +1,156 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ import torch.nn as nn
3
+ from models import image
4
+ import torch.nn.functional as F
5
+
6
+
7
+ # loss function
8
+ def KL(alpha, c):
9
+ if torch.cuda.is_available():
10
+ beta = torch.ones((1, c)).cuda()
11
+ else:
12
+ beta = torch.ones((1, c))
13
+ S_alpha = torch.sum(alpha, dim=1, keepdim=True)
14
+ S_beta = torch.sum(beta, dim=1, keepdim=True)
15
+ lnB = torch.lgamma(S_alpha) - torch.sum(torch.lgamma(alpha), dim=1, keepdim=True)
16
+ lnB_uni = torch.sum(torch.lgamma(beta), dim=1, keepdim=True) - torch.lgamma(S_beta)
17
+ dg0 = torch.digamma(S_alpha)
18
+ dg1 = torch.digamma(alpha)
19
+ kl = torch.sum((alpha - beta) * (dg1 - dg0), dim=1, keepdim=True) + lnB + lnB_uni
20
+ return kl
21
+
22
+ def ce_loss(p, alpha, c, global_step, annealing_step):
23
+ S = torch.sum(alpha, dim=1, keepdim=True)
24
+ E = alpha - 1
25
+ label = p
26
+ A = torch.sum(label * (torch.digamma(S) - torch.digamma(alpha)), dim=1, keepdim=True)
27
+
28
+ annealing_coef = min(1, global_step / annealing_step)
29
+ alp = E * (1 - label) + 1
30
+ B = annealing_coef * KL(alp, c)
31
+ return torch.mean((A + B))
32
+
33
+
34
+ class TMC(nn.Module):
35
+ def __init__(self, args):
36
+ super(TMC, self).__init__()
37
+ self.args = args
38
+ self.rgbenc = image.ImageEncoder(args)
39
+ self.specenc = image.RawNet(args)
40
+
41
+ spec_last_size = args.img_hidden_sz * 1
42
+ rgb_last_size = args.img_hidden_sz * args.num_image_embeds
43
+ self.spec_depth = nn.ModuleList()
44
+ self.clf_rgb = nn.ModuleList()
45
+
46
+ for hidden in args.hidden:
47
+ self.spec_depth.append(nn.Linear(spec_last_size, hidden))
48
+ self.spec_depth.append(nn.ReLU())
49
+ self.spec_depth.append(nn.Dropout(args.dropout))
50
+ spec_last_size = hidden
51
+ self.spec_depth.append(nn.Linear(spec_last_size, args.n_classes))
52
+
53
+ for hidden in args.hidden:
54
+ self.clf_rgb.append(nn.Linear(rgb_last_size, hidden))
55
+ self.clf_rgb.append(nn.ReLU())
56
+ self.clf_rgb.append(nn.Dropout(args.dropout))
57
+ rgb_last_size = hidden
58
+ self.clf_rgb.append(nn.Linear(rgb_last_size, args.n_classes))
59
+
60
+ def DS_Combin_two(self, alpha1, alpha2):
61
+ # Calculate the merger of two DS evidences
62
+ alpha = dict()
63
+ alpha[0], alpha[1] = alpha1, alpha2
64
+ b, S, E, u = dict(), dict(), dict(), dict()
65
+ for v in range(2):
66
+ S[v] = torch.sum(alpha[v], dim=1, keepdim=True)
67
+ E[v] = alpha[v] - 1
68
+ b[v] = E[v] / (S[v].expand(E[v].shape))
69
+ u[v] = self.args.n_classes / S[v]
70
+
71
+ # b^0 @ b^(0+1)
72
+ bb = torch.bmm(b[0].view(-1, self.args.n_classes, 1), b[1].view(-1, 1, self.args.n_classes))
73
+ # b^0 * u^1
74
+ uv1_expand = u[1].expand(b[0].shape)
75
+ bu = torch.mul(b[0], uv1_expand)
76
+ # b^1 * u^0
77
+ uv_expand = u[0].expand(b[0].shape)
78
+ ub = torch.mul(b[1], uv_expand)
79
+ # calculate K
80
+ bb_sum = torch.sum(bb, dim=(1, 2), out=None)
81
+ bb_diag = torch.diagonal(bb, dim1=-2, dim2=-1).sum(-1)
82
+ # bb_diag1 = torch.diag(torch.mm(b[v], torch.transpose(b[v+1], 0, 1)))
83
+ K = bb_sum - bb_diag
84
+
85
+ # calculate b^a
86
+ b_a = (torch.mul(b[0], b[1]) + bu + ub) / ((1 - K).view(-1, 1).expand(b[0].shape))
87
+ # calculate u^a
88
+ u_a = torch.mul(u[0], u[1]) / ((1 - K).view(-1, 1).expand(u[0].shape))
89
+ # test = torch.sum(b_a, dim = 1, keepdim = True) + u_a #Verify programming errors
90
+
91
+ # calculate new S
92
+ S_a = self.args.n_classes / u_a
93
+ # calculate new e_k
94
+ e_a = torch.mul(b_a, S_a.expand(b_a.shape))
95
+ alpha_a = e_a + 1
96
+ return alpha_a
97
+
98
+ def forward(self, rgb, spec):
99
+ spec = self.specenc(spec)
100
+ spec = torch.flatten(spec, start_dim=1)
101
+
102
+ rgb = self.rgbenc(rgb)
103
+ rgb = torch.flatten(rgb, start_dim=1)
104
+
105
+ spec_out = spec
106
+
107
+ for layer in self.spec_depth:
108
+ spec_out = layer(spec_out)
109
+
110
+ rgb_out = rgb
111
+
112
+ for layer in self.clf_rgb:
113
+ rgb_out = layer(rgb_out)
114
+
115
+ spec_evidence, rgb_evidence = F.softplus(spec_out), F.softplus(rgb_out)
116
+ spec_alpha, rgb_alpha = spec_evidence+1, rgb_evidence+1
117
+ spec_rgb_alpha = self.DS_Combin_two(spec_alpha, rgb_alpha)
118
+ return spec_alpha, rgb_alpha, spec_rgb_alpha
119
+
120
+
121
+ class ETMC(TMC):
122
+ def __init__(self, args):
123
+ super(ETMC, self).__init__(args)
124
+ last_size = args.img_hidden_sz * args.num_image_embeds + args.img_hidden_sz * args.num_image_embeds
125
+ self.clf = nn.ModuleList()
126
+ for hidden in args.hidden:
127
+ self.clf.append(nn.Linear(last_size, hidden))
128
+ self.clf.append(nn.ReLU())
129
+ self.clf.append(nn.Dropout(args.dropout))
130
+ last_size = hidden
131
+ self.clf.append(nn.Linear(last_size, args.n_classes))
132
+
133
+ def forward(self, rgb, spec):
134
+ spec = self.specenc(spec)
135
+ spec = torch.flatten(spec, start_dim=1)
136
+
137
+ rgb = self.rgbenc(rgb)
138
+ rgb = torch.flatten(rgb, start_dim=1)
139
+
140
+ spec_out = spec
141
+ for layer in self.spec_depth:
142
+ spec_out = layer(spec_out)
143
+
144
+ rgb_out = rgb
145
+ for layer in self.clf_rgb:
146
+ rgb_out = layer(rgb_out)
147
+
148
+ pseudo_out = torch.cat([rgb, spec], -1)
149
+ for layer in self.clf:
150
+ pseudo_out = layer(pseudo_out)
151
+
152
+ depth_evidence, rgb_evidence, pseudo_evidence = F.softplus(spec_out), F.softplus(rgb_out), F.softplus(pseudo_out)
153
+ depth_alpha, rgb_alpha, pseudo_alpha = depth_evidence+1, rgb_evidence+1, pseudo_evidence+1
154
+ depth_rgb_alpha = self.DS_Combin_two(self.DS_Combin_two(depth_alpha, rgb_alpha), pseudo_alpha)
155
+ return depth_alpha, rgb_alpha, pseudo_alpha, depth_rgb_alpha
156
+
models/__pycache__/TMC.cpython-39.pyc ADDED
Binary file (4.35 kB). View file
 
models/__pycache__/classifiers.cpython-39.pyc ADDED
Binary file (5.68 kB). View file
 
models/__pycache__/image.cpython-39.pyc ADDED
Binary file (5.58 kB). View file
 
models/__pycache__/rawnet.cpython-39.pyc ADDED
Binary file (9.67 kB). View file
 
models/classifiers.py ADDED
@@ -0,0 +1,172 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from functools import partial
2
+
3
+ import numpy as np
4
+ import torch
5
+ from timm.models.efficientnet import tf_efficientnet_b4_ns, tf_efficientnet_b3_ns, \
6
+ tf_efficientnet_b5_ns, tf_efficientnet_b2_ns, tf_efficientnet_b6_ns, tf_efficientnet_b7_ns
7
+ from torch import nn
8
+ from torch.nn.modules.dropout import Dropout
9
+ from torch.nn.modules.linear import Linear
10
+ from torch.nn.modules.pooling import AdaptiveAvgPool2d
11
+
12
+ encoder_params = {
13
+ "tf_efficientnet_b3_ns": {
14
+ "features": 1536,
15
+ "init_op": partial(tf_efficientnet_b3_ns, pretrained=True, drop_path_rate=0.2)
16
+ },
17
+ "tf_efficientnet_b2_ns": {
18
+ "features": 1408,
19
+ "init_op": partial(tf_efficientnet_b2_ns, pretrained=False, drop_path_rate=0.2)
20
+ },
21
+ "tf_efficientnet_b4_ns": {
22
+ "features": 1792,
23
+ "init_op": partial(tf_efficientnet_b4_ns, pretrained=True, drop_path_rate=0.5)
24
+ },
25
+ "tf_efficientnet_b5_ns": {
26
+ "features": 2048,
27
+ "init_op": partial(tf_efficientnet_b5_ns, pretrained=True, drop_path_rate=0.2)
28
+ },
29
+ "tf_efficientnet_b4_ns_03d": {
30
+ "features": 1792,
31
+ "init_op": partial(tf_efficientnet_b4_ns, pretrained=True, drop_path_rate=0.3)
32
+ },
33
+ "tf_efficientnet_b5_ns_03d": {
34
+ "features": 2048,
35
+ "init_op": partial(tf_efficientnet_b5_ns, pretrained=True, drop_path_rate=0.3)
36
+ },
37
+ "tf_efficientnet_b5_ns_04d": {
38
+ "features": 2048,
39
+ "init_op": partial(tf_efficientnet_b5_ns, pretrained=True, drop_path_rate=0.4)
40
+ },
41
+ "tf_efficientnet_b6_ns": {
42
+ "features": 2304,
43
+ "init_op": partial(tf_efficientnet_b6_ns, pretrained=True, drop_path_rate=0.2)
44
+ },
45
+ "tf_efficientnet_b7_ns": {
46
+ "features": 2560,
47
+ "init_op": partial(tf_efficientnet_b7_ns, pretrained=False, drop_path_rate=0.2)
48
+ },
49
+ "tf_efficientnet_b6_ns_04d": {
50
+ "features": 2304,
51
+ "init_op": partial(tf_efficientnet_b6_ns, pretrained=True, drop_path_rate=0.4)
52
+ },
53
+ }
54
+
55
+
56
+ def setup_srm_weights(input_channels: int = 3) -> torch.Tensor:
57
+ """Creates the SRM kernels for noise analysis."""
58
+ # note: values taken from Zhou et al., "Learning Rich Features for Image Manipulation Detection", CVPR2018
59
+ srm_kernel = torch.from_numpy(np.array([
60
+ [ # srm 1/2 horiz
61
+ [0., 0., 0., 0., 0.], # noqa: E241,E201
62
+ [0., 0., 0., 0., 0.], # noqa: E241,E201
63
+ [0., 1., -2., 1., 0.], # noqa: E241,E201
64
+ [0., 0., 0., 0., 0.], # noqa: E241,E201
65
+ [0., 0., 0., 0., 0.], # noqa: E241,E201
66
+ ], [ # srm 1/4
67
+ [0., 0., 0., 0., 0.], # noqa: E241,E201
68
+ [0., -1., 2., -1., 0.], # noqa: E241,E201
69
+ [0., 2., -4., 2., 0.], # noqa: E241,E201
70
+ [0., -1., 2., -1., 0.], # noqa: E241,E201
71
+ [0., 0., 0., 0., 0.], # noqa: E241,E201
72
+ ], [ # srm 1/12
73
+ [-1., 2., -2., 2., -1.], # noqa: E241,E201
74
+ [2., -6., 8., -6., 2.], # noqa: E241,E201
75
+ [-2., 8., -12., 8., -2.], # noqa: E241,E201
76
+ [2., -6., 8., -6., 2.], # noqa: E241,E201
77
+ [-1., 2., -2., 2., -1.], # noqa: E241,E201
78
+ ]
79
+ ])).float()
80
+ srm_kernel[0] /= 2
81
+ srm_kernel[1] /= 4
82
+ srm_kernel[2] /= 12
83
+ return srm_kernel.view(3, 1, 5, 5).repeat(1, input_channels, 1, 1)
84
+
85
+
86
+ def setup_srm_layer(input_channels: int = 3) -> torch.nn.Module:
87
+ """Creates a SRM convolution layer for noise analysis."""
88
+ weights = setup_srm_weights(input_channels)
89
+ conv = torch.nn.Conv2d(input_channels, out_channels=3, kernel_size=5, stride=1, padding=2, bias=False)
90
+ with torch.no_grad():
91
+ conv.weight = torch.nn.Parameter(weights, requires_grad=False)
92
+ return conv
93
+
94
+
95
+ class DeepFakeClassifierSRM(nn.Module):
96
+ def __init__(self, encoder, dropout_rate=0.5) -> None:
97
+ super().__init__()
98
+ self.encoder = encoder_params[encoder]["init_op"]()
99
+ self.avg_pool = AdaptiveAvgPool2d((1, 1))
100
+ self.srm_conv = setup_srm_layer(3)
101
+ self.dropout = Dropout(dropout_rate)
102
+ self.fc = Linear(encoder_params[encoder]["features"], 1)
103
+
104
+ def forward(self, x):
105
+ noise = self.srm_conv(x)
106
+ x = self.encoder.forward_features(noise)
107
+ x = self.avg_pool(x).flatten(1)
108
+ x = self.dropout(x)
109
+ x = self.fc(x)
110
+ return x
111
+
112
+
113
+ class GlobalWeightedAvgPool2d(nn.Module):
114
+ """
115
+ Global Weighted Average Pooling from paper "Global Weighted Average
116
+ Pooling Bridges Pixel-level Localization and Image-level Classification"
117
+ """
118
+
119
+ def __init__(self, features: int, flatten=False):
120
+ super().__init__()
121
+ self.conv = nn.Conv2d(features, 1, kernel_size=1, bias=True)
122
+ self.flatten = flatten
123
+
124
+ def fscore(self, x):
125
+ m = self.conv(x)
126
+ m = m.sigmoid().exp()
127
+ return m
128
+
129
+ def norm(self, x: torch.Tensor):
130
+ return x / x.sum(dim=[2, 3], keepdim=True)
131
+
132
+ def forward(self, x):
133
+ input_x = x
134
+ x = self.fscore(x)
135
+ x = self.norm(x)
136
+ x = x * input_x
137
+ x = x.sum(dim=[2, 3], keepdim=not self.flatten)
138
+ return x
139
+
140
+
141
+ class DeepFakeClassifier(nn.Module):
142
+ def __init__(self, encoder, dropout_rate=0.0) -> None:
143
+ super().__init__()
144
+ self.encoder = encoder_params[encoder]["init_op"]()
145
+ self.avg_pool = AdaptiveAvgPool2d((1, 1))
146
+ self.dropout = Dropout(dropout_rate)
147
+ self.fc = Linear(encoder_params[encoder]["features"], 1)
148
+
149
+ def forward(self, x):
150
+ x = self.encoder.forward_features(x)
151
+ x = self.avg_pool(x).flatten(1)
152
+ x = self.dropout(x)
153
+ x = self.fc(x)
154
+ return x
155
+
156
+
157
+
158
+
159
+ class DeepFakeClassifierGWAP(nn.Module):
160
+ def __init__(self, encoder, dropout_rate=0.5) -> None:
161
+ super().__init__()
162
+ self.encoder = encoder_params[encoder]["init_op"]()
163
+ self.avg_pool = GlobalWeightedAvgPool2d(encoder_params[encoder]["features"])
164
+ self.dropout = Dropout(dropout_rate)
165
+ self.fc = Linear(encoder_params[encoder]["features"], 1)
166
+
167
+ def forward(self, x):
168
+ x = self.encoder.forward_features(x)
169
+ x = self.avg_pool(x).flatten(1)
170
+ x = self.dropout(x)
171
+ x = self.fc(x)
172
+ return x
models/image.py ADDED
@@ -0,0 +1,195 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import re
2
+ import os
3
+ import wget
4
+ import torch
5
+ import torchvision
6
+ import torch.nn as nn
7
+ import torch.nn.functional as F
8
+ from models.rawnet import SincConv, Residual_block
9
+ from models.classifiers import DeepFakeClassifier
10
+
11
+ class ImageEncoder(nn.Module):
12
+ def __init__(self, args):
13
+ super(ImageEncoder, self).__init__()
14
+ self.device = args.device
15
+ self.args = args
16
+ self.flatten = nn.Flatten()
17
+ self.sigmoid = nn.Sigmoid()
18
+ # self.fc = nn.Linear(in_features=2560, out_features = 2)
19
+ self.pretrained_image_encoder = args.pretrained_image_encoder
20
+ self.freeze_image_encoder = args.freeze_image_encoder
21
+
22
+ if self.pretrained_image_encoder == False:
23
+ self.model = DeepFakeClassifier(encoder = "tf_efficientnet_b7_ns").to(self.device)
24
+
25
+ else:
26
+ self.pretrained_ckpt = torch.load('pretrained\\final_999_DeepFakeClassifier_tf_efficientnet_b7_ns_0_23', map_location = torch.device(self.args.device))
27
+ self.state_dict = self.pretrained_ckpt.get("state_dict", self.pretrained_ckpt)
28
+
29
+ self.model = DeepFakeClassifier(encoder = "tf_efficientnet_b7_ns").to(self.device)
30
+ print("Loading pretrained image encoder...")
31
+ self.model.load_state_dict({re.sub("^module.", "", k): v for k, v in self.state_dict.items()}, strict=True)
32
+ print("Loaded pretrained image encoder.")
33
+
34
+ if self.freeze_image_encoder == True:
35
+ for idx, param in self.model.named_parameters():
36
+ param.requires_grad = False
37
+
38
+ # self.model.fc = nn.Identity()
39
+
40
+ def forward(self, x):
41
+ x = self.model(x)
42
+ out = self.sigmoid(x)
43
+ # x = self.flatten(x)
44
+ # out = self.fc(x)
45
+ return out
46
+
47
+
48
+ class RawNet(nn.Module):
49
+ def __init__(self, args):
50
+ super(RawNet, self).__init__()
51
+
52
+ self.device=args.device
53
+ self.filts = [20, [20, 20], [20, 128], [128, 128]]
54
+
55
+ self.Sinc_conv=SincConv(device=self.device,
56
+ out_channels = self.filts[0],
57
+ kernel_size = 1024,
58
+ in_channels = args.in_channels)
59
+
60
+ self.first_bn = nn.BatchNorm1d(num_features = self.filts[0])
61
+ self.selu = nn.SELU(inplace=True)
62
+ self.block0 = nn.Sequential(Residual_block(nb_filts = self.filts[1], first = True))
63
+ self.block1 = nn.Sequential(Residual_block(nb_filts = self.filts[1]))
64
+ self.block2 = nn.Sequential(Residual_block(nb_filts = self.filts[2]))
65
+ self.filts[2][0] = self.filts[2][1]
66
+ self.block3 = nn.Sequential(Residual_block(nb_filts = self.filts[2]))
67
+ self.block4 = nn.Sequential(Residual_block(nb_filts = self.filts[2]))
68
+ self.block5 = nn.Sequential(Residual_block(nb_filts = self.filts[2]))
69
+ self.avgpool = nn.AdaptiveAvgPool1d(1)
70
+
71
+ self.fc_attention0 = self._make_attention_fc(in_features = self.filts[1][-1],
72
+ l_out_features = self.filts[1][-1])
73
+ self.fc_attention1 = self._make_attention_fc(in_features = self.filts[1][-1],
74
+ l_out_features = self.filts[1][-1])
75
+ self.fc_attention2 = self._make_attention_fc(in_features = self.filts[2][-1],
76
+ l_out_features = self.filts[2][-1])
77
+ self.fc_attention3 = self._make_attention_fc(in_features = self.filts[2][-1],
78
+ l_out_features = self.filts[2][-1])
79
+ self.fc_attention4 = self._make_attention_fc(in_features = self.filts[2][-1],
80
+ l_out_features = self.filts[2][-1])
81
+ self.fc_attention5 = self._make_attention_fc(in_features = self.filts[2][-1],
82
+ l_out_features = self.filts[2][-1])
83
+
84
+ self.bn_before_gru = nn.BatchNorm1d(num_features = self.filts[2][-1])
85
+ self.gru = nn.GRU(input_size = self.filts[2][-1],
86
+ hidden_size = args.gru_node,
87
+ num_layers = args.nb_gru_layer,
88
+ batch_first = True)
89
+
90
+ self.fc1_gru = nn.Linear(in_features = args.gru_node,
91
+ out_features = args.nb_fc_node)
92
+
93
+ self.fc2_gru = nn.Linear(in_features = args.nb_fc_node,
94
+ out_features = args.nb_classes ,bias=True)
95
+
96
+ self.sig = nn.Sigmoid()
97
+ self.logsoftmax = nn.LogSoftmax(dim=1)
98
+ self.pretrained_audio_encoder = args.pretrained_audio_encoder
99
+ self.freeze_audio_encoder = args.freeze_audio_encoder
100
+
101
+ if self.pretrained_audio_encoder == True:
102
+ print("Loading pretrained audio encoder")
103
+ ckpt = torch.load('pretrained\\RawNet.pth', map_location = torch.device(self.device))
104
+ print("Loaded pretrained audio encoder")
105
+ self.load_state_dict(ckpt, strict = True)
106
+
107
+ if self.freeze_audio_encoder:
108
+ for param in self.parameters():
109
+ param.requires_grad = False
110
+
111
+
112
+ def forward(self, x, y = None):
113
+
114
+ nb_samp = x.shape[0]
115
+ len_seq = x.shape[1]
116
+ x=x.view(nb_samp,1,len_seq)
117
+
118
+ x = self.Sinc_conv(x)
119
+ x = F.max_pool1d(torch.abs(x), 3)
120
+ x = self.first_bn(x)
121
+ x = self.selu(x)
122
+
123
+ x0 = self.block0(x)
124
+ y0 = self.avgpool(x0).view(x0.size(0), -1) # torch.Size([batch, filter])
125
+ y0 = self.fc_attention0(y0)
126
+ y0 = self.sig(y0).view(y0.size(0), y0.size(1), -1) # torch.Size([batch, filter, 1])
127
+ x = x0 * y0 + y0 # (batch, filter, time) x (batch, filter, 1)
128
+
129
+
130
+ x1 = self.block1(x)
131
+ y1 = self.avgpool(x1).view(x1.size(0), -1) # torch.Size([batch, filter])
132
+ y1 = self.fc_attention1(y1)
133
+ y1 = self.sig(y1).view(y1.size(0), y1.size(1), -1) # torch.Size([batch, filter, 1])
134
+ x = x1 * y1 + y1 # (batch, filter, time) x (batch, filter, 1)
135
+
136
+ x2 = self.block2(x)
137
+ y2 = self.avgpool(x2).view(x2.size(0), -1) # torch.Size([batch, filter])
138
+ y2 = self.fc_attention2(y2)
139
+ y2 = self.sig(y2).view(y2.size(0), y2.size(1), -1) # torch.Size([batch, filter, 1])
140
+ x = x2 * y2 + y2 # (batch, filter, time) x (batch, filter, 1)
141
+
142
+ x3 = self.block3(x)
143
+ y3 = self.avgpool(x3).view(x3.size(0), -1) # torch.Size([batch, filter])
144
+ y3 = self.fc_attention3(y3)
145
+ y3 = self.sig(y3).view(y3.size(0), y3.size(1), -1) # torch.Size([batch, filter, 1])
146
+ x = x3 * y3 + y3 # (batch, filter, time) x (batch, filter, 1)
147
+
148
+ x4 = self.block4(x)
149
+ y4 = self.avgpool(x4).view(x4.size(0), -1) # torch.Size([batch, filter])
150
+ y4 = self.fc_attention4(y4)
151
+ y4 = self.sig(y4).view(y4.size(0), y4.size(1), -1) # torch.Size([batch, filter, 1])
152
+ x = x4 * y4 + y4 # (batch, filter, time) x (batch, filter, 1)
153
+
154
+ x5 = self.block5(x)
155
+ y5 = self.avgpool(x5).view(x5.size(0), -1) # torch.Size([batch, filter])
156
+ y5 = self.fc_attention5(y5)
157
+ y5 = self.sig(y5).view(y5.size(0), y5.size(1), -1) # torch.Size([batch, filter, 1])
158
+ x = x5 * y5 + y5 # (batch, filter, time) x (batch, filter, 1)
159
+
160
+ x = self.bn_before_gru(x)
161
+ x = self.selu(x)
162
+ x = x.permute(0, 2, 1) #(batch, filt, time) >> (batch, time, filt)
163
+ self.gru.flatten_parameters()
164
+ x, _ = self.gru(x)
165
+ x = x[:,-1,:]
166
+ x = self.fc1_gru(x)
167
+ x = self.fc2_gru(x)
168
+ output=self.logsoftmax(x)
169
+
170
+ return output
171
+
172
+
173
+
174
+ def _make_attention_fc(self, in_features, l_out_features):
175
+
176
+ l_fc = []
177
+
178
+ l_fc.append(nn.Linear(in_features = in_features,
179
+ out_features = l_out_features))
180
+
181
+
182
+
183
+ return nn.Sequential(*l_fc)
184
+
185
+
186
+ def _make_layer(self, nb_blocks, nb_filts, first = False):
187
+ layers = []
188
+ #def __init__(self, nb_filts, first = False):
189
+ for i in range(nb_blocks):
190
+ first = first if i == 0 else False
191
+ layers.append(Residual_block(nb_filts = nb_filts,
192
+ first = first))
193
+ if i == 0: nb_filts[0] = nb_filts[1]
194
+
195
+ return nn.Sequential(*layers)
models/rawnet.py ADDED
@@ -0,0 +1,360 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ import torch.nn as nn
3
+ import torch.nn.functional as F
4
+ from torch import Tensor
5
+ import numpy as np
6
+ from torch.utils import data
7
+ from collections import OrderedDict
8
+ from torch.nn.parameter import Parameter
9
+
10
+
11
+ class SincConv(nn.Module):
12
+ @staticmethod
13
+ def to_mel(hz):
14
+ return 2595 * np.log10(1 + hz / 700)
15
+
16
+ @staticmethod
17
+ def to_hz(mel):
18
+ return 700 * (10 ** (mel / 2595) - 1)
19
+
20
+
21
+ def __init__(self, device,out_channels, kernel_size,in_channels=1,sample_rate=16000,
22
+ stride=1, padding=0, dilation=1, bias=False, groups=1):
23
+
24
+ super(SincConv,self).__init__()
25
+
26
+ if in_channels != 1:
27
+
28
+ msg = "SincConv only support one input channel (here, in_channels = {%i})" % (in_channels)
29
+ raise ValueError(msg)
30
+
31
+ self.out_channels = out_channels
32
+ self.kernel_size = kernel_size
33
+ self.sample_rate=sample_rate
34
+
35
+ # Forcing the filters to be odd (i.e, perfectly symmetrics)
36
+ if kernel_size%2==0:
37
+ self.kernel_size=self.kernel_size+1
38
+
39
+ self.device=device
40
+ self.stride = stride
41
+ self.padding = padding
42
+ self.dilation = dilation
43
+
44
+ if bias:
45
+ raise ValueError('SincConv does not support bias.')
46
+ if groups > 1:
47
+ raise ValueError('SincConv does not support groups.')
48
+
49
+
50
+ # initialize filterbanks using Mel scale
51
+ NFFT = 512
52
+ f=int(self.sample_rate/2)*np.linspace(0,1,int(NFFT/2)+1)
53
+ fmel=self.to_mel(f) # Hz to mel conversion
54
+ fmelmax=np.max(fmel)
55
+ fmelmin=np.min(fmel)
56
+ filbandwidthsmel=np.linspace(fmelmin,fmelmax,self.out_channels+1)
57
+ filbandwidthsf=self.to_hz(filbandwidthsmel) # Mel to Hz conversion
58
+ self.mel=filbandwidthsf
59
+ self.hsupp=torch.arange(-(self.kernel_size-1)/2, (self.kernel_size-1)/2+1)
60
+ self.band_pass=torch.zeros(self.out_channels,self.kernel_size)
61
+
62
+
63
+
64
+ def forward(self,x):
65
+ for i in range(len(self.mel)-1):
66
+ fmin=self.mel[i]
67
+ fmax=self.mel[i+1]
68
+ hHigh=(2*fmax/self.sample_rate)*np.sinc(2*fmax*self.hsupp/self.sample_rate)
69
+ hLow=(2*fmin/self.sample_rate)*np.sinc(2*fmin*self.hsupp/self.sample_rate)
70
+ hideal=hHigh-hLow
71
+
72
+ self.band_pass[i,:]=Tensor(np.hamming(self.kernel_size))*Tensor(hideal)
73
+
74
+ band_pass_filter=self.band_pass.to(self.device)
75
+
76
+ self.filters = (band_pass_filter).view(self.out_channels, 1, self.kernel_size)
77
+
78
+ return F.conv1d(x, self.filters, stride=self.stride,
79
+ padding=self.padding, dilation=self.dilation,
80
+ bias=None, groups=1)
81
+
82
+
83
+
84
+ class Residual_block(nn.Module):
85
+ def __init__(self, nb_filts, first = False):
86
+ super(Residual_block, self).__init__()
87
+ self.first = first
88
+
89
+ if not self.first:
90
+ self.bn1 = nn.BatchNorm1d(num_features = nb_filts[0])
91
+
92
+ self.lrelu = nn.LeakyReLU(negative_slope=0.3)
93
+
94
+ self.conv1 = nn.Conv1d(in_channels = nb_filts[0],
95
+ out_channels = nb_filts[1],
96
+ kernel_size = 3,
97
+ padding = 1,
98
+ stride = 1)
99
+
100
+ self.bn2 = nn.BatchNorm1d(num_features = nb_filts[1])
101
+ self.conv2 = nn.Conv1d(in_channels = nb_filts[1],
102
+ out_channels = nb_filts[1],
103
+ padding = 1,
104
+ kernel_size = 3,
105
+ stride = 1)
106
+
107
+ if nb_filts[0] != nb_filts[1]:
108
+ self.downsample = True
109
+ self.conv_downsample = nn.Conv1d(in_channels = nb_filts[0],
110
+ out_channels = nb_filts[1],
111
+ padding = 0,
112
+ kernel_size = 1,
113
+ stride = 1)
114
+
115
+ else:
116
+ self.downsample = False
117
+ self.mp = nn.MaxPool1d(3)
118
+
119
+ def forward(self, x):
120
+ identity = x
121
+ if not self.first:
122
+ out = self.bn1(x)
123
+ out = self.lrelu(out)
124
+ else:
125
+ out = x
126
+
127
+ out = self.conv1(x)
128
+ out = self.bn2(out)
129
+ out = self.lrelu(out)
130
+ out = self.conv2(out)
131
+
132
+ if self.downsample:
133
+ identity = self.conv_downsample(identity)
134
+
135
+ out += identity
136
+ out = self.mp(out)
137
+ return out
138
+
139
+
140
+
141
+
142
+
143
+ class RawNet(nn.Module):
144
+ def __init__(self, d_args, device):
145
+ super(RawNet, self).__init__()
146
+
147
+
148
+ self.device=device
149
+
150
+ self.Sinc_conv=SincConv(device=self.device,
151
+ out_channels = d_args['filts'][0],
152
+ kernel_size = d_args['first_conv'],
153
+ in_channels = d_args['in_channels']
154
+ )
155
+
156
+ self.first_bn = nn.BatchNorm1d(num_features = d_args['filts'][0])
157
+ self.selu = nn.SELU(inplace=True)
158
+ self.block0 = nn.Sequential(Residual_block(nb_filts = d_args['filts'][1], first = True))
159
+ self.block1 = nn.Sequential(Residual_block(nb_filts = d_args['filts'][1]))
160
+ self.block2 = nn.Sequential(Residual_block(nb_filts = d_args['filts'][2]))
161
+ d_args['filts'][2][0] = d_args['filts'][2][1]
162
+ self.block3 = nn.Sequential(Residual_block(nb_filts = d_args['filts'][2]))
163
+ self.block4 = nn.Sequential(Residual_block(nb_filts = d_args['filts'][2]))
164
+ self.block5 = nn.Sequential(Residual_block(nb_filts = d_args['filts'][2]))
165
+ self.avgpool = nn.AdaptiveAvgPool1d(1)
166
+
167
+ self.fc_attention0 = self._make_attention_fc(in_features = d_args['filts'][1][-1],
168
+ l_out_features = d_args['filts'][1][-1])
169
+ self.fc_attention1 = self._make_attention_fc(in_features = d_args['filts'][1][-1],
170
+ l_out_features = d_args['filts'][1][-1])
171
+ self.fc_attention2 = self._make_attention_fc(in_features = d_args['filts'][2][-1],
172
+ l_out_features = d_args['filts'][2][-1])
173
+ self.fc_attention3 = self._make_attention_fc(in_features = d_args['filts'][2][-1],
174
+ l_out_features = d_args['filts'][2][-1])
175
+ self.fc_attention4 = self._make_attention_fc(in_features = d_args['filts'][2][-1],
176
+ l_out_features = d_args['filts'][2][-1])
177
+ self.fc_attention5 = self._make_attention_fc(in_features = d_args['filts'][2][-1],
178
+ l_out_features = d_args['filts'][2][-1])
179
+
180
+ self.bn_before_gru = nn.BatchNorm1d(num_features = d_args['filts'][2][-1])
181
+ self.gru = nn.GRU(input_size = d_args['filts'][2][-1],
182
+ hidden_size = d_args['gru_node'],
183
+ num_layers = d_args['nb_gru_layer'],
184
+ batch_first = True)
185
+
186
+
187
+ self.fc1_gru = nn.Linear(in_features = d_args['gru_node'],
188
+ out_features = d_args['nb_fc_node'])
189
+
190
+ self.fc2_gru = nn.Linear(in_features = d_args['nb_fc_node'],
191
+ out_features = d_args['nb_classes'],bias=True)
192
+
193
+
194
+ self.sig = nn.Sigmoid()
195
+ self.logsoftmax = nn.LogSoftmax(dim=1)
196
+
197
+ def forward(self, x, y = None):
198
+
199
+
200
+ nb_samp = x.shape[0]
201
+ len_seq = x.shape[1]
202
+ x=x.view(nb_samp,1,len_seq)
203
+
204
+ x = self.Sinc_conv(x)
205
+ x = F.max_pool1d(torch.abs(x), 3)
206
+ x = self.first_bn(x)
207
+ x = self.selu(x)
208
+
209
+ x0 = self.block0(x)
210
+ y0 = self.avgpool(x0).view(x0.size(0), -1) # torch.Size([batch, filter])
211
+ y0 = self.fc_attention0(y0)
212
+ y0 = self.sig(y0).view(y0.size(0), y0.size(1), -1) # torch.Size([batch, filter, 1])
213
+ x = x0 * y0 + y0 # (batch, filter, time) x (batch, filter, 1)
214
+
215
+
216
+ x1 = self.block1(x)
217
+ y1 = self.avgpool(x1).view(x1.size(0), -1) # torch.Size([batch, filter])
218
+ y1 = self.fc_attention1(y1)
219
+ y1 = self.sig(y1).view(y1.size(0), y1.size(1), -1) # torch.Size([batch, filter, 1])
220
+ x = x1 * y1 + y1 # (batch, filter, time) x (batch, filter, 1)
221
+
222
+ x2 = self.block2(x)
223
+ y2 = self.avgpool(x2).view(x2.size(0), -1) # torch.Size([batch, filter])
224
+ y2 = self.fc_attention2(y2)
225
+ y2 = self.sig(y2).view(y2.size(0), y2.size(1), -1) # torch.Size([batch, filter, 1])
226
+ x = x2 * y2 + y2 # (batch, filter, time) x (batch, filter, 1)
227
+
228
+ x3 = self.block3(x)
229
+ y3 = self.avgpool(x3).view(x3.size(0), -1) # torch.Size([batch, filter])
230
+ y3 = self.fc_attention3(y3)
231
+ y3 = self.sig(y3).view(y3.size(0), y3.size(1), -1) # torch.Size([batch, filter, 1])
232
+ x = x3 * y3 + y3 # (batch, filter, time) x (batch, filter, 1)
233
+
234
+ x4 = self.block4(x)
235
+ y4 = self.avgpool(x4).view(x4.size(0), -1) # torch.Size([batch, filter])
236
+ y4 = self.fc_attention4(y4)
237
+ y4 = self.sig(y4).view(y4.size(0), y4.size(1), -1) # torch.Size([batch, filter, 1])
238
+ x = x4 * y4 + y4 # (batch, filter, time) x (batch, filter, 1)
239
+
240
+ x5 = self.block5(x)
241
+ y5 = self.avgpool(x5).view(x5.size(0), -1) # torch.Size([batch, filter])
242
+ y5 = self.fc_attention5(y5)
243
+ y5 = self.sig(y5).view(y5.size(0), y5.size(1), -1) # torch.Size([batch, filter, 1])
244
+ x = x5 * y5 + y5 # (batch, filter, time) x (batch, filter, 1)
245
+
246
+ x = self.bn_before_gru(x)
247
+ x = self.selu(x)
248
+ x = x.permute(0, 2, 1) #(batch, filt, time) >> (batch, time, filt)
249
+ self.gru.flatten_parameters()
250
+ x, _ = self.gru(x)
251
+ x = x[:,-1,:]
252
+ x = self.fc1_gru(x)
253
+ x = self.fc2_gru(x)
254
+ output=self.logsoftmax(x)
255
+ print(f"Spec output shape: {output.shape}")
256
+
257
+ return output
258
+
259
+
260
+
261
+ def _make_attention_fc(self, in_features, l_out_features):
262
+
263
+ l_fc = []
264
+
265
+ l_fc.append(nn.Linear(in_features = in_features,
266
+ out_features = l_out_features))
267
+
268
+
269
+
270
+ return nn.Sequential(*l_fc)
271
+
272
+
273
+ def _make_layer(self, nb_blocks, nb_filts, first = False):
274
+ layers = []
275
+ #def __init__(self, nb_filts, first = False):
276
+ for i in range(nb_blocks):
277
+ first = first if i == 0 else False
278
+ layers.append(Residual_block(nb_filts = nb_filts,
279
+ first = first))
280
+ if i == 0: nb_filts[0] = nb_filts[1]
281
+
282
+ return nn.Sequential(*layers)
283
+
284
+ def summary(self, input_size, batch_size=-1, device="cuda", print_fn = None):
285
+ if print_fn == None: printfn = print
286
+ model = self
287
+
288
+ def register_hook(module):
289
+ def hook(module, input, output):
290
+ class_name = str(module.__class__).split(".")[-1].split("'")[0]
291
+ module_idx = len(summary)
292
+
293
+ m_key = "%s-%i" % (class_name, module_idx + 1)
294
+ summary[m_key] = OrderedDict()
295
+ summary[m_key]["input_shape"] = list(input[0].size())
296
+ summary[m_key]["input_shape"][0] = batch_size
297
+ if isinstance(output, (list, tuple)):
298
+ summary[m_key]["output_shape"] = [
299
+ [-1] + list(o.size())[1:] for o in output
300
+ ]
301
+ else:
302
+ summary[m_key]["output_shape"] = list(output.size())
303
+ if len(summary[m_key]["output_shape"]) != 0:
304
+ summary[m_key]["output_shape"][0] = batch_size
305
+
306
+ params = 0
307
+ if hasattr(module, "weight") and hasattr(module.weight, "size"):
308
+ params += torch.prod(torch.LongTensor(list(module.weight.size())))
309
+ summary[m_key]["trainable"] = module.weight.requires_grad
310
+ if hasattr(module, "bias") and hasattr(module.bias, "size"):
311
+ params += torch.prod(torch.LongTensor(list(module.bias.size())))
312
+ summary[m_key]["nb_params"] = params
313
+
314
+ if (
315
+ not isinstance(module, nn.Sequential)
316
+ and not isinstance(module, nn.ModuleList)
317
+ and not (module == model)
318
+ ):
319
+ hooks.append(module.register_forward_hook(hook))
320
+
321
+ device = device.lower()
322
+ assert device in [
323
+ "cuda",
324
+ "cpu",
325
+ ], "Input device is not valid, please specify 'cuda' or 'cpu'"
326
+
327
+ if device == "cuda" and torch.cuda.is_available():
328
+ dtype = torch.cuda.FloatTensor
329
+ else:
330
+ dtype = torch.FloatTensor
331
+ if isinstance(input_size, tuple):
332
+ input_size = [input_size]
333
+ x = [torch.rand(2, *in_size).type(dtype) for in_size in input_size]
334
+ summary = OrderedDict()
335
+ hooks = []
336
+ model.apply(register_hook)
337
+ model(*x)
338
+ for h in hooks:
339
+ h.remove()
340
+
341
+ print_fn("----------------------------------------------------------------")
342
+ line_new = "{:>20} {:>25} {:>15}".format("Layer (type)", "Output Shape", "Param #")
343
+ print_fn(line_new)
344
+ print_fn("================================================================")
345
+ total_params = 0
346
+ total_output = 0
347
+ trainable_params = 0
348
+ for layer in summary:
349
+ # input_shape, output_shape, trainable, nb_params
350
+ line_new = "{:>20} {:>25} {:>15}".format(
351
+ layer,
352
+ str(summary[layer]["output_shape"]),
353
+ "{0:,}".format(summary[layer]["nb_params"]),
354
+ )
355
+ total_params += summary[layer]["nb_params"]
356
+ total_output += np.prod(summary[layer]["output_shape"])
357
+ if "trainable" in summary[layer]:
358
+ if summary[layer]["trainable"] == True:
359
+ trainable_params += summary[layer]["nb_params"]
360
+ print_fn(line_new)
requirements.txt ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ wget
2
+ timm
3
+ torch
4
+ tensorflow
5
+ moviepy
6
+ librosa
7
+ ffmpeg
8
+ albumentations
9
+ opencv-python
10
+ torchsummary
11
+ onnx
12
+ onnx2pytorch
save_ckpts.py ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import onnx
2
+ import torch
3
+ import argparse
4
+ import numpy as np
5
+ import torch.nn as nn
6
+ from models.TMC import ETMC
7
+ from models import image
8
+ from onnx2pytorch import ConvertModel
9
+
10
+ onnx_model = onnx.load('checkpoints\\efficientnet.onnx')
11
+ pytorch_model = ConvertModel(onnx_model)
12
+
13
+ # Define the audio_args dictionary
14
+ audio_args = {
15
+ 'nb_samp': 64600,
16
+ 'first_conv': 1024,
17
+ 'in_channels': 1,
18
+ 'filts': [20, [20, 20], [20, 128], [128, 128]],
19
+ 'blocks': [2, 4],
20
+ 'nb_fc_node': 1024,
21
+ 'gru_node': 1024,
22
+ 'nb_gru_layer': 3,
23
+ 'nb_classes': 2
24
+ }
25
+
26
+
27
+ def get_args(parser):
28
+ parser.add_argument("--batch_size", type=int, default=8)
29
+ parser.add_argument("--data_dir", type=str, default="datasets/train/fakeavceleb*")
30
+ parser.add_argument("--LOAD_SIZE", type=int, default=256)
31
+ parser.add_argument("--FINE_SIZE", type=int, default=224)
32
+ parser.add_argument("--dropout", type=float, default=0.2)
33
+ parser.add_argument("--gradient_accumulation_steps", type=int, default=1)
34
+ parser.add_argument("--hidden", nargs="*", type=int, default=[])
35
+ parser.add_argument("--hidden_sz", type=int, default=768)
36
+ parser.add_argument("--img_embed_pool_type", type=str, default="avg", choices=["max", "avg"])
37
+ parser.add_argument("--img_hidden_sz", type=int, default=1024)
38
+ parser.add_argument("--include_bn", type=int, default=True)
39
+ parser.add_argument("--lr", type=float, default=1e-4)
40
+ parser.add_argument("--lr_factor", type=float, default=0.3)
41
+ parser.add_argument("--lr_patience", type=int, default=10)
42
+ parser.add_argument("--max_epochs", type=int, default=500)
43
+ parser.add_argument("--n_workers", type=int, default=12)
44
+ parser.add_argument("--name", type=str, default="MMDF")
45
+ parser.add_argument("--num_image_embeds", type=int, default=1)
46
+ parser.add_argument("--patience", type=int, default=20)
47
+ parser.add_argument("--savedir", type=str, default="./savepath/")
48
+ parser.add_argument("--seed", type=int, default=1)
49
+ parser.add_argument("--n_classes", type=int, default=2)
50
+ parser.add_argument("--annealing_epoch", type=int, default=10)
51
+ parser.add_argument("--device", type=str, default='cpu')
52
+ parser.add_argument("--pretrained_image_encoder", type=bool, default = False)
53
+ parser.add_argument("--freeze_image_encoder", type=bool, default = False)
54
+ parser.add_argument("--pretrained_audio_encoder", type = bool, default=False)
55
+ parser.add_argument("--freeze_audio_encoder", type = bool, default = False)
56
+ parser.add_argument("--augment_dataset", type = bool, default = True)
57
+
58
+ for key, value in audio_args.items():
59
+ parser.add_argument(f"--{key}", type=type(value), default=value)
60
+
61
+ def load_spec_modality_model(args):
62
+ spec_encoder = image.RawNet(args)
63
+ ckpt = torch.load('checkpoints\RawNet2.pth', map_location = torch.device('cpu'))
64
+ spec_encoder.load_state_dict(ckpt, strict = True)
65
+ spec_encoder.eval()
66
+ return spec_encoder
67
+
68
+
69
+ #Load models.
70
+ parser = argparse.ArgumentParser(description="Train Models")
71
+ get_args(parser)
72
+ args, remaining_args = parser.parse_known_args()
73
+ assert remaining_args == [], remaining_args
74
+
75
+ spec_model = load_spec_modality_model(args)
76
+
77
+ print(f"Image model is: {pytorch_model}")
78
+
79
+ print(f"Audio model is: {spec_model}")
80
+
81
+
82
+ PATH = 'checkpoints\\model.pth'
83
+
84
+ torch.save({
85
+ 'spec_encoder': spec_model.state_dict(),
86
+ 'rgb_encoder': pytorch_model.state_dict()
87
+ }, PATH)
88
+
89
+ print("Model saved.")
utils/__pycache__/logger.cpython-39.pyc ADDED
Binary file (1.93 kB). View file
 
utils/__pycache__/utils.cpython-39.pyc ADDED
Binary file (1.77 kB). View file
 
utils/logger.py ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import logging
2
+ import time
3
+ from datetime import timedelta
4
+
5
+
6
+ class LogFormatter:
7
+ def __init__(self):
8
+ self.start_time = time.time()
9
+
10
+ def format(self, record):
11
+ elapsed_seconds = round(record.created - self.start_time)
12
+
13
+ prefix = "%s - %s - %s" % (
14
+ record.levelname,
15
+ time.strftime("%x %X"),
16
+ timedelta(seconds=elapsed_seconds),
17
+ )
18
+ message = record.getMessage()
19
+ message = message.replace("\n", "\n" + " " * (len(prefix) + 3))
20
+ return "%s - %s" % (prefix, message)
21
+
22
+
23
+ def create_logger(filepath, args):
24
+ # create log formatter
25
+ log_formatter = LogFormatter()
26
+
27
+ # create file handler and set level to debug
28
+ file_handler = logging.FileHandler(filepath, "a")
29
+ file_handler.setLevel(logging.DEBUG)
30
+ file_handler.setFormatter(log_formatter)
31
+
32
+ # create console handler and set level to info
33
+ console_handler = logging.StreamHandler()
34
+ console_handler.setLevel(logging.INFO)
35
+ console_handler.setFormatter(log_formatter)
36
+
37
+ # create logger and set level to debug
38
+ logger = logging.getLogger()
39
+ logger.handlers = []
40
+ logger.setLevel(logging.DEBUG)
41
+ logger.propagate = False
42
+ logger.addHandler(file_handler)
43
+ logger.addHandler(console_handler)
44
+
45
+ # reset logger elapsed time
46
+ def reset_time():
47
+ log_formatter.start_time = time.time()
48
+
49
+ logger.reset_time = reset_time
50
+
51
+ logger.info(
52
+ "\n".join(
53
+ "%s: %s" % (k, str(v))
54
+ for k, v in sorted(dict(vars(args)).items(), key=lambda x: x[0])
55
+ )
56
+ )
57
+
58
+ return logger
utils/utils.py ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import contextlib
2
+ import numpy as np
3
+ import random
4
+ import shutil
5
+ import os
6
+
7
+ import torch
8
+
9
+
10
+ def set_seed(seed):
11
+ random.seed(seed)
12
+ np.random.seed(seed)
13
+ torch.manual_seed(seed)
14
+ if torch.cuda.is_available():
15
+ torch.cuda.manual_seed(seed)
16
+ torch.cuda.manual_seed_all(seed)
17
+
18
+ torch.backends.cudnn.deterministic = True
19
+ torch.backends.cudnn.benchmark = False
20
+
21
+
22
+ def save_checkpoint(state, is_best, checkpoint_path, filename="checkpoint.pt"):
23
+ filename = os.path.join(checkpoint_path, filename)
24
+ torch.save(state, filename)
25
+ if is_best:
26
+ shutil.copyfile(filename, os.path.join(checkpoint_path, "model_best.pt"))
27
+
28
+
29
+ def load_checkpoint(model, path):
30
+ best_checkpoint = torch.load(path)
31
+ model.load_state_dict(best_checkpoint["state_dict"])
32
+
33
+ def log_metrics(set_name, metrics, logger):
34
+ logger.info(
35
+ "{}: Loss: {:.5f} | spec_acc: {:.5f}, rgb_acc: {:.5f}".format(
36
+ set_name, metrics["loss"], metrics["spec_acc"], metrics["rgb_acc"]
37
+ )
38
+ )
39
+
40
+
41
+ @contextlib.contextmanager
42
+ def numpy_seed(seed, *addl_seeds):
43
+ """Context manager which seeds the NumPy PRNG with the specified seed and
44
+ restores the state afterward"""
45
+ if seed is None:
46
+ yield
47
+ return
48
+ if len(addl_seeds) > 0:
49
+ seed = int(hash((seed, *addl_seeds)) % 1e6)
50
+ state = np.random.get_state()
51
+ np.random.seed(seed)
52
+ try:
53
+ yield
54
+ finally:
55
+ np.random.set_state(state)
videos/celeb_synthesis.mp4 ADDED
Binary file (209 kB). View file
 
videos/real-1.mp4 ADDED
Binary file (631 kB). View file