DnCNN: Optimized for Qualcomm Devices
DnCNN is a 17-layer denoising convolutional neural network that uses residual learning to remove Gaussian noise (sigma=25) from grayscale images. The network predicts the noise residual and subtracts it from the input to produce a clean image.
This is based on the implementation of DnCNN found here. This repository contains pre-exported model files optimized for Qualcomm® devices. You can use the Qualcomm® AI Hub Models library to export with custom configurations. More details on model performance across various devices, can be found here.
Qualcomm AI Hub Models uses Qualcomm AI Hub Workbench to compile, profile, and evaluate this model. Sign up to run these models on a hosted Qualcomm® device.
Getting Started
There are two ways to deploy this model on your device:
Option 1: Download Pre-Exported Models
Below are pre-exported model assets ready for deployment.
| Runtime | Precision | Chipset | SDK Versions | Download |
|---|---|---|---|---|
| ONNX | float | Universal | QAIRT 2.42, ONNX Runtime 1.24.3 | Download |
| ONNX | w8a8 | Universal | QAIRT 2.42, ONNX Runtime 1.24.3 | Download |
| QNN_DLC | float | Universal | QAIRT 2.45 | Download |
| QNN_DLC | w8a8 | Universal | QAIRT 2.45 | Download |
| TFLITE | float | Universal | QAIRT 2.45 | Download |
| TFLITE | w8a8 | Universal | QAIRT 2.45 | Download |
For more device-specific assets and performance metrics, visit DnCNN on Qualcomm® AI Hub.
Option 2: Export with Custom Configurations
Use the Qualcomm® AI Hub Models Python library to compile and export the model with your own:
- Custom weights (e.g., fine-tuned checkpoints)
- Custom input shapes
- Target device and runtime configurations
This option is ideal if you need to customize the model beyond the default configuration provided here.
See our repository for DnCNN on GitHub for usage instructions.
Model Details
Model Type: Model_use_case.image_editing
Model Stats:
- Model checkpoint: dncnn_25
- Input resolution: 256x256
- Number of parameters: 555K
- Model size (float): 2.12 MB
- Model size (w8a8): 581 KB
Performance Summary
| Model | Runtime | Precision | Chipset | Inference Time (ms) | Peak Memory Range (MB) | Primary Compute Unit |
|---|---|---|---|---|---|---|
| DnCNN | ONNX | float | Snapdragon® 8 Elite Gen 5 Mobile | 3.123 ms | 0 - 142 MB | NPU |
| DnCNN | ONNX | float | Snapdragon® X2 Elite | 4.052 ms | 0 - 0 MB | NPU |
| DnCNN | ONNX | float | Snapdragon® X Elite | 7.387 ms | 0 - 0 MB | NPU |
| DnCNN | ONNX | float | Snapdragon® 8 Gen 3 Mobile | 5.179 ms | 1 - 181 MB | NPU |
| DnCNN | ONNX | float | Qualcomm® QCS8550 (Proxy) | 6.942 ms | 1 - 3 MB | NPU |
| DnCNN | ONNX | float | Qualcomm® QCS9075 | 14.352 ms | 1 - 4 MB | NPU |
| DnCNN | ONNX | float | Snapdragon® 8 Elite For Galaxy Mobile | 4.131 ms | 0 - 137 MB | NPU |
| DnCNN | ONNX | w8a8 | Snapdragon® 8 Elite Gen 5 Mobile | 0.752 ms | 0 - 33 MB | NPU |
| DnCNN | ONNX | w8a8 | Snapdragon® X2 Elite | 1.043 ms | 0 - 0 MB | NPU |
| DnCNN | ONNX | w8a8 | Snapdragon® X Elite | 2.02 ms | 0 - 0 MB | NPU |
| DnCNN | ONNX | w8a8 | Snapdragon® 8 Gen 3 Mobile | 1.336 ms | 0 - 48 MB | NPU |
| DnCNN | ONNX | w8a8 | Qualcomm® QCS6490 | 132.023 ms | 60 - 63 MB | CPU |
| DnCNN | ONNX | w8a8 | Qualcomm® QCS8550 (Proxy) | 1.792 ms | 0 - 27 MB | NPU |
| DnCNN | ONNX | w8a8 | Qualcomm® QCS9075 | 1.933 ms | 0 - 3 MB | NPU |
| DnCNN | ONNX | w8a8 | Qualcomm® QCM6690 | 191.916 ms | 59 - 67 MB | CPU |
| DnCNN | ONNX | w8a8 | Snapdragon® 8 Elite For Galaxy Mobile | 1.213 ms | 0 - 29 MB | NPU |
| DnCNN | ONNX | w8a8 | Snapdragon® 7 Gen 4 Mobile | 158.816 ms | 63 - 71 MB | CPU |
| DnCNN | QNN_DLC | float | Snapdragon® 8 Elite Gen 5 Mobile | 2.961 ms | 0 - 146 MB | NPU |
| DnCNN | QNN_DLC | float | Snapdragon® X2 Elite | 4.191 ms | 0 - 0 MB | NPU |
| DnCNN | QNN_DLC | float | Snapdragon® X Elite | 7.189 ms | 0 - 0 MB | NPU |
| DnCNN | QNN_DLC | float | Snapdragon® 8 Gen 3 Mobile | 5.07 ms | 0 - 178 MB | NPU |
| DnCNN | QNN_DLC | float | Qualcomm® QCS8275 (Proxy) | 55.991 ms | 0 - 141 MB | NPU |
| DnCNN | QNN_DLC | float | Qualcomm® QCS8550 (Proxy) | 6.713 ms | 0 - 2 MB | NPU |
| DnCNN | QNN_DLC | float | Qualcomm® SA8775P | 13.896 ms | 0 - 143 MB | NPU |
| DnCNN | QNN_DLC | float | Qualcomm® QCS9075 | 14.239 ms | 0 - 2 MB | NPU |
| DnCNN | QNN_DLC | float | Qualcomm® QCS8450 (Proxy) | 13.438 ms | 0 - 175 MB | NPU |
| DnCNN | QNN_DLC | float | Qualcomm® SA7255P | 55.991 ms | 0 - 141 MB | NPU |
| DnCNN | QNN_DLC | float | Qualcomm® SA8295P | 15.316 ms | 0 - 139 MB | NPU |
| DnCNN | QNN_DLC | float | Snapdragon® 8 Elite For Galaxy Mobile | 4.038 ms | 0 - 141 MB | NPU |
| DnCNN | QNN_DLC | w8a8 | Snapdragon® 8 Elite Gen 5 Mobile | 0.764 ms | 0 - 30 MB | NPU |
| DnCNN | QNN_DLC | w8a8 | Snapdragon® X2 Elite | 1.185 ms | 0 - 0 MB | NPU |
| DnCNN | QNN_DLC | w8a8 | Snapdragon® X Elite | 2.0 ms | 0 - 0 MB | NPU |
| DnCNN | QNN_DLC | w8a8 | Snapdragon® 8 Gen 3 Mobile | 1.326 ms | 0 - 46 MB | NPU |
| DnCNN | QNN_DLC | w8a8 | Qualcomm® QCS6490 | 7.772 ms | 2 - 4 MB | NPU |
| DnCNN | QNN_DLC | w8a8 | Qualcomm® QCS8275 (Proxy) | 7.578 ms | 0 - 28 MB | NPU |
| DnCNN | QNN_DLC | w8a8 | Qualcomm® QCS8550 (Proxy) | 1.782 ms | 0 - 1 MB | NPU |
| DnCNN | QNN_DLC | w8a8 | Qualcomm® SA8775P | 1.998 ms | 0 - 30 MB | NPU |
| DnCNN | QNN_DLC | w8a8 | Qualcomm® QCS9075 | 1.928 ms | 0 - 2 MB | NPU |
| DnCNN | QNN_DLC | w8a8 | Qualcomm® QCM6690 | 38.861 ms | 0 - 140 MB | NPU |
| DnCNN | QNN_DLC | w8a8 | Qualcomm® QCS8450 (Proxy) | 2.361 ms | 0 - 47 MB | NPU |
| DnCNN | QNN_DLC | w8a8 | Qualcomm® SA7255P | 7.578 ms | 0 - 28 MB | NPU |
| DnCNN | QNN_DLC | w8a8 | Qualcomm® SA8295P | 4.21 ms | 0 - 26 MB | NPU |
| DnCNN | QNN_DLC | w8a8 | Snapdragon® 8 Elite For Galaxy Mobile | 1.203 ms | 0 - 29 MB | NPU |
| DnCNN | QNN_DLC | w8a8 | Snapdragon® 7 Gen 4 Mobile | 3.249 ms | 0 - 140 MB | NPU |
| DnCNN | TFLITE | float | Snapdragon® 8 Elite Gen 5 Mobile | 3.089 ms | 0 - 147 MB | NPU |
| DnCNN | TFLITE | float | Snapdragon® 8 Gen 3 Mobile | 5.179 ms | 0 - 178 MB | NPU |
| DnCNN | TFLITE | float | Qualcomm® QCS8275 (Proxy) | 56.396 ms | 0 - 141 MB | NPU |
| DnCNN | TFLITE | float | Qualcomm® QCS8550 (Proxy) | 6.931 ms | 1 - 2 MB | NPU |
| DnCNN | TFLITE | float | Qualcomm® SA8775P | 14.17 ms | 0 - 145 MB | NPU |
| DnCNN | TFLITE | float | Qualcomm® QCS9075 | 14.322 ms | 0 - 4 MB | NPU |
| DnCNN | TFLITE | float | Qualcomm® QCS8450 (Proxy) | 13.926 ms | 1 - 176 MB | NPU |
| DnCNN | TFLITE | float | Qualcomm® SA7255P | 56.396 ms | 0 - 141 MB | NPU |
| DnCNN | TFLITE | float | Qualcomm® SA8295P | 15.622 ms | 0 - 141 MB | NPU |
| DnCNN | TFLITE | float | Snapdragon® 8 Elite For Galaxy Mobile | 4.126 ms | 0 - 143 MB | NPU |
| DnCNN | TFLITE | w8a8 | Snapdragon® 8 Elite Gen 5 Mobile | 0.72 ms | 0 - 32 MB | NPU |
| DnCNN | TFLITE | w8a8 | Snapdragon® 8 Gen 3 Mobile | 1.297 ms | 0 - 47 MB | NPU |
| DnCNN | TFLITE | w8a8 | Qualcomm® QCS6490 | 7.794 ms | 0 - 3 MB | NPU |
| DnCNN | TFLITE | w8a8 | Qualcomm® QCS8275 (Proxy) | 7.461 ms | 0 - 29 MB | NPU |
| DnCNN | TFLITE | w8a8 | Qualcomm® QCS8550 (Proxy) | 1.744 ms | 0 - 1 MB | NPU |
| DnCNN | TFLITE | w8a8 | Qualcomm® SA8775P | 1.977 ms | 0 - 31 MB | NPU |
| DnCNN | TFLITE | w8a8 | Qualcomm® QCS9075 | 1.843 ms | 0 - 3 MB | NPU |
| DnCNN | TFLITE | w8a8 | Qualcomm® QCM6690 | 38.948 ms | 0 - 141 MB | NPU |
| DnCNN | TFLITE | w8a8 | Qualcomm® QCS8450 (Proxy) | 2.354 ms | 0 - 48 MB | NPU |
| DnCNN | TFLITE | w8a8 | Qualcomm® SA7255P | 7.461 ms | 0 - 29 MB | NPU |
| DnCNN | TFLITE | w8a8 | Qualcomm® SA8295P | 4.179 ms | 0 - 27 MB | NPU |
| DnCNN | TFLITE | w8a8 | Snapdragon® 8 Elite For Galaxy Mobile | 1.164 ms | 0 - 29 MB | NPU |
| DnCNN | TFLITE | w8a8 | Snapdragon® 7 Gen 4 Mobile | 3.214 ms | 0 - 141 MB | NPU |
License
- The license for the original implementation of DnCNN can be found here.
References
- Beyond a Gaussian Denoiser: Residual Learning of Deep CNN for Image Denoising
- Source Model Implementation
Community
- Join our AI Hub Slack community to collaborate, post questions and learn more about on-device AI.
- For questions or feedback please reach out to us.
