We have moved to https://openmodeldb.info/. This new site has a tag and search system, which will make finding the right models for you much easier! If you have any questions, ask here: https://discord.gg/cpAUpDK |
Difference between revisions of "Using ESRGAN, Links, And Other Information"
(22 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | | Make sure that you have followed the installation guide carefully ([https://upscale.wiki/wiki/ESRGAN_Installation_Guide_for_Windows Windows], [https://upscale.wiki/wiki/Installing_ESRGAN_and/or_BasicSR_on_Arch_Linux Arch Linux], [https://upscale.wiki/wiki/ESRGAN_Installation_Guide_for_MacOS MacOS]). We support BlueAmulets fork offically, not the current ESRGAN branch from xinntao, if you use that one, you will get errors. | ||
+ | |} | ||
+ | |||
Now that you have installed ESRGAN you can upscale images. There are a few different ways of using ESRGAN. Below I will document the official one. This should work for everyone, but there are a few different applications designed to make the life of the users easier as well as to prevent common pitfalls of using ESRGAN. | Now that you have installed ESRGAN you can upscale images. There are a few different ways of using ESRGAN. Below I will document the official one. This should work for everyone, but there are a few different applications designed to make the life of the users easier as well as to prevent common pitfalls of using ESRGAN. | ||
==Things you need to know before you use ESRGAN== | ==Things you need to know before you use ESRGAN== | ||
+ | |||
* ESRGAN supports only RGB images, that means it will remove alpha / transparency channels if present and it won't work with grayscale images. | * ESRGAN supports only RGB images, that means it will remove alpha / transparency channels if present and it won't work with grayscale images. | ||
* ESRGAN is limited by the amount of VRAM you have. | * ESRGAN is limited by the amount of VRAM you have. | ||
'''But''' there are ways around both. At the time of writing this there are some popular tools used by a lot of us to solve this: | '''But''' there are ways around both. At the time of writing this there are some popular tools used by a lot of us to solve this: | ||
− | ===[https://github.com/ | + | == Tools / Ways to use ESRGAN == |
+ | |||
+ | === GUI Tools === | ||
+ | ---- | ||
+ | ==== [https://github.com/n00mkrad/cupscale nmkd's Cupscale] ==== | ||
---- | ---- | ||
− | + | Cupscale is a young ESRGAN GUI that's built with usability in mind. | |
− | * | + | It's the new community favorite and has many advanced features, such as: |
− | * | + | * Run ESRGAN on CPU, Nvidia GPU or AMD GPU |
− | * Has a | + | * Interpolate models on-the-fly (no need to create extra model files) |
− | * | + | * Create multiple types of comparisons |
− | + | * Batch upscale entire folders | |
− | * | + | * Upscale GIFs and even videos |
− | * | + | * Supports many image formats including JPEG, PNG, WEBP, DDS, and more |
− | ** | + | |
− | * | + | [https://github.com/n00mkrad/cupscale/releases Download Cupscale] |
− | * | + | |
+ | |||
+ | ==== [https://github.com/ptrsuder/IEU.Winforms ptrsuder's IEU (Image Enhancement Utility)] ==== | ||
+ | ---- | ||
+ | IEU has been used by many people and is considered mature, but if you encounter bugs or have feature requests, feel free to report them on Discord, or on GitHub repository by creating an issue. | ||
+ | The '''Download''' is under the [https://github.com/ptrsuder/IEU.Winforms/ IEU.Winforms] Releases tab. | ||
+ | Please take a bit of your time to read [https://github.com/ptrsuder/IEU.Winforms/wiki/Basic-usage IEU wiki] first. | ||
+ | |||
+ | ===== Advantages: ===== | ||
+ | |||
+ | * Easy to use | ||
+ | * Process any amount of images with all models you select via check-boxes | ||
+ | * Control over the output format and naming scheme | ||
+ | * Works around VRAM limitations | ||
+ | * Has a lot of advanced features available without the need to write any scripts | ||
+ | * Can upscale seamless(tiled) textures (landscape textures for example) | ||
+ | * Can use a different model for the alpha channel | ||
+ | * Can upscale each channel separately (Red, Green, Blue and Alpha) | ||
+ | *: This is useful for non diffuse textures, so normal maps (_n.dds typically), specular maps, ... | ||
+ | * Can interpolate different models right in the GUI | ||
+ | * Uses panorama image stitching to merge images. That makes it work with images of any resolution without cropping. | ||
+ | |||
+ | ===== Disadvantages ===== | ||
+ | |||
+ | * No cross platform support | ||
+ | * GUI only, no CLI support | ||
+ | * Uses panorama image stitching to merge images. That makes it slower and blends slightly worse. Most people will likely not notice the difference. | ||
− | === | + | === CLI Tools === |
---- | ---- | ||
− | * | + | ==== [https://github.com/JoeyBallentine/ESRGAN Joey's ESRGAN fork] ==== |
− | + | ---- | |
− | * | + | ===== Advantages ===== |
− | * | + | |
− | + | * Cross-Platform | |
− | * | + | * Works on headless systems |
+ | * Auto splits and merges images in memory | ||
+ | * It has a seamless option | ||
+ | * It can chain models | ||
+ | * Barebones, so you can script whatever you want around them | ||
+ | |||
+ | ===== Disadvantages ===== | ||
+ | |||
+ | * You have to enter the full model names if you don't wrap a script around it | ||
+ | |||
+ | ===== How to use it ===== | ||
+ | |||
+ | # Put the pictures or textures you want to upscale into the <code>input</code> folder | ||
+ | # Open a terminal window and navigate to the <code>esrgan</code> folder (the folder you cloned the fork into in the install guide) | ||
+ | #* For Windows Shift right click in your <code>esrgan</code> folder and select <code>Git Bash Here</code>. | ||
+ | #* For Linux / MacOS users the process is similar. File managers like Nautilus for example allow you to open a terminal in a folder. If that isn't an option for you can can also navigate using commands. <code>cd</code> allows you to navigate and pwd shows you the current folder. <code>cd ..</code> goes one directory down (for example from <code>/home/combi/code/git/ctp</code> to <code>/home/combi/code/git</code>). Use <code>cd /path/to/whatever</code> to navigate to absolute (full) paths or <code>cd some-folder-in-the-current-folder</code> to navigate to a folder in the current open folder. (<code>pwd</code> = print working directory; cd = change directory) If you want to find out more about a command you can just type <code>man the command-you-want-to-know-about</code> or use the internet | ||
+ | # Enter: | ||
+ | ## For Nvidia GPUs | ||
+ | ##: <code>python upscale.py models/${theModelYouWantToUse}</code> | ||
+ | ## For other GPUs / integrated Graphic | ||
+ | ##: <code>python upscale.py --cpu models/${theModelYouWantToUse}</code> | ||
+ | # Don't enter <code>${theModelYouWantToUse}</code> Instead replace that with the name of a model of course As an example, for the default model it would be: <code>python test.py models/RRDB_ESRGAN_x4.pth</code> | ||
+ | # That was it, the results will be in the <code>results</code> folder | ||
+ | |||
+ | Other useful Command line switches are: | ||
+ | |||
+ | * <code>--input ./input</code> - Your Input folder | ||
+ | * <code>--seamless</code> - For seamless textures (Textures that repeat without seams) | ||
+ | * <code>--output ./output</code> - Your Output folder | ||
+ | * <code>--skip_existing</code> - Skipps already upscaled images that are in your output and input folder | ||
+ | * <code>--tile_size 512</code> - The tile size, if you run out of VRAM, decrease that value | ||
+ | * <code>--binary_alpha</code> - If the alpha / transparency channel should be only black or white | ||
+ | * <code>--alpha_threshold 0.5</code> Sets tha point at which alpha will be white instead of black if using binary alpha | ||
+ | * <code>--alpha_mode 1</code> Different implementation for how Alpha works, if you use binary alpha, it must be 1 otherwise you can try 2. | ||
+ | |||
+ | ---- | ||
+ | ==== Blue Amulet's Esrgan test.py script (Guide way) ==== | ||
+ | ---- | ||
+ | |||
+ | ===== Advantages ===== | ||
+ | |||
+ | * Nothing additional needs to be installed | ||
+ | * Fastest option out there | ||
+ | |||
+ | ===== Disadvantages ===== | ||
+ | |||
+ | * Only works for some image formats (yes, jpg and png work) | ||
+ | * No splitting of images, so you can run out of VRAM easily as images get bigger | ||
+ | * You are limited by the amount of channels a model supports. Nearly all models out there require images to have exactly 3 channels (RGB). | ||
+ | |||
+ | ===== How to use it ===== | ||
− | |||
# Put the pictures or textures you want to upscale into the <code>LR</code> folder | # Put the pictures or textures you want to upscale into the <code>LR</code> folder | ||
− | |||
# Open a terminal window and navigate to the <code>esrgan</code> folder | # Open a terminal window and navigate to the <code>esrgan</code> folder | ||
− | #* For Windows Shift right click in your <code>esrgan</code> folder and select <code> | + | #* For Windows Shift right click in your <code>esrgan</code> folder and select <code>Git Bash Here</code>. |
#* For Linux / MacOS users the process is similar. File managers like Nautilus for example allow you to open a terminal in a folder. If that isn't an option for you can can also navigate using commands. <code>cd</code> allows you to navigate and pwd shows you the current folder. <code>cd ..</code> goes one directory down (for example from <code>/home/combi/code/git/ctp</code> to <code>/home/combi/code/git</code>). Use <code>cd /path/to/whatever</code> to navigate to absolute (full) paths or <code>cd some-folder-in-the-current-folder</code> to navigate to a folder in the current open folder. (<code>pwd</code> = print working directory; cd = change directory) If you want to find out more about a command you can just type <code>man the command-you-want-to-know-about</code> or use the internet | #* For Linux / MacOS users the process is similar. File managers like Nautilus for example allow you to open a terminal in a folder. If that isn't an option for you can can also navigate using commands. <code>cd</code> allows you to navigate and pwd shows you the current folder. <code>cd ..</code> goes one directory down (for example from <code>/home/combi/code/git/ctp</code> to <code>/home/combi/code/git</code>). Use <code>cd /path/to/whatever</code> to navigate to absolute (full) paths or <code>cd some-folder-in-the-current-folder</code> to navigate to a folder in the current open folder. (<code>pwd</code> = print working directory; cd = change directory) If you want to find out more about a command you can just type <code>man the command-you-want-to-know-about</code> or use the internet | ||
# Enter: | # Enter: | ||
− | #: <code>python test.py models/${theModelYouWantToUse}</code> | + | ## For Nvidia GPUs |
+ | ##: <code>python test.py models/${theModelYouWantToUse}</code> | ||
+ | ## For other GPUs / integrated Graphic | ||
+ | ##: <code>python test.py --cpu models/${theModelYouWantToUse}</code> | ||
# Don't enter <code>${theModelYouWantToUse}</code> Instead replace that with the name of a model of course As an example, for the default model it would be: <code>python test.py models/RRDB_ESRGAN_x4.pth</code> | # Don't enter <code>${theModelYouWantToUse}</code> Instead replace that with the name of a model of course As an example, for the default model it would be: <code>python test.py models/RRDB_ESRGAN_x4.pth</code> | ||
# That was it, the results will be in the <code>results</code> folder | # That was it, the results will be in the <code>results</code> folder | ||
− | ==Tips when using ESRGAN== | + | ---- |
+ | ==== [https://github.com/deorder/texture-upscaler Deorder's scripts] ==== | ||
+ | ---- | ||
+ | ===== Advantages ===== | ||
+ | |||
+ | * Cross-Platform | ||
+ | * Works on headless systems | ||
+ | * Script for splitting images | ||
+ | * Script for merging images (to work around VRAM limitations) | ||
+ | * Barebones, you can use them for a lot of other Neural Networks | ||
+ | * Barebones, so you can script whatever you want around them | ||
+ | |||
+ | ===== Disadvantages ===== | ||
+ | |||
+ | * Outdated, they use ImageMagick 6 | ||
+ | * Problems when using it for images with dimensions not dividable though the patch size (by default 256x256) | ||
+ | * '''Don’t use [https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux WSL (Windows Subsystem for Linux)]''' if you run ESRGAN on a '''NVIDIA''' GPU since WSL '''doesn’t support GPU acceleration''', which makes it unable to run ESRGAN in CUDA mode. Use git bash or something similar instead. | ||
+ | |||
+ | ===== Requirements ===== | ||
+ | |||
+ | * bash (We install that via the windows guide. MacOS and Linux tend to come with it out of the box, no need to do anything for those there) | ||
+ | * imagemagick | ||
+ | |||
+ | == Tips when using ESRGAN == | ||
+ | |||
# When upscaling '''compressed textures''' use a 1x decompression model for the format first and or downscale them first by at least 50% with ,code>nearest neighbor</code> or <code>box</code> filtering first, before upscaling them in ESRGAN | # When upscaling '''compressed textures''' use a 1x decompression model for the format first and or downscale them first by at least 50% with ,code>nearest neighbor</code> or <code>box</code> filtering first, before upscaling them in ESRGAN | ||
# ESRGAN runs '''much''' faster on Nvidia GPUs, you can compile pytorch yourself for AMD GPUs but at the moment that is quite difficult to do | # ESRGAN runs '''much''' faster on Nvidia GPUs, you can compile pytorch yourself for AMD GPUs but at the moment that is quite difficult to do | ||
− | # If you '''run out of VRAM''', use '''Deorder’s scripts''', which will split the texture in smaller parts first | + | # If you '''run out of VRAM''', use '''Deorder’s scripts''' or IEU, which will split the texture in smaller parts first |
− | # If you have textures in sub-folders, use Deorder’s scripts | + | # If you have textures in sub-folders, use Deorder’s scripts or IEU with "Preserve folder structure" mode selected |
− | # If your textures contain an alpha channel (transparency), use Deorder’s scripts | + | # If your textures contain an alpha channel (transparency), use Deorder’s scripts or IEU |
− | # Try out different models. | + | # Try out different models. In our [https://upscale.wiki/wiki/Model_Database Model Database] you will find a lot of different models, that we trained ourself |
# If you are still not happy with the results despite having tried out different models, consider training your own and sharing it with us later | # If you are still not happy with the results despite having tried out different models, consider training your own and sharing it with us later | ||
− | ==Additional | + | == Additional Notices == |
− | + | ||
− | + | === Windows === | |
− | + | ||
− | |||
− | |||
− | |||
− | ===Windows=== | ||
* When upscaling large images (depending on your GPU for example 1000x1000px images) on Windows, it's possible for the operating system to kill the ESRGAN process if it takes too long. This can be fixed using the Nvidia Nsight Monitor app that is installed alongside the CUDA toolkit. [https://docs.nvidia.com/gameworks/content/developertools/desktop/timeout_detection_recovery.htm Here are Instructions for doing so] | * When upscaling large images (depending on your GPU for example 1000x1000px images) on Windows, it's possible for the operating system to kill the ESRGAN process if it takes too long. This can be fixed using the Nvidia Nsight Monitor app that is installed alongside the CUDA toolkit. [https://docs.nvidia.com/gameworks/content/developertools/desktop/timeout_detection_recovery.htm Here are Instructions for doing so] |
Revision as of 22:47, 12 November 2020
Make sure that you have followed the installation guide carefully (Windows, Arch Linux, MacOS). We support BlueAmulets fork offically, not the current ESRGAN branch from xinntao, if you use that one, you will get errors. |
Now that you have installed ESRGAN you can upscale images. There are a few different ways of using ESRGAN. Below I will document the official one. This should work for everyone, but there are a few different applications designed to make the life of the users easier as well as to prevent common pitfalls of using ESRGAN.
Contents
Things you need to know before you use ESRGAN
- ESRGAN supports only RGB images, that means it will remove alpha / transparency channels if present and it won't work with grayscale images.
- ESRGAN is limited by the amount of VRAM you have.
But there are ways around both. At the time of writing this there are some popular tools used by a lot of us to solve this:
Tools / Ways to use ESRGAN
GUI Tools
nmkd's Cupscale
Cupscale is a young ESRGAN GUI that's built with usability in mind. It's the new community favorite and has many advanced features, such as:
- Run ESRGAN on CPU, Nvidia GPU or AMD GPU
- Interpolate models on-the-fly (no need to create extra model files)
- Create multiple types of comparisons
- Batch upscale entire folders
- Upscale GIFs and even videos
- Supports many image formats including JPEG, PNG, WEBP, DDS, and more
ptrsuder's IEU (Image Enhancement Utility)
IEU has been used by many people and is considered mature, but if you encounter bugs or have feature requests, feel free to report them on Discord, or on GitHub repository by creating an issue. The Download is under the IEU.Winforms Releases tab. Please take a bit of your time to read IEU wiki first.
Advantages:
- Easy to use
- Process any amount of images with all models you select via check-boxes
- Control over the output format and naming scheme
- Works around VRAM limitations
- Has a lot of advanced features available without the need to write any scripts
- Can upscale seamless(tiled) textures (landscape textures for example)
- Can use a different model for the alpha channel
- Can upscale each channel separately (Red, Green, Blue and Alpha)
- This is useful for non diffuse textures, so normal maps (_n.dds typically), specular maps, ...
- Can interpolate different models right in the GUI
- Uses panorama image stitching to merge images. That makes it work with images of any resolution without cropping.
Disadvantages
- No cross platform support
- GUI only, no CLI support
- Uses panorama image stitching to merge images. That makes it slower and blends slightly worse. Most people will likely not notice the difference.
CLI Tools
Joey's ESRGAN fork
Advantages
- Cross-Platform
- Works on headless systems
- Auto splits and merges images in memory
- It has a seamless option
- It can chain models
- Barebones, so you can script whatever you want around them
Disadvantages
- You have to enter the full model names if you don't wrap a script around it
How to use it
- Put the pictures or textures you want to upscale into the
input
folder - Open a terminal window and navigate to the
esrgan
folder (the folder you cloned the fork into in the install guide)- For Windows Shift right click in your
esrgan
folder and selectGit Bash Here
. - For Linux / MacOS users the process is similar. File managers like Nautilus for example allow you to open a terminal in a folder. If that isn't an option for you can can also navigate using commands.
cd
allows you to navigate and pwd shows you the current folder.cd ..
goes one directory down (for example from/home/combi/code/git/ctp
to/home/combi/code/git
). Usecd /path/to/whatever
to navigate to absolute (full) paths orcd some-folder-in-the-current-folder
to navigate to a folder in the current open folder. (pwd
= print working directory; cd = change directory) If you want to find out more about a command you can just typeman the command-you-want-to-know-about
or use the internet
- For Windows Shift right click in your
- Enter:
- For Nvidia GPUs
python upscale.py models/${theModelYouWantToUse}
- For other GPUs / integrated Graphic
python upscale.py --cpu models/${theModelYouWantToUse}
- For Nvidia GPUs
- Don't enter
${theModelYouWantToUse}
Instead replace that with the name of a model of course As an example, for the default model it would be:python test.py models/RRDB_ESRGAN_x4.pth
- That was it, the results will be in the
results
folder
Other useful Command line switches are:
--input ./input
- Your Input folder--seamless
- For seamless textures (Textures that repeat without seams)--output ./output
- Your Output folder--skip_existing
- Skipps already upscaled images that are in your output and input folder--tile_size 512
- The tile size, if you run out of VRAM, decrease that value--binary_alpha
- If the alpha / transparency channel should be only black or white--alpha_threshold 0.5
Sets tha point at which alpha will be white instead of black if using binary alpha--alpha_mode 1
Different implementation for how Alpha works, if you use binary alpha, it must be 1 otherwise you can try 2.
Blue Amulet's Esrgan test.py script (Guide way)
Advantages
- Nothing additional needs to be installed
- Fastest option out there
Disadvantages
- Only works for some image formats (yes, jpg and png work)
- No splitting of images, so you can run out of VRAM easily as images get bigger
- You are limited by the amount of channels a model supports. Nearly all models out there require images to have exactly 3 channels (RGB).
How to use it
- Put the pictures or textures you want to upscale into the
LR
folder - Open a terminal window and navigate to the
esrgan
folder- For Windows Shift right click in your
esrgan
folder and selectGit Bash Here
. - For Linux / MacOS users the process is similar. File managers like Nautilus for example allow you to open a terminal in a folder. If that isn't an option for you can can also navigate using commands.
cd
allows you to navigate and pwd shows you the current folder.cd ..
goes one directory down (for example from/home/combi/code/git/ctp
to/home/combi/code/git
). Usecd /path/to/whatever
to navigate to absolute (full) paths orcd some-folder-in-the-current-folder
to navigate to a folder in the current open folder. (pwd
= print working directory; cd = change directory) If you want to find out more about a command you can just typeman the command-you-want-to-know-about
or use the internet
- For Windows Shift right click in your
- Enter:
- For Nvidia GPUs
python test.py models/${theModelYouWantToUse}
- For other GPUs / integrated Graphic
python test.py --cpu models/${theModelYouWantToUse}
- For Nvidia GPUs
- Don't enter
${theModelYouWantToUse}
Instead replace that with the name of a model of course As an example, for the default model it would be:python test.py models/RRDB_ESRGAN_x4.pth
- That was it, the results will be in the
results
folder
Deorder's scripts
Advantages
- Cross-Platform
- Works on headless systems
- Script for splitting images
- Script for merging images (to work around VRAM limitations)
- Barebones, you can use them for a lot of other Neural Networks
- Barebones, so you can script whatever you want around them
Disadvantages
- Outdated, they use ImageMagick 6
- Problems when using it for images with dimensions not dividable though the patch size (by default 256x256)
- Don’t use WSL (Windows Subsystem for Linux) if you run ESRGAN on a NVIDIA GPU since WSL doesn’t support GPU acceleration, which makes it unable to run ESRGAN in CUDA mode. Use git bash or something similar instead.
Requirements
- bash (We install that via the windows guide. MacOS and Linux tend to come with it out of the box, no need to do anything for those there)
- imagemagick
Tips when using ESRGAN
- When upscaling compressed textures use a 1x decompression model for the format first and or downscale them first by at least 50% with ,code>nearest neighbor or
box
filtering first, before upscaling them in ESRGAN - ESRGAN runs much faster on Nvidia GPUs, you can compile pytorch yourself for AMD GPUs but at the moment that is quite difficult to do
- If you run out of VRAM, use Deorder’s scripts or IEU, which will split the texture in smaller parts first
- If you have textures in sub-folders, use Deorder’s scripts or IEU with "Preserve folder structure" mode selected
- If your textures contain an alpha channel (transparency), use Deorder’s scripts or IEU
- Try out different models. In our Model Database you will find a lot of different models, that we trained ourself
- If you are still not happy with the results despite having tried out different models, consider training your own and sharing it with us later
Additional Notices
Windows
- When upscaling large images (depending on your GPU for example 1000x1000px images) on Windows, it's possible for the operating system to kill the ESRGAN process if it takes too long. This can be fixed using the Nvidia Nsight Monitor app that is installed alongside the CUDA toolkit. Here are Instructions for doing so