相关文章推荐
一身肌肉的烤红薯  ·  一个空值_Power ...·  2 年前    · 
酷酷的紫菜  ·  VsCode ...·  2 年前    · 
近视的香菜  ·  java_home is not set ...·  2 年前    · 

本文是基于EASY E AI Nano移植NCNN部署库的方法与NCNN成功运行yolov4的Demo所做的教程。

关于NCNN

NCNN是“腾讯优图实验室”首个开源项目,是一个为手机端极致优化的高性能 神经网络 前向计算框架。并在2017年7月正式开源。NCNN作为腾讯优图最“火”的开源项目之一,在设计之初便将手机端的特殊场景融入核心理念,是业界首个为移动端优化的开源神经网络推断库。能实现无第三方依赖,跨平台操作,在手机端 CPU 运算速度在开源框架中处于领先水平。基于该平台,开发者能够轻松将 深度学习 算法移植到手机端,输出高效的执行,进而产出人工智能 APP ,将AI技术带到 用户 指尖。

NCNN功能概述

- 支持卷积神经网络,支持多输入和多分支结构,可计算部分分支。

- 无任何第三方库依赖,不依赖 BLAS/NNPACK 等计算框架。

- 纯 C++ 实现,跨平台,支持 android ios 等。

- ARM NEON 汇编级良心优化,计算速度极快。

- 精细的内存管理和数据结构设计,内存占用极低。

- 支持多核并行计算加速,ARM big.LITTLE cpu 调度优化。

- 支持基于全新低消耗的 vulkan api GPU 加速。

- 可扩展的模型设计,支持 8bit 量化 和半精度浮点存储,可导入caffe/pytorch/mxnet/onnx/darknet/keras/ tensorflow (mlir) 模型。

- 支持直接内存零拷贝引用加载网络模型。

- 可注册自定义层实现并扩展。

* 更多详情参考官方Github: https://github.com/ Te ncent/ncnn

NCNN目前应用在图像分类、风格迁移、目标检测、人脸检测等案例中,并已被多款APP使用。下面正式进入到NCNN算法移植学习吧。

一、源码包 下载 与编译

1. 源码下载放置到ubuntu

NCNN相关源码可通过我们的百度网盘进行下载(已配置好编译脚本),下载链接为:

https://pan.baidu.com/s/1x_27sNJbjCujJZozBajq4g 提取码: dfji

下载ncnn-master.tar.bz2源码包并移植到虚拟机里面,执行以下指令解压源码包:

$ tar xvf ncnn-master.tar.bz2

即可得到如下所示:

2. NCNN编译

执行以下指令编译:

$ cd ncnn-master/ 
$ ./build-easyeai-nano.sh

编译完成如下图所示:

NCNN库编译完成,生成如下图所示:

二、Yolov4基于NCNN运

1. 例程下载放置到ubuntu

Yolov4基于NCNN运行相关运行Demo可以通过我们的百度网盘进行下载(已配置好编译脚本),下载链接为:

https://pan.baidu.com/s/1x_27sNJbjCujJZozBajq4g 提取码: dfji

下载 test_demo.tar.bz2 源码包并移植到虚拟机里面,执行以下指令解压源码包:

$ tar xvf test_demo.tar.bz2

得到如下图所示:

2. 编译例程

执行以下指令编译例程:

$ cd test_demo/ 
$ ./build.sh

编译成功后结果如下所示:

3. 在EASY EAI Nano执行例程

在ubuntu推送可执行程序文件到板卡的 /userdata 目录:

$ adb push test-ncnn-demo-release/ /userdata

在EASY EAI Nano板卡执行程序:

# cd /userdata/test-ncnn-demo-release/ 
# ./test-ncnn-demo test_img/test1.jpg

执行结果如下图所示:

在ubuntu执行以下指令获取识别成功的图片:

$ adb pull /userdata/test-ncnn-demo-release/result.jpg .

最后查看实际的效果图,到这一步就完成啦!

后续更多教程可关注我们的哦,不定时更新各种新品及活动

由于本人使用的系统是win10,所以记录也是在win10下使用n cnn 。 网上很多介绍n cnn 的配置 教程 都是从头开始构建编译,其实官方已经编译好一些版本的n cnn ,直接下载就行了,没有必要从头开始编译。 官方github: https://github.com/Tencent/n cnn 从官方仓库的页面,点击releases 我用的是vs2019,shared是动态链接版本,我下的就是shared版本 解压后随便存放在哪个盘都行,然后记得在环境变量的path把bin路径添加进去,像我就放在D盘
github https://github.com/Tencent/n cnn n cnn 是一个为手机端极致优化的高性能神经网络前向计算框架。n cnn 从设计之初深刻考虑手机端的部署和使用。无第三方依赖,跨平台,手机端 cpu 的速度快于目前所有已知的开源框架。 支持大部分常用的 CNN 网络 Classical CNN : VGG AlexNet GoogleNet Inception … Pra...
n cnn 是一个为手机端极致优化的高性能神经网络前向计算框架。n cnn 从设计之初深刻考虑手机端的部署和使用。无第三方依赖,跨平台,手机端 cpu 的速度快于目前所有已知的开源框架。基于 n cnn ,开发者能够将 深度学习 算法 轻松 移植 到手机端高效执行,开发出 人工智能 APP,将 AI 带到你的指尖。n cnn 目前已在腾讯多款应用中使用,如 QQ,Qzone,微信,天天P图等。github 地址:Tencent/n cnn , Demo 地址:YOLOv5_N CNN 深度学习 和卷积神经网络,在移动端上的测试,可以.
$ make –j4 编译完成后,复制examples目录下SqueezeNet模型的参数模型文件到build/examples目录下 $ copy examples/squeezenet_v1.1.param to build/examples $ cop
1.图像预处理 n cnn ::Mat 1.1 from_pixels_resize() 生成目标尺寸大小的网络输入Mat mat_pixel.cpp 双线性插值图像形变 resize_bilinear_c1/c2/c3/4 1通道/2通道/3通道/4通道 图像变形 算法 mat_pixel_resize.cpp 像素图像 转换成n cnn ::Mat Mat::from_pixels() >>> 不同类型 from_rgb() 像素数据指针rgb间隔 依次赋值给Mat的三个通道的指针