{"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/glean-generative-latent-bank-for-image-super","title":"GLEAN: Generative Latent Bank for Image Super-Resolution and Beyond","arxiv_id":"2207.14812","date":"2022-07-29","proceeding":null,"authors":["Kelvin C. K. Chan","Xiangyu Xu","Xintao Wang","Jinwei Gu","Chen Change Loy"],"abstract":"We show that pre-trained Generative Adversarial Networks (GANs) such as StyleGAN and BigGAN can be used as a latent bank to improve the performance of image super-resolution. While most existing perceptual-oriented approaches attempt to generate realistic outputs through learning with adversarial loss, our method, Generative LatEnt bANk (GLEAN), goes beyond existing practices by directly leveraging rich and diverse priors encapsulated in a pre-trained GAN. But unlike prevalent GAN inversion methods that require expensive image-specific optimization at runtime, our approach only needs a single forward pass for restoration. GLEAN can be easily incorporated in a simple encoder-bank-decoder architecture with multi-resolution skip connections. Employing priors from different generative models allows GLEAN to be applied to diverse categories (\\eg~human faces, cats, buildings, and cars). We further present a lightweight version of GLEAN, named LightGLEAN, which retains only the critical components in GLEAN. Notably, LightGLEAN consists of only 21% of parameters and 35% of FLOPs while achieving comparable image quality. We extend our method to different tasks including image colorization and blind image restoration, and extensive experiments show that our proposed models perform favorably in comparison to existing methods. Codes and models are available at https://github.com/open-mmlab/mmediting.","url_abs":"https://arxiv.org/abs/2207.14812v1","url_pdf":"https://arxiv.org/pdf/2207.14812v1.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":"glean-generative-latent-bank-for-image-super","repo_url":"https://github.com/open-mmlab/mmediting","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"colorization","task_name":"Colorization"},{"task_slug":"decoder","task_name":"Decoder"},{"task_slug":"image-colorization","task_name":"Image Colorization"},{"task_slug":"image-restoration","task_name":"Image Restoration"},{"task_slug":"image-super-resolution","task_name":"Image Super-Resolution"},{"task_slug":"super-resolution","task_name":"Super-Resolution"}],"methods":[{"method_slug":"1x1-convolution","method_name":"1x1 Convolution"},{"method_slug":"adam","method_name":"Adam"},{"method_slug":"adaptive-instance-normalization","method_name":"Adaptive Instance Normalization"},{"method_slug":"batch-normalization","method_name":"Batch Normalization"},{"method_slug":"colorization","method_name":"Colorization"},{"method_slug":"conditional-batch-normalization","method_name":"Conditional Batch Normalization"},{"method_slug":"convolution","method_name":"Convolution"},{"method_slug":"dense-connections","method_name":"Dense Connections"},{"method_slug":"early-stopping","method_name":"Early Stopping"},{"method_slug":"feedforward-network","method_name":"Feedforward Network"},{"method_slug":"gan-hinge-loss","method_name":"GAN Hinge Loss"},{"method_slug":"linear-layer","method_name":"Linear Layer"},{"method_slug":"non-local-block","method_name":"Non-Local Block"},{"method_slug":"non-local-operation","method_name":"Non-Local Operation"},{"method_slug":"off-diagonal-orthogonal-regularization","method_name":"Off-Diagonal Orthogonal Regularization"},{"method_slug":"projection-discriminator","method_name":"Projection Discriminator"},{"method_slug":"r1-regularization","method_name":"R1 Regularization"},{"method_slug":"relu","method_name":"ReLU"},{"method_slug":"residual-block","method_name":"Residual Block"},{"method_slug":"residual-connection","method_name":"Residual Connection"},{"method_slug":"sagan","method_name":"SAGAN"},{"method_slug":"softmax","method_name":"Softmax"},{"method_slug":"spectral-normalization","method_name":"Spectral Normalization"},{"method_slug":"stylegan","method_name":"StyleGAN"},{"method_slug":"ttur","method_name":"TTUR"},{"method_slug":"truncation-trick","method_name":"Truncation Trick"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2207.14812","atlas_url":"https://app.syntology.ai/?focus=2207.14812","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2207.14812"}},"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/open-mmlab/mmediting","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran":7,"unverified":2},"by_repo_kind":{"official":{"samples":9,"ran":7,"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":"54b6d9dc8ce868bb","entry":"collate_metrics","repo":"open-mmlab/mmediting","repo_kind":"official","path":".dev_scripts/utils/modelindex.py","file_url":"https://github.com/open-mmlab/mmediting/blob/HEAD/.dev_scripts/utils/modelindex.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":"54b6d9dc8ce868bb"}},{"code_sha256_prefix":"2c460a151351c467","entry":"convert_data_config","repo":"open-mmlab/mmediting","repo_kind":"official","path":".dev_scripts/create_ceph_configs.py","file_url":"https://github.com/open-mmlab/mmediting/blob/HEAD/.dev_scripts/create_ceph_configs.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":"2c460a151351c467"}},{"code_sha256_prefix":"0ce4b91d8aca61e4","entry":"filter_metric","repo":"open-mmlab/mmediting","repo_kind":"official","path":".dev_scripts/metric_mapping.py","file_url":"https://github.com/open-mmlab/mmediting/blob/HEAD/.dev_scripts/metric_mapping.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":"0ce4b91d8aca61e4"}},{"code_sha256_prefix":"8e5814637d5291d6","entry":"found_table","repo":"open-mmlab/mmediting","repo_kind":"official","path":".dev_scripts/utils/modelindex.py","file_url":"https://github.com/open-mmlab/mmediting/blob/HEAD/.dev_scripts/utils/modelindex.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":"8e5814637d5291d6"}},{"code_sha256_prefix":"4214819cf4b6bd8d","entry":"start_from_proc","repo":"open-mmlab/mmediting","repo_kind":"official","path":".dev_scripts/job_watcher.py","file_url":"https://github.com/open-mmlab/mmediting/blob/HEAD/.dev_scripts/job_watcher.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":"4214819cf4b6bd8d"}},{"code_sha256_prefix":"4bbabfed79ffbff3","entry":"update_intervals","repo":"open-mmlab/mmediting","repo_kind":"official","path":".dev_scripts/create_ceph_configs.py","file_url":"https://github.com/open-mmlab/mmediting/blob/HEAD/.dev_scripts/create_ceph_configs.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":"4bbabfed79ffbff3"}},{"code_sha256_prefix":"185156d990381282","entry":"update_md","repo":"open-mmlab/mmediting","repo_kind":"official","path":".dev_scripts/update_config_readme.py","file_url":"https://github.com/open-mmlab/mmediting/blob/HEAD/.dev_scripts/update_config_readme.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":"185156d990381282"}},{"code_sha256_prefix":"eda5ede48a264b22","entry":"check_exclude","repo":"open-mmlab/mmediting","repo_kind":"official","path":".dev_scripts/update_ut.py","file_url":"https://github.com/open-mmlab/mmediting/blob/HEAD/.dev_scripts/update_ut.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":"eda5ede48a264b22"}},{"code_sha256_prefix":"cee4c863ad3de58e","entry":"create_train_job_batch","repo":"open-mmlab/mmediting","repo_kind":"official","path":".dev_scripts/train_benchmark.py","file_url":"https://github.com/open-mmlab/mmediting/blob/HEAD/.dev_scripts/train_benchmark.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":"cee4c863ad3de58e"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}