{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/video-face-manipulation-detection-through","title":"Video Face Manipulation Detection Through Ensemble of CNNs","arxiv_id":"2004.07676","date":"2020-04-16","proceeding":null,"authors":["Nicolò Bonettini","Edoardo Daniele Cannas","Sara Mandelli","Luca Bondi","Paolo Bestagini","Stefano Tubaro"],"abstract":"In the last few years, several techniques for facial manipulation in videos have been successfully developed and made available to the masses (i.e., FaceSwap, deepfake, etc.). These methods enable anyone to easily edit faces in video sequences with incredibly realistic results and a very little effort. Despite the usefulness of these tools in many fields, if used maliciously, they can have a significantly bad impact on society (e.g., fake news spreading, cyber bullying through fake revenge porn). The ability of objectively detecting whether a face has been manipulated in a video sequence is then a task of utmost importance. In this paper, we tackle the problem of face manipulation detection in video sequences targeting modern facial manipulation techniques. In particular, we study the ensembling of different trained Convolutional Neural Network (CNN) models. In the proposed solution, different models are obtained starting from a base network (i.e., EfficientNetB4) making use of two different concepts: (i) attention layers; (ii) siamese training. We show that combining these networks leads to promising face manipulation detection results on two publicly available datasets with more than 119000 videos.","url_abs":"https://arxiv.org/abs/2004.07676v1","url_pdf":"https://arxiv.org/pdf/2004.07676v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"video-face-manipulation-detection-through","repo_url":"https://github.com/polimi-ispl/icpr2020dfdc","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"GPL-3.0"}},{"paper_slug":"video-face-manipulation-detection-through","repo_url":"https://github.com/SuyashSonawane/fakedetector","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"GPL-3.0"}},{"paper_slug":"video-face-manipulation-detection-through","repo_url":"https://github.com/jhchang/DFDC","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"deepfake-detection","task_name":"DeepFake Detection"},{"task_slug":"detecting-image-manipulation","task_name":"Detecting Image Manipulation"},{"task_slug":"fake-image-detection","task_name":"Fake Image Detection"},{"task_slug":"gan-image-forensics","task_name":"GAN image forensics"},{"task_slug":"image-manipulation-detection","task_name":"Image Manipulation Detection"},{"task_slug":"localization-in-video-forgery","task_name":"Localization In Video Forgery"},{"task_slug":"video-forensics","task_name":"Video Forensics"}],"methods":[{"method_slug":"1x1-convolution","method_name":"1x1 Convolution"},{"method_slug":"average-pooling","method_name":"Average Pooling"},{"method_slug":"batch-normalization","method_name":"Batch Normalization"},{"method_slug":"convolution","method_name":"Convolution"},{"method_slug":"dense-connections","method_name":"Dense Connections"},{"method_slug":"depthwise-convolution","method_name":"Depthwise Convolution"},{"method_slug":"depthwise-separable-convolution","method_name":"Depthwise Separable Convolution"},{"method_slug":"dropout","method_name":"Dropout"},{"method_slug":"efficientnet","method_name":"EfficientNet"},{"method_slug":"global-average-pooling","method_name":"Global Average Pooling"},{"method_slug":"inverted-residual-block","method_name":"Inverted Residual Block"},{"method_slug":"max-pooling","method_name":"Max Pooling"},{"method_slug":"pointwise-convolution","method_name":"Pointwise Convolution"},{"method_slug":"rmsprop","method_name":"RMSProp"},{"method_slug":"relu","method_name":"ReLU"},{"method_slug":"residual-connection","method_name":"Residual Connection"},{"method_slug":"sigmoid-activation","method_name":"Sigmoid Activation"},{"method_slug":"softmax","method_name":"Softmax"},{"method_slug":"squeeze-and-excitation-block","method_name":"Squeeze-and-Excitation Block"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/deepfake-detection-on-dfdc","task":"DeepFake Detection","dataset":"DFDC","model":"EfficientNetB4 + EfficientNetB4ST + B4Att","rank_in_archive_order":3,"of":3,"metrics":{"LogLoss":"0.4640"},"uses_additional_data":false},{"leaderboard":"/sota/deepfake-detection-on-faceforensics-1","task":"DeepFake Detection","dataset":"FaceForensics++","model":"EfficientNetB4 + EfficientNetB4ST + B4Att + B4AttST","rank_in_archive_order":2,"of":6,"metrics":{"AUC":"0.9444"},"uses_additional_data":true},{"leaderboard":"/sota/deepfake-detection-on-faceforensics-1","task":"DeepFake Detection","dataset":"FaceForensics++","model":"EfficientNetB4 + EfficientNetB4ST + B4AttST","rank_in_archive_order":6,"of":6,"metrics":{"LogLoss":"0.3269"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2004.07676","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2004.07676"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/polimi-ispl/icpr2020dfdc","reach":{"status":"ok","spdx":"GPL-3.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/jhchang/DFDC","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/SuyashSonawane/fakedetector","reach":{"status":"ok","spdx":"GPL-3.0"}}],"summary":{"ran_draft_wrong":1,"unverified":2},"by_repo_kind":{"listed":{"samples":1,"ran":0,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":3,"samples":[{"code_sha256_prefix":"5f0f32245e18b6b0","entry":"batch_forward","repo":null,"repo_kind":null,"path":null,"file_url":null,"link_basis":"identical_code_first_harvested_elsewhere","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":null,"inline_ok":false,"mcp_get_code":{"code_sha256":"5f0f32245e18b6b0"}},{"code_sha256_prefix":"644ba9d29a8bf845","entry":"parse_args","repo":"jhchang/DFDC","repo_kind":"listed","path":"extract_faces.py","file_url":"https://github.com/jhchang/DFDC/blob/HEAD/extract_faces.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"644ba9d29a8bf845"}},{"code_sha256_prefix":"6d02ac6d21a650ee","entry":"validation_routine","repo":null,"repo_kind":null,"path":null,"file_url":null,"link_basis":"identical_code_first_harvested_elsewhere","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":null,"inline_ok":false,"mcp_get_code":{"code_sha256":"6d02ac6d21a650ee"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}