{"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/iterative-token-evaluation-and-refinement-for","title":"Iterative Token Evaluation and Refinement for Real-World Super-Resolution","arxiv_id":"2312.05616","date":"2023-12-09","proceeding":null,"authors":["Chaofeng Chen","Shangchen Zhou","Liang Liao","HaoNing Wu","Wenxiu Sun","Qiong Yan","Weisi Lin"],"abstract":"Real-world image super-resolution (RWSR) is a long-standing problem as low-quality (LQ) images often have complex and unidentified degradations. Existing methods such as Generative Adversarial Networks (GANs) or continuous diffusion models present their own issues including GANs being difficult to train while continuous diffusion models requiring numerous inference steps. In this paper, we propose an Iterative Token Evaluation and Refinement (ITER) framework for RWSR, which utilizes a discrete diffusion model operating in the discrete token representation space, i.e., indexes of features extracted from a VQGAN codebook pre-trained with high-quality (HQ) images. We show that ITER is easier to train than GANs and more efficient than continuous diffusion models. Specifically, we divide RWSR into two sub-tasks, i.e., distortion removal and texture generation. Distortion removal involves simple HQ token prediction with LQ images, while texture generation uses a discrete diffusion model to iteratively refine the distortion removal output with a token refinement network. In particular, we propose to include a token evaluation network in the discrete diffusion process. It learns to evaluate which tokens are good restorations and helps to improve the iterative refinement results. Moreover, the evaluation network can first check status of the distortion removal output and then adaptively select total refinement steps needed, thereby maintaining a good balance between distortion removal and texture generation. Extensive experimental results show that ITER is easy to train and performs well within just 8 iterative steps. Our codes will be available publicly.","url_abs":"https://arxiv.org/abs/2312.05616v1","url_pdf":"https://arxiv.org/pdf/2312.05616v1.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":"iterative-token-evaluation-and-refinement-for","repo_url":"https://github.com/chaofengc/iter","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"NOASSERTION"}}],"tasks":[{"task_slug":"image-super-resolution","task_name":"Image Super-Resolution"},{"task_slug":"super-resolution","task_name":"Super-Resolution"},{"task_slug":"texture-synthesis","task_name":"Texture Synthesis"}],"methods":[{"method_slug":"diffusion","method_name":"Diffusion"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2312.05616","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2312.05616"}},"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/chaofengc/iter","reach":{"status":"ok","spdx":"NOASSERTION"}}],"summary":{"ran_fixture":1,"ran":3,"ran_draft_wrong":2,"unverified":4},"by_repo_kind":{"official":{"samples":10,"ran":6,"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":10,"samples":[{"code_sha256_prefix":"144d10b49baeb8a6","entry":"window_partition","repo":"chaofengc/iter","repo_kind":"official","path":"basicsr/archs/network_swinir.py","file_url":"https://github.com/chaofengc/iter/blob/HEAD/basicsr/archs/network_swinir.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":2,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"144d10b49baeb8a6"}},{"code_sha256_prefix":"706e1deb7b887494","entry":"class_balanced_xentropy","repo":"chaofengc/iter","repo_kind":"official","path":"basicsr/archs/iter_utils.py","file_url":"https://github.com/chaofengc/iter/blob/HEAD/basicsr/archs/iter_utils.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":"706e1deb7b887494"}},{"code_sha256_prefix":"cd569444547de84f","entry":"get_position_from_periods","repo":"chaofengc/iter","repo_kind":"official","path":"basicsr/models/lr_scheduler.py","file_url":"https://github.com/chaofengc/iter/blob/HEAD/basicsr/models/lr_scheduler.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"cd569444547de84f"}},{"code_sha256_prefix":"96ad5dc9ca239aec","entry":"make_layer","repo":"chaofengc/iter","repo_kind":"official","path":"basicsr/archs/arch_util.py","file_url":"https://github.com/chaofengc/iter/blob/HEAD/basicsr/archs/arch_util.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":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"96ad5dc9ca239aec"}},{"code_sha256_prefix":"84a37cfc6eb0f4e4","entry":"trunc_normal_","repo":"chaofengc/iter","repo_kind":"official","path":"basicsr/archs/arch_util.py","file_url":"https://github.com/chaofengc/iter/blob/HEAD/basicsr/archs/arch_util.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":"84a37cfc6eb0f4e4"}},{"code_sha256_prefix":"61bf152e6a42a184","entry":"window_reverse","repo":"chaofengc/iter","repo_kind":"official","path":"basicsr/archs/network_swinir.py","file_url":"https://github.com/chaofengc/iter/blob/HEAD/basicsr/archs/network_swinir.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"61bf152e6a42a184"}},{"code_sha256_prefix":"a648a03a952822c0","entry":"reduce_loss","repo":"chaofengc/iter","repo_kind":"official","path":"basicsr/losses/loss_util.py","file_url":"https://github.com/chaofengc/iter/blob/HEAD/basicsr/losses/loss_util.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"a648a03a952822c0"}},{"code_sha256_prefix":"acb25a3bf2f955ba","entry":"safe_interpolate","repo":"chaofengc/iter","repo_kind":"official","path":"basicsr/archs/iter_arch.py","file_url":"https://github.com/chaofengc/iter/blob/HEAD/basicsr/archs/iter_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":"acb25a3bf2f955ba"}},{"code_sha256_prefix":"1ba39317ea81871a","entry":"weight_reduce_loss","repo":"chaofengc/iter","repo_kind":"official","path":"basicsr/losses/loss_util.py","file_url":"https://github.com/chaofengc/iter/blob/HEAD/basicsr/losses/loss_util.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"1ba39317ea81871a"}},{"code_sha256_prefix":"cf63f8afc13f62a7","entry":"weighted_loss","repo":"chaofengc/iter","repo_kind":"official","path":"basicsr/losses/loss_util.py","file_url":"https://github.com/chaofengc/iter/blob/HEAD/basicsr/losses/loss_util.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"cf63f8afc13f62a7"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}