暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

TensorFlow深度学习实战 | 基于ResNet的花卉图片分类(限免视频)

645

本期将提供一个利用深度学习进行花卉图片分类的案例,并使用迁移学习的方法解决训练数据较少的问题。图片分类是根据图像的语义信息对不同的图片进行区分,是计算机视觉中的基本问题,也是图像检测、图像分割、物体跟踪等高阶视觉任务的基础。在深度学习领域,图片分类的任务一般基于卷积神经网络来完成,如常见的卷积神经网络有VGG、GoogleNet、ResNet等。而在图像分类领域,数据标记是最基础和烦琐的工作。有时由于条件限制,往往得不到很多经过标记的、用于训练的图片,其中一个解决办法就是对已经预训练好的模型进行迁移学习。

本文是以ResNet为基础,对花卉图片进行迁移学习,从而完成对花卉图片的分类任务。


“工欲善其事,必先利其器”。如果直接使用 Python完成模型的构建、导出等工作,势必会耗费相当多的时间,而且大部分工作都是深度学习中共同拥有的部分,即重复工作。所以本案例为了快速实现效果,就直接使用将这些共有部分整理成框架的 TensorFlow 和 Keras 来完成开发工作。TensorFlow 是 Google公司开源的基于数据流图的科学计算库,适合用于机器学习、深度学习等人工智能领域。Keras 是一个用 Python 编写的高级神经网络 API,它能够以 TensorFlow、CNTK或Theano 作为后端运行。Keras 的开发重点是支持快速的实验,所以,本案例中,大部分与模型有关的工作都是基于 Keras API来完成的。而现在版本的TensorFlow已经将Keras集成了进来,所以只需要安装TensorFlow即可。注意,由于本案例采用的 ResNet 网络较深,所以模型训练需要消耗的资源较多,需要 GPU 来加速训练过程。


1

环境安装


安装 TensorFlow 的 GPU 版本是相对比较繁杂的事情,需要找对应的驱动,安装合适版本的CUDA 和 cuDNN。而一种比较方便的办法就是使用 Anaconda 来进行 tensorflow-gpu 的安装。具体的安装过程可以参考本书的附录A.2部分。其他需要安装的依赖包的名称及版本号如下:

其他依赖包可以在 Anaconda 界面上进行选择安装,也可以将其添加到 requirements.txt文件,然后使用conda install -yes -file requirements.txt 命令进行安装。另外,Conda 可以创建不同的环境来支持不同的开发要求。例如,有些工程需要TensorFlow 1.15.0 环境来进行开发,而另外一些工程需要 TensorFlow 2.1.0 来进行开发,替换整个工作环境或者重新安装 TensorFlow 都不是很好的选择。所以,本案例使用 Conda 创建虚拟环境来解决。


2

数据集简介

在进行模型构建和训练之前,需要进行数据收集。为了简化收集工作,本案例采用已标记好的花卉数据集Oxford 102 Flowers。数据集可以从VGG官方网站上进行下载。单击如图11.1 所示的Downloads区域的1、4和5对应的超链接就可以下载所需要的文件。


■ 图11.1Oxford 102 Flowers 数据集下载网站


该数据集由牛津大学工程科学系于 2008 年发布,是一个英国本土常见花卉的图片数据集,包含 102 个类别,每类包含 40 ~ 258 张图片。在基于深度学习的图像分类任务中,这样较为少量的图片还是比较有挑战性的。Oxford 102 Flowers的分类细节和部分类别的图片及对应的数量如图11.2 所示。


■ 图11.2Oxford 102 Flowers的分类细节和部分类别的图片及对应的数量


除了图片文件(dataset images),数据集中还包含图片分割标记文件(image segmentations)、分类标记文件(the image iabels)和数据集划分文件(the data splits)。由于本案例中不涉及图片分割,所以使用的是图片、分类标记和数据集划分文件。


3

数据集的下载与处理


Python urllib库提供了urlretrieve()函数可以直接将远程数据下载到本地。可以使用urlretrieve()函数下载所需文件;然后把压缩的图片文件进行解压,并解析分类标记文件和数据集划分文件;再根据数据集划分文件并分成训练集、验证集和测试集;最后,向不同类别的数据集中按图片所标识的花的种类分类存放图片文件。代码及详细注释如代码清单11-1所示。

代码清单11-1

下载的图片数据有330MB左右。国外的网站有时候下载比较慢,可以用下载工具下载,或者使用参考书前言中提供的二维码进行下载。

需要说明的是,分类标记文件imagelabels.mat 和数据集划分文件setid.mat 是 MATLAB 的数据存储的标准格式,可以用 MATLAB 程序打开进行查看。本案例中使用 scipy 库的 loadmat()函数对 .mat 文件进行读取。图片分类后的目录结构如图11.3 所示。

■ 图11.3图片分类后的目录结构

扫码观看视频讲解(限免3天)


说明

本系列文章出自《TensorFlow深度学习实战(微课视频版)》(ISBN:9787302602934),为作者全权授权的独家原创文章,转载请联系公众号后台申请授权,并注明出处。


实例讲解

TensorFlow深度学习实战

精彩回顾

深度学习框架

1. TensorFlow


TensorFlow环境搭建

 2. TensorFlow环境搭建


实战篇

 3. 基于YOLO V3的安全帽佩戴检测

 4. 基于ResNet的人脸关键点检测



下期预告

实战篇

 6. 基于迁移学习的电影评论分类

 7. 基于LSTM的原创音乐生成



4

参考书籍


《TensorFlow深度学习实战(微课视频版)》

配有源代码、教学课件、教学大纲、微课视频等资源,56个知识点案例、9个完整项目案例。

ISBN:9787302602934

作者:吕云翔 王志鹏 刘卓然 主编 欧阳植昊 郭志鹏 王渌汀 闫坤 杜宸洋 关捷雄 华昱云 陈妙然 副主编

价格:59.90元


内容简介

本书以深度学习框架TensorFlow为基础,介绍机器学习的基础知识与常用方法,全面细致地提供了机器学习操作的原理及其在深度学习框架下的实践步骤。全书共16章,分别介绍了深度学习基础知识、深度学习框架及其对比、机器学习基础知识、深度学习框架TensorFlow的基础知识、Logistic回归、多层感知器、卷积神经网络与计算机视觉、神经网络与自然语言处理以及8个实战案例。本书将理论与实践紧密结合,相信能为读者提供有益的学习指导。本书适合Python深度学习初学者、机器学习算法分析从业人员以及高等院校计算机科学、软件工程等相关专业的师生阅读。






文章转载自清华计算机学堂,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论