美文网首页
第二课:开发机器学习app前的准备工作

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

作者: 刘老实Peter | 来源:发表于2017-12-22 18:34 被阅读0次

框架的选择

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

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 的开发环境。接下来的课程我们就准备开工了,敬请关注公众号。

相关文章

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/ifuxgxtx.html