{"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/detecting-photoshopped-faces-by-scripting","title":"Detecting Photoshopped Faces by Scripting Photoshop","arxiv_id":"1906.05856","date":"2019-06-13","proceeding":"ICCV 2019 10","authors":["Sheng-Yu Wang","Oliver Wang","Andrew Owens","Richard Zhang","Alexei A. Efros"],"abstract":"Most malicious photo manipulations are created using standard image editing tools, such as Adobe Photoshop. We present a method for detecting one very popular Photoshop manipulation -- image warping applied to human faces -- using a model trained entirely using fake images that were automatically generated by scripting Photoshop itself. We show that our model outperforms humans at the task of recognizing manipulated images, can predict the specific location of edits, and in some cases can be used to \"undo\" a manipulation to reconstruct the original, unedited image. We demonstrate that the system can be successfully applied to real, artist-created image manipulations.","url_abs":"https://arxiv.org/abs/1906.05856v2","url_pdf":"https://arxiv.org/pdf/1906.05856v2.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":"detecting-photoshopped-faces-by-scripting","repo_url":"https://github.com/PeterWang512/FALdetector","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"detecting-photoshopped-faces-by-scripting","repo_url":"https://github.com/phixion/phixion","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"image-manipulation-detection","task_name":"Image Manipulation Detection"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/1906.05856","atlas_url":"https://app.syntology.ai/?focus=1906.05856","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1906.05856"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/phixion/phixion","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/PeterWang512/FALdetector","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran":4,"ran_draft_wrong":1,"unverified":5},"by_repo_kind":{"listed":{"samples":10,"ran":5,"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":"c4019770f99361ad","entry":"center_crop","repo":"PeterWang512/FALdetector","repo_kind":"listed","path":"utils/tools.py","file_url":"https://github.com/PeterWang512/FALdetector/blob/HEAD/utils/tools.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c4019770f99361ad"}},{"code_sha256_prefix":"0e722c9ff0920473","entry":"conv3x3","repo":"PeterWang512/FALdetector","repo_kind":"listed","path":"networks/drn.py","file_url":"https://github.com/PeterWang512/FALdetector/blob/HEAD/networks/drn.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"0e722c9ff0920473"}},{"code_sha256_prefix":"7b3fe2745271414b","entry":"get_heatmap_batch","repo":"PeterWang512/FALdetector","repo_kind":"listed","path":"utils/visualize.py","file_url":"https://github.com/PeterWang512/FALdetector/blob/HEAD/utils/visualize.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"7b3fe2745271414b"}},{"code_sha256_prefix":"31f27cfaf2e17176","entry":"remove_boundary","repo":"PeterWang512/FALdetector","repo_kind":"listed","path":"utils/tools.py","file_url":"https://github.com/PeterWang512/FALdetector/blob/HEAD/utils/tools.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"31f27cfaf2e17176"}},{"code_sha256_prefix":"910e8701c0ed21ba","entry":"resize_shorter_side","repo":"PeterWang512/FALdetector","repo_kind":"listed","path":"utils/tools.py","file_url":"https://github.com/PeterWang512/FALdetector/blob/HEAD/utils/tools.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"910e8701c0ed21ba"}},{"code_sha256_prefix":"a6a09be2fd8eb095","entry":"classify_fake","repo":"PeterWang512/FALdetector","repo_kind":"listed","path":"global_classifier.py","file_url":"https://github.com/PeterWang512/FALdetector/blob/HEAD/global_classifier.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"a6a09be2fd8eb095"}},{"code_sha256_prefix":"19e291fafc7bb35b","entry":"drn_a_50","repo":"PeterWang512/FALdetector","repo_kind":"listed","path":"networks/drn.py","file_url":"https://github.com/PeterWang512/FALdetector/blob/HEAD/networks/drn.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"19e291fafc7bb35b"}},{"code_sha256_prefix":"f2cb2c00d5b19823","entry":"drn_c_26","repo":"PeterWang512/FALdetector","repo_kind":"listed","path":"networks/drn.py","file_url":"https://github.com/PeterWang512/FALdetector/blob/HEAD/networks/drn.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"f2cb2c00d5b19823"}},{"code_sha256_prefix":"40e586b15242d87d","entry":"get_heatmap_cv","repo":"PeterWang512/FALdetector","repo_kind":"listed","path":"utils/visualize.py","file_url":"https://github.com/PeterWang512/FALdetector/blob/HEAD/utils/visualize.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"40e586b15242d87d"}},{"code_sha256_prefix":"7742460f647f9ca2","entry":"unnormalize","repo":"PeterWang512/FALdetector","repo_kind":"listed","path":"utils/visualize.py","file_url":"https://github.com/PeterWang512/FALdetector/blob/HEAD/utils/visualize.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"7742460f647f9ca2"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}