我为什么选择移动端深度学习
相对云端的处理方法,移动端深度学习至少有这样几点好处:
- 响应更快(不需要网络通信延迟)
- 节省流量(不需要上传数据)
- 可以实时处理视频(实时上传和处理视频不够快)
- 对开发者更便宜(不需要租用服务器)
不过,对我来说,最为重要的是,对移动平台最为熟悉,近十年都是在移动端上开发,所以选择移动端深度学习。
移动端深度学习发展
深度学习技术已经在互联网的诸多方向产生影响,每天科技新闻中关于深度学习和神经网络的讨论越来越多。深度学习技术在近两年飞速发展,各种互联网产品都争相应用深度学习技术,产品对深度学习的引入也将进一步影响人们的生活。
近两、三年以来,移动端SoC的处理能力有了很大的提交,可以有效运行实用化的深度学习算法了,在移动互联网产品应用深度学习和神经网络技术已经成为必然趋势。
几大主流移动端深度学习框架:
TensorflowLite:Google移动端的深度学习产品,是专门为移动设备而优化的 TensorFlow 版本,也就是说谷歌从一开始就设想将终端系统Android和TensorFlow做一个整合的产物。谷歌将持续提升 TensorFlow Lite 模型的性能,并开源更多模型。这些使用机器学习架构的模型(以及未来即将推出的模型)将被很多自然语言处理与计算机视觉应用所采用,嵌入到已有 APP 中,为终端设备带来智能。谷歌希望以此促进机器学习与自然语言处理社区持续发展,让技术解决更多问题。
Github 地址:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/lite
Core ML:苹果移动端的深度学习产品,完全聚集于在设备端本地进行深度学习推理的框架,,IOS11新增的人工智能编程框架,苹果定义了一个标准的模型格式(.mlmodel),提供了流行的框架模型到此格式的转换工具,这样就可以利用各个模型的训练阶段,模型训练好了之后,只要拖放到XCode中就可以使用,苹果甚至把接口的Swift代码都给你生成好了。
NCNN:腾讯移动端的深度学习产品,是一个为手机端极致优化的高性能神经网络前向计算框架。NCNN从设计之初深刻考虑手机端的部署和使用。无第三方依赖,跨平台,手机端CPU的速度快于目前所有已知的开源框架。
Github 地址:https://github.com/Tencent/ncnn
MDL:百度移动端的深度学习产品,是一个基于卷积神经网络实现的移动端框架,MDL在 IOS 和 Android 平台均可以稳定运行,其中IOS10及以上平台有基于 GPU 运算的 API,性能表现非常出色,在 Android 平台则是纯 CPU 运行。
GitHub 地址:https://github.com/baidu/mobile-deep-learning
要是这几个都会,在那深度端真的可以横着走。
移动端深度学习目标
现阶段 app 上使用的深度学习主要有两种模式:
- Online 方式:移动端做初步预处理,把数据传到服务器执行深度学习模型,优点是这个方式部署相对简单,现成的框架(caffe,theano,mxnet,Torch) 做下封装就可以直接拿来用,服务器性能大, 能够处理比较大的模型,缺点是必须联网。
- Offline 方式:在服务器进行训练的过程,在手机上进行预测的过程。
现在的移动端的框架所要做的就是Offline方式,它可确保用户数据的私有性,可不再依赖于因特网连接。
要实现机器深度学习,其实是分了两个阶段的,第一个阶段是训练并得到模型,第二个阶段则是在得到模型后,实际应用它。成熟的平台,做到后面,移动端工程师要解决的是最后一个环节,不需要掌握过于复杂的数学和算法知识,只需了解一些神经网络方面的内容,将科学家们已经训练好的模型放到手机上使用就可以了。
AI最终要想落地,都会往移动端上靠;所以对于移动端开发的人,只要努力到处都是机会。