ncnn git:https://github.com/Tencent/ncnn

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 模型
  • 支持直接内存零拷贝引用加载网络模型
  • 可注册自定义层实现并扩展
  • 恩,很强就是了,不怕被塞卷 QvQ

以上是ncnn git上的介绍。接下来介绍如何跑example。


我直接下载的该项目,然而在我windows10+vs2013电脑上出现一些,莫名其妙的问题,没能编译。然后在issue里找到了这个:


https://github.com/guozhongluo/ncnn-vs2015-examples-demo


这个工程时VS2015的(接下来会讲如何用vs2013运行),需要配置opencv。



下载这个代码后,首先要对工程进行配置。


(1)配置为Release x64工程


(2)包含目录:


需要配置ncnn中的include文件和opencv的include文件




ncnn 如何使用gpu ncnn git_手机端



(3)库目录:


配置依赖的opencv lib的存放路径,我直接放在release中了,所以配置如下



ncnn 如何使用gpu ncnn git_ncnn 如何使用gpu_02



(3)连接器输入


这个根据你的opencv版本确定后面的数字,我的是V2410,所以如下



ncnn 如何使用gpu ncnn git_github_03




(4)把你连接器输入配置的lib文件以及对应的dll放置在配置的库目录下(一定要使用与x64 release匹配的库文件)



(5)把运行需要的模型文件放置到运行目录下(release目录),下面黑色框中是模型文件,红色框是依赖的库文件,蓝色的框是运行需要的测试图像文件(随便从网上下载的)




ncnn 如何使用gpu ncnn git_手机端_04




OK,配置完了,可以项目生成试试了,如果你不是vs2015,一定没法生成,如果是vs2013可以按照以下博客进行修改配置,


vs2015解决方案在vs2013下运行方法



配置完成后,重新生成,生成时,我这里又报了很多错误,筛选了以下,基本都是关于


net.h中#if NCNN_STRING


和mat_pixel.cpp中std::min  std::max相关的问题。


我的解决方案是:


NCNN_STRING的文件platform.h中宏定义改为以下(就是把true改为了1),解决了第一个类型的错误:


#ifndef NCNN_PLATFORM_H
#define NCNN_PLATFORM_H


#define NCNN_STDIO   1//true
#define NCNN_STRING  1//true
#define NCNN_OPENCV  1//true


#endif // NCNN_PLATFORM_H




(2)mat_pixel.cpp中,include后加using namespace std,然后将所有std::min  std::max换成min和max。




修改后继续重新生成,生成成功,没有问题了。




从网上下载了一个cat和dog的图片,放置在x64/release路径下


ncnn 如何使用gpu ncnn git_#define_05

ncnn 如何使用gpu ncnn git_github_06




双击ncnn.exe运行,运行结果


图片左上角显示分类结果


波斯喵


run time:0.47100(windows7 i5-6500CPU)




ncnn 如何使用gpu ncnn git_手机端_07




猎狐汪




ncnn 如何使用gpu ncnn git_#define_08






好啦,大功初成。



大家尝试运行的时候可能还会出现其他问题,不过仔细判断,一个个都能解决的。祝顺利。