{"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/end-to-end-alternating-optimization-for-real","title":"End-to-end Alternating Optimization for Real-World Blind Super Resolution","arxiv_id":"2308.08816","date":"2023-08-17","proceeding":null,"authors":["Zhengxiong Luo","Yan Huang","Shang Li","Liang Wang","Tieniu Tan"],"abstract":"Blind Super-Resolution (SR) usually involves two sub-problems: 1) estimating the degradation of the given low-resolution (LR) image; 2) super-resolving the LR image to its high-resolution (HR) counterpart. Both problems are ill-posed due to the information loss in the degrading process. Most previous methods try to solve the two problems independently, but often fall into a dilemma: a good super-resolved HR result requires an accurate degradation estimation, which however, is difficult to be obtained without the help of original HR information. To address this issue, instead of considering these two problems independently, we adopt an alternating optimization algorithm, which can estimate the degradation and restore the SR image in a single model. Specifically, we design two convolutional neural modules, namely \\textit{Restorer} and \\textit{Estimator}. \\textit{Restorer} restores the SR image based on the estimated degradation, and \\textit{Estimator} estimates the degradation with the help of the restored SR image. We alternate these two modules repeatedly and unfold this process to form an end-to-end trainable network. In this way, both \\textit{Restorer} and \\textit{Estimator} could get benefited from the intermediate results of each other, and make each sub-problem easier. Moreover, \\textit{Restorer} and \\textit{Estimator} are optimized in an end-to-end manner, thus they could get more tolerant of the estimation deviations of each other and cooperate better to achieve more robust and accurate final results. Extensive experiments on both synthetic datasets and real-world images show that the proposed method can largely outperform state-of-the-art methods and produce more visually favorable results. The codes are rleased at \\url{https://github.com/greatlog/RealDAN.git}.","url_abs":"https://arxiv.org/abs/2308.08816v1","url_pdf":"https://arxiv.org/pdf/2308.08816v1.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":"end-to-end-alternating-optimization-for-real","repo_url":"https://github.com/greatlog/realdan","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"end-to-end-alternating-optimization-for-real","repo_url":"https://github.com/greatlog/DAN","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"blind-super-resolution","task_name":"Blind Super-Resolution"},{"task_slug":"super-resolution","task_name":"Super-Resolution"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2308.08816","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2308.08816"}},"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/greatlog/DAN","reach":null},{"provenance":"deterministic:regex_extraction","url":"https://github.com/greatlog/RealDAN","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/greatlog/realdan","reach":{"status":"ok"}}],"summary":{"ran":9,"ran_draft_wrong":1,"unverified":5},"by_repo_kind":{"official":{"samples":15,"ran":10,"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":"597407e0ef5f0ffc","entry":"Estimator_L","repo":"greatlog/realdan","repo_kind":"official","path":"codes/config/RealDAN/archs/dan.py","file_url":"https://github.com/greatlog/realdan/blob/HEAD/codes/config/RealDAN/archs/dan.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"597407e0ef5f0ffc"}},{"code_sha256_prefix":"93cd657d05d345f1","entry":"Estimator_S","repo":"greatlog/realdan","repo_kind":"official","path":"codes/config/RealDAN/archs/dan.py","file_url":"https://github.com/greatlog/realdan/blob/HEAD/codes/config/RealDAN/archs/dan.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"93cd657d05d345f1"}},{"code_sha256_prefix":"2c669d003de5c991","entry":"RRDB","repo":"greatlog/realdan","repo_kind":"official","path":"codes/config/RealDAN/archs/dan.py","file_url":"https://github.com/greatlog/realdan/blob/HEAD/codes/config/RealDAN/archs/dan.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"2c669d003de5c991"}},{"code_sha256_prefix":"1ff491126ca5cfab","entry":"Registry","repo":"greatlog/realdan","repo_kind":"official","path":"codes/config/RealDAN/archs/dan.py","file_url":"https://github.com/greatlog/realdan/blob/HEAD/codes/config/RealDAN/archs/dan.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"1ff491126ca5cfab"}},{"code_sha256_prefix":"322463443631e7b2","entry":"ResBlockv2","repo":"greatlog/realdan","repo_kind":"official","path":"codes/config/RealDAN/archs/dan.py","file_url":"https://github.com/greatlog/realdan/blob/HEAD/codes/config/RealDAN/archs/dan.py","link_basis":"first_harvest_node","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":"322463443631e7b2"}},{"code_sha256_prefix":"651e9332d7582b2d","entry":"ResidualBlockNoBN","repo":"greatlog/realdan","repo_kind":"official","path":"codes/config/RealDAN/archs/dan.py","file_url":"https://github.com/greatlog/realdan/blob/HEAD/codes/config/RealDAN/archs/dan.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"651e9332d7582b2d"}},{"code_sha256_prefix":"b66a5402faceaed0","entry":"ResidualDenseBlock_5C","repo":"greatlog/realdan","repo_kind":"official","path":"codes/config/RealDAN/archs/dan.py","file_url":"https://github.com/greatlog/realdan/blob/HEAD/codes/config/RealDAN/archs/dan.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"b66a5402faceaed0"}},{"code_sha256_prefix":"07ebce59f59416a0","entry":"Upsampler","repo":"greatlog/realdan","repo_kind":"official","path":"codes/config/RealDAN/archs/dan.py","file_url":"https://github.com/greatlog/realdan/blob/HEAD/codes/config/RealDAN/archs/dan.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"07ebce59f59416a0"}},{"code_sha256_prefix":"ffe305c88adc595a","entry":"flow_warp","repo":"greatlog/RealDAN","repo_kind":"official","path":"codes/config/RealDAN/archs/module_util.py","file_url":"https://github.com/greatlog/RealDAN/blob/HEAD/codes/config/RealDAN/archs/module_util.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ffe305c88adc595a"}},{"code_sha256_prefix":"f49ae20c66e878e6","entry":"get_activation","repo":"greatlog/realdan","repo_kind":"official","path":"codes/config/RealDAN/archs/dan.py","file_url":"https://github.com/greatlog/realdan/blob/HEAD/codes/config/RealDAN/archs/dan.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":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f49ae20c66e878e6"}},{"code_sha256_prefix":"a9fcc5b5cc2154db","entry":"DAN","repo":"greatlog/realdan","repo_kind":"official","path":"codes/config/RealDAN/archs/dan.py","file_url":"https://github.com/greatlog/realdan/blob/HEAD/codes/config/RealDAN/archs/dan.py","link_basis":"first_harvest_node","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":"a9fcc5b5cc2154db"}},{"code_sha256_prefix":"10b54053c54fe1e1","entry":"Restorer","repo":"greatlog/realdan","repo_kind":"official","path":"codes/config/RealDAN/archs/dan.py","file_url":"https://github.com/greatlog/realdan/blob/HEAD/codes/config/RealDAN/archs/dan.py","link_basis":"first_harvest_node","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":"10b54053c54fe1e1"}},{"code_sha256_prefix":"4e53ff141fdde271","entry":"default_init_weights","repo":"greatlog/realdan","repo_kind":"official","path":"codes/config/RealDAN/archs/dan.py","file_url":"https://github.com/greatlog/realdan/blob/HEAD/codes/config/RealDAN/archs/dan.py","link_basis":"first_harvest_node","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":"4e53ff141fdde271"}},{"code_sha256_prefix":"fc2bdd408f663b78","entry":"get_attention","repo":"greatlog/realdan","repo_kind":"official","path":"codes/config/RealDAN/archs/dan.py","file_url":"https://github.com/greatlog/realdan/blob/HEAD/codes/config/RealDAN/archs/dan.py","link_basis":"first_harvest_node","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":"fc2bdd408f663b78"}},{"code_sha256_prefix":"e95863a41a94133f","entry":"make_layer","repo":"greatlog/RealDAN","repo_kind":"official","path":"codes/config/RealDAN/archs/module_util.py","file_url":"https://github.com/greatlog/RealDAN/blob/HEAD/codes/config/RealDAN/archs/module_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":"e95863a41a94133f"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}