新闻资讯
【前端智能系列】纯前端(TF.js)实现扫五福功能
据了解支付宝客户端的扫五福模型是跑在native引擎中,而我们的五福模型是跑在tensorflowjs(以下简称为tfjs)平台上,理论上可以运行在任何端中(包括浏览器)。可以看到,在模型的识别速度上和支付宝客户端的扫五福是差不多的。
下面我将为各位看官老爷们一步步地介绍下我们的五福模型从训练到浏览器端的部署是如何实现的。
首先简单介绍下我们的模型概况
体积
最终压缩后的体积在400kb左右,极限压缩在200kb左右(会损失一点模型性能)。
性能
在测试集上的准确率为95+%,召回率为92+%
速度
在mac上的性能在30fps左右;
安卓高端机性能在15~20fps左右;
更加详细的性能测试会在后面给出;
什么是tfjs?
TensorFlow.js是通过WebGL加速、基于浏览器的机器学习js框架。通过tensorflow.js,我们可以在浏览器中开发机器学习、运行现有的模型或者重新训练现有的模型。这里是官方网站
什么是tfjs模型同构?
同构这个词可以类比于SSR的同构渲染,即服务端和客户端渲染使用的是同一套框架及代码。那么顾名思义,tfjs模型同构是指模型的训练和模型的端上推理用的也是同一套框架及代码。即,使用tfjs在服务端离线训练,在客户端用tfjs部署模型。
为什么要用tfjs训练模型?
没有为什么。。。仅仅是想证明tfjs有训练模型的能力而已,真正的生产环境还是建议用tensorflow for py去训练好了,原因不再赘述。
模型的原理
实际上我们的五福模型原理较为简单,就是一个二分类模型,“是福字”or”不是福字“。使用的卷积网络为MobileNet,具体什么是MobileNet,请看这里。
训练过程
我从网络上收集了3800张与福字相关的图片,其中有大约1200张左右的福字图片,我们6个人花了大约半个小时左右。为了加快我们的训练速度,我选择了直接拿一个在ImageNet数据集上预训练模型进行迁移学习,在
这时候我们得到的模型大小为4mb左右,做为需要在端上部署的模型,这个体积是无法接受的。好吧,排查原因:我们发现
最终我们的模型长这样:
部署过程
部署过程较为简单,将我们的模型文件(model.json、weights.bin)上传到cdn,在客户端通过tfjs将模型load到内存中,就能愉快地进行五福识别了~
作者:蚂蚁金服_AITeam
链接:https://juejin.im/post/5e3766db5188254e1b0c7062
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
回复列表