MNN 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
MNN 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
MNN 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
MNN 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
MNN 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 Apache
开发语言 C/C++ 查看源码 »
操作系统 跨平台
软件类型 开源软件
开源组织 阿里巴巴
地区 国产
提 交 者 段段段落
适用人群 未知
收录时间 2019-05-07

软件简介

MNN 是一个轻量级的深度神经网络推理引擎,在端侧加载深度神经网络模型进行推理预测。目前,MNN 已经在阿里巴巴的手机淘宝、手机天猫、优酷等 20 多个 App 中使用,覆盖直播、短视频、搜索推荐、商品图像搜索、互动营销、权益发放、安全风控等场景。此外,IoT 等场景下也有若干应用。

整体特点

轻量性

  • 针对端侧设备特点深度定制和裁剪,无任何依赖,可以方便地部署到移动设备和各种嵌入式设备中。
  • iOS平台:armv7+arm64静态库大小5MB左右,链接生成可执行文件增加大小620KB左右,metallib文件600KB左右。
  • Android平台:so大小400KB左右,OpenCL库400KB左右,Vulkan库400KB左右。

通用性

  • 支持TensorflowCaffeONNX等主流模型文件格式,支持CNNRNNGAN等常用网络。
  • 支持86个TensorflowOp、34个CaffeOp;各计算设备支持的MNN Op数:CPU 71个,Metal 55个,OpenCL 29个,Vulkan 31个。
  • 支持iOS 8.0+、Android 4.3+和具有POSIX接口的嵌入式设备。
  • 支持异构设备混合计算,目前支持CPU和GPU,可以动态导入GPU Op插件,替代CPU Op的实现。

高性能

  • 不依赖任何第三方计算库,依靠大量手写汇编实现核心运算,充分发挥ARM CPU的算力。
  • iOS设备上可以开启GPU加速(Metal),常用模型上快于苹果原生的CoreML。
  • Android上提供了OpenCLVulkanOpenGL三套方案,尽可能多地满足设备需求,针对主流GPU(AdrenoMali)做了深度调优。
  • 卷积、转置卷积算法高效稳定,对于任意形状的卷积均能高效运行,广泛运用了 Winograd 卷积算法,对3x3 -> 7x7之类的对称卷积有高效的实现。
  • 针对ARM v8.2的新架构额外作了优化,新设备可利用半精度计算的特性进一步提速。

易用性

  • 有高效的图像处理模块,覆盖常见的形变、转换等需求,一般情况下,无需额外引入libyuv或opencv库处理图像。
  • 支持回调机制,可以在网络运行中插入回调,提取数据或者控制运行走向。
  • 支持只运行网络中的一部分,或者指定CPU和GPU间并行运行。

架构设计

MNN可以分为Converter和Interpreter两部分。

Converter由Frontends和Graph Optimize构成。前者负责支持不同的训练框架,MNN当前支持Tensorflow(Lite)、Caffe和ONNX(PyTorch/MXNet的模型可先转为ONNX模型再转到MNN);后者通过算子融合、算子替代、布局调整等方式优化图。

Interpreter由Engine和Backends构成。前者负责模型的加载、计算图的调度;后者包含各计算设备下的内存分配、Op实现。在Engine和Backends中,MNN应用了多种优化方案,包括在卷积和反卷积中应用Winograd算法、在矩阵乘法中应用Strassen算法、低精度计算、Neon优化、手写汇编、多线程优化、内存复用、异构计算等。

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (1)

加载中
有什么具体点的案例可以学习
2019/05/07 17:46
回复
举报
更多评论
2019/05/09 07:47

阿里开源深度神经网络推理引擎 MNN

近日,阿里正式开源了轻量级深度学习端侧推理引擎 “MNN”。 MNN 是一个轻量级的深度学习端侧推理引擎,核心解决深度神经网络模型在端侧推理运行问题,涵盖深度神经网络模型的优化、转换和推理。 官方希望 MNN 能够抹平 Android 和 iOS 的差异、碎片设备之间的差异、不同训练框架的差异,实现快速的在端侧部署运行,并且能够根据业务模型进行 OP 灵活添加和 CPU/GPU 等异构设备深入性能优化。 △ MNN 架构设计,分为 Converter ...

7
48
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2020/05/15 13:03

MNN windows

参考: https://blog.csdn.net/wh1319501722/article/details/104215382 MNN主库 环境要求 Microsoft Visual Studio (2017或以上) cmake(建议使用3.10或以上版本) powershell Ninja (构建工具,比nmake更快) 编译选项 可以修改CMakeLists.txt中的选项: MNN_DEBUG 默认关闭,关闭时,不保留符号,开启优化。 MNN_OPENMP 默认开启,关闭后,禁用openmp多线程优化。 具体步骤 在设置中找到x64 Native Tools Command Prompt...

0
0
发表了博客
2020/07/26 15:49

mnn量化

参考:https://zhuanlan.zhihu.com/p/73207495 今天MNN更新了新的工具包---CNN网络量化工具(quantization),作者也第一时间进行了测试。提升的效果还是很可观的,量化前的CNN网络大小约为5.7M,在rk3399(android-8.1)的inference速度约为45ms。使用MNN提供的quantization工具进行量化后,模型大小减少为1.5M,在rk3399中的inference速度为29ms。 其使用的流程非常友好,首先使用MNN提供的量化工具对CNN的模型参数文件进行量化...

0
0
发表了博客
2020/10/24 08:52

retinaface mnn

这个retinaface既有mnn,又有ncnn,可以试试 https://github.com/OpenFirework/Retinaface_CPP

0
0
发表了博客
2020/10/27 08:57

MNN默认优化

MNN是一个轻量级的深度神经网络推理引擎,在端侧加载深度神经网络模型进行推理预测。目前,MNN已经在阿里巴巴的手机淘宝、手机天猫、优酷等20多个App中使用,覆盖直播、短视频、搜索推荐、商品图像搜索、互动营销、权益发放、安全风控等场景。此外,IoT等场景下也有若干应用。 整体特点 轻量性 • 针对端侧设备特点深度定制和裁剪,无任何依赖,可以方便地部署到移动设备和各种嵌入式设备中。 • iOS平台:armv7+arm64静态库大小...

0
0
2020/01/10 16:19

MNN 直播第二弹|深入浅出谈 MNN 原理

淘系技术 直播分享报名通道火热开启 直播须知 主题:深入浅出谈 MNN 原理:为什么这么快 时间:1月15日 19:00-20:00 嘉宾:明弈 阿里巴巴淘系技术无线开发专家 MNN 开源地址 https://github.com/alibaba/MNN & 上期 MNN 直播回看 https://mudu.tv/watch/4308076 分享简介 上一期我们高屋建瓴的谈了谈端智能现在的发展趋势和在手淘中的应用场景,很多朋友都很好奇 MNN 的架构设计,以及为什么 MNN 在性能上会有比较大的优势。 ...

0
0
2020/05/29 08:08

MNN支持NPU啦!!!

作者|MNN团队 出品|阿里巴巴新零售淘系技术部 ✪ AI 芯片时代 ✪ 2016 - 2017年,AlphaGo 先后战胜李世石和柯洁,随着深度学习进入公众视野的,还有 Google 的 TPU 。 之后,Qualcomm、Apple 等芯片厂商也相继进入了这个战场。一时间,APU、TPU、NPU 成了科技媒体的宠儿,各大厂商在发布会上的跑分比武应接不暇。 而 XPU 们也确实凭借着为深度学习定制的向量、矩阵、张量计算单元和更高效的缓存设计等,实现了数倍于 CPU、GPU 的...

0
0
发表了博客
2020/08/08 13:32

mnn op name is empty or dup

mnn op name is empty or dup 原因还不知道

0
0
发表了博客
2020/08/07 14:02

mnn并行bug

mnn中,两个卷积层处理同一个对象, 然后把结果cat 在移动端测试发现,结果会一直波动,有时还出现nan。

0
0
发表了博客
01/24 08:22

mnn推理示例

MNN项目组已经提供了编译好的库: 1.下载编译好的MNN库 下载地址为:https://github.com/alibaba/MNN/releases 下载两个文件:Source.code和MNN-WindowsX64-0.2.1.7.zip 2.在visual studio上进行配置 注意visual studio版本为2017,我习惯把这些库都跟opencv放一起,具体来讲就是: 首先,把从Source code中解压的include文件如图1所示,复制出来; 然后,在自己的opencv的include文件夹下面新建一个MNN子文件夹,将上面的头文件...

0
0
发表了博客
2020/07/24 15:39

clamp mnn不支持

selayer中的 y=torch.clamp(y,0,1) mnn转换工具转换时报错 解决方法: y=torch.clamp(y,0,6) 这个不报错了,但是mnn推理增加了9ms。

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
1 评论
127 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部