Tensorflow2 图像分类-Flowers数据及分类代码详解

flower_photos分类任务 数据集下载地址: http://download.tensorflow.org/example_images/flower_photos.tgz 下载后得到一个.tgr文件,解压后,文件夹下包含了5个子文件夹,每个子文件夹都存储了一种类别的花的图片,子文件夹的名称就是花的类别的名称,如下图: 模型选择: 使用Vgg19进行迁移训练,由于Vgg19进行的是1000分类,我们需要增加一层全连接层,完成5分类任务; 数据集划分代码 import tensorflow as tf import . 阅读详情

目录

1、基本步骤

2.1 环境

2.2 数据说明

2.3 数据查看代码

3.创建数据集

3.1 数据集创建函数

3.2 创建数据集

4.数据可视化

 5.模型训练

5.1 配置数据集

5.2 数据标准化

6.模型创建

6.1 创建模型

6.2 编译模型

6.3 总结模型

6.4 模型训练

6.5 训练结果可视化及分析

6.6 数据增强

​7.Dropout

7.1 重建模型

7.2 对新数据进行预测

8.最后 完整代码



1、基本步骤

(1) 检查和熟悉数据

(2) 构建输入管道

(3) 构建模型

(4) 训练模型

(5) 测试模型

(6) 改进模型并重复此过程

 2.数据下载

2.1 环境

需要使用到的库如下:

import matplotlib.pyplot as plt
import numpy as np
import os
import PIL
import tensorflow as tf

from tensorflow import keras
from tensorflow.keras import layers
from tensorflow.keras.models import Sequential

2.2 数据说明

下载flowers样本数据,该样本数据包含以下类别数据:

flower_photo/
  daisy/菊花/
  dandelion/蒲公英/
  roses/玫瑰/
  sunflowers/向日葵/
  tulips/郁金香/

 数据下载源代码如下:

import pathlib
dataset_url = "https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz"
data_dir = tf.keras.utils.get_file('flower_photos', origin=dataset_url, untar=True)
data_dir = pathlib.Path(data_dir)

以上这段代码中函数的完整参数如下:

参考原文:https://blog.youkuaiyun.com/qq_39507748/article/details/104997553

tf.keras.utils.get_file(
    fname, origin, untar=False, md5_hash=None, 
    file_hash=None,cache_subdir='datasets', 
    hash_algorithm='auto', extract=False,
    archive_format='auto', cache_dir=None
)
参数说明--
fname:文件名,如果指定了绝对路径"/path/to/file.txt",则文件将会保存到该位置

origin:文件的URL

untar:boolean,文件是否需要解压缩

md5_hash:MD5哈希值,用于数据校验,支持sha256和md5哈希

cache_subdir:用于缓存数据的文件夹,若指定绝对路径"/path/to/folder"则将存放在该路径下

hash_algorithm:选择文件校验的哈希算法,可选项有'md5', 'sha256', 和'auto'. 
默认'auto'自动检测使用的哈希算法

extract:若为True则试图提取文件,例如tar或zip 

archive_format:试图提取的文件格式,可选为'auto', 'tar', 'zip', 
和None. 'tar' 包括tar, tar.gz, tar.bz文件. 默认'auto'是['tar', 'zip']. None或空列表将返回没有匹配

cache_dir:文件缓存后的地址,若为None,则默认存放在根目录的.keras文件夹中

 运行结果如下:

pathlib.Path(data_dir)函数路径转换说明:

import pathlib
dataset_url = "https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz"
data_dir = tf.keras.utils.get_file('flower_photos', origin=dataset_url, untar=True)
print(data_dir)
print(type(data_dir))
data_dir = pathlib.Path(data_dir)
print(data_dir)
print(type(data_dir))
C:\Users\Administrator\.keras\datasets\flower_photos
<class 'str'>
C:\Users\Administrator\.keras\datasets\flower_photos
<class 'pathlib.WindowsPath'>

我们在路径下查看该数据:数据已经被解压出来。

 

  daisy/菊花/                    数量:633
  dandelion/蒲公英/         数量:898
  roses/玫瑰/                    数量:641
  sunflowers/向日葵/        数量:699
  tulips/郁金香/                 数量:799

共计:3670

LICENSE.txt 中包含了图片作者和网址信息:

打开一些数据查看图片的大小,发现图片的像素大小,形状都不一样。部分图片如下:

2.3 数据查看代码

源代码:str类型的data_dir没有glob函数,因此上文中转化为“pathlib.WindowsPath”类型

image_count = len(list(data_dir.glob('*/*.jpg')))
print(image_count)
roses = list(data_dir.glob('roses/*'))
img0=PIL.Image.open(str(roses[0]))
plt.imshow(img0)
plt.show()

3.创建数据集

从上文中我们知道,以上图片数据集的大小尺寸都不一样,因此,我们需要创建一组具有相同大小尺寸的数据集,即将以上所有图片转化为像素大小相同的图片数据集。

3.1 数据集创建函数

使用的函数:

tf.keras.preprocessing.image_dataset_from_directory()

 函数详解:完整参数


tf.keras.preprocessing.image_dataset_from_directory(
    directory,
    labels="inferred",
    label_mode="int",
    class_names=None,
    color_mode="rgb",
    batch_size=32,
    image_size=(256, 256),
    shuffle=True,
    seed=None,
    validation_split=None,
    subset=None,
    interpolation="bilinear",
    follow_links=False,
)

参数说明:

  • directory: 数据所在目录。如果标签是“inferred”(默认),则它应该包含子目录,每个目录包含一个类的图像。否则,将忽略目录结构。 
  • labels: “inferred”(标签从目录结构生成),或者是整数标签的列表/元组,其大小与目录中找到的图像文件的数量相同。标签应根据图像文件路径的字母顺序排序(通过Python中的os.walk(directory)获得)。
  • label_mode: 'int':表示标签被编码成整数(例如:sparse_categorical_crossentropy loss)。‘categorical’指标签被编码为分类向量(例如:categorical_crossentropy loss)。‘binary’意味着标签(只能有2个)被编码为值为0或1的float32标量(例如:binary_crossentropy)。None(无标签)。
  • class_names: 仅当“labels”为“inferred”时有效。这是类名称的明确列表(必须与子目录的名称匹配)。用于控制类的顺序(否则使用字母数字顺序)。
  • color_mode: "grayscale"、"rgb"、"rgba"之一。默认值:"rgb"。图像将被转换为1、3或者4通道。
  • batch_size: 数据批次的大小。默认值:32
  • image_size: 从磁盘读取数据后将其重新调整大小。默认:(256,256)。由于管道处理的图像批次必须具有相同的大小,因此该参数必须提供。
  • shuffle: 是否打乱数据。默认值:True。如果设置为False,则按字母数字顺序对数据进行排序。
  • seed: 用于shuffle和转换的可选随机种子。
  • validation_split: 0和1之间的可选浮点数,可保留一部分数据用于验证。
  • subset: "training"或"validation"之一。仅在设置validation_split时使用。
  • interpolation: 字符串,当调整图像大小时使用的插值方法。默认为:bilinear。支持bilinear, nearest, bicubic, area, lanczos3, lanczos5, gaussian, mitchellcubic.。
  • follow_links: 是否访问符号链接指向的子目录。默认:False。

 Returns

一个tf.data.Dataset对象。

  • 如果label_mode为None,它将生成float32张量,其shape为(batch_size, image_size[0], image_size(1), num_channels),并对图像进行编码(有关num_channels的规则,参见下文)。
  • 否则,将生成一个元组(images, labels),其中图像的shape为(batch_size, image_size[0], image_size(1), num_channels),并且labels遵循下面描述的格式。

 关于labels格式规则:

  • 如果label_mode 是 int, labels是形状为(b
05-图像分类(含有3700张鲜花照片的数据集) 文章目录1. 数据准备 1. 数据准备 首先导入我们需要的包: import matplotlib.pyplot as plt import numpy as np import os import PIL import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers from tensorflow.keras.models import Sequential import pathlib 阅读详情

相关推荐

Flower102 数据集实战:从下载到组织,一站式构建图像分类基准

本文提供了Flower102数据集从下载到组织的完整实战指南。详细介绍了如何从官网获取数据、解析MATLAB格式的标签与划分文件,并通过Python脚本自动化构建出标准的图像分类数据集目录结构。该数据集包含102类花卉共8189张图片,是计算机视觉入门和模型验证的理想基准。

weixin_29083475的博客 277

ResNet残差块实战:用Python和TensorFlow搭建花朵分类模型(附完整代码)

本文详细介绍了如何使用Python和TensorFlow搭建基于ResNet残差块的花朵分类模型,包含完整代码和实战步骤。通过迁移学习和数据增强技术,该模型能够准确识别102种花卉,适合深度学习初学者和计算机视觉开发者学习。文章还提供了模型调优、评估及部署的实用技巧,帮助读者快速掌握ResNet在图像分类中的应用。

weixin_30300225的博客 335

基于TensorFlow 2.3的花卉识别图像分类系统实战

图像分类是计算机视觉领域的核心任务,旨在通过算法自动识别图像中的物体类别。深度学习尤其是卷积神经网络(CNN)的兴起,使图像分类的准确率大幅提升。借助预训练模型进行迁移学习,即使在数据量有限的情况下也能获得良好性能,这为各类应用场景提供了技术基础。从智能相册、农业监测到安防巡检,图像识别技术正在广泛落地。本文以基于TensorFlow 2.3的花卉识别系统为例,完整展示了从数据预处理、模型训练到界面部署的工程实践,为Python开发者提供了一套可复现的解决方案。

weixin_29056781的博客 316

TensorFlow Flowers数据集:图像识别训练与测试

数据集的采集过程是图像识别模型训练前的重要步骤。本数据集是从开源项目和公开资源中收集的,包含了多种花卉的图片。为了保证数据集的多样性,我们采用了多种方式采集数据,包括:网络爬虫:通过编写爬虫程序,从植物分类相关网站自动下载高质量的花卉图片。图像库:从已有的图像数据库如Flickr或百度图像搜索,获取图片资源。实地拍摄:团队成员亲自到植物园和花市进行拍摄,增加现场感和实物感。开放平台请求:使用数据共享平台如LabelMe,请求其他研究者共享花卉图片。

weixin_36328210的博客 995

基于CNN的花卉图像分类:从数据准备到模型优化全攻略

图像分类是计算机视觉中最基础也最热门的任务之一,而卷积神经网络(CNN)凭借其端到端学习能力,已成为处理该类问题的核心技术。CNN通过自动提取图像的边缘、纹理、形状等层次化特征,避免了传统手工特征工程的繁琐与不稳定,显著提升了识别准确率。在实际应用中,花卉图像分类不仅适合教学演示,更是毕业设计与课程设计的经典选题。借助迁移学习,即使数据量有限,也能在普通笔记本上快速训练出高精度模型,实现从理论到工程实践的高效落地。本文以完整的项目为主线,涵盖数据集组织、模型构建、训练调参、常见问题排查等关键环节,并结合Te

weixin_33812433的博客 414

flower_photos.tgz

用于inception-v3模型训练的图片,包括daisy、dandelion、sunflowers、tulips、roses,中文名:菊花 蒲公英 向日葵 郁金香 玫瑰

Rocky Linux 9 离线环境Docker部署实战:从依赖打包到服务启动

本文提供了一份详尽的Rocky Linux 9离线环境Docker部署实战指南。针对无法访问外网的生产或内网服务器,文章详细讲解了如何在联网跳板机上下载Docker二进制包及所有系统依赖RPM包,并完成打包。随后,手把手指导在离线服务器上进行依赖安装、二进制文件部署、systemd服务配置、SELinux与防火墙调优,最终实现Docker服务的成功启动与验证。

weixin_28363123的博客 138

AI赋能运筹优化:从参数生成到智能求解的工程实践

运筹学通过线性规划、整数规划等数学模型,为供应链、物流、生产排程等复杂决策问题寻找最优解,其核心价值在于提升资源利用效率与决策科学性。传统方法依赖精确的输入参数与专家经验,面临数据不准、建模门槛高、求解调优难等挑战。人工智能技术的引入,正从原理层面重塑这一流程:通过深度学习模型生成更贴合现实的动态参数(如需求分布、行驶时间),利用自然语言处理降低建模门槛,并借助强化学习对求解器进行智能参数调优。这种AI与运筹学的融合,在工程实践中显著提升了优化系统的自适应能力与求解效率,使其在应对实时交通、柔性生产调度等动

weixin_26913055的博客 595

告别信号干扰!用Altium Designer 19搞定4层/6层PCB叠层设计的保姆级流程

本文详细介绍了如何使用Altium Designer 19进行4层/6层PCB叠层设计,解决信号干扰问题。通过实际案例和系统方法论,涵盖高速数字电路、混合信号系统等典型场景的设计优化,帮助硬件工程师和学生掌握电磁兼容(EMC)与信号完整性(SI)的核心技术。

weixin_27076351的博客 206

k230+CanMV+micropython环境下byte、int、hex、string之间的转换常用函数实测

【代码】k230+CanMV+micropython环境下byte、int、hex、string之间的转换常用函数实测。

weixin_47446386的博客 119

CarSim仿真快速入门(十八)-CarSim2021中的混合动力和纯电动系统

CarSim和TruckSim包括用于电动汽车(BEV)和混合电动汽车(HEV)的动力总成系统。电动和混合电动系统可与所有现有驱动系统配合使用,例如:FWD,RWD,AWD和多轴驱动系统。混合动力/电动系统模型还包括电池管理控制。CarSim或TruckSim中的默认动力总成是为闭环速度控制器提供的备用动力总成。要安装和使用完整的动力总成,请从Vehicle: Assembly库或Vehicle: Lead Unit 库链接到Powertrain数据集。在“动力总成”界面上,从下拉列表控件中选择以下三个选项

小明师兄的博客 7455

从代码仓库到知识库:自动化构建与RAG技术实践

在软件工程领域,代码库的规模与复杂性日益增长,如何高效管理和利用其中的知识成为关键挑战。传统文档工具主要依赖注释提取API信息,而现代知识构建技术则通过抽象语法树(AST)解析、自然语言处理等手段,深入理解代码结构、调用关系和业务逻辑。其核心价值在于将非结构化代码转化为机器可理解、可检索的结构化知识,显著提升代码资产的可维护性和团队协作效率。这一过程通常涉及代码解析、信息提取、向量化表示和存储索引四个关键阶段,其中向量化技术将代码语义转化为高维向量,为语义搜索奠定基础。结合检索增强生成(RAG)架构,开发者

weixin_42545292的博客 415

第五章-AllData集成DataSophon作为数据平台功能

🔥🔥 AllData大数据产品是可定义数据中台,以数据平台为底座,以数据中台为桥梁,以机器学习平台为中层框架,以大模型应用为上游产品,提供全链路数字化解决方案。全新会员商业版 X 微信群:https://docs.qq.com/doc/DVHlkSEtvVXVCdEFo

AllDataDC的博客 1638

DAB协议解读ETSI TS 103 461

数字信号广播( Digital Audio Broadcasting 简称DAB)是继AM、FM传统模拟广播之后的第三代广播--数字信号广播,它提供了接近CD质量的声音,广播及商机无限的附加数据服务,具有抗噪声、抗干扰、抗电波传播衰落、适合高速移动接收等优点,保证固定、携带及移动时接收信号的质量。DAB的原始版本使用MP2音频编解码器。该系统的升级版本于2007年2月发布,称为DAB+,它使用基于改进的离散余弦变换(MDCT)的HE-AACv2(AAC+)音频编解码器。

qflook的博客 4477

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

上一篇: TensorFlow2快速入门- MNIST 数据集详解
下一篇: Cannot find command ‘git‘ - do you have ‘git‘ installed and in your PATH?
空中旋转篮球
空中旋转篮球 新星创作者: python技术领域 新星创作者: python技术领域
博客等级 码龄14年 6103粉丝 270原创
评论 17
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空中旋转篮球

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值