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文件

(3)库目录:
配置依赖的opencv lib的存放路径,我直接放在release中了,所以配置如下

(3)连接器输入
这个根据你的opencv版本确定后面的数字,我的是V2410,所以如下


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

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



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

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


配置完成后,重新生成,生成时,我这里又报了很多错误,筛选了以下,基本都是关于
net.h中#if NCNN_STRING
和mat_pixel.cpp中std::min  std::max相关的问题。
我的解决方案是:
(1)定义类似宏 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.exe运行,运行结果
图片左上角显示分类结果
波斯喵
run time:0.47100(windows7 i5-6500CPU)



猎狐汪






好啦,大功初成。

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

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐