MTK NPU 算法模型移植工作区,包含多个深度学习模型在 MTK NeuroPilot SDK 上的实现。
MTK_models_zoo/
├── 0_Toolkits/ # MTK SDK 和工具(不上传 GitHub)
│ └── neuropilot-sdk-basic-8.0.10-build20251029/
│ └── neuron_sdk/
│
├── 1_third_party/ # 第三方库(OpenCV 等)
│
├── whisper/ # Whisper 语音识别模型
│ └── mtk/
│ ├── python/ # Python 端转换(.pt → .tflite → .dla)
│ │ ├── step1_pt_to_torchscript.py
│ │ ├── step2_torchscript_to_tflite.py
│ │ ├── step3_tflite_to_dla.py
│ │ ├── whisper_kv_model.py
│ │ ├── prepare_calib_data.py
│ │ ├── models/ # 模型权重(不上传)
│ │ ├── models_large_turbo/
│ │ └── test/
│ ├── cpp/ # C++ Android 推理实现
│ │ ├── build_android.sh
│ │ └── deploy_and_test.sh
│ └── test_data/ # 测试音频(不上传)
│
├── superResolution/ # 超分辨率模型集合
│ ├── edsr/
│ │ ├── mtk/ # MTK NPU 实现(输入固定 510x339)
│ │ └── rknn/ # RKNN 实现(参考)
│ ├── rcan/
│ │ ├── mtk/
│ │ └── rknn/
│ └── realesrgan/
│ ├── mtk/ # MTK NPU 实现(输入固定 510x339)
│ └── rknn/ # RKNN 实现(参考)
│
├── sense-voice/ # SenseVoice 语音识别
│ ├── SenseVoice_workspace/ # Python 端转换
│ └── sensevoice_mtk_cpp/ # C++ Android 推理实现
│
├── helsinki/ # Helsinki NLP Transformer
│ ├── helsinki_workspace/ # Python 端转换
│ └── helsinki_mtk_cpp/ # C++ Android 推理实现
│
├── zipformer/ # Zipformer 流式语音识别
│ └── mtk/
│ ├── python/ # Python 端转换(.pt → .tflite → .dla)
│ │ ├── zipformer_mtk_model.py
│ │ ├── step1_pt_to_torchscript.py
│ │ ├── step2_torchscript_to_tflite.py
│ │ ├── step3_tflite_to_dla.py
│ │ └── test/
│ ├── cpp/ # C++ Android 推理实现
│ │ ├── build_android.sh
│ │ └── deploy_to_android.sh
│ └── test_data/ # 测试音频 + 词表(不上传)
│
├── moonshine/ # Moonshine Streaming Small 语音识别
│ └── mtk/
│ ├── python/ # Python 端转换(.pt → .tflite → .dla)
│ │ ├── moonshine_encoder_model.py
│ │ ├── moonshine_decoder_model.py
│ │ ├── step1_pt_to_torchscript.py
│ │ ├── step2_torchscript_to_tflite.py
│ │ ├── step3_tflite_to_dla.py
│ │ └── test/
│ ├── cpp/ # C++ Android 推理实现
│ │ ├── build_android.sh
│ │ ├── deploy_to_android.sh
│ │ └── deliver/ # 测试交付包
│ ├── models/ # 模型配置(权重不上传)
│ └── test_data/ # 测试音频
│
└── .claude/ # Claude Code 配置和知识库
├── subagents/
├── standards/
└── doc/
| 模型 | 类型 | 说明 |
|---|---|---|
| Whisper | 语音识别 | OpenAI Whisper large-v3-turbo,含 KV Cache,支持多语言 |
| RealESRGAN | 超分辨率 | x4 超分,输入 510x339,输出 2040x1356 |
| EDSR | 超分辨率 | x4 超分,输入 510x339,输出 2040x1356 |
| RCAN | 超分辨率 | x4 超分 |
| SenseVoice | 语音识别 | 多语言语音识别与情感分析 |
| Helsinki | NLP Transformer | 神经机器翻译 |
| Zipformer | 流式语音识别 | pruned_transducer_stateless7_streaming,中英双语,RTF 0.10x |
| Moonshine Streaming Small | 语音识别 | 英语 ASR,固定10s窗口,Encoder-Decoder,RTF 0.11x |
- 平台: MTK NeuroPilot SDK 8.0.10
- 目标芯片: MT8371 / MT6899 / MT6991
- 转换链: PyTorch → TorchScript → TFLite → DLA
- 推理引擎: MTK Neuron Runtime
- 开发环境: Python 3.10,Android NDK r25c
git clone https://github.com/superLin006/MTK_model_zoo.git
cd MTK_model_zoo将以下内容放置到对应目录(不包含在仓库中,需自行下载):
0_Toolkits/neuropilot-sdk-basic-8.0.10-build20251029/ # MTK NeuroPilot SDK
配置环境变量(所有脚本会自动 fallback 到项目内相对路径,也可手动指定):
export ANDROID_NDK=/path/to/android-ndk-r25c
# MTK SDK 默认从 0_Toolkits/ 自动查找,也可手动指定:
export MTK_NEURON_SDK=/path/to/neuron_sdk以 RealESRGAN 为例:
cd superResolution/realesrgan/mtk/python
# Step 1: PyTorch → TorchScript
python step1_pt_to_torchscript.py --checkpoint ../models/RealESRGAN_x4plus.pth
# Step 2: TorchScript → TFLite
python step2_torchscript_to_tflite.py --torchscript ../models/RealESRGAN_x4plus_core_510x339.pt
# Step 3: TFLite → DLA
python step3_tflite_to_dla.py --tflite ../models/RealESRGAN_x4plus_510x339.tflite --platform MT8371# Python 端快速验证
cd superResolution/realesrgan/mtk/python/test
python test_pytorch.py \
--model_path ../../models/RealESRGAN_x4plus.pth \
--img_path ../../test_data/input_510x339.png \
--output_path ../../test_data/output/result.png \
--input_size 339 510cd superResolution/realesrgan/mtk/cpp
# 编译(需要设置 ANDROID_NDK)
bash build.sh
# 部署到设备并测试
bash deploy_with_sdk_lib.sh本项目所有脚本均使用相对路径,无需修改任何硬编码路径即可在任意机器上运行。
| 工具 | 查找方式 |
|---|---|
| MTK NeuroPilot SDK | 自动从 0_Toolkits/ 相对路径查找,或读取 MTK_NEURON_SDK 环境变量 |
| MTK Converter (Python) | 自动从 0_Toolkits/ 相对路径查找,或读取 MTK_CONVERTER_PATH 环境变量 |
| Android NDK | 读取 ANDROID_NDK 环境变量 |
| rknn_model_zoo (外部) | 读取 RKNN_MODEL_ZOO 环境变量 |
通过 .gitignore 排除:
- MTK SDK(体积过大,需单独下载)
- 模型权重文件(
.pt,.pth,.tflite,.dla) - 测试数据(音频、图像)
- 编译产物(
libs/,obj/,__pycache__) - 测试输出(
test/outputs/)
本项目代码使用 MIT 许可证。各模型原始权重遵守其各自的许可证。
维护者: superLin006