TensorFlow图像分类教程

2017 年 12 月 29 日 机器学习研究会

云栖君导读:深度学习算法与计算机硬件性能的发展,使研究人员和企业在图像识别、语音识别、推荐引擎和机器翻译等领域取得了巨大的进步。六年前,视觉模式识别领域取得了第一个超凡的成果。两年前,Google大脑团队开发了TensorFlow,并将深度学习巧妙的应用于各个领域。现在,TensorFlow则超越了很多用于深度学习的复杂工具。


利用TensorFlow,你可以获得具有强大能力的复杂功能,其强大的基石来自于TensorFlow的易用性。


在这个由两部分组成的系列中,我将讲述如何快速的创建一个应用于图像识别的卷积神经网络。


TensorFlow计算步骤是并行的,可对其配置进行逐帧视频分析,也可对其扩展进行时间感知视频分析。


本系列文章直接切入关键的部分,只需要对命令行和Python有最基本的了解,就可以在家快速地创建一些令你激动不已的项目。本文不会深入探讨TensorFlow的工作原理,如果你想了解更多,我会提供大量额外的参考资料。本系列所有的库和工具都是免费开源的软件。


工作原理


本教程旨在把一个事先被放到训练过的类别里的图片,通过运行一个命令以识别该图像具体属于哪个类别。步骤如下图所示:



  • 标注:管理训练数据。例如花卉,将雏菊的图像放到“雏菊”目录下,将玫瑰放到“玫瑰”目录下等等,将尽可能多的不同种类的花朵按照类别不同放在不同的目录下。如果我们不标注“蕨类植物”,那么分类器永远也不会返回“蕨类植物”。这需要每个类型的很多样本,因此这一步很重要,并且很耗时。(本文使用预先标记好的数据以提高效率)


  • 训练:将标记好的数据(图像)提供给模型。有一个工具将随机抓取一批图像,使用模型猜测每种花的类型,测试猜测的准确性,重复执行,直到使用了大部分训练数据为止。最后一批未被使用的图像用于计算该训练模型的准确性。


  • 分类:在新的图像上使用模型。例如,输入:IMG207.JPG,输出:雏菊。这个步骤快速简单,且衡量的代价小。


训练和分类


本教程将训练一个用于识别不同类型花朵的图像分类器。深度学习需要大量的训练数据,因此,我们需要大量已分类的花朵图像。值得庆幸的是,另外一个模型在图像收集和分类这方面做得非常出色,所以我们使用这个带有脚本的已分类数据集,它有现成且完全训练过的图像分类模型,重新训练模型的最后几层以达到我们想要的结果,这种技术称为迁移学习。


我们重新训练的模型是Inception v3,最初是在2015年12月发表的论文“重新思考计算机视觉的Inception架构”中有做论述。


直到我们做了这个约20分钟的训练,Inception才知道如何识别雏菊和郁金香,这就是深度学习中的“学习”部分。


安装


首先,在所选的平台上安装Docker。


在很多TensorFlow教程中最先且唯一依赖的就是Docker(应该表明这是个合理的开始)。我也更喜欢这种安装TensorFlow的方法,因为不需要安装一系列的依赖项,这可以保持主机(笔记本或桌面)比较干净。


Bootstrap TensorFlow


安装Docker后,我们准备启动一个训练和分类的TensorFlow容器。在硬盘上创建一个2GB空闲空间的工作目录,创建一个名为local的子目录,并记录完整路径。


docker run -v /path/to/local:/notebooks/local --rm -it --name tensorflow 
tensorflow/tensorflow:nightly /bin/bash


下面是命令解析:


-v /path/to/local:/notebooks/local将刚创建的local目录挂载到容器中适当的位置。如果使用RHEL、Fedora或其他支持SELinux的系统,添加:Z允许容器访问目录。


--rm 退出时令docker删除容器


-it 连接输入输出,实现交互。


--name tensorflow将容器命名为tensorflow,而不是sneaky_chowderhead或任何Docker定义的随机名字。


tensorflow/tensorflow:nightly从Docker Hub (公共图像存储库)运行tensorflow/tensorflow的nightly 图像,而不是最新的图像(默认为最近建立/可用图像)。使用nightly图像而不是latest图像,是因为(在写入时)latest包含的一个bug会破坏TensorBoard,这是我们稍后需要的一个数据可视化工具。


/bin/bash指定运行Bash shell,而不运行系统默认命令。


转自:云栖社区


完整内容请点击“阅读原文”

登录查看更多
33

相关内容

Google发布的第二代深度学习系统TensorFlow
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
【牛津大学&DeepMind】自监督学习教程,141页ppt
专知会员服务
179+阅读 · 2020年5月29日
基于小样本学习的图像分类技术综述
专知会员服务
148+阅读 · 2020年5月6日
零样本图像识别综述论文
专知会员服务
57+阅读 · 2020年4月4日
零样本图像分类综述 : 十年进展
专知会员服务
126+阅读 · 2019年11月16日
深度学习算法与架构回顾
专知会员服务
81+阅读 · 2019年10月20日
【教程】TensorFlow2 最新迁移学习教程和实战
基于TensorFlow和Keras的图像识别
Python程序员
16+阅读 · 2019年6月24日
盘点图像分类的窍门
AI研习社
6+阅读 · 2019年2月9日
浅显易懂的分布式TensorFlow入门教程
专知
7+阅读 · 2018年6月22日
一个小例子带你轻松Keras图像分类入门
云栖社区
4+阅读 · 2018年1月24日
TensorFlow神经网络教程
Python程序员
4+阅读 · 2017年12月4日
TensorFlow实现神经网络入门篇
机器学习研究会
10+阅读 · 2017年11月19日
手把手教TensorFlow(附代码)
深度学习世界
15+阅读 · 2017年10月17日
Reasoning on Knowledge Graphs with Debate Dynamics
Arxiv
14+阅读 · 2020年1月2日
Arxiv
7+阅读 · 2019年10月6日
Domain Representation for Knowledge Graph Embedding
Arxiv
14+阅读 · 2019年9月11日
Arxiv
4+阅读 · 2018年3月30日
Arxiv
4+阅读 · 2018年1月19日
VIP会员
相关VIP内容
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
【牛津大学&DeepMind】自监督学习教程,141页ppt
专知会员服务
179+阅读 · 2020年5月29日
基于小样本学习的图像分类技术综述
专知会员服务
148+阅读 · 2020年5月6日
零样本图像识别综述论文
专知会员服务
57+阅读 · 2020年4月4日
零样本图像分类综述 : 十年进展
专知会员服务
126+阅读 · 2019年11月16日
深度学习算法与架构回顾
专知会员服务
81+阅读 · 2019年10月20日
相关资讯
【教程】TensorFlow2 最新迁移学习教程和实战
基于TensorFlow和Keras的图像识别
Python程序员
16+阅读 · 2019年6月24日
盘点图像分类的窍门
AI研习社
6+阅读 · 2019年2月9日
浅显易懂的分布式TensorFlow入门教程
专知
7+阅读 · 2018年6月22日
一个小例子带你轻松Keras图像分类入门
云栖社区
4+阅读 · 2018年1月24日
TensorFlow神经网络教程
Python程序员
4+阅读 · 2017年12月4日
TensorFlow实现神经网络入门篇
机器学习研究会
10+阅读 · 2017年11月19日
手把手教TensorFlow(附代码)
深度学习世界
15+阅读 · 2017年10月17日
Top
微信扫码咨询专知VIP会员