参考项目
ncnn 是一个为手机端极致优化的高性能神经网络前向计算框架。 ncnn 从设计之初深刻考虑手机端的部署和使用。 无第三方依赖,跨平台,手机端 cpu 的速度快于目前所有已知的开源框架。 基于 ncnn,开发者能够将深度学习算法轻松移植到手机端高效执行, 开发出人工智能 APP,将 AI 带到你的指尖。 ncnn 目前已在腾讯多款应用中使用,如:QQ,Qzone,微信,天天 P 图等。
编译安装
安装编译依赖软件
sudo apt install build-essential git cmake libprotobuf-dev protobuf-compiler libvulkan-dev vulkan-utils libopencv-dev -y
获取源码到用户主目录
方法一:如果你可以正常访问Github,可以使用Clone的方式获取源码
cd ~
注:--depth=1参数,只获取最新一次提交的代码,而不clone整个仓库的历史提交,可以加快clone速度
git clone --depth=1 https://github.com/Tencent/ncnn.git
cd ~/ncnn && git submodule update --init
方法二:使用我提供的压缩包文件
下载源码压缩包文件
将压缩包文件拷贝至ubuntu用户主目录中,然后解压
cd ~ && unzip ncnn.zip
编译源代码
创建并跳转到build目录
mkdir ~/ncnn/build && cd ~/ncnn/build/
为了兼容后续的ROS功能包,这里需要开启NCNN_VULKAN,即编译GPU版本
cmake -DNCNN_SIMPLEOCV=ON -DNCNN_DISABLE_RTTI=OFF -DNCNN_BUILD_EXAMPLES=ON -DNCNN_VULKAN=ON ..
建议:在执行前将主板做好良好的散热,避免编译过程中出现过热降频影响编译速度
编译(RK3399耗时约10分钟,RK3588耗时约5分钟,供参考)
make -j$(nproc)
编译安装
make install
安装结果测试验证
跳转到example目录
cd ~/ncnn/examples/
执行example的squeezenet测试
../build/examples/squeezenet ../images/256-ncnn.png
测试结果(RK3399)
./benchncnn 4 $(nproc) 0 -1
benchmark网络性能测试(只用于量化性能测试,可跳过,不影响后续例程运行)
拷贝编译后的在可执行文件
cp ~/ncnn/build/benchmark/benchncnn ~/ncnn/benchmark/
跳转到benchmark目录
cd ~/ncnn/benchmark
执行benchncnn测试
./benchncnn 4 $(nproc) 0 -1
测试结果(RK3399)
测试结果(RK3588)对于RK3588这类大小核心且大核性能很强的CPU,powersave设置为0(即所有核全开)似乎并不是性能最好的,经过测试,powersave设置为2(即只开大核),num_threads设置为4(大核数量为4)可以跑出更好的测试成绩,下图左为核全开,右边为只开大核的成绩。
测试结果(全志H6)
测试结果(树莓派4B-4GB)