内容简介:2019年05月27日,由58集团技术工程平台联合人力资源部神奇学院共同组织的58集团技术沙龙第十二期,前端与AI主题在58同城北京总部举办。沙龙邀请了小米深度学习组算法专家郭成凯和58基础体验部研发团队。沙龙当日,小米深度学习组算法专家郭成凯、58基础体验前端高级架构师孙东,分别分享讨论了深度学习在图形动画领域应用及前端落地实践的相关问题。
背景
2019年05月27日,由58集团技术工程平台联合人力资源部神奇学院共同组织的58集团技术沙龙第十二期,前端与AI主题在58同城北京总部举办。沙龙邀请了小米深度学习组算法专家郭成凯和58基础体验部研发团队。沙龙当日,小米深度学习组算法专家郭成凯、58基础体验前端高级架构师孙东,分别分享讨论了深度学习在图形动画领域应用及前端落地实践的相关问题。
部分干货总结
一. 小米深度学习在图形动画领域的应用与前端落地
经过多年积累和钻研,小米深度学习在图形动画领域的成果已经广泛应用在小米拍照,小米场景相机,小米语音助手等多个领域。 郭成凯 分别介绍了小米AI在表情迁移、动作迁移、人像拼接、参数变脸、风格迁移、涂鸦式制作、无中生有、智能编辑等多个场景下的 应用。
1. 模型训练要素
首先进行数学建模,确保数据集的质量和数量,足够数量的高质数据集是一个精准模型训练的基础,其次数据多样化(涵盖人脸及衣服细节),符合场景的损失函数,卷积网络,特征压缩,对关键点进行检测,生成网络可微分等。
2. 优化策略
硬件加速,采用高通845,845的图形处理器升级到了Adreno 630,高通称之为视觉处理子系统。它的图形处理能力比上一代提升30%,图形吞吐速度提升2.5倍,功耗降低30%。小米通过对处理器层面的进一步调优,性能有了进一步提升。
深度学习模型的加速,将原本标准的卷积操作因式分解成一个depthwise convolution和一个1*1的卷积操作。简单讲就是将原来一个卷积层分成两个卷积层,其中前面一个卷积层的每个filter都只跟input的每个channel进行卷积,然后后面一个卷积层则负责combining,即将上一层卷积的结果进行合并。与常规卷积操作相比,它们具有更少的参数,这将使用更少的浮点运算并且更容易并行化,这意味着推断将更快和较少的资源消耗。此外,因为它们具有较少的参数,所以训练它们所花费的时间较少。
将传统的卷积结构改造成两层卷积结构的网络,采用类似ResNext里面的group操作来实现。这种新的结构可以在基本不影响准确率的前提下大大减少计算时间和参数数量。对于全卷积网络的提升效果比较明显。
二. 58 AI与前端落地实践
58人工智能其实有很多优秀的落地应用:智能客服、智能写稿、智能问答机器人、智能语音机器人、58帮帮等等;然而,AI在端上的运行才刚刚起步,下面结合我们具体场景,进行了浏览器端AI初探,积累更多实践经验,助力我们业务创新和服务质量提升。
1. 实践思路
目前,基于现有框架, AI在前端实现,可以考虑三种workflow:
· 你可以导入现有的预训练的模型进行推理。如果你有一个以前脱机训练好的现成的模型,就可以将其转换为web model格式,并加载到浏览器中进行推理。
· 你可以重新训练导入的模型。你可以使用迁移学习来增强现有模型,使用“Image Retraining”技术,用浏览器中收集的少量数据进行离线训练。这是快速训练精确模型的一种方法,只需使用少量数据。
· 直接在浏览器中创建模型。完全在浏览器中进行定义、训练和运行模型。
我们这里实现思路目前集中在第一种实现方式,TensorFlow 是 GitHub 上的第一个机器学习平台,也是 GitHub 上的五大软件库之一,被许多公司和组织所使用,包括 GitHub 上与 TensorFlow 相关的超过 24,500 个不同的软件仓库。预编译的 TensorFlow 二进制文件已经在 180 多个国家被下载了超过 1000 万次,GitHub 上的源代码现在已经有超过 1200 个贡献者。
2018年3月31日TensorFlow 开发者峰会上,TensorFlow宣布重大更新:增加支持Java,并推出开源库TensorFlow.js,所以,如下图,我们基于预训练的TensorFlow或Keras模型,将其转换成Web可以加载的模型文件,最终将其加载到前端进行预测。
2. 场景落地
我们通过分析AI在前端切入点,在一些领域有他独特的优势:
-
交互性强的场景
-
图片处理:图片美化、图片识别
-
视频处理:视频中的人脸识别
-
设计相关:pix2code、sketch2react
结合我们自身业务,对落地场景进行初探:
①AI美图
②图片分类
③AR视频捕获
④Word2vec语义化
(如上图是AI美图应用实践)
通过Tensorflowjs及converter工具将Tensorflow模型或Keras模型转换为web_model模型;可以看到生成浏览器可以加载并读取的模型参数和权重文件。从用户的角度来看,在浏览器中运行的ML意味着不需要安装任何库或驱动程序。只需打开网页,程序就可以运行了。对于图片处理来说,不需要网络开销来传输和接受图片资源,实现了低延迟,弱网或断网情况下的离线运行。
3. 细节优化
在实现过程我们也遇到了一些问题,比如由于Tensorflowjs-converter支持有限,我们训练模型时用到encode和decode;由于不在Supported Tensorflow Ops列表,我们通过调整模型训练Ops来兼容。同时也付出了一些代价,模型从44K增加到几百K。
另外,将Tensorflow模型或Keras模型转换为web_model模型之后,会生成很多小的权重文件,在实际应用时,通过懒加载和预加载策略,可以在不影响首屏加载情况下,优化模型加载时间。
三. 总结
本次技术沙龙,对AI在前端的落地实践具有重大意义。因为如果想通过加载预训练模型到前端运行,势必要保证模型体积足够小;同时,模型预测的好坏又取决于预训练模型质量的好坏。
小米深度学习组算法专家郭成凯在模型训练时技巧,在模型压缩方面的经验,以及在图形动画领域的优化方案,给我带来了更多启迪;集成当前主流的模型压缩与训练算法,结合超参数优化实现模型压缩与加速,针对移动端模型提出神经网络架构,可以极大地减少模型参数量。
图片分类及AR视频捕获,由于模型体积限制,加载到浏览器端耗时较长,目前在业务场景中使用还有一定障碍。
四. 展望
目前直接在浏览器端进行模型训练还存在计算能力障碍,特别是复杂模型;但是,随着JS引擎的计算能力不断增强,人工智能领域的不断发展,可以预见的是,在不久的将来,肯定能有一些简单的算法可以被移植到前端执行,这样既能减少请求,又能分担后端压力。这一切并不是无稽之谈,为什么tensorflow.js会应运而生( TensorFlow.js自动支持WebGL ),正是因为JS的社区在不断壮大,JS这款便捷的语言也在得到更为普遍的使用。在浏览器中完全由客户端运行的机器学习程序将会解锁新的机会,如交互式机器学习等。
提升用户体验,是我们每一个技术人员共同的追求;前后端技术交流融合必将是一种趋势,我们必将在提升用户体验的路上,学习新知识,实践好想法,探索更多的可能!
下期沙龙预告
以上所述就是小编给大家介绍的《58技术沙龙第十二期-前端与AI》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- V 社沙龙:云测技术交流沙龙 ppt 分析
- 视频 · 推荐算法技术沙龙 20190615
- 杭州第四届测试沙龙回顾
- 金色沙龙第二期落幕 纵览嘉宾精彩观点
- 视频 | 有赞技术 & Elastic线下沙龙(二)
- 活动邀请丨中国原创 CNCF 项目社区沙龙
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。