本博记录为卤煮使用时的记录,属于事后回忆记录,如有疏漏,请指正。
卤煮:非文艺小燕儿
本博地址:ncnn:示例程序运行
感谢开源共享的各位大牛们,让我们能够站在巨人的肩膀上前行。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
#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)
猎狐汪
好啦,大功初成。
大家尝试运行的时候可能还会出现其他问题,不过仔细判断,一个个都能解决的。祝顺利。