深度学习-ncnn环境搭建与demo测试(vmware+Ubuntu+clion+ncnn+c++)
背景之前调研了dlib的方法,发现手机端运行的效率较低,需要对比一下阿里的mnn和腾讯的ncnn官方文档解读ncnn首页一览地址:https://github.com/Tencent/ncnnncnn 是一个为手机端极致优化的高性能神经网络前向计算框架。ncnn 从设计之初深刻考虑手机端的部署和使用。无第三方依赖,跨平台,手机端 cpu 的速度快于目前所有已知的开源框架。基于 ncnn,...
文章目录
背景
之前调研了dlib的方法,发现手机端运行的效率较低,需要对比一下阿里的mnn和腾讯的ncnn
官方文档解读
ncnn首页一览
地址:https://github.com/Tencent/ncnn
ncnn 是一个为手机端极致优化的高性能神经网络前向计算框架。ncnn 从设计之初深刻考虑手机端的部署和使用。无第三方依赖,跨平台,手机端 cpu 的速度快于目前所有已知的开源框架。基于 ncnn,开发者能够将深度学习算法轻松移植到手机端高效执行,开发出人工智能 APP,将 AI 带到你的指尖。ncnn 目前已在腾讯多款应用中使用,如 QQ,Qzone,微信,天天P图等。
可见此项目主要是针对移动端。
同时ncnn有其他的友情项目,如下图(来自ncnn的首页)
ncnn的wiki一览
地址:https://github.com/Tencent/ncnn/wiki
wiki里面对ncnn的性能参数做了一些对比,并且写了一些qa。
我在wiki里面得知:pc端x86框架的ncnn没有做优化,所以在linux服务器上注定跑不快
此处省略很多字。。。
环境搭建过程
vmware安装
windows看运行ncnn的代码不太方便,最合适的系统是Ubuntu,而使用Ubuntu的前提是要有虚拟机,这里选择vmware。
安装过程省略,这个只需要按下一步就好了
Ubuntu安装
网址:https://ubuntu.com/download
vm安装Ubuntu系统后,如下图:
Ubuntu的桌面还是非常绚丽的
ncnn源码下载
最好下载release版本,我这里下载的20190611的版本
release地址:https://github.com/Tencent/ncnn/releases
opencv安装
ncnn对opencv有依赖,需要先安装opencv(即使Ubuntu中可能会自带,也推荐重新安装,编译选项需要调整)
注:我曾经遇到了一个坑,opencv没有重新安装的情况下,运行ncnn的fastrcnn出现了一下错误
OpenCV Error: Unspecified error (The function is not implemented...
参考博客:https://blog.csdn.net/zhenguo26/article/details/84402530,得以解决
过程如下
下载opencv3.4.6版本
# 参考地址:https://docs.opencv.org/3.0.0/d7/d9f/tutorial_linux_install.html
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev -y
# 解压opencv并创建编译目录
cd ~/opencv
mkdir build
cd build
# 编译配置(WITH_GTK=ON需要加上)
cmake -D CMAKE_BUILD_TYPE=Release -D WITH_GTK=ON -D CMAKE_INSTALL_PREFIX=/usr/local ..
# 开始编译
make -j4
# 安装
sudo make install
时间有点长,耐心等待
cmake安装
c++项目必备的cmake(clion环境的默认构建就是用的cmake,这个很重要)
我下载的是预编译版本,直接配置一下环境变量就可以了
protobuf安装
ncnn在模型转换的时候(把caffe的模型转换成为ncnn自己的模型),需要使用protobuf。
具体参考:https://www.jianshu.com/p/d06f59e78297
clion安装
地址:http://www.jetbrains.com/
此处略
启动项目查看结果
打开clion,file->open->ncnn根目录地址,在新窗口打开
项目默认是不是编译examples目录的,需要手动修改(这点在wiki里面有提到):
file->reload cmake project,重新加载cmake文件,生成编译目录,如下图
运行fasterrcnn(首先会进入编译阶段)
注:fasterrcnn(快速物体检测demo)是需要有预训练模型和目标图片才可以跑的。
预训练模型:
这些都需要从另外一个项目下载(从此来推断,ncnn其实是使用的caffe的模型,然后在手机端去使用。所以深度学习的重点还是caffe和tensorflow,使用着两个框架训练好模型,然后再进行移动端的分享使用,而移动端则必须使用ncnn和mnn这种进行过编译优化的库才可以,否则移动端的效率很低)
下载的模型必须要进行模型格式转化
使用demo中的caffe2ncnn即可进行转换,这点wiki中有提到(开源的库,wiki是必须要看的,虽然文档做的一般,但还是很有指导性质)
以下是生成的结果
ncnn的bin和proto,可以直接在fasterrcnn中去使用了,当然需要改为代码里面对应的名字。
以下是我运行fasterrcnn的结果
总结
- ncnn文档一般,需要自己多琢磨一下
- caffe和tensorflow需要重点去学习和使用
- 算法需要进行深入的理解,神经网络还是需要自己写的,否则在深度学习中走的远
- 样本非常重要
- 机器非常重要,得有一台好机器才可以的
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)