library_name: pytorch
license: other
tags:
- real_time
- android
pipeline_tag: image-segmentation
PidNet: Optimized for Qualcomm Devices
PIDNet (Proportional-Integral-Derivative Network) is a real-time semantic segmentation model based on PID controllers
This is based on the implementation of PidNet 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.1 | Download |
| ONNX | w8a8 | Universal | QAIRT 2.42, ONNX Runtime 1.24.1 | Download |
| QNN_DLC | float | Universal | QAIRT 2.43 | Download |
| QNN_DLC | w8a8 | Universal | QAIRT 2.43 | Download |
| TFLITE | float | Universal | QAIRT 2.43, TFLite 2.17.0 | Download |
| TFLITE | w8a8 | Universal | QAIRT 2.43, TFLite 2.17.0 | Download |
For more device-specific assets and performance metrics, visit PidNet 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 PidNet on GitHub for usage instructions.
Model Details
Model Type: Model_use_case.semantic_segmentation
Model Stats:
- Model checkpoint: PIDNet_S_Cityscapes_val.pt
- Inference latency: RealTime
- Input resolution: 1024x2048
- Number of output classes: 19
- Number of parameters: 8.06M
- Model size (float): 29.1 MB
- Model size (w8a8): 8.02 MB
Performance Summary
| Model | Runtime | Precision | Chipset | Inference Time (ms) | Peak Memory Range (MB) | Primary Compute Unit |
|---|---|---|---|---|---|---|
| PidNet | ONNX | float | Snapdragon® 8 Elite Gen 5 Mobile | 12.188 ms | 30 - 298 MB | NPU |
| PidNet | ONNX | float | Snapdragon® X2 Elite | 13.225 ms | 22 - 22 MB | NPU |
| PidNet | ONNX | float | Snapdragon® X Elite | 32.46 ms | 24 - 24 MB | NPU |
| PidNet | ONNX | float | Snapdragon® 8 Gen 3 Mobile | 23.02 ms | 1 - 318 MB | NPU |
| PidNet | ONNX | float | Qualcomm® QCS8550 (Proxy) | 33.333 ms | 24 - 27 MB | NPU |
| PidNet | ONNX | float | Qualcomm® QCS9075 | 47.508 ms | 24 - 51 MB | NPU |
| PidNet | ONNX | float | Snapdragon® 8 Elite For Galaxy Mobile | 16.566 ms | 5 - 225 MB | NPU |
| PidNet | ONNX | w8a8 | Snapdragon® 8 Elite Gen 5 Mobile | 44.113 ms | 71 - 291 MB | NPU |
| PidNet | ONNX | w8a8 | Snapdragon® X2 Elite | 45.785 ms | 134 - 134 MB | NPU |
| PidNet | ONNX | w8a8 | Snapdragon® X Elite | 89.05 ms | 133 - 133 MB | NPU |
| PidNet | ONNX | w8a8 | Snapdragon® 8 Gen 3 Mobile | 45.845 ms | 110 - 371 MB | NPU |
| PidNet | ONNX | w8a8 | Qualcomm® QCS6490 | 391.518 ms | 197 - 215 MB | CPU |
| PidNet | ONNX | w8a8 | Qualcomm® QCS8550 (Proxy) | 59.651 ms | 102 - 106 MB | NPU |
| PidNet | ONNX | w8a8 | Qualcomm® QCS9075 | 66.387 ms | 105 - 108 MB | NPU |
| PidNet | ONNX | w8a8 | Qualcomm® QCM6690 | 346.885 ms | 198 - 207 MB | CPU |
| PidNet | ONNX | w8a8 | Snapdragon® 8 Elite For Galaxy Mobile | 43.647 ms | 99 - 305 MB | NPU |
| PidNet | ONNX | w8a8 | Snapdragon® 7 Gen 4 Mobile | 326.982 ms | 223 - 233 MB | CPU |
| PidNet | QNN_DLC | float | Snapdragon® 8 Elite Gen 5 Mobile | 11.958 ms | 12 - 284 MB | NPU |
| PidNet | QNN_DLC | float | Snapdragon® X2 Elite | 13.5 ms | 24 - 24 MB | NPU |
| PidNet | QNN_DLC | float | Snapdragon® X Elite | 38.855 ms | 24 - 24 MB | NPU |
| PidNet | QNN_DLC | float | Snapdragon® 8 Gen 3 Mobile | 25.603 ms | 24 - 344 MB | NPU |
| PidNet | QNN_DLC | float | Qualcomm® QCS8275 (Proxy) | 118.292 ms | 24 - 246 MB | NPU |
| PidNet | QNN_DLC | float | Qualcomm® QCS8550 (Proxy) | 37.634 ms | 24 - 26 MB | NPU |
| PidNet | QNN_DLC | float | Qualcomm® SA8775P | 46.74 ms | 24 - 247 MB | NPU |
| PidNet | QNN_DLC | float | Qualcomm® QCS8450 (Proxy) | 76.339 ms | 5 - 335 MB | NPU |
| PidNet | QNN_DLC | float | Qualcomm® SA7255P | 118.292 ms | 24 - 246 MB | NPU |
| PidNet | QNN_DLC | float | Qualcomm® SA8295P | 51.692 ms | 24 - 261 MB | NPU |
| PidNet | QNN_DLC | float | Snapdragon® 8 Elite For Galaxy Mobile | 18.325 ms | 10 - 255 MB | NPU |
| PidNet | QNN_DLC | w8a8 | Snapdragon® 8 Elite Gen 5 Mobile | 47.609 ms | 6 - 272 MB | NPU |
| PidNet | QNN_DLC | w8a8 | Snapdragon® X2 Elite | 48.32 ms | 6 - 6 MB | NPU |
| PidNet | QNN_DLC | w8a8 | Snapdragon® X Elite | 60.394 ms | 6 - 6 MB | NPU |
| PidNet | QNN_DLC | w8a8 | Snapdragon® 8 Gen 3 Mobile | 43.285 ms | 6 - 273 MB | NPU |
| PidNet | QNN_DLC | w8a8 | Qualcomm® QCS8275 (Proxy) | 111.157 ms | 6 - 218 MB | NPU |
| PidNet | QNN_DLC | w8a8 | Qualcomm® QCS8550 (Proxy) | 57.6 ms | 6 - 161 MB | NPU |
| PidNet | QNN_DLC | w8a8 | Qualcomm® SA8775P | 58.416 ms | 6 - 218 MB | NPU |
| PidNet | QNN_DLC | w8a8 | Qualcomm® QCS9075 | 61.338 ms | 6 - 14 MB | NPU |
| PidNet | QNN_DLC | w8a8 | Qualcomm® QCS8450 (Proxy) | 64.153 ms | 6 - 271 MB | NPU |
| PidNet | QNN_DLC | w8a8 | Qualcomm® SA7255P | 111.157 ms | 6 - 218 MB | NPU |
| PidNet | QNN_DLC | w8a8 | Qualcomm® SA8295P | 66.448 ms | 6 - 220 MB | NPU |
| PidNet | QNN_DLC | w8a8 | Snapdragon® 8 Elite For Galaxy Mobile | 41.4 ms | 6 - 240 MB | NPU |
| PidNet | TFLITE | float | Snapdragon® 8 Elite Gen 5 Mobile | 12.644 ms | 2 - 272 MB | NPU |
| PidNet | TFLITE | float | Snapdragon® 8 Gen 3 Mobile | 24.886 ms | 0 - 334 MB | NPU |
| PidNet | TFLITE | float | Qualcomm® QCS8275 (Proxy) | 117.098 ms | 3 - 231 MB | NPU |
| PidNet | TFLITE | float | Qualcomm® QCS8550 (Proxy) | 36.18 ms | 2 - 5 MB | NPU |
| PidNet | TFLITE | float | Qualcomm® SA8775P | 45.314 ms | 2 - 231 MB | NPU |
| PidNet | TFLITE | float | Qualcomm® QCS9075 | 60.142 ms | 0 - 45 MB | NPU |
| PidNet | TFLITE | float | Qualcomm® QCS8450 (Proxy) | 75.223 ms | 3 - 350 MB | NPU |
| PidNet | TFLITE | float | Qualcomm® SA7255P | 117.098 ms | 3 - 231 MB | NPU |
| PidNet | TFLITE | float | Qualcomm® SA8295P | 50.603 ms | 3 - 249 MB | NPU |
| PidNet | TFLITE | float | Snapdragon® 8 Elite For Galaxy Mobile | 18.63 ms | 1 - 254 MB | NPU |
| PidNet | TFLITE | w8a8 | Snapdragon® 8 Elite Gen 5 Mobile | 40.789 ms | 1 - 265 MB | NPU |
| PidNet | TFLITE | w8a8 | Snapdragon® 8 Gen 3 Mobile | 37.924 ms | 1 - 268 MB | NPU |
| PidNet | TFLITE | w8a8 | Qualcomm® QCS6490 | 203.117 ms | 3 - 73 MB | NPU |
| PidNet | TFLITE | w8a8 | Qualcomm® QCS8275 (Proxy) | 98.248 ms | 1 - 211 MB | NPU |
| PidNet | TFLITE | w8a8 | Qualcomm® QCS8550 (Proxy) | 50.296 ms | 1 - 3 MB | NPU |
| PidNet | TFLITE | w8a8 | Qualcomm® SA8775P | 50.98 ms | 0 - 212 MB | NPU |
| PidNet | TFLITE | w8a8 | Qualcomm® QCS9075 | 52.952 ms | 1 - 17 MB | NPU |
| PidNet | TFLITE | w8a8 | Qualcomm® QCM6690 | 242.39 ms | 3 - 197 MB | NPU |
| PidNet | TFLITE | w8a8 | Qualcomm® QCS8450 (Proxy) | 58.405 ms | 1 - 266 MB | NPU |
| PidNet | TFLITE | w8a8 | Qualcomm® SA7255P | 98.248 ms | 1 - 211 MB | NPU |
| PidNet | TFLITE | w8a8 | Qualcomm® SA8295P | 57.929 ms | 1 - 214 MB | NPU |
| PidNet | TFLITE | w8a8 | Snapdragon® 8 Elite For Galaxy Mobile | 38.294 ms | 0 - 236 MB | NPU |
| PidNet | TFLITE | w8a8 | Snapdragon® 7 Gen 4 Mobile | 67.211 ms | 3 - 223 MB | NPU |
License
- The license for the original implementation of PidNet can be found here.
References
- PIDNet A Real-time Semantic Segmentation Network Inspired from PID Controller Segmentation of Road Scenes
- 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.
