当前位置 博文首页 > 技术杂谈:TensorFlow on Android:物体识别
[运营专题]零预算引爆个人和企业品牌【原文链接】
Selenium 自动化测试从零实战【原文链接】
原来这样做,才能向架构师靠近【原文链接】
Cordova App 打包全揭秘【原文链接】
TensorFlow on Android:物体识别【原文链接】
图解敏捷教练和 ScrumMaster【原文链接】
说在前面:达人课是GitChat的一款轻阅读产品,由特约讲师独家发布。每一个课程你都可获得6-12篇的深度文章,同时可在读者圈与讲师互动交流。GitChat达人课,让技术分享更简单。进入我的GitChat
付强,十余年从业经验,从 C 语言到 Web 开发,从微服务架构到移动端开发,涉猎范围很广。曾就职于趋势科技、诺基亚,在德国和硅谷的 Startups 工作过,现在从事物联网方向的创业。
本课程讲解如何在 Android 上面运行 TensorFlow,并利用基于 TensorFlow 的 Object Detection API 来实现一个可以识别静态图片中的物体的应用,并通过该过程让没有任何机器学习基础的读者了解机器学习在移动端的使用场景和流程,包括如何加载模型、如何准备输入数据、如何解析推理结果。完成本课程以后,还可以学习其他应用的课程。查看原文
深度学习、神经网络、人工智能应该是当下最火爆的字眼了,随着 AlphaGo 的一炮走红,仿佛人人都谈论着人工智能,说话不带 DL、CNN 这些字眼的就落伍了。
各大巨头也纷纷在 AI 领域布局,目前比较流行的深度学习框架有:
当大家还在讨论人工智能、机器学习前景的时候,有几件有趣的事情发生了:
等一下,读者可能会感觉到有个问题:什么, 在移动端进行机器学习?机器学习不是应该需要海量的数据和计算资源吗(CPU/GPU)?移动设备的存储和计算能力能满足要求吗?在回答这个问题之前,来看看下面这一个场景:你需要完成一个人脸检测的 App 应用,但是你们公司没有机器学习的专家,怎么办?
当然,这个难不倒大家,在这个时代最不缺的就是轮子了,各大平台都有开放的 API 共大家调用,比如:
使用开放的 API 有很多优点,比如:
但是也有明显的缺点:
现在让我们换一种思路来解决这个问题,以目前移动设备的存储和计算能力,是不可能实现在移动端进行模型训练的,当然也没有这个必要。 但是如果在服务端利用海量的数据和计算资源训练好模型,然后将训练好的模型部署到移动端,只利用移动端的计算能力来进行推理(Inference,记住这个术语,当和机器学习专家讨论的时候用到这个词,他们就会认为你是懂行的),可行吗?
答案是当然可行了, 而且随着移动端计算能力的提升,这个将是机器学习在移动端落地的趋势,这也是各大巨头正在做的事情。
坦白地说,机器学习的学习曲线是比较陡的,首先需要有一些编程知识和线性代数的基础;然后要学习一些算法并推导它们,SVM、线性回归、聚类算法等,学会如何评估学习结果、学会梯度下降的推导、学会各种提取特征的方法、PCA等;接着再去学习神经网络的概念、学会各种网络、如卷积神经网络等;开始准备数据,训练你自己的模型,最后再调上非常长时间的各种参数….
机器学习是一个工具,一个可以用来解决现实问题的工具。如果想成为一个机器学习专家/科学家,上面的过程是必须的,因为你要成为一个制作工具的人。 但是等等,假设只是一个想使用机器学习这个工具来解决现实问题的普通工程师,该怎么办?
回想一下当时是怎么从零学会 Web 编程的:
选一个框架,如 SSH、Rails、Django 等,照着模板依葫芦画瓢做一个项目;
有了整体的概念以后再去优化一下代码,学会一些 best practice;
研究框架,如读读实现代码;
研究 HTTP 协议,寻找可以调优的地方;
尝试写一个框架或者插件;
最后成为 Web 编程的专家。
本课程正是遵循上述的流程,首先我们提一个现实问题,然后用开源的框架和模型来解决它,在这个过程中会了解机器学习的一些基本概念和流程(这样就可以在喝咖啡的时候和机器学习专家谈笑风声了),然后学会如何使用这种工具。在本系列课程的后面,还将学习如何从头训练一个属于你的独一无二的模型,将学习如何优化这个工具。最后再倒过头来去研究和推导神经网络的算法,剩下的就看你的了!
先看一张图:
这个监控是不是很厉害?但是它的实现原理很简单的(过程依然很复杂):
接下来我们就撸起袖子开始吧~
第01课:机器学习在移动应用现状
第02课:选择工具和资源
第03课:Demo 展示和准备工作
第04课:输入数据预处理和 Inference
第05课:可视化推理结果
第06课:看起来像个机器学习专家