第二课:开发机器学习app前的准备工作

框架的选择

如上一节课所说,随着机器学习的发展,目前已经出现很多不错的学习框架,这里我们做个对比:

TensorFlow:深度学习最流行的库之一,它不仅便携、高效、可扩 展,还能在不同计算机上运行。小到智能手机,大到计算机集群。它是一款轻量级的软件,可以立刻生成你的训练模型,也能重新实现它;TensorFlow 拥抱创新,有强大的社区、企业支持, 因此它广泛用于从个人到企业、从初创公司到大公司等不同群体。

Caffe: 卷积神经网络框架,专注于卷积神经网络和图像处理,是用 C ++语言写成的。

Theano: 是一个用 Python编写的极其灵活的Python机器学习库,用它定义复杂的模型相当容易,因此它在研究中极其流行。

Torch: 是一个专注于GPU 实现的机器学习库,得到了几个大公司的研究团队的支持。

CNTK: 微软研究人员开发的用于深度神经网络和多GPU加速技术的完整开源工具包。

除了上面列举的框架外还有不少学习框架,这里就不一一列举,本课程的重点是选择其中一个框架,然后学习如何使用,就像第一节课讲的那样,我们按着先学会使用,再理解内部原理的路线去学习。

在本课程中选用 TensorFlow 作为进行机器学习的基础框架,至于为什么选择这个框架,这里做了一个总结:

可用性:TensorFlow 工作流程相对容易,API 稳定,兼容性好,并且 TensorFlow 与 Numpy 完美结合,这使大多数精通 Python 数据科学家很容易上手。与其他一些库不同,TensorFlow 不需要任何编译时间, 这允许你可以更快地迭代想法。在TensorFlow 之上已经建立了多个高级 API,例如Keras 和 SkFlow,这给用户使用TensorFlow 带来了极大的好处。

灵活性:TensorFlow 能够在各种类型的机器上运行,从超级计算机到嵌入式系统。它的分布式架构使大量数据集的模型训练不需要太多的时间。TensorFlow 可以同时在多个CPU,GPU 或者两者混合运行。

运行效率:自 TensorFlow 第一次发布以来,开发团队花费了大量的时间和努力 来改进TensorFlow 的大部分的实现代码。 随着越来越多的开发人员努力,TensorFlow 的效率不断提高。

支持:TensorFlow 由谷歌提供支持,谷歌投入了大量精力开发 TensorFlow,它希望 TensorFlow 成为机器学习研究人员和开发人员的通用语言。此外,谷歌在自己的日常工作中也使用 TensorFlow,并且持续对其提供支持,在 TensorFlow 周围形成了 一个强大的社区。谷歌已经在 TensorFlow 上发布了多个预先训练好的机器学习模型,他们可以自由使用。

模型的选择

框架选好后,接下来我们就要对模型进行选择了。可以在 TensorFlow Models 找到很多已经设计好的模型:

official 目录里面是正式发布的模型

research 目录里面是由谷歌的研究人员们写的模型

tutorials 目录里面是 TensorFlow 教程里面用到的模型

先说一下本课程中模型的定义,一个模型由两部分组成,第一部分是用于生成或者说训练模型的代码,包含如何提取和处理输入数据的特征,如何构建神经网络(如神经网络有几层)等;第二部分就是通过这个代码加上大量数据训练出来的模型二进制文件,叫做 Pre-trained model(这部分不是每一个模型都包含)。在本课程中,因为暂时不涉及到训练自己的模型(下一个系列课程会专门介绍如何训练自己的模型),所以只需要找到相应的模型的 Pre-trained model 就可以了。

使用Tensorflow Object Detection API来进行静态图片的物体识别,可以在Model Zoo里面找到我们需要的 Pre-trained model ,一共有 5 个。

第一列为 Pre-trained model 的名字,第二列为模型的识别速度,第三列为衡量识别效果的一个指标,越高越好,第三列为输出形式,都是输出识别物体的 Box(物体在图片中的位置,矩形框)。

接下来我们选择第一个 ssd_mobilenet_v1_coco 来完成功能,它的模型二进制文件最小,识别速度最快,识别率是最低的,但是对于我们的功能是足够了。请先下载下来备用。

平台的选择

大家都知道现在IT领域最火的两个技术,一个是人工智能,另外一个是物联网(IOT)。Android是大部分物联网设备未来的内在系统,而TensorFlow又是业内标准的训练框架,这两个系统的整合将会产生巨大的化学反应。本系列课程我们选择安卓平台进行手把手的学习。

为了能在 Android 上面加载准备好的 Model 二进制文件并 Inference(推理),还需要 TensorFlow 的 Android 接口库,在TensorFlow Android Inference Interface可以找到这个接口库的全部代码,这个接口库的二进制包是一个 Android 的 AAR 文件。一般有 3 种方法来获取这个 AAR 文件:

下载全部代码,从头开始编译

通过 JCenter Package 获取(在工程配置文件里面添加依赖 org.tensorflow:tensorflow-android)

从 Inference interface 的 CI 系统 获取最新的二进制包(nightly build)

Android环境的搭建

本课程使用 Android Studio 进行开发,相关配置如下:

Android Studio 3

Gradle 3.3

Compile SDK Version 25

Build Tool 26.02

总结

在本课时中,我们找到可以解决问题的模型并下载了相应的 Pre-trained model; 还下载了可以在 Android 上面运行 TensorFlow 并 Inference 的 TensorFlow Android 接口;最后还准备好了 Android 的开发环境。接下来的课程我们就准备开工了。

本文来自企鹅号 - 人人都是极客媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI研习社

深度学习预测比特币价格;基于神经网络的自动化前端开发 | Github 项目推荐

对于开发者来讲,证明其编程能力最好的方式是展示他们的项目和代码。AI 研习社本周从 YouTube、知乎以及 Github 官网上搜罗了数个与 AI 相关的开源...

45470
来自专栏ATYUN订阅号

NVIDIA发布最新数据增强库和图像解码库

由深度学习支持的计算机视觉应用包括复杂的多阶段预处理数据流水线,其中包括计算密集型步骤,如从磁盘加载和提取数据,解码,裁剪和调整大小,颜色和空间变换以及格式转换...

18550
来自专栏机器之心

教程 | 教Alexa看懂手语,不说话也能控制语音助手

数月前的某个夜晚,我躺在床上时,一个念头闪过我的脑海——「如果语音是计算接口的未来,那么那些听不见或看不见的人该怎么办?」我不知道究竟是什么触发了这个想法。我自...

40820
来自专栏ATYUN订阅号

2018年9月机器学习Github开源项目TOP 10

在此期间,我们将项目与新的或主要版本进行了比较。Mybridge AI根据各种因素对项目进行排名,以衡量专业人员的质量。

13330
来自专栏机器之心

业界 | Apache MXNet 发布 v0.11.0版,支持苹果Core ML和Keras v1.2

选自AWS 机器之心编译 参与:黄小天、路雪 近日,孵化于 Apache 软件基金会 Apache MXNet 发布了 v0.11.0 最终测试版本,它不仅具有...

332130
来自专栏AlgorithmDog的专栏

拖拽式机器学习的爱与恨

拖拽式机器学习是我想了很久的问题。 ? 1. 前世今生 拖拽式机器学习是,人们在界面上通过拖拽就是建立机器学习过程。拖拽式机器学习系统一...

40860
来自专栏AI科技大本营的专栏

手机也能直接玩机器学习了?来,让大神手把手教你

对于各种热门的机器学习、深度学习课程,你一定了解过不少了。 但上课之后,如何把学出来的这些新方法用在你的工作项目?如何让你的移动应用也能具备机器学习、深度学习...

45690
来自专栏IT大咖说

自主研发、不断总结经验,美团搜索推荐机器学习平台

内容来源:2018 年 5 月 26 日,美团点评技术专家杨一帆在“饿了么技术沙龙·第25弹【搜索推荐】”进行《Why WAI: 美团点评搜索推荐机器学习平台》...

37750
来自专栏量子位

Google发布tf.Transform,让数据预处理更简单

为了方便用户为机器学习进行数据预处理,Google今天发布了tf.Transform。 以下内容来自Google Research Blog,量子位编译 每当要...

45290
来自专栏AI科技评论

深度 | 基于移动设备的机器学习,本地与云端孰优孰劣?

AI科技评论按:如果您觉得,是时候给自己的手机应用添加一些热门的机器学习或深度学习算法.....这是个好想法!但您会怎么选择?致力于提供算法服务及小白科普的咨询...

35060

扫码关注云+社区

领取腾讯云代金券