楚丰,仝辉作者

谷歌开发者大会2018实录——TensorFlow篇

摘要

本篇文章我们将分享闲鱼在TensorFlow领域的分享和心得。

在9月21日结束的Google开发者大会上,闲鱼团队作为Google的合作伙伴参加了此次会议,不仅在Flutter方面与谷歌以及国内开发者进行了深度交流,同时闲鱼技术开发专家陈永新作为本次大会的演讲嘉宾,分享了闲鱼基于TensorFlow Lite的端计算应用实践。在闲鱼的展台上还展示了闲鱼基于TensorFlow的黑科技:UI2Code,吸引了络绎不绝的开发者前来围观。

TensorFlow 趋势

TensorFlow自2015年发布以来,已经成为世界上使用最广泛的机器学习框架,满足了广大的用户和用例需求。在此期间,TensorFlow随着计算硬件、机器学习研究和商业部署的快速发展而得到进步。

为了反映这些快速变化,本次的谷歌开发者大会介绍了TensorFlow和lite的一些新特性,重点关注易用性。以下是TensorFlow的新特性:

1.Eager execution,动态图机制,允许直接执行图,将更方便调试。

也将会是未来TensorFlow 2.0版本的默认开启选项。它将用户对编程模型的期望与TensorFlow更好地结合起来,并且使TensorFlow更易于学习和应用。

2.通过交换格式的标准化和API的一致性,支持更多平台和语言,并改善这些组件之间的兼容性和奇偶性。

3.将删除已弃用的API并减少重复数量,避免给用户造成混淆。

4.TensorFlow Lite转换工具添加post-training模型量化(post-training quantization)。

对于相关的机器学习模型,这可以实现最多4倍的压缩和3倍的执行速度提升。此外,模型主要由卷积层组成,执行速度提高10-50%的同时减少了内存和计算需求,预计大多数模型的功耗也会降低。

5.TensorFlow Lite从contribute目录移动到主目录,正式加入TensorFlow主工程。

TensorFlow Lite在闲鱼客户端上的应用

闲鱼客户端如何应用TensorFlow Lite

闲鱼自研了一个基于TensorFlow Lite的框架,主要对三方面进行了定制:拓展性、安全性和动态化。

1.拓展性:在拓展性方面利用TensorFlow Lite的自定义OP,将我们所需的一些数据预处理等作为一个自定义OP,整合到同一个模型,这样可以一个业务就是一个模型,能够做到业务之间保持独立。

2. 安全性:通过自定义的加密头等方式,将模型进行加密,在客户端运行该模型时,动态解析出原始模型,做到数据不落盘,最大程度保证了数据安全。

3. 动态化:通过服务端动态下发模型和OP的方式,实现了线上更新模型和算法,极大地方便了灰度测试、算法升级等需求。

应用一:视频封面

在视频封面这个案例中,利用TensorFlow Lite,可以将原先传统算法做的事,在端上用用AI模型来完成。传统基于规则的做法,选取视频封面的时候,是由算法同学设计一个基础算法,同时再处理各种Case,最终选取一张封面。对于遗漏忘处理的情况,则需要发版更新算法,维护成本太高。 而使用AI模型,则可以通过动态下发模型和OP的方式随时灰度和升级。

应用二:视频指纹

在这个案例中,展示了一种对 TensorFlow Lite 较“另类”的用法:将它当做一个计算框架。TensorFlow Lite 本身就是一种计算流程的框架,因此,可以利用它支持自定义OP的特性,将我们算法的各个环节作为一个个自定义OP,然后利用模型将这些计算环节“串联”起来,这样,整个TensorFlow Lite就俨然成为了一个天然的端计算框架。这样既可以对单个计算环节(自定义OP)做更新,还能随时调整整个计算流程(即调整模型)。

应用三:智能租房

最后这个案例是比较传统的TensorFlow Lite的用法,使用了较流行的SSD模型,在租房环节,通过自能识别图片中的家具(冰箱、电视等),以此自动地给用户发布的房屋打上标签,不仅简化了用户操作,还丰富了商品信息,为后台数据搜索推荐等提供了更有效的信息。

TensorFlow 在闲鱼工程效率上的应用——“UI2Code”

关于“UI2Code”的介绍,可以参考前面的一篇文章《Google开发者大会将揭晓哪些黑科技》

该项目展示的是从一张图片,直接生成UI代码的过程。该图片可以是设计师的视觉产出,也可以是手机上随便打开一个软件然后截图得到。 这里针对大家关心最多的几个问题做一下说明:

1.“UI2Code”和微软刚刚开源的“Sketch2Code”有什么区别

Sketc2Code 关注的是如何快速的将设计师的灵感,变成“近似”的UI代码,可以理解成是给设计师用的创作工具,生成的代码也并不是为了直接作为线上代码使用。

而我们的 UI2Code 关注的是1比1像素级别的“精确”还原,目的是为了节省开发人员重复机械的视觉还原工作,将没有创造性的重复性工作交给机器,这样开发人员就可以去关注更重要的逻辑性问题。它生成的UI代码是“接近”生产可用的,开发人员只要做一些数据绑定或者细微的调整即可。

2.“UI2Code”是如何使用TensorFlow的?

实际上该项目是一个复杂的工作流程,在流程的某些节点上,我们使用TensorFlow来完成深度学习任务。比如,由于输入是一张纯图片,并无其它任何信息,因此,需要用深度学习来“理解”图片内容,包括哪些是文本,哪些是图片等等。

3.你们这个有对外提供服务吗?是否有开源计划?

目前该工具还只是闲鱼内部使用(实际上我们的团队已经用它有一段时间了,上线了多个导购页面),下半年会开始考虑开源计划。由于该工具里面有部分我们自有业务的东西,同时公司有严格的开源审核和披露的流程,因此还需要一段时间,大家可以关注我们的公众号:闲鱼技术,到时候有了进一步的消息会第一时间在上面公布。

结语

本次大会闲鱼作为Google的合作伙伴,与广大开发者分享和交流了闲鱼在Flutter和TensorFlow等方向上的实践,我们希望同广大开发者一起,在技术的道路上,不断探索创新,用技术推动业务。同时我们对人才求贤若渴,如果你希望做一些很“酷”的事情,欢迎加入闲鱼!

简历投递:guicai.gxy@alibaba-inc.com

闲鱼技术
闲鱼技术

加入闲鱼,一起玩些酷的。(阿里巴巴集团闲鱼官方技术号,欢迎同道者技术交流。) 简历投递:guicai.gxy@alibaba-inc.com

产业深度学习2018谷歌开发者大会机器学习TensorFlow
1
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

SSD技术

一种计算机视觉模型。论文发表于 2015 年(Wei Liu et al.)

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

张量技术

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

逻辑技术

人工智能领域用逻辑来理解智能推理问题;它可以提供用于分析编程语言的技术,也可用作分析、表征知识或编程的工具。目前人们常用的逻辑分支有命题逻辑(Propositional Logic )以及一阶逻辑(FOL)等谓词逻辑。

推荐文章
暂无评论
暂无评论~