编者按: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),希望让不太懂机器学习专业知识的人也能享受到机器学习的益处。以下为雷锋网编译。(此前雷锋网报道过的文章,详情请点击查看)如何用TensorFlow搭建图像识别系统

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

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

第一步:安装Docker

为什么需要Docker呢?

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

安装完成后是这样的:

第二步:安装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的图形再训练案例()。详情请点击这里

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

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

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

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

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

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

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

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

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

第六步:更新代码

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

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

2.抽取最新资源:

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

第七步:编制代码

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

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

第八步:运行代码

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

接下来会出现下载初始模型的信息,然后是一长串创造瓶颈( 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 ++集成到你的产品中,它甚至可以再移动设备上运行。想在智能手机上运行,请查看。Android示例代码

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

via:

oreilly

更多类似教程,请在雷锋网站内搜索关键词“机器学习教程”、“TensorFlow”等~

python训练手势分类器_机器学习零基础?手把手教你用TensorFlow搭建图像分类器|干货...相关推荐

  1. java 注册探探账号_零基础手把手教你开发探探类社交软件Tinder

    原标题:零基础手把手教你开发探探类社交软件Tinder 目录介绍 1.关于项目App整体架构 1.1项目整体架构 1.1.1 目前项目使用架构 1.1.2 目前常见的架构 1.1.3 MVP架构优点及 ...

  2. 学习python一开始枯燥_编程零基础应当怎样开始学python?他说,看这三个经典方法...

    很多时候,想就是不如做. 与其想着怎样开始学python,不如赶紧找份python教程先看起来! 当然,这只是告诉你,想不如开始做! 下面,我针对python初学介绍一下可以借鉴的方法! 1.看书 这 ...

  3. python的def语句_【零基础学Python】def语句,参数和None值

    像之前的print().input()和len()功能,Python提供了一些类似的内置函数,另外也可以自己编写自定义函数. 示例: def hello(): print('Howdy!') prin ...

  4. 零基础学python尹会生_编程零基础应当如何开始学习 Python?

    这是一篇小白自学Python的经验,针对没有任何经验.从零开始学习Python的童鞋,不管你是出于兴趣,还是想提升工作效率,或者想要转行,都可以作为一个参考. 作为过来人,先分享几点建议给你: 1.找 ...

  5. 机器学习零基础?手把手教你用TensorFlow搭建图像识别系统

    [转] http://www.leiphone.com/news/201701/Y4uyEktkkwb5YhJM.html http://www.leiphone.com/news/201701/2t ...

  6. python量化交易课程_从零基础到入门,Python量化投资实战线下班开课啦

    Python量化投资实战线下班在大家的期待下开课啦!允许小编简单的介绍下Python量化投资实战课程. 一.课程内容: 1.量化投资基础 主要涵盖了量化领域的必备知识:包括:基本面分析.技术分析.数量 ...

  7. python怎么开始编程_编程零基础应当如何开始学习 Python?

    这是一篇介绍Python如何入门的文章,对于没有任何编程经验甚至不懂电脑的新手都是非常实用的.会从计算机的使用开始讲解,中间搭配一些经典的针对知识点的练习,最终大家都可以用Python开发出一个小游戏 ...

  8. python打字机效果_零基础手把手教你用Python做一个怀旧打字机

    忙碌的生活和飞速发展的科技正改变着人们的阅读习惯,为了"增加效率",文章只看标题,视频10秒刷走.是不是有这么一种感觉,一个小时内看遍世间繁华

  9. 零基础手把手教你写NFT抢购软

    前言 由于之前写过几篇文章,但是个人不是很满意,所以这次我打算把所有的知识汇总成一篇文章.可能会有很多地方写的不是很好,欢迎大家评论指出,我后续修正. 个人vx:http://wc.ljlju.cn/ ...

最新文章

  1. CentOS 6.2 下samba 服务的配置
  2. es6 Module语法
  3. 游戏UI设计(1.2)--Textures Sprite之封装
  4. java订单编号生产代码,java 订单编号 生成器,可用于生产环境
  5. centos6.4 源码安装mysql5.5
  6. Codeforces 722C. Destroying Array
  7. OpenStack不行了吗?悉尼峰会,OpenStack的白城反击战?
  8. Stanford公开课《编译原理》学习笔记(1~4课)
  9. yjk只算弹性的不计算弹塑性_盈建科弹塑性分析
  10. 算法笔记_096:蓝桥杯练习 算法提高 求最大值(Java)
  11. c 语言编写脚本优化,两周自制脚本语言-第11天 优化变量读写性能
  12. codeforce 460B Little Dima and Equation
  13. JavaScript 变量声明提前
  14. android 音量调节流程分析,Android 4.4 音量调节流程分析(二)
  15. md5加盐(MySQL,PHP)
  16. 关于Redis数据库
  17. 【计算机毕业设计】528口腔管家平台
  18. 异步FIFO设计:各个模块的作用及Verilog代码详解
  19. 【论文学习】5、基于OFDM无线局域网的载波频偏估计
  20. pycharm社区版跟专业版有什么区别

热门文章

  1. 影响 oracle 性能的常见事件
  2. css3修改透明png颜色
  3. MS SQLSERVER中如何快速获取表的记录总数
  4. 哪里有mysql认证_国内哪个城市可以考mysql认证
  5. java == 如何避免空指针异常
  6. Mysql中int(M)的含义
  7. dos安装深度linux,U盘用grub4dos引导Deepin v20 Beta iso安装的方法
  8. linux-2.6.38 input子系统(用输入子系统实现按键操作)
  9. SQL PROMPT5.3.4.1的一些设置选项
  10. discuz 标签详解