开发 | 机器学习零基础?手把手教你用TensorFlow搭建图像分类器

AI科技评论按:Pete Warden是TensorFlow移动团队的技术负责人。曾在Jetpac担任首次技术官。Jetpac的深度学习技术经过优化,可在移动和嵌入式设备上运行。该公司已于2014年被谷歌收购。Pete还曾在苹果公司从事GPU优化领域的图像处理工作,并为O'Reilly撰写多本数据处理方面的书籍。本文为Pete Warden为一般大众撰写的“如何用TensorFlow构建图片分类器”(TensorFlow for poets,How to build your own image classifier with no coding),希望让不太懂机器学习专业知识的人也能享受到机器学习的益处。以下为AI科技评论编译。

刚开始着手研究深度学习时,我发现在这个领域真是难起步。可供参考的资料没有多少,就算有,也只有那些很懂行的学术研究员们才能看得懂。不过幸好,随着过去这几年指导深度学习的资料越来越多,入门已经不像过去那么高不可攀了。

我一直觉得,把EC2设计成连诗人也会用的形式,很不错。它让用户一步步利用基本的计算机知识,通过在平台上搭建一个简单的应用,以省去那些又难懂、又没必要的过程。不过到目前为止,我还没看到一个同样有大众化用户群体的深度学习平台。为此,我向大家展示了如何在不会电脑编程的情况下,用TensorFlow搭建一个属于自己图片分类器。以下是具体步骤(相关Youtube视频请进入链接 https://www.youtube.com/watch?v=h7xuEiZjqqo&feature=youtu.be):

第一步:安装Docker

为什么需要Docker呢?

让TensorFlow在OS X 上进行本地化运行应该是没什么问题。但是像Python这样的开发工具,安装时的标准化程度就没那么高,给出的指令不能统一适用。为了方便起见,我使用的是免费版Docker应用容器引擎,以便在 MacBook Pro.上安装Linux虚拟机( virtual machine)。Docker下载地址请见链接:https://docs.docker.com/engine/getstarted/step_one/。

安装完成后是这样的:

第二步:安装TensorFlow

安装并运行了Docker以后,我们可以得到一个预装TensorFlow的Linux虚拟机。然后:

1.下载能在Docker上应用的TensorFlow(下载地址:https://www.tensorflow.org/get_started/os_setup#docker-installation)

2.在终端机(treminal)上用下列指令使它能够正常运行(此过程下载和提取内容较多,可能会比较耗时):

3.下载完成后,你会看到一个新的终端机,也就是你已经下载好的Linux 虚拟机。点击下述指令,确保安装成功。

4.现在,你能看到一系列目录,包括TensorFlow目录,***.build文件和其他,如下图所示:

第三步:优化Docker

Docker通常被用来测试网页应用。在运行这个功能时,计算性能无关紧要,所以虚拟机中处理器的运行速度不算快。但是在构建图片分类器这个案例中,计算机需要处理大量运算,因此,在这里我们必须优化一下Docker的计算速度。

Docker 内部使用VirtualBox驱动,所以,我们将用VirtualBox 的控制面板来管理设置。方法如下:

1.在你的Mac上找到VirtualBox应用并打开它,你会在面板左侧看到虚拟机。现在它应该处于default(系统默认值)。

2.右键点击“default”,在出现的菜单选择Close->ACPI Shutdown

3.关闭完成后,“default”下方会出现“Powered off”,再次点击右键,在出现的菜单中选择“Settings”。

4. 点击“System”图标,然后选择“Motherboard”选项卡。

5. 拖动“Base Memory”滑块到绿色部分。一般让它占笔记本电脑总内存的75%左右。我把它设置为12GB,我的电脑是16GB的。

6.点击“Processor”,把处理器数量设置为大于1。通常,在MacBook Pro上设置4比较好,不过用滑块下的绿色条作为参考也可以。

7.点击设置对话框上的“OK”,右键点击 “default”,选择“Start->Headless Start”。

8.再次运行下列指令:

完成这一系列的操作后,虚拟机就可以借助计算机的计算能力,加快运转速度啦!

第四步:下载图片

下面的步骤则基于TensorFlow的图形再训练案例(详情链接:https://www.tensorflow.org/versions/master/how_tos/image_retraining/)。

它展示了如何把你的图片分到不同目录的文件夹下,并再用它快速训练起始图片识别神经网络的顶层,以识别这些目录。

1.接下来,你需要得到一些案例照片。进入终端机中,如果你仍看到“root@…”提示,那么这说明你仍处在Linux虚拟机环境下。那么,你需要点击“exit”,退出虚拟机。

2.运行以下命令,在Downloads 目录中创建一个新文件夹以保存训练图像,并下载、提取花朵照片:

3.完成之后,你会看到一个新的窗口,如下所示:

这表明你已经成功下载花朵的案例图片。另外,你还可以在文件里换上其他种类的花或照片,然后把文件名改成对应名称。

第五步:在虚拟机上运行文件夹

1.有了可供训练的照片之后,你就可以在Linux上使用文件夹里使用它们了,以便把照片放到TensorFlow上:

2.出现一个Linux提示。为确保文件夹正常在虚拟机上共享,尝试下列指令:

3.生成花朵文件夹列表,如下:

第六步:更新代码

本案例需要使用到最新的代码,并且以下会涉及到源代码控制程序git。

1.抽取代码需要一个默认邮箱地址:

2.抽取最新资源:

3.现在,你应该已经处在vim窗口下。点击“quit”离开。完成之后你就做的了最新的版本的代码。接下来,将它同步到一个可运行的版本中,运行下列命令:

第七步:编制代码

这一步的任务是编制代码。在指令中,你会发现有一些优化标记,它可以用AVX加快处理器的运行:

编制代码可能会持续5-10分钟,此过程可能会弹出很多警告。不过不要担心,这是正常现象。

第八步:运行代码

运行以下命令可运行重训练程序:

接下来会出现下载初始模型的信息,然后是一长串创造瓶颈( bottlenecks)的信息。如果你想知道后台具体是怎么运行的,可以点击https://www.tensorflow.org/versions/master/how_tos/image_retraining/#bottlenecks。

我已经把default /tmp 目标改成了输出图像和shared /tf_files 中的已缓存瓶颈,这样从OS X中也可以获得最后结果,并保存在不同的虚拟机中。

瓶颈缓存完成后,就进入到照片训练过程。这可能要花费5min左右的时间。最后的输出线路精确值应该在90%左右,也就是说,如果有10张照片的话,你的图片分类器能把其中9张正确分类到其对应的文件夹中。

第九步:使用图片分类器

经过分类的图片被放在/tmp/output_graph.pb中。将它进行一下测试,那么你可以得到另外一份样本代码。label_image示例是一个小C ++程序,它可以加载图形并将其应用于用户提供的图像中。可以试试下面步骤:

你会看到它已经能分辨出一张雏菊的照片了。因为训练过程是随机进行的,所以你的模型可能有时会出错,你可以再尝试一些其他图片,看看它的成绩如何。

大功告成

是不是已经迫不及待想让它在你的应用里运行了呢?很简单,只需在 Downloads/tf_images 目录下创建一个新的文件夹,把你想训练的图片放在子文件夹里,然后重新运行分类器。

现在,在应用里运行它吧!把label_image示例作为模板,可以很清楚的看到是否可以将C ++集成到你的产品中,它甚至可以再移动设备上运行。

最后我希望本教程能够激发你的灵感,让你能够多思考怎样利用深度学习帮助用户获得更好的体验。感谢观看~

Via Oreily

原文发布于微信公众号 - AI科技评论(aitechtalk)

原文发表时间:2017-02-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏漫漫全栈路

Xamarin-C#开发移动App-环境搭建

好吧,正确的翻译是,低头前行,永不满足!

1878
来自专栏xingoo, 一个梦想做发明家的程序员

Windows下TensorFlow安装指南(图文版)

随着深度学习概念火起来,TensorFlow也跟着成为业界流行的深度学习框架。它采用CPU+GPU的并行计算模式,使得神经网络可以有效的并行计算,从以前的三层...

2105
来自专栏AI科技评论

开发 | 百度开源移动端深度学习框架MDL,可在苹果安卓系统自由切换

AI科技评论消息,日前,百度在 GitHub 上开源了移动端深度学习框架 mobile-deep-learning(MDL)的全部代码以及脚本,这项研究旨在让卷...

25711
来自专栏小白课代表

matlab 2017b

MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式...

1124
来自专栏小詹同学

深度学习入门笔记系列 ( 一 )

本系列将分为 8 篇 。今天是第一篇 ,工欲善其事必先利其器 ,先简单讲讲当前的主流深度学习框架 TensorFlow 及其安装方法 。

762
来自专栏数说工作室

Python &R 代码 对照速查表

推荐一篇文章,文中将常用机器学习算法的Python和R代码对照整理成一个表,方便查找和对比学习,原文还有PDF的下载。 (版权归原作者所有,点击文末阅读原文查看...

3606
来自专栏IT派

从零开始:手把手教你安装深度学习操作系统、驱动和各种python库!

为了研究强化学习,最近购置了一台基于 Ubuntu 和英伟达 GPU 的深度学习机器。尽管目前在网络中能找到一些环境部署指南,但目前仍然没有全面的安装说明。另外...

3568
来自专栏小白课代表

学术党!EndNote 8.2 文献管理软件 中文汉化版 安装教程

985
来自专栏贾志刚-OpenCV学堂

OpenCV 3.4发布啦!

OpenCV 3.4发布啦! ? OpenCV 3.4在2017年12月23日正式发布啦,感觉发布的速度越来越快,距离上次OpenCV 3.3仅仅不到四个月的时...

3236
来自专栏人工智能LeadAI

用python编写一个本地论文管理器

介绍和引入 最近初学NLP相关的深度学习,下了很多论文,数量一多,发现论文管理是个问题。 首先论文数目一多,必须要按类别放到子文件夹下。但是某一篇论文,往往有...

3389

扫描关注云+社区