淘宝上用的移动AI技术,你也可以用在自己的产品中了。

刚刚,阿里巴巴宣布,开源自家轻量级的深度神经网络推理引擎MNN(Mobile Neural Network),用于在智能手机、IoT设备等端侧加载深度神经网络模型,进行推理预测。

这是阿里开源的首个移动AI项目,已经用于阿里手机淘宝、手机天猫、优酷等20多个应用之中。覆盖直播、短视频、搜索推荐、商品图像搜索、互动营销、权益发放、安全风控等场景。在IoT等移动设备场景下,也有若干应用。

阿里表示,在iOS、Android的CPU、GPU性能上,MNN已经普遍领先业界。

他们选择深度神经网络模型MobileNet V2和SqueezeNet V1.1进行了测试。

Android方面以小米6为例,MobileNet V2上耗费时间约为27毫秒,SqueezeNet V1.1上耗费约为25毫秒,领先业界至少30%;

iOS方面以iPhone 7为例,MobileNet V2上耗费时间约为15毫秒,SqueezeNet V1.1上耗费约为14.8毫秒,领先业界至少15%。

淘宝端智能无线技术专家离青说,MNN开源之后,每隔两个月都会进行一次更新,发布经过淘宝应用验证的版本。

MNN的两大功能与四大特点

基于淘宝和达摩院的研究成果,阿里巴巴在2017年10月正式组建了MNN团队。

经过淘宝技术部、搜索工程团队、达摩院团队、优酷等各方力量的打磨,以及双11和集五福等重大业务项目的考验,在离青看来,MNN已经是一个成熟的推理引擎了。

现在,MNN可以提供模型转换和计算推理两部分功能。

模型转换部分帮助开发者兼容不同的训练框架。

当前,MNN已经支持Tensorflow(Lite)、Caffe和ONNX,PyTorch/MXNet的模型可先转为ONNX模型再转到MNN。而且,也能通过算子融合、算子替代、布局调整等方式优化图。

计算推理部分致力于高效完成推理计算。

为了更好地完成对模型的加载、计算图的调度,以及各计算设备下的内存分配、Op实现等任务。

他们在MNN中应用了多种优化方案,包括在卷积和反卷积中应用Winograd算法、在矩阵乘法中应用Strassen算法、低精度计算、多线程优化、内存复用、异构计算等。

△MNN架构设计

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

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

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

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

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

MNN不仅支持回调机制,可以在网络运行中插入回调,提取数据或者控制运行走向;还支持只运行网络中的一部分,或者指定CPU和GPU间并行运行。

离青介绍,这一项目的核心目标,就是进一步降低开发工程师和算法工程师在移动环境中使用深度学习技术的门槛。

这样的一个引擎,应用到实际中是什么样的情况呢?

这里有一个淘宝的例子——

手机淘宝春节活动:扫年货,集五福

2019年春节期间,淘宝通过扫年货的方式加入到了阿里“集五福”活动之中。

具体的使用场景是,通过扫一扫商品识别能力,来识别红色年货,并分析照片中有年货的概率,根据概率来发放相关权益。

首先,为了扫描年货,淘宝在服务端用百万张年货图片训练出了一个可以鉴别年货的深度神经网络模型。

接下来,就需要MNN发挥作用了。

用户通过相机扫描年货时,淘宝会获取相机中的照片数据。然后,对照片做预处理,包括图片的缩放、颜色空间的转换等。

离青说,扫年货是一个基于相机的应用场景,使用云端AI会消耗用户大量的流量去传输逐帧照片、服务端的计算资源,同时响应速度也会取决于网络状况。

而MNN,可以通过端侧AI,避免了网络开销,使整体体验流畅、稳定。

它能够结合训练好的模型和经过处理的数据,快速做出相应的计算处理,分析出照片中有年货的概率。

如果照片中有年货的概率达到淘宝设定的标准,就可以认定用户扫描到了年货,进而发放相关的权益。

这只是阿里将移动AI应用到自身业务之中的一个场景;MNN,也只是阿里众多移动AI项目中的一个。

在离青看来,移动AI领域的应用、框架/引擎、硬件方面都有着很多的可能性。

接下来,他们将会在维持MNN轻量、通用、易用、高性能等方面特点的情况下,进一步加强在端侧核心算法的投入,降低开发者使用门槛,探索如何在云+端结合的情况下,发挥出更强的AI能力。

如果你对这个项目感兴趣,请收好下面传送门:

https://github.com/alibaba/MNN

在这个项目中,阿里巴巴提供了使用说明文档和基于图片、视频流的示例应用等等。

他们也发出呼吁,希望大家多多进行体验、反馈,用MNN构建出不同的人工智能应用~

One more thing

今年3月份正式宣布加入阿里的框架大牛贾扬清,在MNN项目开源评审时也给出了自己的建议。

在贾扬清看来,与Tensorflow、Caffe2等同时覆盖训练和推理的通用框架相比,MNN更注重在推理时的加速和优化,解决在模型部署的阶段的效率问题,从而在移动端更高效地实现模型背后的业务。

这和服务器端TensorRT等推理引擎的想法不谋而合。

离青说,这样的转变,让MNN有了更切合使用场景的定位,对于其进一步发展,和为开发者服务,都有很大的帮助。

— 完 —

阿里开源首个移动AI项目,淘宝同款推理引擎的更多相关文章

  1. 重磅 | 阿里开源首个 Serverless 开发者平台 Serverless Devs

    Serverless 从概念提出到应用,已经走过了 8 个年头,开发者对 Serverless 的使用热情不断高涨.为帮助开发者实现一键体验多云产品,极速部署 Serverless 项目,10 月 2 ...

  2. 用Python分析淘宝2000款避孕套,得出这些有趣的结论

    数据分析之前我们需要清楚的知道自己想要分析什么东西,也就是先搞清楚我们的目标.在公司可能是公司财报.用户增量变化.产品受欢迎程度.一些报表等等. 那我们今天的目标有哪些呢?我们来看看: ! 分析避孕套 ...

  3. 陈思淼:阿里6个月重写Lazada,再造“淘宝”的技术总结

    小结: 1. 所谓的中台技术,就是从 IDC,网络,机房,操作系统,中间件,数据库,算法平台,数据平台,计算平台,到业务平台,每一层都有清晰的定义和技术产品. 具体来看,首先,集团技术的分层和每层的产 ...

  4. 【转】淘宝技术牛p博客整理

    转自:http://blog.csdn.NET/zdp072/article/details/19574793 淘宝技术委员会是由淘宝技术部高级技术人员组成的一个组织,共分为Java分会.C/C++分 ...

  5. 淘宝 NPM 镜像站切换新域名啦

    镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 源起 淘宝 NPM 镜像站(npm.taobao.org)自 2014 年 正式对外服务,一开始只是想简单地做 NPM 的中国镜像站点,回馈国内前 ...

  6. taobao_api项目开坑,自主完成淘宝主要接口的开发-版本:卖家版(非淘宝api)

    项目名称:taobao_api 项目目的:独立实现各个淘宝操作的相关api,不依赖淘宝提供的api,而是自己实现接口 前期实现接口:已付款订单查询(自动更新), 订单发货 , 订单备注 应用场景:中小 ...

  7. iOS 集成阿里百川最新版(3.1.1.96) 实现淘宝授权登录以及调用淘宝客户端商品详情页

      公司最近要做第三方登录,由于是做导购项目,必不可少的有淘宝的授权登录.本来就是一个授权登录,没什么大不了的.但淘宝的无线开放业务——阿里百川更新的最新版本3.1.1.96,开发文档不是不详细,是很 ...

  8. 淘宝code—— 最给力的国内免费SVN(不限语言),异地团队开发、打造个人开源项目不再是梦

    相信大家都听说过GitHub,也有很多人在用,但是GitHub毕竟在国外,速度不是很给力,而且安装过程也是很漫长.今天来给大家介绍一个国内的免费的开源项目平台,当然也是一个SVN版本控制器,名字叫ta ...

  9. zz开源 MNN:淘宝在移动 AI 上的实践

    开源 MNN:淘宝在移动 AI 上的实践   陈以鎏(离青) 阅读数:40612019 年 6 月 28 日   随着深度学习的快速发展和端侧设备算力的不断提升,原本在云端执行的推理预测工作正在部分迁 ...

随机推荐

  1. R语言入门级实例——用igragh包分析社群

    R语言入门级实例——用igragh包分析社群 引入—— 本文的主要目的是初步实现R的igraph包的基础功能,包括绘制关系网络图(social relationship).利用算法进行社群发现(com ...

  2. iMX287A多种方法实现流水灯效果

    目录 1.流水灯在电子电路中的地位 2.硬件电路分析 3.先点个灯吧 4.shell脚本实现流水灯 5.ANSI C文件操作实现流水灯 6.Linux 系统调用实现流水灯 @ 1.流水灯在电子电路中的 ...

  3. Spring事务Transactional和动态代理(一)-JDK代理实现

    系列文章索引: Spring事务Transactional和动态代理(一)-JDK代理实现 Spring事务Transactional和动态代理(二)-cglib动态代理 Spring事务Transa ...

  4. 并查集(不相交集)的Remove操作

    给并查集(不相交集)的添加一个\(Remove(X)\)操作,该操作把\(X\)从当前的集合中除去并把它放到自己的集合中. 实现思想 英文原句 We assume that the tree is i ...

  5. 算法入门——二分查找,旅行商问题,大O表示法

    一. 算法入门 博主在市面上发现了很多,很多有关书算法的书籍,但是真正能够让初学者易懂的算法书籍,只是一点点,以下我讲以 Aditya Bhargava写的一本关于算法的入门书籍,为参考,这本书非常的 ...

  6. 绕过Referer和Host检查

    1.我们在尝试抓取其他网站的数据接口时,某些接口需要经过请求头中的Host和Referer的检查,不是指定的host或referer将不予返回数据,且前端无法绕过这种检查 此时通过后端代理解决 在vu ...

  7. LeetCode37 使用回溯算法实现解数独,详解剪枝优化

    本文始发于个人公众号:TechFlow,原创不易,求个关注 数独是一个老少咸宜的益智游戏,一直有很多拥趸.但是有没有想过,数独游戏是怎么创造出来的呢?当然我们可以每一关都人工设置,但是显然这工作量非常 ...

  8. 打开ElasticSearch、kibana、logstash的正确方式

    作者:玩世不恭的Coder时间:2020-03-08说明:原创不易,本文为原创文章,未经允许不可转载,转载前请联系作者 打开ElasticSearch.kibana.logstash的正确方式 前言一 ...

  9. xadmin theme

    我在user的adminx中设置了为True之后,我的主题还是加载不出来,具体没找到原因,网上也没有找到相应的资料,不过通过尝试,可以根据需要,添加自己需要的主题,操作如下: 1.找到xadmin文件 ...

  10. 【ERROR 1064 (42000)】MySQL中使用mysqladmin或set修改root密码时提示语法错误

    报错信息: mysql> mysqladmin -uroot -p123456 password 654321; ERROR 1064 (42000): You have an error in ...