Super Resolution application for Windows on Snapdragon® with XLSR using ONNX runtime.
The app demonstrates how to use the QNN execution provider to accelerate the model using the Snapdragon® Neural Processing Unit (NPU).
- Snapdragon® Platform (e.g. X Elite)
- Windows 11+
- Visual Studio 22
- Download any variant of Visual Studio here
- Make sure Desktop development with C++ tools are selected during installation or installed separately later
Download the float / ONNX variant of XLSR ONNX float from AI Hub. Rename it and place it into:
<project directory>/assets/models/super_resolution.onnx
-
Open
SuperResolution.sln -
Setting up dependencies
-
NuGet packages
- NuGet packages should automatically restore in Visual Studio during build
- If packages are not restored automatically, try the following:
- If prompted by Visual Studio to
restoreNuGet packages- Click on
restoreto restore allNuGetpackages
- Click on
- Otherwise,
- Go to
Project -> Manage NuGet packagesin Visual studio - Install ONNX-Runtime-QNN 1.19.0
- Go to
- If prompted by Visual Studio to
-
vcpkg packages
-
Project is configured to work with vcpkg in manifest mode
-
If opencv headers are missing, vcpkg is not setup correctly.
-
Integrate vcpkg with Visual Studio:
- Go to
View -> Terminalin Visual studio - Run the following command in terminal
vcpkg integrate install
- Go to
-
-
-
Build project in Visual Studio
Visual studio project is configured with the following command arguments:
--model .\assets\models\super_resolution.onnx --image .\assets\images\Doll.jpgYou can simply run the app from Visual Studio to run super resolution on sample image.
.\ARM64\Debug\SuperResolution.exe --model .\assets\models\super_resolution.onnx --image .\assets\images\Doll.jpgYou can additionally run --help to get more information about all available options:
.\ARM64\Debug\SuperResolution.exe --helpPlease refer to QNN EP options that can be provided as --qnn_options to the app.
- Model input resolution: 128x128
- If input image is of different shape, it's resized to 128x128
- You can override model input dimensions if model uses different spatial image dimensions
- App is built to work with post-processed outputs
- App processes outputs and produces an Upscaled Image.
- If you want to try out any other model than XLSR (with post-processing included in model), please update output handling accordingly.
- If you get a DLL error message upon launch (for instance that
opencv_core4d.dllwas not found). Try Build -> Clean Solution and re-build. If this still happens, please go over the NuGet and vcpkg instructions again carefully. - How do I use a model with different input shape than 128x128?
- Use
--model_input_ht/--model_input_wtto model input dimensions.
- Use
- How to change if my model uses different scale than 4?
- Use
--model_scaleto change the scaling based on your model.
- Use
Please see the Classification app for instructions of how to set up a project with ONNXRuntime QNN Execution Provider from scratch.

