{"id":25999848,"url":"https://github.com/gy65896/OneRestore","last_synced_at":"2025-03-05T18:41:53.522Z","repository":{"id":247025745,"uuid":"822984328","full_name":"gy65896/OneRestore","owner":"gy65896","description":"[ECCV 2024] OneRestore: A Universal Restoration Framework for Composite Degradation","archived":false,"fork":false,"pushed_at":"2025-01-12T07:49:03.000Z","size":52617,"stargazers_count":130,"open_issues_count":0,"forks_count":17,"subscribers_count":15,"default_branch":"main","last_synced_at":"2025-01-12T08:31:52.347Z","etag":null,"topics":["dehazing","deraining","desnowing","eccv","eccv2024","image-restoration","imgae-enhancement","low-light-image-enhancement","pytorch","restoration"],"latest_commit_sha":null,"homepage":"https://gy65896.github.io/projects/ECCV2024_OneRestore/index.html","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gy65896.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-02T07:56:55.000Z","updated_at":"2025-01-12T07:49:06.000Z","dependencies_parsed_at":"2024-10-19T17:35:37.450Z","dependency_job_id":"749dc5ee-7fd3-4ae3-aeb7-b6c2d609af0a","html_url":"https://github.com/gy65896/OneRestore","commit_stats":null,"previous_names":["gy65896/onerestore"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gy65896%2FOneRestore","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gy65896%2FOneRestore/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gy65896%2FOneRestore/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gy65896%2FOneRestore/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gy65896","download_url":"https://codeload.github.com/gy65896/OneRestore/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242083058,"owners_count":20069232,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dehazing","deraining","desnowing","eccv","eccv2024","image-restoration","imgae-enhancement","low-light-image-enhancement","pytorch","restoration"],"created_at":"2025-03-05T18:40:48.477Z","updated_at":"2025-03-05T18:41:53.516Z","avatar_url":"https://github.com/gy65896.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"\u003c/div\u003e\n\u003cdiv align=center\u003e\n\u003cimg src=\"https://github.com/gy65896/OneRestore/blob/main/img_file/logo_onerestore.png\" width=\"200\"\u003e\n\u003c/div\u003e\n\n # \u003cp align=center\u003e [ECCV 2024] OneRestore: A Universal Restoration Framework for Composite Degradation\u003c/p\u003e\n\n\n\u003cdiv align=\"center\"\u003e\n \n[![ArXiv](https://img.shields.io/badge/OneRestore-ArXiv-red.svg)](https://arxiv.org/abs/2407.04621)\n[![Paper](https://img.shields.io/badge/OneRestore-Paper-purple.svg)](https://arxiv.org/abs/2407.04621)\n[![Web](https://img.shields.io/badge/OneRestore-Web-blue.svg)](https://gy65896.github.io/projects/ECCV2024_OneRestore/index.html)\n[![Poster](https://img.shields.io/badge/OneRestore-Poster-green.svg)](https://github.com/gy65896/OneRestore/blob/main/img_file/OneRestore_poster.png)\n[![Video](https://img.shields.io/badge/OneRestore-Video-orange.svg)](https://www.youtube.com/watch?v=AFr5tZdPlZ4)\n\n[![Hits](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Fgy65896%2FOneRestore\u0026count_bg=%2379C83D\u0026title_bg=%23555555\u0026icon=\u0026icon_color=%23E7E7E7\u0026title=hits\u0026edge_flat=false)](https://hits.seeyoufarm.com)\n[![Hugging Face Demo](https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Demo-blue)](https://huggingface.co/spaces/gy65896/OneRestore)\n[![Closed Issues](https://img.shields.io/github/issues-closed/gy65896/OneRestore)](https://github.com/gy65896/OneRestore/issues?q=is%3Aissue+is%3Aclosed)\n[![Open Issues](https://img.shields.io/github/issues/gy65896/OneRestore)](https://github.com/gy65896/OneRestore/issues)\n\n[![PWC](https://img.shields.io/endpoint.svg?url=https://paperswithcode.com/badge/onerestore-a-universal-restoration-framework/low-light-image-enhancement-on-lol)](https://paperswithcode.com/sota/low-light-image-enhancement-on-lol?p=onerestore-a-universal-restoration-framework)\n[![PWC](https://img.shields.io/endpoint.svg?url=https://paperswithcode.com/badge/onerestore-a-universal-restoration-framework/image-dehazing-on-sots-outdoor)](https://paperswithcode.com/sota/image-dehazing-on-sots-outdoor?p=onerestore-a-universal-restoration-framework)\n[![PWC](https://img.shields.io/endpoint.svg?url=https://paperswithcode.com/badge/onerestore-a-universal-restoration-framework/rain-removal-on-did-mdn)](https://paperswithcode.com/sota/rain-removal-on-did-mdn?p=onerestore-a-universal-restoration-framework)\n[![PWC](https://img.shields.io/endpoint.svg?url=https://paperswithcode.com/badge/onerestore-a-universal-restoration-framework/snow-removal-on-snow100k)](https://paperswithcode.com/sota/snow-removal-on-snow100k?p=onerestore-a-universal-restoration-framework)\n\n\u003c/div\u003e\n\u003cdiv align=center\u003e\n\u003cimg src=\"https://github.com/gy65896/OneRestore/blob/main/img_file/abstract.jpg\" width=\"720\"\u003e\n\u003c/div\u003e\n\n---\n\u003e**OneRestore: A Universal Restoration Framework for Composite Degradation**\u003cbr\u003e  [Yu Guo](https://scholar.google.com/citations?user=klYz-acAAAAJ\u0026hl=zh-CN)\u003csup\u003e† \u003c/sup\u003e, [Yuan Gao](https://scholar.google.com.hk/citations?user=4JpRnU4AAAAJ\u0026hl=zh-CN)\u003csup\u003e† \u003c/sup\u003e, [Yuxu Lu](https://scholar.google.com.hk/citations?user=XXge2_0AAAAJ\u0026hl=zh-CN), [Huilin Zhu](https://scholar.google.com.hk/citations?hl=zh-CN\u0026user=fluPrxcAAAAJ), [Ryan Wen Liu](http://mipc.whut.edu.cn/index.html)\u003csup\u003e* \u003c/sup\u003e, [Shengfeng He](http://www.shengfenghe.com/)\u003csup\u003e* \u003c/sup\u003e \u003cbr\u003e\n(† Co-first Author, * Corresponding Author)\u003cbr\u003e\n\u003eEuropean Conference on Computer Vision\n\n\u003e **Abstract:** *In real-world scenarios, image impairments often manifest as composite degradations, presenting a complex interplay of elements such as low light, haze, rain, and snow. Despite this reality, existing restoration methods typically target isolated degradation types, thereby falling short in environments where multiple degrading factors coexist. To bridge this gap, our study proposes a versatile imaging model that consolidates four physical corruption paradigms to accurately represent complex, composite degradation scenarios. In this context, we propose OneRestore, a novel transformer-based framework designed for adaptive, controllable scene restoration. The proposed framework leverages a unique cross-attention mechanism, merging degraded scene descriptors with image features, allowing for nuanced restoration. Our model allows versatile input scene descriptors, ranging from manual text embeddings to automatic extractions based on visual attributes. Our methodology is further enhanced through a composite degradation restoration loss, using extra degraded images as negative samples to fortify model constraints. Comparative results on synthetic and real-world datasets demonstrate OneRestore as a superior solution, significantly advancing the state-of-the-art in addressing complex, composite degradations.*\n---\n\n## News 🚀\n* **2024.09.07**: [Hugging Face Demo](https://huggingface.co/spaces/gy65896/OneRestore) is released.\n* **2024.09.05**: Video and poster are released.\n* **2024.09.04**: Code for data synthesis is released.\n* **2024.07.27**: Code for multiple GPUs training is released.\n* **2024.07.20**: [New Website](https://gy65896.github.io/projects/ECCV2024_OneRestore) has been created.\n* **2024.07.10**: [Paper](https://arxiv.org/abs/2407.04621) is released on ArXiv.\n* **2024.07.07**: Code and Dataset are released.\n* **2024.07.02**: OneRestore is accepted by [ECCV2024](https://eccv.ecva.net/).\n\n## Network Architecture\n\n\u003c/div\u003e\n\u003cdiv align=center\u003e\n\u003cimg src=\"https://github.com/gy65896/OneRestore/blob/main/img_file/pipeline.jpg\" width=\"1080\"\u003e\n\u003c/div\u003e\n\n## Quick Start\n\n### Install\n\n- python 3.7\n- cuda 11.7\n\n```\n# git clone this repository\ngit clone https://github.com/gy65896/OneRestore.git\ncd OneRestore\n\n# create new anaconda env\nconda create -n onerestore python=3.7\nconda activate onerestore \n\n# download ckpts\nput embedder_model.tar and onerestore_cdd-11.tar in ckpts folder\n\n# install pytorch (Take cuda 11.7 as an example to install torch 1.13)\npip install torch==1.13.0+cu117 torchvision==0.14.0+cu117 torchaudio==0.13.0 --extra-index-url https://download.pytorch.org/whl/cu117\n\n# install other packages\npip install -r requirements.txt\npip install gensim\n```\n\n### Pretrained Models\n\nPlease download our pre-trained models and put them in  `./ckpts`.\n\n| Model | OneDrive | Hugging Face| Description\n| :--- | :--- | :--- | :----------\n|embedder_model.tar | [model](https://1drv.ms/u/s!As3rCDROnrbLgqpnhSQFIoD9msXWOA?e=aUpHOT) | [model](https://huggingface.co/gy65896/OneRestore/tree/main/ckpts)  | Text/Visual Embedder trained on our CDD-11.\n|onerestore_cdd-11.tar | [model](https://1drv.ms/u/s!As3rCDROnrbLgqpmWkGBku6oj33efg?e=7yUGfN) | model | OneRestore trained on our CDD-11.\n|onerestore_real.tar | [model](https://1drv.ms/u/s!As3rCDROnrbLgqpi-iJOyN6OSYqiaA?e=QFfMeL) | model | OneRestore trained on our CDD-11 for Real Scenes.\n|onerestore_lol.tar | [model](https://1drv.ms/u/s!As3rCDROnrbLgqpkSoVB1j-wYHFpHg?e=0gR9pn) | model | OneRestore trained on LOL (low light enhancement benchmark).\n|onerestore_reside_ots.tar | [model](https://1drv.ms/u/s!As3rCDROnrbLgqpjGh8KjfM_QIJzEw?e=zabGTw) | model | OneRestore trained on RESIDE-OTS (image dehazing benchmark).\n|onerestore_rain1200.tar | [model](https://1drv.ms/u/s!As3rCDROnrbLgqplAFHv6B348jarGA?e=GuduMT) | model | OneRestore trained on Rain1200 (image deraining benchmark).\n|onerestore_snow100k.tar | [model](https://1drv.ms/u/s!As3rCDROnrbLgqphsWWxLZN_7JFJDQ?e=pqezzo) | model | OneRestore trained on Snow100k-L (image desnowing benchmark).\n\n### Inference\n\nWe provide two samples in `./image` for the quick inference:\n\n```\npython test.py --embedder-model-path ./ckpts/embedder_model.tar --restore-model-path ./ckpts/onerestore_cdd-11.tar --input ./image/ --output ./output/ --concat\n```\n\nYou can also input the prompt to perform controllable restoration. For example:\n\n```\npython test.py --embedder-model-path ./ckpts/embedder_model.tar --restore-model-path ./ckpts/onerestore_cdd-11.tar --prompt low_haze --input ./image/ --output ./output/ --concat\n```\n\n## Training\n\n### Prepare Dataset\n\nWe provide the download link of our Composite Degradation Dataset with 11 types of degradation **CDD-11** ([OneDrive](https://1drv.ms/f/s!As3rCDROnrbLgqpezG4sao-u9ddDhw?e=A0REHx) | [Hugging Face](https://huggingface.co/datasets/gy65896/CDD-11/tree/main)).\n\nPreparing the train and test datasets as follows:\n\n```\n./data/\n|--train\n|  |--clear\n|  |  |--000001.png\n|  |  |--000002.png\n|  |--low\n|  |--haze\n|  |--rain\n|  |--snow\n|  |--low_haze\n|  |--low_rain\n|  |--low_snow\n|  |--haze_rain\n|  |--haze_snow\n|  |--low_haze_rain\n|  |--low_haze_snow\n|--test\n```\n### Train Model\n\n**1. Train Text/Visual Embedder by**\n\n```\npython train_Embedder.py --train-dir ./data/CDD-11_train --test-dir ./data/CDD-11_test --check-dir ./ckpts --batch 256 --num-workers 0 --epoch 200 --lr 1e-4 --lr-decay 50\n```\n\n**2. Remove the optimizer weights in the Embedder model file by**\n\n```\npython remove_optim.py --type Embedder --input-file ./ckpts/embedder_model.tar --output-file ./ckpts/embedder_model.tar\n```\n\n**3. Generate the `dataset.h5` file for training OneRestore by**\n\n```\npython makedataset.py --train-path ./data/CDD-11_train --data-name dataset.h5 --patch-size 256 --stride 200\n```\n\n**4. Train OneRestore model by**\n\n- **Single GPU**\n\n```\npython train_OneRestore_single-gpu.py --embedder-model-path ./ckpts/embedder_model.tar --save-model-path ./ckpts --train-input ./dataset.h5 --test-input ./data/CDD-11_test --output ./result/ --epoch 120 --bs 4 --lr 1e-4 --adjust-lr 30 --num-works 4\n```\n\n- **Multiple GPUs**\n\nAssuming you train the OneRestore model using 4 GPUs (e.g., 0, 1, 2, and 3), you can use the following command. Note that the number of nproc_per_node should equal the number of GPUs.\n\n```\nCUDA_VISIBLE_DEVICES=0, 1, 2, 3 torchrun --nproc_per_node=4 train_OneRestore_multi-gpu.py --embedder-model-path ./ckpts/embedder_model.tar --save-model-path ./ckpts --train-input ./dataset.h5 --test-input ./data/CDD-11_test --output ./result/ --epoch 120 --bs 4 --lr 1e-4 --adjust-lr 30 --num-works 4\n```\n\n**5. Remove the optimizer weights in the OneRestore model file by**\n\n```\npython remove_optim.py --type OneRestore --input-file ./ckpts/onerestore_model.tar --output-file ./ckpts/onerestore_model.tar\n```\n\n### Customize your own composite degradation dataset\n\n**1. Prepare raw data**\n\n - Collect your own clear images.\n - Generate the depth map based on [MegaDepth](https://github.com/zhengqili/MegaDepth).\n - Generate the light map based on [LIME](https://github.com/estija/LIME).\n - Generate the rain mask database based on [RainStreakGen](https://github.com/liruoteng/RainStreakGen?tab=readme-ov-file).\n - Download the snow mask database from [Snow100k](https://sites.google.com/view/yunfuliu/desnownet).\n\nA generated example is as follows:\n\n| Clear Image | Depth Map | Light Map | Rain Mask | Snow Mask\n| :--- | :---| :---| :--- | :---\n| \u003cimg src=\"https://github.com/gy65896/OneRestore/blob/main/img_file/clear_img.jpg\" width=\"200\"\u003e | \u003cimg src=\"https://github.com/gy65896/OneRestore/blob/main/img_file/depth_map.jpg\" width=\"200\"\u003e | \u003cimg src=\"https://github.com/gy65896/OneRestore/blob/main/img_file/light_map.jpg\" width=\"200\"\u003e | \u003cimg src=\"https://github.com/gy65896/OneRestore/blob/main/img_file/rain_mask.jpg\" width=\"200\"\u003e | \u003cimg src=\"https://github.com/gy65896/OneRestore/blob/main/img_file/snow_mask.png\" width=\"200\"\u003e\n\n(Note: The rain and snow masks do not require strict alignment with the image.)\n\n - Prepare the dataset as follows:\n\n```\n./syn_data/\n|--data\n|  |--clear\n|  |  |--000001.png\n|  |  |--000002.png\n|  |--depth_map\n|  |  |--000001.png\n|  |  |--000002.png\n|  |--light_map\n|  |  |--000001.png\n|  |  |--000002.png\n|  |--rain_mask\n|  |  |--aaaaaa.png\n|  |  |--bbbbbb.png\n|  |--snow_mask\n|  |  |--cccccc.png\n|  |  |--dddddd.png\n|--out\n```\n\n**2. Generate composite degradation images**\n\n - low+haze+rain\n\n```\npython syn_data.py --hq-file ./data/clear/ --light-file ./data/light_map/ --depth-file ./data/depth_map/ --rain-file ./data/rain_mask/ --snow-file ./data/snow_mask/ --out-file ./out/ --low --haze --rain\n```\n\n - low+haze+snow\n\n```\npython syn_data.py --hq-file ./data/clear/ --light-file ./data/light_map/ --depth-file ./data/depth_map/ --rain-file ./data/rain_mask/ --snow-file ./data/snow_mask/ --out-file ./out/ --low --haze --snow\n```\n(Note: The degradation types can be customized according to specific needs.)\n\n| Clear Image | low+haze+rain | low+haze+snow\n| :--- | :--- | :---\n| \u003cimg src=\"https://github.com/gy65896/OneRestore/blob/main/img_file/clear_img.jpg\" width=\"200\"\u003e | \u003cimg src=\"https://github.com/gy65896/OneRestore/blob/main/img_file/l+h+r.jpg\" width=\"200\"\u003e | \u003cimg src=\"https://github.com/gy65896/OneRestore/blob/main/img_file/l+h+s.jpg\" width=\"200\"\u003e\n\n## Performance\n\n### CDD-11\n\n| Types             | Methods                                       | Venue \u0026 Year | PSNR ↑   | SSIM ↑   | #Params   |\n|-------------------|-----------------------------------------------|--------------|----------|----------|------------|\n| Input             | [Input](https://1drv.ms/u/c/cbb69e4e3408ebcd/Ec3rCDROnrYggMuNlQAAAAABf9KaFodlfC8H-K_MNiriFw?e=SiOrWU)                                         |              | 16.00    | 0.6008   | -          |\n| One-to-One        | [MIRNet](https://1drv.ms/u/c/cbb69e4e3408ebcd/Ec3rCDROnrYggMuMlQAAAAABBzDLjLu69noXflImQ2V9ng?e=4wohVK)                                        | ECCV2020     | 25.97    | 0.8474   | 31.79M     |\n| One-to-One        | [MPRNet](https://1drv.ms/u/c/cbb69e4e3408ebcd/Ec3rCDROnrYggMuLlQAAAAAB_iz3hjLHZDMi-RyxHKgDDg?e=SwSQML)                                        | CVPR2021     | 25.47    | 0.8555   | 15.74M     |\n| One-to-One        | [MIRNetv2](https://1drv.ms/u/c/cbb69e4e3408ebcd/Ec3rCDROnrYggMuQlQAAAAAB2miyepdTE3qdy4z2-LM4pg?e=moXVAR)                                      | TPAMI2022    | 25.37    | 0.8335   | 5.86M      |\n| One-to-One        | [Restormer](https://1drv.ms/u/c/cbb69e4e3408ebcd/Ec3rCDROnrYggMuPlQAAAAABE86t03kpAVm_TZDIBPKolw?e=vHAR7A)                                     | CVPR2022     | 26.99    | 0.8646   | 26.13M     |\n| One-to-One        | [DGUNet](https://1drv.ms/u/c/cbb69e4e3408ebcd/Ec3rCDROnrYggMuOlQAAAAABZkHj8tMamqaGhQ0w4VwFrg?e=lfDUlx)                                        | CVPR2022     | 26.92    | 0.8559   | 17.33M     |\n| One-to-One        | [NAFNet](https://1drv.ms/u/c/cbb69e4e3408ebcd/EWm9jiJiZLlLgq1trYO67EsB42LrjGpepvpS4oLqKnj8xg?e=5Efa4W)                                        | ECCV2022     | 24.13    | 0.7964   | 17.11M     |\n| One-to-One        | [SRUDC](https://1drv.ms/u/c/cbb69e4e3408ebcd/Ec3rCDROnrYggMuWlQAAAAABf9RNAUZH_xL6wF4aODWKqA?e=h4EqVN)                                         | ICCV2023     | 27.64    | 0.8600   | 6.80M      |\n| One-to-One        | [Fourmer](https://1drv.ms/u/c/cbb69e4e3408ebcd/Ec3rCDROnrYggMuXlQAAAAABQKrbA47G8kMD2cf7Chq5EQ?e=vOiWV0)                                       | ICML2023     | 23.44    | 0.7885   | 0.55M      |\n| One-to-One        | [OKNet](https://1drv.ms/u/c/cbb69e4e3408ebcd/Ec3rCDROnrYggMuVlQAAAAABSMzfS1xEOxLeuvw8HsGyMw?e=jRmf9t)                                         | AAAI2024     | 26.33    | 0.8605   | 4.72M      |\n| One-to-Many       | [AirNet](https://1drv.ms/u/c/cbb69e4e3408ebcd/Ec3rCDROnrYggMualQAAAAABYJ96PX0fipkP93zRXN_NVw?e=sXFOl8)                                        | CVPR2022     | 23.75    | 0.8140   | 8.93M      |\n| One-to-Many       | [TransWeather](https://1drv.ms/u/c/cbb69e4e3408ebcd/Ec3rCDROnrYggMuZlQAAAAABoBiLjwJ8L2kl6rGQO5PeJA?e=msprhI)                                  | CVPR2022     | 23.13    | 0.7810   | 21.90M     |\n| One-to-Many       | [WeatherDiff](https://1drv.ms/u/c/cbb69e4e3408ebcd/Ec3rCDROnrYggMuYlQAAAAABxdWbznZA1CQ0Bh1JH_ze-A?e=LEkcZw)                                   | TPAMI2023    | 22.49    | 0.7985   | 82.96M     |\n| One-to-Many       | [PromptIR](https://1drv.ms/u/c/cbb69e4e3408ebcd/Ec3rCDROnrYggMublQAAAAAB9aGo3QK-WlKkL5ItITW9Hg?e=wXrJf1)                                      | NIPS2023     | 25.90    | 0.8499   | 38.45M     |\n| One-to-Many       | [WGWSNet](https://1drv.ms/u/c/cbb69e4e3408ebcd/Ec3rCDROnrYggMudlQAAAAABi3HUMldxdoLHgDcUNoWMPw?e=z0qjAH)                                       | CVPR2023     | 26.96    | 0.8626   | 25.76M     |\n| One-to-Composite  | [OneRestore](https://1drv.ms/u/c/cbb69e4e3408ebcd/Ec3rCDROnrYggMuclQAAAAABSmNvDBKR1u5rDtqQnZ8X7A?e=OcnrjY)                                    | ECCV2024     | 28.47    | 0.8784   | 5.98M      |\n| One-to-Composite  | [OneRestore\u003csup\u003e† \u003c/sup\u003e](https://1drv.ms/u/c/cbb69e4e3408ebcd/EVM43y_W_WxAjrZqZdK9sfoBk1vpSzKilG0m7T-3i3la-A?e=dbNsD3)                          | ECCV2024     | 28.72    | 0.8821   | 5.98M      |\n\n[Indicator calculation code](https://github.com/gy65896/OneRestore/blob/main/img_file/cal_psnr_ssim.py) and [numerical results](https://github.com/gy65896/OneRestore/blob/main/img_file/metrics_CDD-11_psnr_ssim.xlsx) can be download here.\n\n\u003c/div\u003e\n\u003cdiv align=center\u003e\n\u003cimg src=\"https://github.com/gy65896/OneRestore/blob/main/img_file/syn.jpg\" width=\"1080\"\u003e\n\u003c/div\u003e\n\n### Real Scene\n\n\u003c/div\u003e\n\u003cdiv align=center\u003e\n\u003cimg src=\"https://github.com/gy65896/OneRestore/blob/main/img_file/real.jpg\" width=\"1080\"\u003e\n\u003c/div\u003e\n\n### Controllability\n\n\u003c/div\u003e\n\u003cdiv align=center\u003e\n\u003cimg src=\"https://github.com/gy65896/OneRestore/blob/main/img_file/control1.jpg\" width=\"410\"\u003e\u003cimg src=\"https://github.com/gy65896/OneRestore/blob/main/img_file/control2.jpg\" width=\"410\"\u003e\n\u003c/div\u003e\n\n\n## Citation\n\n```\n@inproceedings{guo2024onerestore,\n  title={OneRestore: A Universal Restoration Framework for Composite Degradation},\n  author={Guo, Yu and Gao, Yuan and Lu, Yuxu and Liu, Ryan Wen and He, Shengfeng},\n  booktitle={European Conference on Computer Vision},\n  year={2024}\n}\n```\n\n#### If you have any questions, please get in touch with me (guoyu65896@gmail.com).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgy65896%2FOneRestore","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgy65896%2FOneRestore","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgy65896%2FOneRestore/lists"}