{"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/rethinking-vision-language-model-in-face","title":"Rethinking Vision-Language Model in Face Forensics: Multi-Modal Interpretable Forged Face Detector","arxiv_id":"2503.20188","date":"2025-03-26","proceeding":"CVPR 2025 1","authors":["Xiao Guo","Xiufeng Song","Yue Zhang","Xiaohong Liu","Xiaoming Liu"],"abstract":"Deepfake detection is a long-established research topic vital for mitigating the spread of malicious misinformation. Unlike prior methods that provide either binary classification results or textual explanations separately, we introduce a novel method capable of generating both simultaneously. Our method harnesses the multi-modal learning capability of the pre-trained CLIP and the unprecedented interpretability of large language models (LLMs) to enhance both the generalization and explainability of deepfake detection. Specifically, we introduce a multi-modal face forgery detector (M2F2-Det) that employs tailored face forgery prompt learning, incorporating the pre-trained CLIP to improve generalization to unseen forgeries. Also, M2F2-Det incorporates an LLM to provide detailed textual explanations of its detection decisions, enhancing interpretability by bridging the gap between natural language and subtle cues of facial forgeries. Empirically, we evaluate M2F2-Det on both detection and explanation generation tasks, where it achieves state-of-the-art performance, demonstrating its effectiveness in identifying and explaining diverse forgeries.","url_abs":"https://arxiv.org/abs/2503.20188v1","url_pdf":"https://arxiv.org/pdf/2503.20188v1.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":"rethinking-vision-language-model-in-face","repo_url":"https://github.com/chelsea234/m2f2_det","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"binary-classification","task_name":"Binary Classification"},{"task_slug":"deepfake-detection","task_name":"DeepFake Detection"},{"task_slug":"explanation-generation","task_name":"Explanation Generation"},{"task_slug":"face-swapping","task_name":"Face Swapping"},{"task_slug":"language-modeling","task_name":"Language Modeling"},{"task_slug":"language-modelling","task_name":"Language Modelling"},{"task_slug":"misinformation","task_name":"Misinformation"},{"task_slug":"prompt-learning","task_name":"Prompt Learning"}],"methods":[{"method_slug":"clip","method_name":"CLIP"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2503.20188","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2503.20188"}},"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/chelsea234/m2f2_det","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":1,"ran_fixture":1,"ran_violates":1,"unverified":8},"by_repo_kind":{"official":{"samples":11,"ran":3,"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":0,"samples":[{"code_sha256_prefix":"bb945d226af806a7","entry":"load_image","repo":"chelsea234/m2f2_det","repo_kind":"official","path":"llava/serve/cli_DDVQA_det.py","file_url":"https://github.com/chelsea234/m2f2_det/blob/HEAD/llava/serve/cli_DDVQA_det.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"bb945d226af806a7"}},{"code_sha256_prefix":"2d279d661251af46","entry":"sample_continuous","repo":"chelsea234/m2f2_det","repo_kind":"official","path":"dataset/process.py","file_url":"https://github.com/chelsea234/m2f2_det/blob/HEAD/dataset/process.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"2d279d661251af46"}},{"code_sha256_prefix":"d9f67916280ae1e3","entry":"sample_discrete","repo":"chelsea234/m2f2_det","repo_kind":"official","path":"dataset/process.py","file_url":"https://github.com/chelsea234/m2f2_det/blob/HEAD/dataset/process.py","link_basis":"harvester_set","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d9f67916280ae1e3"}},{"code_sha256_prefix":"25d6f8e874031574","entry":"build_deepfake_backbone","repo":"chelsea234/m2f2_det","repo_kind":"official","path":"sequence/models/M2F2_Det/models/model.py","file_url":"https://github.com/chelsea234/m2f2_det/blob/HEAD/sequence/models/M2F2_Det/models/model.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"25d6f8e874031574"}},{"code_sha256_prefix":"e2b206e653829624","entry":"gaussian_blur","repo":"chelsea234/m2f2_det","repo_kind":"official","path":"dataset/process.py","file_url":"https://github.com/chelsea234/m2f2_det/blob/HEAD/dataset/process.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e2b206e653829624"}},{"code_sha256_prefix":"8e360ac0c20cbea7","entry":"get_dataloader","repo":"chelsea234/m2f2_det","repo_kind":"official","path":"dataset/utils.py","file_url":"https://github.com/chelsea234/m2f2_det/blob/HEAD/dataset/utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8e360ac0c20cbea7"}},{"code_sha256_prefix":"5fc9b57ed503d017","entry":"get_default_transformation","repo":"chelsea234/m2f2_det","repo_kind":"official","path":"dataset/utils.py","file_url":"https://github.com/chelsea234/m2f2_det/blob/HEAD/dataset/utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5fc9b57ed503d017"}},{"code_sha256_prefix":"d42da3f112a21315","entry":"get_feature_dim","repo":"chelsea234/m2f2_det","repo_kind":"official","path":"sequence/models/M2F2_Det/models/model.py","file_url":"https://github.com/chelsea234/m2f2_det/blob/HEAD/sequence/models/M2F2_Det/models/model.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d42da3f112a21315"}},{"code_sha256_prefix":"c7859713b37833d9","entry":"get_gt_lst","repo":"chelsea234/m2f2_det","repo_kind":"official","path":"eval/eval_judgement.py","file_url":"https://github.com/chelsea234/m2f2_det/blob/HEAD/eval/eval_judgement.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c7859713b37833d9"}},{"code_sha256_prefix":"095700918c5cc72d","entry":"random_split_dataset","repo":"chelsea234/m2f2_det","repo_kind":"official","path":"dataset/utils.py","file_url":"https://github.com/chelsea234/m2f2_det/blob/HEAD/dataset/utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"095700918c5cc72d"}},{"code_sha256_prefix":"6de4f81e21ff86fa","entry":"sentence_cleaned","repo":"chelsea234/m2f2_det","repo_kind":"official","path":"eval/eval_explanation.py","file_url":"https://github.com/chelsea234/m2f2_det/blob/HEAD/eval/eval_explanation.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"6de4f81e21ff86fa"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}