{"id":13435574,"url":"https://github.com/peteryuX/esrgan-tf2","last_synced_at":"2025-03-18T11:31:43.730Z","repository":{"id":37741303,"uuid":"231120675","full_name":"peteryuX/esrgan-tf2","owner":"peteryuX","description":"ESRGAN (Enhanced Super-Resolution Generative Adversarial Networks, published in ECCV 2018) implemented in Tensorflow 2.0+. This is an unofficial implementation. With Colab.","archived":false,"fork":false,"pushed_at":"2023-03-24T22:36:18.000Z","size":17804,"stargazers_count":136,"open_issues_count":15,"forks_count":42,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-10-27T18:58:02.433Z","etag":null,"topics":["colab","colab-notebook","esrgan","esrgan-tf2","gan","perceptual-losses","sr","super-resolution","tensorflow","tf2"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/peteryuX.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2019-12-31T16:49:49.000Z","updated_at":"2024-10-22T03:20:29.000Z","dependencies_parsed_at":"2024-05-02T03:36:11.087Z","dependency_job_id":"d046599b-d37f-4dcd-a592-7a25bfdd2c7c","html_url":"https://github.com/peteryuX/esrgan-tf2","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peteryuX%2Fesrgan-tf2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peteryuX%2Fesrgan-tf2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peteryuX%2Fesrgan-tf2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peteryuX%2Fesrgan-tf2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peteryuX","download_url":"https://codeload.github.com/peteryuX/esrgan-tf2/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244211057,"owners_count":20416576,"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":["colab","colab-notebook","esrgan","esrgan-tf2","gan","perceptual-losses","sr","super-resolution","tensorflow","tf2"],"created_at":"2024-07-31T03:00:37.004Z","updated_at":"2025-03-18T11:31:38.714Z","avatar_url":"https://github.com/peteryuX.png","language":"Python","funding_links":[],"categories":["Sample Codes / Projects \u003ca name=\"sample\" /\u003e ⛏️📐📁"],"sub_categories":["Reinforcement Learning \u003ca name=\"RL\" /\u003e🔮"],"readme":"# [esrgan-tf2](https://github.com/peteryuX/esrgan-tf2)\n\n[![Language grade: Python](https://img.shields.io/lgtm/grade/python/g/peteryuX/esrgan-tf2.svg?logo=lgtm\u0026logoWidth=18)](https://lgtm.com/projects/g/peteryuX/esrgan-tf2/context:python)\n![Star](https://img.shields.io/github/stars/peteryuX/esrgan-tf2)\n![Fork](https://img.shields.io/github/forks/peteryuX/esrgan-tf2)\n![License](https://img.shields.io/github/license/peteryuX/esrgan-tf2)\n\n[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/peteryuX/esrgan-tf2/blob/master/notebooks/colab-github-demo.ipynb)\n\n:fire: ESRGAN (Enhanced Super-Resolution Generative Adversarial Networks, published in ECCV 2018) implemented in Tensorflow 2.0+. This is an unofficial implementation. :fire:\n\n\u003e  ESRGAN introduce the Residual-in-Residual Dense Block (RRDB) without batch normalization as the basic network building unit, the idea from relativistic GAN to let the discriminator predict relative realness, and the perceptual loss by using the features before activation. Benefiting from these improvements, the proposed ESRGAN achieves consistently better visual quality with more realistic and natural textures than SRGAN and won the first place in the PIRM2018-SR Challenge.\n\nOriginal Paper: \u0026nbsp; [Arxiv](https://arxiv.org/abs/1809.00219) \u0026nbsp; [ECCV2018](http://openaccess.thecvf.com/content_eccv_2018_workshops/w25/html/Wang_ESRGAN_Enhanced_Super-Resolution_Generative_Adversarial_Networks_ECCVW_2018_paper.html)\n\nOffical Implementation: \u0026nbsp; [PyTorch](https://github.com/open-mmlab/mmsr)\n\n:: Results from this reporepository. ::\n\u003cimg src=\"photo/baboon_cover.png\"\u003e\n\n****\n\n## Contents\n:bookmark_tabs:\n\n* [Installation](#Installation)\n* [Data Preparing](#Data-Preparing)\n* [Training and Testing](#Training-and-Testing)\n* [Benchmark and Visualization](#Benchmark-and-Visualization)\n* [Models](#Models)\n* [References](#References)\n\n***\n\n## Installation\n:pizza:\n\nCreate a new python virtual environment by [Anaconda](https://www.anaconda.com/) or just use pip in your python environment and then clone this repository as following.\n\n### Clone this repo\n```bash\ngit clone https://github.com/peteryuX/esrgan-tf2.git\ncd esrgan-tf2\n```\n\n### Conda\n```bash\nconda env create -f environment.yml\nconda activate esrgan-tf2\n```\n\n### Pip\n\n```bash\npip install -r requirements.txt\n```\n\n****\n\n## Data Preparing\n:beer:\n\nAll datasets used in this repository follow the [official implement](https://github.com/open-mmlab/mmsr/blob/master/datasets/DATASETS.md) as same as possible. This code focus on implementation of x4 version.\n\n### Training Dataset\n\n**Step 1**: Download the [DIV2K](https://data.vision.ee.ethz.ch/cvl/DIV2K/) GT images and corresponding LR images from the download links bellow.\n\n| Dataset Name | Link |\n|:------------:|:----------:|\n|Ground-Truth|[DIV2K_train_HR](http://data.vision.ee.ethz.ch/cvl/DIV2K/DIV2K_train_HR.zip)|\n|LRx4 (MATLAB bicubic)|[DIV2K_train_LR_bicubic_X4](http://data.vision.ee.ethz.ch/cvl/DIV2K/DIV2K_train_LR_bicubic_X4.zip)|\n\nNote: If you want to dowsample your traning data as LR images by yourself, you can use the [`imresize_np()`](https://github.com/peteryuX/esrgan-tf2/blob/master/modules/utils.py#L134) wich is numpy implementation or MATLAB resize.\n\n**Step 2**: Extract them into `./data/DIV2K/`. The directory structure should be like bellow.\n```\n./data/DIV2K/\n    -\u003e DIV2K_valid_HR/\n        -\u003e 0001.png\n        -\u003e 0002.png\n        -\u003e ...\n    -\u003e DIV2K_train_LR_bicubic/\n        -\u003e X4/\n            -\u003e 0001x4.png\n            -\u003e 0002x4.png\n```\n\n**Step 3**: Rename and Crop to sub-images with the script bellow. Modify these scripts if you need other setting.\n```bash\n# rename image file in LR folder `DIV2K_train_LR_bicubic/*'.\npython data/rename.py\n\n# extract sub-images from HR folder and LR folder.\npython data/extract_subimages.py\n```\n\n**Step 4**: Convert the sub-images to tfrecord file with the the script bellow.\n```bash\n# Binary Image (recommend): convert slow, but loading faster when traning.\npython data/convert_train_tfrecord.py --output_path=\"./data/DIV2K800_sub_bin.tfrecord\" --is_binary=True\n# or\n# Online Image Loading: convert fast, but loading slower when training.\npython data/convert_train_tfrecord.py --output_path=\"./data/DIV2K800_sub.tfrecord\" --is_binary=False\n```\n\nNote:\n- You can run `python ./dataset_checker.py` to check if the dataloader work.\n\n### Testing Dataset\n\n**Step 1**: Download the common image SR datasets from the download links bellow. You only need Set5 and Set14 in the default setting [./configs/*.yaml](https://github.com/peteryuX/esrgan-tf2/tree/master/configs).\n\n| Dataset Name | Short Description | Link |\n|:------------:|:----------:|:----------:|\n| Set5 | Set5 test dataset | [Google Drive](https://drive.google.com/file/d/1P2awpbSlIV9_QyCsls-2gWOn5J3OEctM/view?usp=sharing) |\n| Set14 | Set14 test dataset | [Google Drive](https://drive.google.com/file/d/1K-hMsAXxupwHYS1xHcW_uE_UrYrXHHZJ/view?usp=sharing) |\n| BSDS100 | A subset (test) of BSD500 for testing | [Google Drive](https://drive.google.com/file/d/1wKzuGAYJmrzgr7-S-U8o3nBMw9uMr51y/view?usp=sharing) |\n| Urban100 | 100 building images for testing (regular structures) | [Google Drive](https://drive.google.com/file/d/1dePdrT5idM7wkZlGix8edFaIhN7FxkLi/view?usp=sharing) |\n| Manga109 | 109 images of Japanese manga for testing | [Google Drive](https://drive.google.com/file/d/1lE6YPMNHg4Rh4vL7Grw9s3ywwWq06Ewh/view?usp=sharing) |\n| Historical | 10 gray LR images without the ground-truth | [Google Drive](https://drive.google.com/file/d/1Ny6duuGCTu8KrwEvNxUen3USHvFKj3X7/view?usp=sharing) |\n\n**Step 2**: Extract them into `./data/`. The directory structure should be like bellow. The directory structure should be like bellow.\n```\n./data/\n    -\u003e Set5/\n        -\u003e baby.png\n        -\u003e bird.png\n        -\u003e ...\n    -\u003e Set14/\n        -\u003e ...\n```\n\n****\n\n## Training and Testing\n:lollipop:\n\n### Config File\nYou can modify your own dataset path or other settings of model in [./configs/*.yaml](https://github.com/peteryuX/esrgan-tf2/tree/master/configs) for training and testing, which like below.\n\n```python\n# general setting\nbatch_size: 16\ninput_size: 32\ngt_size: 128\nch_size: 3\nscale: 4\nsub_name: 'esrgan'\npretrain_name: 'psnr_pretrain'\n\n# generator setting\nnetwork_G:\n    nf: 64\n    nb: 23\n# discriminator setting\nnetwork_D:\n    nf: 64\n\n# dataset setting\ntrain_dataset:\n    path: './data/DIV2K800_sub_bin.tfrecord'\n    num_samples: 32208\n    using_bin: True\n    using_flip: True\n    using_rot: True\ntest_dataset:\n    set5_path: './data/Set5'\n    set14_path: './data/Set14'\n\n# training setting\nniter: 400000\n\nlr_G: !!float 1e-4\nlr_D: !!float 1e-4\nlr_steps: [50000, 100000, 200000, 300000]\nlr_rate: 0.5\n\nadam_beta1_G: 0.9\nadam_beta2_G: 0.99\nadam_beta1_D: 0.9\nadam_beta2_D: 0.99\n\nw_pixel: !!float 1e-2\npixel_criterion: l1\n\nw_feature: 1.0\nfeature_criterion: l1\n\nw_gan: !!float 5e-3\ngan_type: ragan  # gan | ragan\n\nsave_steps: 5000\n```\n\nNote:\n- The `sub_name` is the name of outputs directory used in checkpoints and logs folder. (make sure of setting it unique to other models)\n- The `using_bin` is used to choose the type of training data, which should be according to the data type you created in the [Data-Preparing](#Data-Preparing).\n- The `w_pixel`/`w_feature`/`w_gan` is the combined weight of pixel/feature/gan loss.\n- The `save_steps` is the number interval steps of saving checkpoint file.\n\n### Training\n\n#### Pretrain PSNR\nPretrain the PSNR RDDB model by yourself, or dowload it from [BenchmarkModels](#Models).\n```bash\npython train_psnr.py --cfg_path=\"./configs/psnr.yaml\" --gpu=0\n```\n\n#### ESRGAN\nTrain the ESRGAN model with the pretrain PSNR model.\n```bash\npython train_esrgan.py --cfg_path=\"./configs/esrgan.yaml\" --gpu=0\n```\n\nNote:\n- Make sure you have the pretrain PSNR model before train ESRGAN model. (Pretrain model checkpoint should be located at `./checkpoints` for restoring)\n- The `--gpu` is used to choose the id of your avaliable GPU devices with `CUDA_VISIBLE_DEVICES` system varaible.\n- You can visualize the learning rate scheduling by running \"`python ./modules/lr_scheduler.py`\".\n\n### Testing\n\nYou can download my trained models for testing from [Models](#Models) without training it yourself. And, evaluate the models you got with the corresponding cfg file on the testing dataset. The visualizations results would be saved into `./results/`.\n\n```bash\n# Test ESRGAN model\npython test.py --cfg_path=\"./configs/esrgan.yaml\"\n# or\n# PSNR pretrain model\npython test.py --cfg_path=\"./configs/psnr.yaml\"\n```\n\n### SR Input Image\n\nYou can upsample your image by the SR model. For example, upsample the image from [./data/baboon.png](https://github.com/peteryuX/esrgan-tf2/blob/master/data/baboon.png) as following.\n\n```bash\npython test.py --cfg_path=\"./configs/esrgan.yaml\" --img_path=\"./data/baboon.png\"\n# or\n# PSNR pretrain model\npython test.py --cfg_path=\"./configs/psnr.yaml\" --img_path=\"./data/baboon.png\"\n```\n\n### Network Interpolation\n\nProduce the compare results between network interpolation and image interpolation as same as original paper.\n\n```bash\npython net_interp.py --cfg_path1=\"./configs/psnr.yaml\" --cfg_path2=\"./configs/esrgan.yaml\" --img_path=\"./data/PIPRM_3_crop.png\" --save_image=True --save_ckpt=True\n```\n\nNote:\n- `--save_image` means save the compare results into `./results_interp`.\n- `--save_ckpt` means save all the interpolation ckpt files into `./results_interp`.\n\n****\n\n## Benchmark and Visualization\n:coffee:\n\nVerification results (PSNR/SSIM) and visiualization results.\n\n\n### **Set5**\n\u003ctable\u003e\n    \u003cthead\u003e\n        \u003ctr\u003e\n            \u003cth\u003eImage Name\u003c/th\u003e\n            \u003cth\u003eBicubic\u003c/th\u003e\n            \u003cth\u003ePSNR (pretrain)\u003c/th\u003e\n            \u003cth\u003eESRGAN\u003c/th\u003e\n            \u003cth\u003eGround Truth\u003c/th\u003e\n        \u003c/tr\u003e\n    \u003c/thead\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\" rowspan=2\u003ebaby\u003c/td\u003e\n            \u003ctd align=\"center\" colspan=4\u003e\u003cimg src=\"./photo/table_baby.png\"\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n            \u003ctd align=\"center\"\u003e31.96 / 0.85\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e33.86 / 0.89\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e31.36 / 0.83\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n        \u003ctr\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\" rowspan=2\u003ebird\u003c/td\u003e\n            \u003ctd align=\"center\" colspan=4\u003e\u003cimg src=\"./photo/table_bird.png\"\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n            \u003ctd align=\"center\"\u003e30.27 / 0.87\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e35.00 / 0.94\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e32.22 / 0.90\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n        \u003ctr\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\" rowspan=2\u003ebutterfly\u003c/td\u003e\n            \u003ctd align=\"center\" colspan=4\u003e\u003cimg src=\"./photo/table_butterfly.png\"\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n            \u003ctd align=\"center\"\u003e22.25 / 0.72\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e28.56 / 0.92\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e26.66 / 0.88\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n        \u003ctr\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\" rowspan=2\u003ehead\u003c/td\u003e\n            \u003ctd align=\"center\" colspan=4\u003e\u003cimg src=\"./photo/table_head.png\"\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n            \u003ctd align=\"center\"\u003e32.01 / 0.76\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e33.18 / 0.80\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e30.19 / 0.70\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\" rowspan=2\u003ewoman\u003c/td\u003e\n            \u003ctd align=\"center\" colspan=4\u003e\u003cimg src=\"./photo/table_woman.png\"\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n            \u003ctd align=\"center\"\u003e26.44 / 0.83\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e30.42 / 0.92\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e28.50 / 0.88\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n### **Set14 (Partial)**\n\u003ctable\u003e\n    \u003cthead\u003e\n        \u003ctr\u003e\n            \u003cth\u003eImage Name\u003c/th\u003e\n            \u003cth\u003eBicubic\u003c/th\u003e\n            \u003cth\u003ePSNR (pretrain)\u003c/th\u003e\n            \u003cth\u003eESRGAN\u003c/th\u003e\n            \u003cth\u003eGround Truth\u003c/th\u003e\n        \u003c/tr\u003e\n    \u003c/thead\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\" rowspan=2\u003ebaboon\u003c/td\u003e\n            \u003ctd align=\"center\" colspan=4\u003e\u003cimg src=\"./photo/table_baboon.png\"\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n            \u003ctd align=\"center\"\u003e22.06 / 0.45\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e22.77 / 0.54\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e20.73 / 0.44\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n        \u003ctr\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\" rowspan=2\u003ecomic\u003c/td\u003e\n            \u003ctd align=\"center\" colspan=4\u003e\u003cimg src=\"./photo/table_comic.png\"\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n            \u003ctd align=\"center\"\u003e21.69 / 0.59\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e23.46 / 0.74\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e21.08 / 0.64\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n        \u003ctr\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\" rowspan=2\u003elenna\u003c/td\u003e\n            \u003ctd align=\"center\" colspan=4\u003e\u003cimg src=\"./photo/table_lenna.png\"\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n            \u003ctd align=\"center\"\u003e29.67 / 0.80\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e32.06 / 0.85\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e28.96 / 0.80\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n        \u003ctr\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\" rowspan=2\u003emonarch\u003c/td\u003e\n            \u003ctd align=\"center\" colspan=4\u003e\u003cimg src=\"./photo/table_monarch.png\"\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n            \u003ctd align=\"center\"\u003e27.60 / 0.88\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e33.27 / 0.94\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e31.49 / 0.92\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\" rowspan=2\u003ezebra\u003c/td\u003e\n            \u003ctd align=\"center\" colspan=4\u003e\u003cimg src=\"./photo/table_zebra.png\"\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n            \u003ctd align=\"center\"\u003e24.15 / 0.68\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e27.29 / 0.78\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e24.86 / 0.67\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e-\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\nNote:\n- The baseline Bicubic resizing method can be find at [`imresize_np()`](https://github.com/peteryuX/esrgan-tf2/blob/master/modules/utils.py#L134).\n- All the PSNR and SSIM results are calculated on Y channel of [YCbCr](https://en.wikipedia.org/wiki/YCbCr).\n- All results trained on [DIV2K](https://data.vision.ee.ethz.ch/cvl/DIV2K/).\n\n### **Network Interpolation (on [`./data/PIPRM_3_crop.png`](https://github.com/peteryuX/esrgan-tf2/blob/master/data/PIPRM_3_crop.png))**\n\n#### weight interpolation\n\u003cimg src=\"photo/weight_interp_PIPRM_3_crop.png\" width=\"90%\"\u003e\n\n#### image interpolation\n\u003cimg src=\"photo/image_interp_PIPRM_3_crop.png\" width=\"90%\"\u003e\n\n(ESRGAN \u003c-\u003e PSNR, alpha=[1., 0.8, 0.6, 0.4, 0.2, 0.])\n\n****\n\n## Models\n:doughnut:\n\n| Model Name          | Download Link |\n|---------------------|---------------|\n| PSNR                | [GoogleDrive](https://drive.google.com/file/d/198YL4f6uHtyR4vv92M34rIxkds97OR1_/view?usp=sharing) |\n| ESRGAN              | [GoogleDrive](https://drive.google.com/file/d/1Nnob9TIAL1f6ef2C_YnS97KxM91bmE0_/view?usp=sharing) |\n| PSNR (inference)    | [GoogleDrive](https://drive.google.com/file/d/1gSaHKJfs0d6sijqr8Uvskgj6EVwaI8Ls/view?usp=sharing) |\n| ESRGAN (inference) | [GoogleDrive](https://drive.google.com/file/d/1ckihm-YJ5iwayBzUNPDVwyo9u54UtZyE/view?usp=sharing) |\n\nNote:\n- After dowloading these models, extract them into `./checkpoints` for restoring.\n- The inference version was saved without any tranning operator, which is smaller than the original version. However, if you want to finetune, the orginal version is more suitable.\n- All training settings of the models can be found in the corresponding [./configs/*.yaml](https://github.com/peteryuX/esrgan-tf2/tree/master/configs) files.\n- **Based on the property of the training dataset, all the pre-trained models can only be used for non-commercial applications.**\n\n****\n\n## References\n:hamburger:\n\nThanks for these source codes porviding me with knowledges to complete this repository.\n\n- https://github.com/open-mmlab/mmsr (Official)\n    - Open MMLab Image and Video Super-Resolution Toolbox, , including SRResNet, SRGAN, ESRGAN, EDVR, etc.\n- https://github.com/krasserm/super-resolution\n    - Tensorflow 2.0 based implementation of EDSR, WDSR and SRGAN for single image super-resolution\n- https://github.com/zzh8829/yolov3-tf2\n    - YoloV3 Implemented in TensorFlow 2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FpeteryuX%2Fesrgan-tf2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FpeteryuX%2Fesrgan-tf2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FpeteryuX%2Fesrgan-tf2/lists"}