腾讯开源的一个专为手机端设计的高性能神经网络前向计算框架,具有无第三方依赖、跨平台、速度快等特点。ncnn 是一个针对移动平台优化的性能神经网络推理计算框架。ncnn 从设计之初就深思熟虑在手机上的部署和使用。ncnn 没有第三方依赖项。它是跨平台的,并且比所有已知的手机 CPU 上的开源框架运行得更快。开发者可以通过高效的 ncnn 实现,轻松嵌入深度学习算法模型部署到移动平台,创建智能 APP,让人工智能触手可及。
特征
- 支持结构神经网络,支持多输入和多分支结构,可以计算部分分支
- 无第三方库依赖,不依赖 BLAS/NNPACK 或任何其他计算框架
- 纯 C++实现,跨平台,支持 Android、iOS 等
- ARM NEON 提出了级优化,计算速度极高
- 精密的内存管理和数据结构设计,内存占用极低
- 支持多核计算加速、ARM big.LITTLE CPU 调度优化
- 通过下一代低头部 Vulkan API 支持 GPU 加速
- 可扩展的模型设计,支持 8 位量化和半精度浮点存储,可导入 caffe/pytorch/mxnet/onnx/darknet/keras/tensorflow(mlir)模型
- 支持直接内存零拷贝引用加载网络模型
- 可以注册自定义层实现并扩展
支持的平台矩阵
- ✅ = 已知的工作和运行速度快且优化良好
- ✔️ = 已知的工作,但速度可能不够快
- ❔ = 应该有效,但尚未确认
- / = 未应用
项目实例
挤压网络图像分类
如何构建和运行
步骤 1:
https://github.com/Tencent/ncnn/releases
- 下载 ncnn-YYYYMMDD-android-vulkan.zip 或自己为 Android 构建 ncnn
- 将 ncnn-YYYYMMDD-android-vulkan.zip 解压到 app/src/main/jni 中,并将 app/src/main/jni/CMakeLists.txt 中的 ncnn_DIR 路径更改为自己的路径
步骤 2: 使用 Android Studio 打开该项目,构建即可
SCRFD 人脸检测
这是一个示例 ncnn android 项目,它依赖于 ncnn 库和 opencv
如何构建和运行
步骤 1:
https://github.com/Tencent/ncnn/releases
- 下载 ncnn-YYYYMMDD-android-vulkan.zip 或自己为 Android 构建 ncnn
- 将 ncnn-YYYYMMDD-android-vulkan.zip 解压到 app/src/main/jni 中,并将 app/src/main/jni/CMakeLists.txt 中的 ncnn_DIR 路径更改为自己的路径
步骤 2:
https://github.com/nihui/opencv-mobile
- 下载 opencv-mobile-XYZ-android.zip
- 将 opencv-mobile-XYZ-android.zip 解压到 app/src/main/jni 中,并在 app/src/main/jni/CMakeLists.txt 中将 OpenCV_DIR 路径更改为您的路径 步骤 3: 使用 Android Studio 打开该项目,构建即可
传送门
GitHub:https://github.com/Tencent/ncnn
-END-