{"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/vqfr-blind-face-restoration-with-vector","title":"VQFR: Blind Face Restoration with Vector-Quantized Dictionary and Parallel Decoder","arxiv_id":"2205.06803","date":"2022-05-13","proceeding":null,"authors":["YuChao Gu","Xintao Wang","Liangbin Xie","Chao Dong","Gen Li","Ying Shan","Ming-Ming Cheng"],"abstract":"Although generative facial prior and geometric prior have recently demonstrated high-quality results for blind face restoration, producing fine-grained facial details faithful to inputs remains a challenging problem. Motivated by the classical dictionary-based methods and the recent vector quantization (VQ) technique, we propose a VQ-based face restoration method - VQFR. VQFR takes advantage of high-quality low-level feature banks extracted from high-quality faces and can thus help recover realistic facial details. However, the simple application of the VQ codebook cannot achieve good results with faithful details and identity preservation. Therefore, we further introduce two special network designs. 1). We first investigate the compression patch size in the VQ codebook and find that the VQ codebook designed with a proper compression patch size is crucial to balance the quality and fidelity. 2). To further fuse low-level features from inputs while not \"contaminating\" the realistic details generated from the VQ codebook, we proposed a parallel decoder consisting of a texture decoder and a main decoder. Those two decoders then interact with a texture warping module with deformable convolution. Equipped with the VQ codebook as a facial detail dictionary and the parallel decoder design, the proposed VQFR can largely enhance the restored quality of facial details while keeping the fidelity to previous methods.","url_abs":"https://arxiv.org/abs/2205.06803v3","url_pdf":"https://arxiv.org/pdf/2205.06803v3.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":"vqfr-blind-face-restoration-with-vector","repo_url":"https://github.com/tencentarc/vqfr","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"blind-face-restoration","task_name":"Blind Face Restoration"},{"task_slug":"decoder","task_name":"Decoder"},{"task_slug":"quantization","task_name":"Quantization"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2205.06803","atlas_url":"https://app.syntology.ai/?focus=2205.06803","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2205.06803"}},"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/tencentarc/vqfr","reach":null}],"summary":{"ran":8,"ran_draft_wrong":1,"unverified":6},"by_repo_kind":{"official":{"samples":15,"ran":9,"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":15,"samples":[{"code_sha256_prefix":"b39cff2183f6ab2c","entry":"DCNv2Pack","repo":"tencentarc/vqfr","repo_kind":"official","path":"vqfr/archs/vqfrv1_arch.py","file_url":"https://github.com/tencentarc/vqfr/blob/HEAD/vqfr/archs/vqfrv1_arch.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"b39cff2183f6ab2c"}},{"code_sha256_prefix":"7b32beb0e745f885","entry":"InpFeatConv","repo":"tencentarc/vqfr","repo_kind":"official","path":"vqfr/archs/vqfrv1_arch.py","file_url":"https://github.com/tencentarc/vqfr/blob/HEAD/vqfr/archs/vqfrv1_arch.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"7b32beb0e745f885"}},{"code_sha256_prefix":"a9032a215717b327","entry":"ModulatedDeformConvFunction","repo":"tencentarc/vqfr","repo_kind":"official","path":"vqfr/archs/vqfrv1_arch.py","file_url":"https://github.com/tencentarc/vqfr/blob/HEAD/vqfr/archs/vqfrv1_arch.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"a9032a215717b327"}},{"code_sha256_prefix":"78978c97f6293a19","entry":"ModulatedDeformConvPack","repo":"tencentarc/vqfr","repo_kind":"official","path":"vqfr/archs/vqfrv1_arch.py","file_url":"https://github.com/tencentarc/vqfr/blob/HEAD/vqfr/archs/vqfrv1_arch.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"78978c97f6293a19"}},{"code_sha256_prefix":"c7e6e97e1951732e","entry":"ResnetBlock","repo":"tencentarc/vqfr","repo_kind":"official","path":"vqfr/archs/vqfrv1_arch.py","file_url":"https://github.com/tencentarc/vqfr/blob/HEAD/vqfr/archs/vqfrv1_arch.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"c7e6e97e1951732e"}},{"code_sha256_prefix":"0eb17d164a6a2ae8","entry":"UpDownSample","repo":"tencentarc/vqfr","repo_kind":"official","path":"vqfr/archs/vqfrv1_arch.py","file_url":"https://github.com/tencentarc/vqfr/blob/HEAD/vqfr/archs/vqfrv1_arch.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"0eb17d164a6a2ae8"}},{"code_sha256_prefix":"1c7b1a47e3f2e5da","entry":"VQGANDecoder","repo":"tencentarc/vqfr","repo_kind":"official","path":"vqfr/archs/vqfrv1_arch.py","file_url":"https://github.com/tencentarc/vqfr/blob/HEAD/vqfr/archs/vqfrv1_arch.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"1c7b1a47e3f2e5da"}},{"code_sha256_prefix":"dbdd8d8a22505791","entry":"VQGANEncoder","repo":"tencentarc/vqfr","repo_kind":"official","path":"vqfr/archs/vqfrv1_arch.py","file_url":"https://github.com/tencentarc/vqfr/blob/HEAD/vqfr/archs/vqfrv1_arch.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"dbdd8d8a22505791"}},{"code_sha256_prefix":"56fbc8f16d71801d","entry":"get_root_logger","repo":"tencentarc/vqfr","repo_kind":"official","path":"vqfr/archs/vqfrv1_arch.py","file_url":"https://github.com/tencentarc/vqfr/blob/HEAD/vqfr/archs/vqfrv1_arch.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"56fbc8f16d71801d"}},{"code_sha256_prefix":"954bcb0ab2aff115","entry":"GeneralizedQuantizer","repo":"tencentarc/vqfr","repo_kind":"official","path":"vqfr/archs/vqfrv1_arch.py","file_url":"https://github.com/tencentarc/vqfr/blob/HEAD/vqfr/archs/vqfrv1_arch.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"954bcb0ab2aff115"}},{"code_sha256_prefix":"7d041853e05afba5","entry":"MainDecoder","repo":"tencentarc/vqfr","repo_kind":"official","path":"vqfr/archs/vqfrv1_arch.py","file_url":"https://github.com/tencentarc/vqfr/blob/HEAD/vqfr/archs/vqfrv1_arch.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"7d041853e05afba5"}},{"code_sha256_prefix":"9ad02ae1b92be076","entry":"ModulatedDeformConv","repo":"tencentarc/vqfr","repo_kind":"official","path":"vqfr/archs/vqfrv1_arch.py","file_url":"https://github.com/tencentarc/vqfr/blob/HEAD/vqfr/archs/vqfrv1_arch.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"9ad02ae1b92be076"}},{"code_sha256_prefix":"34f1e2720da9e432","entry":"TextureWarpingModule","repo":"tencentarc/vqfr","repo_kind":"official","path":"vqfr/archs/vqfrv1_arch.py","file_url":"https://github.com/tencentarc/vqfr/blob/HEAD/vqfr/archs/vqfrv1_arch.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"34f1e2720da9e432"}},{"code_sha256_prefix":"a13b8d4c1525ed99","entry":"VQFRv1","repo":"tencentarc/vqfr","repo_kind":"official","path":"vqfr/archs/vqfrv1_arch.py","file_url":"https://github.com/tencentarc/vqfr/blob/HEAD/vqfr/archs/vqfrv1_arch.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"a13b8d4c1525ed99"}},{"code_sha256_prefix":"c48bd8317e02c6f5","entry":"build_quantizer","repo":"tencentarc/vqfr","repo_kind":"official","path":"vqfr/archs/vqfrv1_arch.py","file_url":"https://github.com/tencentarc/vqfr/blob/HEAD/vqfr/archs/vqfrv1_arch.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"c48bd8317e02c6f5"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}