诗书非药能医俗,道德无根可树人。
“ncnn 是一个为手机端极致优化的高性能神经网络前向计算框架。“
以上的描述来自官方,我们知道一般手机不提供CUDA的支持,所以使用CUDA在手机上来加速神经网络的推理就无法达成了。
但是大多数Android手机使用Vulkan API来对其GPU进行低级访问,所以ncnn框架可以使用Vulkan SDK来加速深度学习模型的卷积。
接下来进行ncnn的配置:
更新一下环境
$ sudo apt-get update
$ sudo apt-get upgrade
配置jetson nano时候应该已经更换源了。老生常谈;
安装依赖项
$ sudo apt-get install build-essential git cmake
$ sudo apt-get install libprotobuf-dev protobuf-compiler libvulkan-dev vulkan-utils libopencv-dev
安装一些依赖项,cmake、protobuf、vulkan等等;
下载ncnn源码
$ git clone --depth=1 https://github.com/Tencent/ncnn.git
用git clone --depth=1的好处是限制 clone 的深度,不会下载 Git 协作的历史记录,这样可以大大加快克隆的速度
下载glslang
$ cd ncnn
$ git submodule update --depth=1 --init
克隆项目后,默认子模块目录下无任何内容。需要在项目根目录执行git submodule update完成子模块的下载
ncnn中的submodule指的是glslang(我并不知道它是个什么东东。。An OpenGL and OpenGL ES shader front end and validator)
开始编译
$ mkdir build
$ cd build
$ cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/jetson.toolchain.cmake \
-DNCNN_BUILD_EXAMPLES=ON \
-DNCNN_VULKAN=ON \
-DCMAKE_BUILD_TYPE=Release ..
$ make -j4
$ sudo make install