MNN 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
MNN 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
MNN 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 Apache
开发语言 C/C++ 查看源码 »
操作系统 跨平台
软件类型 开源软件
开源组织 阿里巴巴
地区 国产
投 递 者 段段段落
适用人群 未知
收录时间 2019-05-07

软件简介

MNN 是一个高效、轻量的深度学习框架。它支持深度模型推理与训练,尤其在端侧的推理与训练性能在业界处于领先地位。目前,MNN已经在阿里巴巴的手机淘宝、手机天猫、优酷、钉钉、闲鱼等20多个App中使用,覆盖直播、短视频、搜索推荐、商品图像搜索、互动营销、权益发放、安全风控等70多个场景。此外,IoT等场景下也有若干应用。

MNN的架构设计理念与性能数据在MLSys 2020上面发表。Paper 在此处。如果MNN对你的研究有所助益,欢迎引用MNN的论文:

整体特点

轻量性

  • 针对端侧设备特点深度定制和裁剪,无任何依赖,可以方便地部署到移动设备和各种嵌入式设备中。
  • 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/09 07:47

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

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

7
48
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
OpenCV 缓冲区错误漏洞
跨界内存写
OpenCV是一款开源的、跨平台的、轻量级计算机视觉库。 OpenCV 4.2.0之前版本中的持久性数据结构功能存在缓冲区错误漏洞。攻击者可通过特制的JSON文件造成缓冲区溢出,进而导致多个堆损坏并可能执行代码。
CVE-2019-5064 MPS-2020-0085
2022-08-08 19:09
OpenCV除零错误漏洞
除零错误
OpenCV是一个跨平台的计算机视觉库。 OpenCV 4.1.0中的modules/objdetect/src/hog.cpp中的cv::HOGDescriptor::getDescriptorSize存在除零错误漏洞。目前没有详细的漏洞细节提供。
CVE-2019-15939 MPS-2019-11014
2022-08-08 19:09
OpenCV越界读取漏洞
跨界内存读
OpenCV是一个跨平台的计算机视觉库。 OpenCV 4.1.1中的core/hal/intrin_sse.hpp中的hal_baseline::v_load在从modules/video/src/dis_flow.cpp中的computeSSDMeanNorm调用时存在越界读取漏洞,攻击者可利用该漏洞导致拒绝服务。
CVE-2019-16249 MPS-2019-11421
2022-08-08 19:09
Android 缓冲区错误漏洞
跨界内存写
Android是美国谷歌(Google)和开放手持设备联盟(简称OHA)的一套以Linux为基础的开源操作系统。 Android 10版本中的opencv调用存在缓冲区错误漏洞,该漏洞源于程序缺少边界检查。攻击者可利用该漏洞提升权限。
CVE-2019-9423 MPS-2019-12353
2022-08-08 19:09
OpenCV 缓冲区错误漏洞
跨界内存读
OpenCV是一款开源的、跨平台的、轻量级计算机视觉库。 OpenCV 3.4.7之前版本和4.1.1之前的4.x版本中的modules/objdetect/src/cascadedetect.hpp文件的‘cv::predictOrdered<cv::HaarEvaluator>’函数存在缓冲区错误漏洞。该漏洞源于网络系统或产品在内存上执行操作时,未正确验证数据边界,导致向关联的其他内存位置上执行了错误的读写操作。攻击者可利用该漏洞导致缓冲区溢出或堆溢出等。
CVE-2019-14491 MPS-2019-9066
2022-08-08 19:09
OpenCV 缓冲区错误漏洞
OpenCV是一款开源的、跨平台的、轻量级计算机视觉库。 OpenCV 3.4.7之前版本和4.1.1之前的4.x版本中的modules/objdetect/src/cascadedetect.hpp文件的‘HaarEvaluator::OptFeature::calc’函数存在缓冲区错误漏洞。该漏洞源于网络系统或产品在内存上执行操作时,未正确验证数据边界,导致向关联的其他内存位置上执行了错误的读写操作。攻击者可利用该漏洞导致缓冲区溢出或堆溢出等。
CVE-2019-14492 MPS-2019-9067
2022-08-08 19:09
OpenCV 缓冲区错误漏洞
跨界内存写
OpenCV是一款开源的、跨平台的、轻量级计算机视觉库。 OpenCV 4.1.0版本中的‘persistence’模式存在缓冲区错误漏洞。远程攻击者可借助特制XML文件利用该漏洞在系统上执行任意代码。
CVE-2019-5063 MPS-2020-0084
2022-08-08 19:09
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
1 评论
132 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部