{"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/fsgan-subject-agnostic-face-swapping-and","title":"FSGAN: Subject Agnostic Face Swapping and Reenactment","arxiv_id":"1908.05932","date":"2019-08-16","proceeding":"ICCV 2019 10","authors":["Yuval Nirkin","Yosi Keller","Tal Hassner"],"abstract":"We present Face Swapping GAN (FSGAN) for face swapping and reenactment. Unlike previous work, FSGAN is subject agnostic and can be applied to pairs of faces without requiring training on those faces. To this end, we describe a number of technical contributions. We derive a novel recurrent neural network (RNN)-based approach for face reenactment which adjusts for both pose and expression variations and can be applied to a single image or a video sequence. For video sequences, we introduce continuous interpolation of the face views based on reenactment, Delaunay Triangulation, and barycentric coordinates. Occluded face regions are handled by a face completion network. Finally, we use a face blending network for seamless blending of the two faces while preserving target skin color and lighting conditions. This network uses a novel Poisson blending loss which combines Poisson optimization with perceptual loss. We compare our approach to existing state-of-the-art systems and show our results to be both qualitatively and quantitatively superior.","url_abs":"https://arxiv.org/abs/1908.05932v1","url_pdf":"https://arxiv.org/pdf/1908.05932v1.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":"fsgan-subject-agnostic-face-swapping-and","repo_url":"https://github.com/YuvalNirkin/fsgan","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"CC0-1.0"}}],"tasks":[{"task_slug":"face-reenactment","task_name":"Face Reenactment"},{"task_slug":"face-swapping","task_name":"Face Swapping"},{"task_slug":"facial-inpainting","task_name":"Facial Inpainting"},{"task_slug":"semantic-segmentation","task_name":"Semantic Segmentation"}],"methods":[{"method_slug":"convolution","method_name":"Convolution"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1908.05932","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1908.05932"}},"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/YuvalNirkin/fsgan","reach":{"status":"ok","spdx":"CC0-1.0"}}],"summary":{"ran_draft_wrong":1,"unverified":7},"by_repo_kind":{"official":{"samples":8,"ran":1,"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":"fac5364e2f53c6db","entry":"conv3x3","repo":"YuvalNirkin/fsgan","repo_kind":"official","path":"fsgan/models/hrnet.py","file_url":"https://github.com/YuvalNirkin/fsgan/blob/HEAD/fsgan/models/hrnet.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"CC0-1.0","inline_ok":true,"mcp_get_code":{"code_sha256":"fac5364e2f53c6db"}},{"code_sha256_prefix":"23e9af48e6ed570b","entry":"classifier","repo":"YuvalNirkin/fsgan","repo_kind":"official","path":"fsgan/models/classifier1d.py","file_url":"https://github.com/YuvalNirkin/fsgan/blob/HEAD/fsgan/models/classifier1d.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"CC0-1.0","inline_ok":true,"mcp_get_code":{"code_sha256":"23e9af48e6ed570b"}},{"code_sha256_prefix":"1041cd0dc07c7500","entry":"get_face_alignment_net","repo":"YuvalNirkin/fsgan","repo_kind":"official","path":"fsgan/models/hrnet.py","file_url":"https://github.com/YuvalNirkin/fsgan/blob/HEAD/fsgan/models/hrnet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"CC0-1.0","inline_ok":true,"mcp_get_code":{"code_sha256":"1041cd0dc07c7500"}},{"code_sha256_prefix":"85919c7530a5d6a3","entry":"make_conv_block","repo":"YuvalNirkin/fsgan","repo_kind":"official","path":"fsgan/models/res_unet.py","file_url":"https://github.com/YuvalNirkin/fsgan/blob/HEAD/fsgan/models/res_unet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"CC0-1.0","inline_ok":true,"mcp_get_code":{"code_sha256":"85919c7530a5d6a3"}},{"code_sha256_prefix":"fe86653be2c9ee85","entry":"make_conv_block","repo":"YuvalNirkin/fsgan","repo_kind":"official","path":"fsgan/models/res_unet_msba.py","file_url":"https://github.com/YuvalNirkin/fsgan/blob/HEAD/fsgan/models/res_unet_msba.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"CC0-1.0","inline_ok":true,"mcp_get_code":{"code_sha256":"fe86653be2c9ee85"}},{"code_sha256_prefix":"efce20dbdac94572","entry":"make_conv_block","repo":"YuvalNirkin/fsgan","repo_kind":"official","path":"fsgan/models/res_unet_split.py","file_url":"https://github.com/YuvalNirkin/fsgan/blob/HEAD/fsgan/models/res_unet_split.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"CC0-1.0","inline_ok":true,"mcp_get_code":{"code_sha256":"efce20dbdac94572"}},{"code_sha256_prefix":"c062f282c83afe90","entry":"make_linear_block","repo":"YuvalNirkin/fsgan","repo_kind":"official","path":"fsgan/models/classifier1d.py","file_url":"https://github.com/YuvalNirkin/fsgan/blob/HEAD/fsgan/models/classifier1d.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"CC0-1.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c062f282c83afe90"}},{"code_sha256_prefix":"93669c551b4bdb0f","entry":"unet","repo":"YuvalNirkin/fsgan","repo_kind":"official","path":"fsgan/models/simple_unet.py","file_url":"https://github.com/YuvalNirkin/fsgan/blob/HEAD/fsgan/models/simple_unet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"CC0-1.0","inline_ok":true,"mcp_get_code":{"code_sha256":"93669c551b4bdb0f"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}