QualityScaler: a DirectML upscaler that runs entirely on your own GPU
QualityScaler - image/video AI upscaler app
At a glance
- What is it?
- QualityScaler is a Windows-only Python desktop app that upscales images and videos through ONNX models executed on any DirectX 12 GPU. The interesting part is not the models, it is the plumbing: DirectML instead of CUDA, FFmpeg frame extraction, tiling, and a stop-and-resume path for long video jobs.
- Who is it for?
- QualityScaler fits Windows users with a DirectX 12 GPU of at least 4 GB VRAM who want local upscaling without a CUDA install, and it is the wrong tool for anyone on macOS, Linux, or a machine that cannot run the AI-onnx models. Before committing, verify that your GPU is DirectX 12 capable with enough VRAM, that the models download still resolves, and that ffmpeg.exe sits in the Assets folder, because the app expects both to be present.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 20 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
What QualityScaler actually replaces
The problem is narrow and concrete. You have a photo or a video that is small, soft, or full of compression artifacts, and you want it larger without sending it to a cloud service. QualityScaler is a Windows desktop application that does that locally. The README describes it as an app "powered by AI to enhance, upscale and de-noise photographs and videos", and the feature list includes image and video upscale, multiple GPU support, automatic image tiling, resize before upscaling, interpolation between the original and the upscaled file, and a privacy claim: "no internet connection required, everything runs on your PC".
The audience is not a research team. It is someone with a folder of old scans, anime frames, or compressed footage who wants a GUI rather than a Python script. The repository topics point the same way: gui-application, windows, anime, manga, compression-artifact-reduction, noise-reduction. The author also maintains RealScaler, a sibling project built on Real-ESRGAN, and FluidFrames.RIFE for frame generation, so QualityScaler sits in a small family of local media tools rather than being a one-off experiment.
The DirectML decision and what it costs
The architecture choice that defines this project is the inference backend. The README lists onnxruntime-directml among the components, and the changelog records the switch to onnxruntime-directml as the "new AI engine" in the 3.X line, replacing an earlier PyTorch-directml setup. That matters because DirectML talks to any DirectX 12 compatible GPU, which is why the requirements table can say "Any DirectX12 compatible GPU with ≥ 4GB VRAM" and the project can list AMD, Intel and Nvidia in its topics.
A CUDA-only upscaler locks out AMD and Intel owners. QualityScaler trades that exclusivity for reach. The cost is that you are running ONNX graphs through a translation layer rather than native CUDA kernels, and the app depends on the DirectML build of onnxruntime staying available and compatible. The README also lists onnxconverter-common, which suggests models are converted into ONNX form before shipping; the AI models themselves are not in the repository. They are a separate download, which is a real operational detail: a fresh clone has no weights in it.
How a video moves through the pipeline
The README does not publish a data-flow diagram, but the component list and changelog together describe the shape of it. FFmpeg is used for frame extraction (the 4.X changelog notes "Video frames extraction by FFMPEG (x10 times faster)") and FFmpeg 7.x is bundled as a requirement. Frames go through the ONNX model, and the 4.X line added hardware accelerated video encoding through nvenc, amf and qsv. So the path is roughly: demux with FFmpeg, extract frames, run inference per frame, re-encode with a GPU encoder, and mux the result back with audio, which the 1.X changelog says was added.
Two mechanisms deserve attention. First, tiling: the feature list mentions "Automatic image tiling to avoid GPU VRAM limitation", which is how a 4 GB card can process an image larger than its memory would otherwise allow. Second, multi-threading for video: the 3.X and 4.X changelogs both list "Video AI multi-threading" work, and stop-and-resume is listed as a feature. That combination is what makes long video jobs survivable on a desktop machine that also gets used for other things. Metadata handling is delegated to exiftool according to the 2.X changelog, which is a sensible division of labour rather than reimplementing EXIF writing.
Running it from source, and the two files nobody mentions in the title
The README gives a manual setup path. Prerequisites are Python, VSCode, the AI models download, and ffmpeg.exe from a release build. The steps: download the project ZIP, extract it, put the model files in the /AI-onnx folder, put ffmpeg.exe in the /Assets folder, open the directory in VSCode, then run:
pip install -r requirements.txt
After that the README says to close and reopen VSCode to refresh installed dependencies, then click Play on QualityScaler.py. The requirements table asks for Windows 10 or 11, 8 GB RAM or more, and a DirectX 12 GPU with at least 4 GB VRAM.
The two manual file placements are the most common failure point, and the README is honest about them by listing them as prerequisites. If /AI-onnx is empty, there is nothing to infer with. If /Assets has no ffmpeg.exe, video work has no extractor. Neither is installed by pip. Note also that the model download is hosted on gofile.io, an external file host, not on GitHub releases, which means the setup depends on a third party staying up. That is a genuine fragility for anyone scripting a reproducible install.
Where it stops being the right tool
The hard boundary is the operating system. The requirements table says Windows 10 or Windows 11, full stop. There is no macOS or Linux path documented, and DirectML is a Windows API, so this is not a packaging accident you can work around with a container. If your pipeline runs on Linux, QualityScaler is not a candidate.
The second boundary is the GPU. A DirectX 12 compatible GPU with 4 GB or more VRAM is a real floor, and it excludes older cards, many integrated graphics configurations, and virtual machines without GPU passthrough. Tiling mitigates VRAM pressure for still images, but the documentation does not claim it removes the requirement for video work.
Third, the project is a GUI application first. The README describes VSCode and a Play button as the way to launch it. There is no documented CLI, no batch API, and no mention of a headless mode. If you want upscaling as a step inside an automated pipeline, you would be driving a desktop app, which is the wrong shape. It also means the app is aimed at one user at a time on one machine, not at a render farm. Finally, the AI models are a separate download, so the repository alone is not a working upscaler.
RealScaler is the sibling, and the difference is the model family
The README points to RealScaler, described as an "image/video AI upscaler (Real-ESRGAN)", by the same author. That is the most direct alternative and the comparison is not about features, it is about which model family you want. QualityScaler credits BSRGAN, Real-ESRGAN and IRCNN, and the 2.X changelog mentions support for the SRVGGNetCompact architecture. RealScaler names Real-ESRGAN explicitly as its basis.
So the two projects overlap heavily in interface and pipeline, and diverge in the set of networks you can select. If you have already decided that a specific Real-ESRGAN variant gives the look you want, the sibling project is the shorter path. If you want to try BSRGAN-style restoration or SRVGGNetCompact models, QualityScaler is the one that lists them. Neither is documented as a general model zoo, so treat the model list as the deciding factor rather than the GUI. A generic CUDA-based upscaler would be the other category of alternative, and the trade is the same one described above: better vendor-specific performance in exchange for dropping AMD and Intel support.
Maintenance, releases and the licence
The release cadence is visible in the metadata: 2026.1 in January, 2026.2 in March, 2026.4 in August, with the most recent push to main on 2026-08-27. The versioning is calendar-based, which makes it easy to see how stale a build is. The roadmap in the README is written as a changelog with checkboxes, and the final visible entry is an unchecked "2026.X versi" line, truncated in the source. That tells you the roadmap is maintained but not that any specific feature is coming.
Upgrade cost is mostly the model and dependency chain. Because inference runs through onnxruntime-directml and models are converted with onnxconverter-common, a bump in either can require re-exported models. The app also bundles expectations about FFmpeg 7.x and exiftool, so those are moving parts you inherit. The licence is MIT, which is permissive and places few obligations on you beyond preserving the notice. Note that the MIT licence covers the code in this repository, not the separately downloaded model weights or the bundled FFmpeg build, which carry their own terms; check those before redistributing anything. This is a description of the licence identifier, not legal advice.
Editorial conclusion
QualityScaler fits Windows users with a DirectX 12 GPU of at least 4 GB VRAM who want local upscaling without a CUDA install, and it is the wrong tool for anyone on macOS, Linux, or a machine that cannot run the AI-onnx models. Before committing, verify that your GPU is DirectX 12 capable with enough VRAM, that the models download still resolves, and that ffmpeg.exe sits in the Assets folder, because the app expects both to be present.
Community notes