ncnn 是一个为手机端极致优化的高性能神经网络前向计算框架。
ncnn 从设计之初深刻考虑手机端的部署和使用。无第三方依赖,跨平台,手机端 cpu 的速度快于目前所有已知的开源框架。
基于 ncnn,开发者能够将深度学习算法轻松移植到手机端高效执行,开发出人工智能 APP,将 AI 带到你的指尖。
ncnn 目前已在腾讯多款应用中使用,如 QQ,Qzone,微信,天天 P 图等。
支持卷积神经网络,支持多输入和多分支结构,可计算部分分支
无任何第三方库依赖,不依赖 BLAS/NNPACK 等计算框架
纯 C++ 实现,跨平台,支持 android ios 等
ARM NEON 汇编级良心优化,计算速度极快
精细的内存管理和数据结构设计,内存占用极低
支持多核并行计算加速,ARM big.LITTLE cpu 调度优化
整体库体积小于 500K,并可轻松精简到小于 300K
可扩展的模型设计,支持 8bit 量化和半精度浮点存储,可导入 caffe 模型
支持直接内存零拷贝引用加载网络模型
可注册自定义层实现并扩展
恩,很强就是了,不怕被塞卷
先下载 NDK,安装 NDK。
可以通过 https://developer.android.com/ndk/downloads/index.html 下载 NDK 工具。
设置 ANDROID_NDK 环境变量路径:
# 设置 ndk 路径
export ANDROID_NDK=
编译 armv7 库:
# 进入 ncnn 目录
cd
# 创建 build-android-armv7 目录(区分不同的库版本)
mkdir -p build-android-armv7
# 进入 build-android-armv7 目录
cd build-android-armv7
# cmake 编译
# -DCMAKE_TOOLCHAIN_FILE cmake 文件
# -DANDROID_ABI 库版本
# -DANDROID_ARM_NEON 是否启用 NEON 加速
# -DANDROID_PLATFORM Android 平台版本
cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \
-DANDROID_ABI="armeabi-v7a" \
-DANDROID_ARM_NEON=ON \
-DANDROID_PLATFORM=android-19 \
..
# 编译生成库文件
make -j4
# 安装
make install
安装完后,可以在 build-android-armv7/install/libs
目录下找到 libncnn.a
文件。
安装完后,可以在 build-android-armv7/install/include
目录下找到相关的头文件。
编译 aarch64 库:
# 进入 ncnn 目录
cd
# 创建 build-android-aarch64 目录(区分不同的库版本)
mkdir -p build-android-aarch64
# 进入 build-android-aarch64 目录
cd build-android-aarch64
# cmake 编译
# -DCMAKE_TOOLCHAIN_FILE cmake 文件
# -DANDROID_ABI 库版本
# -DANDROID_ARM_NEON 是否启用 NEON 加速
# -DANDROID_PLATFORM Android 平台版本
cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \
-DANDROID_ABI="armeabi-v7a" \
-DANDROID_ARM_NEON=ON \
-DANDROID_PLATFORM=android-19 \
..
# 编译生成库文件
make -j4
# 安装
make install
安装完后,可以在 build-android-aarch64/install/libs
目录下找到 libncnn.a
文件。
安装完后,可以在 build-android-aarch64/install/include
目录下找到相关的头文件。
cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake ......
编译过程中,会发现 cmake 的步骤可能会出现如下错误:
CMake Error at /data/ndk/android-ndk-r16b/build/cmake/android.toolchain.cmake:40 (cmake_minimum_required):
CMake 3.6.0 or higher is required. You are running version 3.5.1
Call Stack (most recent call first):
/usr/share/cmake-3.5/Modules/CMakeDetermineSystem.cmake:98 (include)
CMakeLists.txt:24 (project)
-- Configuring incomplete, errors occurred!
什么意思?
就是你的 cmake 版本(3.5.1) 低于你编译 cmake 文件的版本(3.6.0)
可以使用 cmake --version
命令查看当前 cmake 的版本。
# cmake --version
cmake version 3.5.1
CMake suite maintained and supported by Kitware (kitware.com/cmake).
尝试过
sudo apt-get upgrade cmake
或者
sudo apt-get remove cmake
sudo apt-get install cmake
都失败了。
不得已,采用以下方式:
https://cmake.org/download/
# 生成 makefile 文件
./configure
# 编译生成 cmake 文件
Make
# 安装 cmake 到全局 bin 路径(方便调用)
make install
执行完后,使用 cmake --version
可以查看 cmake 版本已经高于 3.6.0
.
# cmake --version
cmake version 3.14.0-rc3
CMake suite maintained and supported by Kitware (kitware.com/cmake).
接下来就可以继续处理了。