$ show qualcomm/qidk
This is the Qualcomm Innovators Development Kit (QIDK), a collection of Android sample applications and tools demonstrating on-device AI inference using the Qualcomm Neural Processing SDK (SNPE) and Qualcomm Neural Network (QNN) runtime. The repository covers computer vision (object detection, pose estimation, super-resolution, image enhancement), NLP (sentiment analysis, question answering, automatic speech recognition), and generative AI (LLM chat, speech-to-image, ASR-LLM-TTS pipeline). Each solution is a standalone Android app with native C++ JNI code that integrates the SNPE/QNN SDK for accelerated inference on Snapdragon platforms. The repository also includes tools like `pysnpe_utils` (Python library for model conversion and execution), `snpe-helper` (Python wrapper for SNPE runtime), and low-level Hexagon compute examples (QHCI/HVX). While the codebase is functional and covers a wide range of use cases, it suffers from significant code duplication across solutions, hardcoded paths, and version coupling to specific SDK releases. The architecture is a collection of loosely coupled sample apps rather than a unified framework, limiting cross-project reuse. The commit history shows ongoing maintenance, but the last commit date appears anomalous (2026), and several files reference future copyright years, suggesting pre-release content.
The LLM identified 5 files worth highlighting for reuse:
Provides a Python class for converting trained models (TF, ONNX, TorchScript, TFLite) to SNPE DLC format, enabling quantization, graph preparation, and caching. The module encapsulates the SNPE command-line tools with a clean Python API, making it reusable for any model deployment workflow on Qualcomm platforms. It demonstrates a practical abstraction over a complex SDK pipeline.
A C++ wrapper (with pybind11 bindings) for the SNPE runtime, providing a simplified interface for model initialization, input/output buffer management, and inference execution. It abstracts away the boilerplate of container loading, user buffer creation, and platform configuration. This pattern can be extracted into a standalone library for any project needing to integrate SNPE inference.
Implements BERT-style full tokenization (basic + wordpiece) with vocabulary lookup, applicable to any NLP task on Qualcomm devices. The class is self-contained, stateless, and depends only on a vocabulary file. It demonstrates clean separation of concerns and can be reused across Android projects for text preprocessing.
Implements a 5x5 Gaussian blur kernel on Hexagon DSP using HVX intrinsics with a worker pool for multi-threaded execution. The file demonstrates a reusable pattern for writing HVX-accelerated image processing operations, including thread synchronization, loop tiling, and edge handling. This pattern can be adapted for other convolution-based filters.
Provides utility functions for populating QNN tensors from raw data (float16, float32) and dumping output tensors to file. It handles datatype conversions, memory layout, and error logging. This component is reusable for any QNN-based inference pipeline requiring tensor I/O, and it abstracts the complexity of the QNN system API.