TensorFlow助力微信小程序,来自谷歌开发者大会上的商用案例

前段时间一直在研究微信小程序中的 TensorFlow.js 开发,并开发了若干示例小程序,详情请查看之前的文章:

  1. 重磅好消息!TensorFlow开始支持微信小程序

  2. 当微信小程序遇上TensorFlow - tensorflow.js篇

  3. 当微信小程序遇上TensorFlow - 本地缓存模型

  4. 当微信小程序遇上TensorFlow - 官方文档

然而,随着研究的深入,越来越觉得微信小程序的限制太多,让我开始怀疑在微信小程序中加入 TensorFlow 能否达到产品级需求。就拿微信小程序有 2M 的大小限制来说,就是一大难题, TensorFlow 的js文件就有几百K,而一个精简的图片分类模型 MobileNet ,就有 1M 多,再加上本身的业务逻辑 js 和图片文件,很难将小程序控制在 2M 以内。如果每次从网络加载模型,倒没有大小限制,但这又背离了在微信小程序中使用 TensorFlow.js 的初衷。

这个问题一直困扰了很久,直到前几天放假观看了谷歌开发者大会2019年上海的视频。在一场以 TensorFlow.js 为主题的演讲中,介绍了一款结合了AR的虚拟试妆微信小程序,采用了 TensorFlow.js 框架。

先观看一下节选视频:

TensorFlow.js演讲节选视频 - 微信小程序

因为我找到的是官方提供的回看视频,没有同步放上PPT的内容。爱奇艺上的直播回放视频,将演讲和PPT同步放到一起,看起来更方便,有兴趣的同学可以上爱奇艺,搜索 谷歌开发者大会 ,找出 2019Google开发者大会-11日下午 的视频(这是一个直播合集)即可。

这是一款来自 ModiFace 团队开发的虚拟试妆微信小程序,因为结合了 AR 技术,可以实时观察上妆效果,这无疑是一个非常有前景的领域。而要将这些技术运用到微信小程序,同样面临着如下挑战:

面对挑战,ModiFace开发团队给出了解决方案:

  1. 微信小程序支持 WebGL ,有了 WebGL,TensorFlow.js的推导速度比单纯用 CPU 最多可以快上 10 倍。现在的智能手机,基本上都带有 GPU ,所以这个前提条件可以满足。

  2. 传统的面部特征提取技术,结合 CNN,可以减少模型复杂度,从而降低模型的大小。在深度学习领域,通常采取端到端的机器学习,让模型自行提取特征,这固然可以简化开发,但也带来了模型复杂的问题。

  3. 就拿Inception V3、ResNet等模型,大小高达几十M到上百M,并不适用于端侧的机器学习。

  4. 针对 TensorFlow.js 支持的算子(op)有限的问题,开发者团队通过少量修改 TensorFlow.js 源码,加入自定义的算子支持。

    最终效果如何呢?下面是ModiFace团队给出的答案:

这款微信小程序已经上线,不过藏的比较深,名字叫做 阿玛尼美妆官方精品商城 ,点击下面的小程序即可进入:

我简单的试用了一下,目前只支持 唇膏 的实时试妆,效果算不上完美,也不算非常流畅,不过还能接受。

自从进入机器学习领域,所看的教程、书籍,大多数都是以图片分类作为例子。图片分类是机器学习的经典应用,但我们应该认识到,还有许多应用场景,机器学习在许多领域大有可为。在TensorFlow.js的主题演讲中,谷歌的开发工程师给我们提供更多的应用场景:

最后附上TensorFlow.js主题演讲的完整视频,如果你是一名前端开发工程师,可能会对此感兴趣:

我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章