现阶段 app 上使用的算法模型主要有两种模式:
Online 方式
首先在移动端做初步预处理,然后把数据传到服务器进行预测后返回移动端。
优点:部署相对简单,现成的框架(caffe,theano,mxnet,Torch) 做下封装就可以直接拿来用;使用服务器进行计算,性能强,能够处理比较大的模型
缺点:必须使用网络,而且展示效果依赖网速,不适合实时性要求高的应用。
Offline 方式
根据硬件的性能选择模型,在服务器训练得到模型,在手机上进行预测的过程。
优点:不需要使用网络,可以保护隐私
缺点:计算的性能、耗时等取决于移动端的性能,有些模型只能使用CPU,精度可能会有影响,无法进行类似云端的大规模分布式训练;移动端部署相对较麻烦,需要针对移动端进行优化;大模型耗费大量的资源(计算、内存、存储、电)。
offline的部署方法
主要分两个阶段,第一个阶段是训练并得到模型,第二个阶段则是在得到模型后,在移动端进行部署。本文主要讲解的为第二阶段。
训练模型
在第一阶段训练模型中,已经有很成熟的开源框架和算法进行实现,但是为了能部署到移动端,还需要进行压缩加速。
压缩网络
目前深度学习在各个领域轻松碾压传统算法,不过真正用到实际项目中却会有很大的问题:
- 计算量非常巨大;
- 模型占用很高内存;
由于移动端系统资源有限,而深度学习模型可能会高达几百M,因此很难将深度学习应用到移动端系统中去。
移动端部署
目前,很多公司都推出了开源的移动端深度学习框架,基本不支持训练,只支持前向推理。这些框架都是 offline 方式,它可确保用户数据的私有性,可不再依赖于因特网连接。
Caffe2
2017年4月19日 Facebook在F8开发者大会上推出Caffe2。项目是专门为手机定制的深度框架,是在caffe2 的基础上进行迁移的,目的就是让最普遍的智能设备——手机也能广泛高效地应用深度学习算法。
Caffe2 is a deep learning framework made with expression, speed, and modularity in mind. It is an experimental refactoring of Caffe, and allows a more flexible way to organize computation.
开源地址: https://github.com/caffe2/caffe2
TensorFlow Lite
2017年5月17日 Goole在I/O大会推出TensorFlow Lite,是专门为移动设备而优化的 TensorFlow 版本。TensorFlow Lite 具备以下三个重要功能:
轻量级(Lightweight):支持机器学习模型的推理在较小二进制数下进行,能快速初始化/启动
跨平台(Cross-platform):可以在许多不同的平台上运行,现在支持 Android 和 iOS
快速(Fast):针对移动设备进行了优化,包括大大减少了模型加载时间、支持硬件加速
模块如下:
TensorFlow Model: 存储在硬盘上已经训练好的 TensorFlow 模型
TensorFlow Lite Converter: 将模型转换为 TensorFlow Lite 文件格式的程序
TensorFlow Lite Model File: 基于 Flat