迁移学习:如何使用TensorFlow对图像进行分类
导言
在机器学习环境中,迁移学习是一种技术,使我们能够重用已经训练的模型并将其用于另一个任务。图像分类是将图像作为输入并为其分配具有概率的类(通常是标签)的过程。这个过程使用深度学习模型,即深度神经网络,或卷积神经网络(CNN)。CNN由多个层组成,这些层中的每一个都负责学习和识别特定特征。下层可以识别边缘等。最终确定图像类别。
本文将逐步介绍如何使用TensorFlow进行迁移学习。
安装TensorFlow
第一步,是配置本文使用的环境。有几种方法可以开始使用TensorFlow,最简答快速的方法是使用Docker:
安装完docker后,即可安装TensorFlow。可以使用docker hub下载TensorFlow。
选择适合你的版本。在本文中,我们使用的是1.12.0版本。devel发行版添加了一些其他功能,我们将在本文的后面使用它们。要安装TensorFlow docker镜像,请键入:
docker pull tensorflow/tensorflow:devel-1.12.0
等待安装完成,这样我们就具备的所需要的环境。
图像数据集
安装TensorFlow后,可以选择我们想要用来训练模型的数据集。有几个图像数据集可用。有趣的是,即使更改了图像数据集,也可以使用相同的操作步骤。要创建TensorFlow模型,我们将使用猫的图像数据集。用于训练机器学习模型和应用迁移学习的完美图像数据集。让我们下载图像数据集并解压缩。
创建目录图像结构
为了应用迁移学习,需要根据猫的品种对图像进行分组。让我们创建一个名为tensor的新目录,并在此目录下建一个新目录cat-images。图像结构应该是:
现在,启动TensorFlow图像:
docker run -it -p 6006:6006 -v /Users/francesco/Desktop/tensor/:/tensor_flow your_tensorflow_docker_name6006 -v /Users/francesco/Desktop/tensor/:/tensor_flow your_tensorflow_docker_name
使用TensorFlow创建机器学习自定义模型
我们准备创建自定义模型。让我们拷贝存储库tensorflow-for-poets:
git clone https://github.com/googlecodelabs/tensorflow-for-poets-2
通过这种方式,我们可以使用脚本轻松创建模型,现在我们就开始训练模型了:
python tensorflow-for-poets-2/scripts/retrain.py --model_dir=/tensor_flow/inception-v3 --output_graph=/tensor_flow/cats_retrained.pb --output_labels=/tensor_flow/cats_labels.txt --image_dir=/tensor_flow/cat-images/ --bottleneck_dir=/tensor_flow/cats_bottleneck-2/scripts/retrain.py --model_dir=/tensor_flow/inception-v3 --output_graph=/tensor_flow/cats_retrained.pb --output_labels=/tensor_flow/cats_labels.txt --image_dir=/tensor_flow/cat-images/ --bottleneck_dir=/tensor_flow/cats_bottleneck
有以下几点需要注意:
--model_dir
是存储模型的位置(在本例中为tensor_flow)--output_graph
是我们将创建的图表名称(cats_retrained.pb)--output_labels
是标签的名称(cats_labels.txt)--image_dir
是存储图像以训练模型的位置--bottleneck_dir
是创建bottleneck的位置
【Tips】:“bottleneck”是一个非正式的术语,经常在实际进行分类的最终输出层之前使用该层。
这一步骤需要大量的时间,具体取决于电脑的功能和使用的迭代次数。
使用TensorFlow Board分析模型
当机器学习模型准备就绪,且训练过程完成,我们就可以分析模型。这是非常重要的一点,因为它可以评估我们创建的模型。输入以下命令:
tensorboard --logdir /tmp/retrain_logs/
这条命令是运行TensorFlow Board。使用浏览器,打开dashboard,键入:
localhost:6006以访问Web控制台。
选择图表,将能够看到模型:
现在,在顶部菜单上选择SCALARS以评估模型,下图展示了模型的准确性:
训练精度是系统用于训练模型的图像的分类精度。验证准确性是训练过程中未使用的图像的准确性。验证准确性是模型的“真实”准确度。通常,它应该小于训练精度。
如果训练精度高于验证精度,则创建的模型过度拟合。这意味着该模型不能很好的概括测试数据,在相反的情况下,模型是不适合的,所以应该对其进行改进。
下图显示了entropy,这条曲线应该是下降的。
如何测试TensorFlow模型
当我们对模型满意,就可以测试它了:
bazel-bin/tensorflow/examples/label_image/label_image --graph=/tensor_flow/cats_retrained.pb --image=/tmp/lab1.jpg --input_layer=Mul --output_layer=final_result --labels=/tensor_flow/cats_labels.txt/tensor_flow/cats_retrained.pb --image=/tmp/lab1.jpg --input_layer=Mul --output_layer=final_result --labels=/tensor_flow/cats_labels.txt
我们用下图来测试模型:
结果如下所示:
如图所示,模型正确的检测出了猫的品种。
长按二维码 ▲
订阅「架构师小秘圈」公众号
如有启发,帮我点个在看,谢谢↓
迁移学习:如何使用TensorFlow对图像进行分类相关推荐
- Python基于MASK信息抽取ROI子图并构建基于迁移学习(densenet)的图像分类器实战(原始影像和mask文件都是二维的情况)
Python基于MASK信息抽取ROI子图并构建基于迁移学习(densenet)的图像分类器实战(原始影像和mask文件都是二维的情况) 目录
- tensorflow 迁移学习_基于 TensorFlow.js 1.5 的迁移学习图像分类器
在黑胡桃社区的体验案例中,有一个"人工智能教练",它其实是一个自定义的图像分类器.使用 TensorFlow.js 这个强大而灵活的 Javascript 机器学习库可以很轻松地构 ...
- 论文阅读2018-Deep Convolutional Neural Networks for breast cancer screening 重点:利用迁移学习三个网络常规化进行分类
论文阅读2018-Deep Convolutional Neural Networks for breast cancer screening 摘要:我们探讨了迁移学习的重要性,并通过实验确定了在训练 ...
- Tensorflow MobileNet移动端迁移学习指南
1.介绍 TensorFlow是用于数值计算的开源库,专门用于机器学习应用程序.笔者: csdn -固本培元 交流邮箱: leo_luopy@139.com 微信:leoluopy . 本文机器 ...
- 什么是迁移学习?什么时候使用迁移学习?
迁移学习是一种深度学习策略,它通过将解决一个问题所获得的知识应用于另一个不同但相关的问题来重用这些知识.例如,有3种类型的花:玫瑰.向日葵和郁金香.可以使用标准的预训练模型,如VGG16/19.Res ...
- Python 迁移学习实用指南:6~11
原文:Hands-On Transfer Learning with Python 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自[ApacheCN 深度学习 译文集],采用译后编辑(MT ...
- 【神经网络】(7) 迁移学习(CNN-MobileNetV2),案例:乳腺癌二分类
各位同学好,今天和大家分享一下Tensorflow2.0中如何使用迁移学习的方法构造神经网络.需要数据集的在评论区留个言. 1. 迁移学习 官方文档:Module: tf.keras.applicat ...
- 基于深度学习和迁移学习的识花实践
深度学习是人工智能领域近年来最火热的话题之一,但是对于个人来说,以往想要玩转深度学习除了要具备高超的编程技巧,还需要有海量的数据和强劲的硬件.不过 TensorFlow 和 Keras 等框架的出现大 ...
- Pytorch:利用迁移学习做图像分类
**Pytorch:利用迁移学习做图像分类** 数据准备 数据扩充 数据加载 迁移学习 训练 验证 推理/分类 在这一篇文章中,我们描述了如何在 pytorch中进行图像分类.我们将使用Caltech ...
最新文章
- oracle01003,ORA-01003:nostatementparsed-Oracle
- Spring 框架的设计理念与设计模式分析
- 戴尔官网全网抄底价! 企业级高性能机Vostro仅¥1,999!更有额外福利等你来领!...
- python按位右移的作用_python入门之左移,右移,按位与,按位或,按位异或,按位取反...
- QT的QString类的使用
- Basketball Exercise CodeForces - 1195C(动态规划dp)
- [学习笔记]批次需求计划系统-简要
- 6-9 统计个位数字 (15 分)
- X86汇编语言从实模式到保护模式19:分页和动态页面分配
- 计算机dll修复工具,DLL修复工具有哪些?DLL修复工具盘点
- 2022蓝帽杯初赛部分wp
- 三维空间坐标的旋转算法详解_三维空间几何坐标变换矩阵.ppt
- 【论文 CCF C】Multi-DQN: An ensemble of Deep Q-learning agents for stock market forecasting
- 【大数据运维监控】Prometheus水平扩展Cortex的架构分析
- 2022年全球气候金融产品研究报告
- Spring Boot 中使用 Hikari连接各类数据源
- black duck 下载_如何创建安全的Java软件:与Black Duck的Tim Mackey交谈
- opencv学习笔记——图像
- 保研夏令营后记(Lamda、同济、南大、中科大、自动化所)
- 高数——(反)三角函数及求导相关公式应用
热门文章
- [Scoi2016]背单词[字典树+dfs重构树[类似虚树]]
- 二分图专题系列各大知识点总结(匈牙利,染色法,最大独立集,最小点覆盖,最小路径覆盖)
- jdk8新特性_JDK8与JDK9新特性学习
- 如何释放指针又不影响内存数据_C# 内存机制 - 基础篇
- BZOJ 2157 「国家集训队」旅游(树链剖分,线段树,边权转点权)【BZOJ计划】
- 春愁(shunshu)—Mrs. Green Apple (歌词、汉译、罗马音)
- L - Subway POJ - 2502
- 高级程序设计 c语言 在线作业,[北京师范大学]19秋《高级程序设计(C)》离线作业(资料)...
- AMD 再次抨击基准测试工具 SYSMark 偏袒英特尔
- C++迪杰斯特拉算法求最短路径