腾讯ncnn框架和阿里巴巴MNN框架(含使用教程链接)--工程化的曙光

腾讯ncnn框架
https://github.com/Tencent/ncnn
阿里巴巴MNN框架
https://github.com/alibaba/MNN
MNN使用教程
https://github.com/alibaba/MNN/blob/master/doc/Tutorial_CN.md
Benchmark 测试方法
https://github.com/alibaba/MNN/blob/master/doc/Benchmark_CN.md
MNN操作手册API
https://github.com/alibaba/MNN/blob/master/doc/OpList.md

NCNN的相关介绍-摘自ncnn自家的描述
Q ncnn的起源…

A 深度学习算法要在手机上落地,caffe依赖太多,手机上也没有cuda,需要个又快又小的前向网络实现

Q ncnn名字的来历

A cnn就是卷积神经网络的缩写,开头的n算是一语n关。比如new/next(全新的实现),naive(ncnn是naive实现),neon(ncnn最初为手机优化),up主名字(←_←)

Q 支持哪些平台

A 跨平台,主要支持 android,次要支持 ios / linux / windows

Q 计算精度如何

A armv7 neon float 不遵照 ieee754 标准,有些采用快速实现(如exp sin等),速度快但确保精度足够高

Q pc 上的速度很慢

A pc都是x86架构的,基本没做什么优化,主要用来核对结果,毕竟up主精力是有限的(

Q 为何没有 logo

A up主是mc玩家,所以开始是找了萌萌的苦力怕当看板娘的,但是这样子会侵权对吧,只好空出来了…

MNN架构设计
腾讯ncnn框架和阿里巴巴MNN框架(含使用教程链接)--工程化的曙光_第1张图片

在这样的架构设计下,MNN具备了以下的四大特点:

轻量性:针对端侧设备特点深度定制和裁剪,无任何依赖,可以方便地部署到移动设备和各种嵌入式设备中。

通用性:支持Tensorflow、Caffe、ONNX等主流模型文件格式,支持CNN、RNN、GAN等常用网络。

高性能:不依赖任何第三方计算库,依靠大量手写汇编实现核心运算,充分发挥ARM CPU的算力。比如,在iOS设备上,可以开启GPU加速(Metal),常用模型上快于苹果原生的CoreML。

易用性:有高效的图像处理模块,覆盖常见的形变、转换等需求,一般情况下,无需额外引入libyuv或opencv库处理图像。

MNN不仅支持回调机制,可以在网络运行中插入回调,提取数据或者控制运行走向;还支持只运行网络中的一部分,或者指定CPU和GPU间并行运行。
阿里巴巴提供了使用说明文档和基于图片、视频流的示例应用等等。可以自GitHub上看看。

注:由于本人只使用过ncnn,而且我看MNN也有借鉴ncnn所以应该在功能上会有优化,最终的稳定性还需要一些时间来沉淀,而且ncnn对caffe效果比较好,MNN应该在tensorflow上有改进,兼容性会更好些。

所以:MNN支持Tensorflow(Lite)、Caffe和ONNX,但是对PyTorch/MXNet的模型需先转为ONNX模型再转到MNN。

(ncnn一些网络的转化的过程很难转化,会相出现各种问题,ncnn遇到模型之间的转化基本上是不能用,MNN的转化希望能好点,先留个坑下次试过再来补答)

你可能感兴趣的:(腾讯ncnn框架和阿里巴巴MNN框架(含使用教程链接)--工程化的曙光)