Skip to content

A modified version of ESRGAN with more features

License

Notifications You must be signed in to change notification settings

efonte/ESRGAN

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ESRGAN Open In Colab

Fork of BlueAmulet's fork of ESRGAN by Xinntao. It natively allows:

  • In-memory splitting/merging functionality (fully seamless, recently revamped for the third time and no longer requires tile size)
  • Seamless texture preservation (both tiled and mirrored)
  • Model chaining
  • Transparency preservation (3 different modes)
  • 1-bit transparency support (with half transparency as well)
  • Both new-arch and old-arch models
  • Regular and SPSR models, of any scale or internal model settings
  • On-the-fly interpolation
  • Multi GPU upscaling
  • Upscale images using multiple models (useful for testing which model looks best)
  • Save the images in a zip file
  • Video upscaling using differences between frames

Tile size was recently removed! It is no longer needed for split/merge functionality!

To set your textures to seamless, use the --seamless flag. For regular tiled seamless mode, use --seamless tile. For mirrored seamless mode, use --seamless mirror. You can also add pixel-replication padding using --seamless replicate and alpha padding using --seamless alpha_pad.

To chain models, simply put one model name after another with a > in between (you can also use + if using bash to avoid issues), such as 1xDeJpeg.pth>4xESRGAN.pth note: To use model chaining, model names must be the complete full name without the path included, and the models must be present in your /models folder. You can still use full model paths to upscale with a single model.

For on-the-fly interpolation, you use this syntax: <model1_name>:<##>&<model2_name>:<##>, where the model name is the path to the model and ## is the numerical percentage to interpolate by. For example, model1:50&model2:50 would interpolate model1 and model2 by 50 each. The numbers should add up to 100. If you have trouble using : or &, either try putting the interpolation string in quotes or use @ or | respectively ("model1@50|model2@50").

To use 1 bit binary alpha transparency, set the --binary-alpha flag to True. When using --binary-alpha transparency, provide the optional --alpha-threshold to specify the alpha transparency threshold. 1 bit binary transparency is useful when upscaling images that require that the end result has 1 bit transparency, e.g. PSX games. If you want to include half transparency, use --ternary-alpha instead, which allows you to set the --alpha-boundary-offset threshold.

The default alpha mode is now 0 (ignore alpha). There are also now 3 other modes to choose from:

  • --alpha-mode 1: Fills the alpha channel with both white and black and extracts the difference from each result.
  • --alpha-mode 2: Upscales the alpha channel by itself, as a fake 3 channel image (The IEU way) then combines with result.
  • --alpha-mode 3: Shifts the channels so that it upscales the alpha channel along with other regular channels then combines with result.

If needed, you can also skip existing files by using --skip-existing.

If you're upscaling images of the same size, you can do --cache-max-split-depth to only calculate the automatic tile size once to improve performance.

If you have several GPUs you can use the --multi-gpu parameter.

To test several models you can add them separated by spaces.

If you want the resulting images to be saved in a zip file add --zip.

To convert images to jpg add --jpg. To resize them use --resize. If you want to make use of ImageMagick add the --imagemagick parameter.

Examples:

  • python upscale.py image 4xBox.pth --seamless tile
  • python upscale.py image 4xBox.pth 1xSSAntiAlias9x.pth
  • python upscale.py image 1xSSAntiAlias9x.pth>4xBox.pth
  • python upscale.py image 4xBox.pth --binary-alpha --alpha-threshold .2
  • python upscale.py image ./models/4xBox.pth --multi-gpu
  • python upscale.py image "1x_model1.pth@50|1x_model2.pth@50>2x_model3.pth"
  • python upscale.py video ./models/4xBox.pth -i ./input/video.mp4

If you want a GUI for ESRGAN and if you're on Windows, check out Cupscale. It implements most of this fork's features as well as other utilities around it.

About

A modified version of ESRGAN with more features

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 100.0%