keras-02 浅谈数据集的制作和加载

引言

上一章主要讲解了如何入门keras,并实现了一个简单的神经网络搭建的全部过程。这一章开始,我们将从数据,模型,训练,可视化,保存,预测等方面细化对神经网络的理解。我们搭建神经网络,第一步就是获取数据,而根据不同的任务,数据分为不同的形式。以分类任务为例,分类任务的数据集主要包括图片和标签,每一个图片对应一个标签,因此我们在保存数据集的时候分为了以下几种方式:

  1. 以文件夹的形式保存图片,相同类的图片保存在同一个文件夹下,不同类的图片保存在不同的文件夹下。train,val,test不同用途也分不同的文件夹。最后实现一种目录树的形式。
  2. 用csv文件或txt文件描述图片和标签,csv文件中第一列保存图片路径或图片数据,第二列保存标签;txt文件类似保存。
  3. 以h5py直接保存数据集
    接下来我们就以上几种方式先谈如何制作数据集

数据集制作

1数据集制作

1.1 以文件形式保存图片和标签

这种方式比较简单,但是工作量比较大,将不同的数据集按照不同的类别分别新建不同的文件目录进行保存。这里我以我的一个自学的小项目展示。
在这里插入图片描述

在这里插入图片描述
这里我采集了不同的台球图片,用于训练神经网络训练识别台球。我们首先根据台球的台球号新建15个新的目录,这里我们可以直接新建15个目录,也可以先新建train,val,test目录。我们选择直接新建15个目录,如图:
在这里插入图片描述
这样我们就做好了我们的数据集,后面我们就可以从keras中加载数据集。

1.2 用csv文件保存图片和标签

csv文件是一种类似于excel的表格型文件形式,我们可以将图片的路径放在第一列,将图片标签放在第二列。这里我们以kaggle比赛的数据集为例。
在这里插入图片描述
我之后也会发布有个手动制作自己csv数据集的工具,来制作该类图片数据集。

1.3 用h5py文件保存图片和标签

HDF(Hierarchical Data Format)指一种为存储和处理大容量科学数据设计的文件格式及相应库文件。HDF 最早由美国国家超级计算应用中心 NCSA 开发,目前在非盈利组织 HDF 小组维护下继续发展。当前流行的版本是 HDF5。HDF5 拥有一系列的优异特性,使其特别适合进行大量科学数据的存储和操作,如它支持非常多的数据类型,灵活,通用,跨平台,可扩展,高效的 I/O 性能,支持几乎无限量(高达 EB)的单文件存储等,详见其官方介绍。h5py也是一种数据保存的方式,这首先需要安装h5py包,在终端中输入pip install h5py即可。
h5py非常方便易用,如果我们希望创建一个h5py文件,我们只需要使用如下函数:

class File(name, mode=None, driver=None, libver=None, userblock_size=None, **kwds)

打开或创建一个 HDF5 文件,name 为文件名字符串,mode 为打开文件的模式,driver 可以指定一种驱动方式,如需进行并行 HDF5 操作,可设置为 ‘mpio’,libver 可以指定使用的兼容版本,默认为 ‘earliest’,也可以指定为 ‘latest’,userblock_size 以字节为单位指定一个在文件开头称作 user block 的数据块,一般不需要设置。返回所打开文件的句柄。
然而我们真正使用的有效参数是mode。

model说明
r只读,文件必须存在
r+读写,文件必须存在
w创建新文件,已经存在的文件会被覆盖
w- / x创建新文件写,文件如果已经存在则出错
a打开已经存在的文件进行读写,如果不存在则创建一个新文件读写,此为默认的 mode

因此我们可以这么写:

 train_file = h5py.File(os.path.join(savefilepath,"train.hdf5"), "w")

创建了文件之后,就可以把numpy的数组写入文件,我们可以利用create_dataset函数写入数组。

create_dataset(self, name, shape=None, dtype=None, data=None, **kwds)

创建一个新的 dataset。以类似文件路径的形式指明所创建 dataset 的名字 name,shape 以一个 tuple 或 list 的形式指明创建 dataset 的 shape,用 “()” 指明标量数据的 shape,dtype 指明所创建 dataset 的数据类型,可以为 numpy dtype 或者一个表明数据类型的字符串,data 指明存储到所创建的 dataset 中的数据。如果 data 为 None,则会创建一个空的 dataset,此时 shape 和 dtype 必须设置;如果 data 不为 None,则 shape 和 dtype 可以不设置而使用 data 的 shape 和 dtype,但是如果设置的话,必须与 data 的 shape 和 dtype 兼容。

 train_x=train_file.create_dataset("X_train",data=np.array(X_train))

2.数据集加载

keras提供了几种不同的函数用于从不同的数据源加载图像。keras通过封装了一个generator类进行这些方法的集成。要使用这些数据读取的方法,首先得先实例化一个迭代器。这个迭代器同时提供数据增广的作用。

#1.导入图像迭代器的包
from keras.preprocessing.image import ImageDataGenerator
#2.实例化迭代器
train_datagen = ImageDataGenerator(featurewise_center=True,
    featurewise_std_normalization=True,
    rotation_range=20,
    width_shift_range=0.2,
    height_shift_range=0.2,
    horizontal_flip=True,
    vertical_flip=True,
    validation_split=0.1,
    rescale=1/255.0)
 #3.使用不同的加载数据的方法
 1.从图像目录中加载数据
 train_generator = train_datagen.flow_from_directory(
        datasetdir,
        target_size=(300, 300),
        batch_size=32,
    subset='training',
        class_mode='categorical')
2.从csv文件中加载图像
train_generator = train_datagen.flow_from_dataframe()
3.从h5py文件中加载图像
train_datagen.flow()

官方文档中对上述三种函数的参数进行了详细说明,这里推荐直接阅读英文文档

  • 12
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Keras-OCR 是一个基于 Keras 框架构建的开源光学字符识别库,可以帮助我们进行图像中的文本检测和识别。Keras-OCR 自带了一些预训练模型和数据集,方便我们进行文本识别任务。 要下载 Keras-OCR 自带的模型和数据集,可以按照以下步骤进行操作: 1. 首先,确保已经安装了 Keras-OCR 的依赖库。可以通过 pip 命令安装,在命令行中输入以下命令: ``` pip install keras-ocr ``` 2. 安装完成后,就可以使用 Keras-OCR 的预训练模型和数据集了。Keras-OCR 提供了一个名为 `keras_ocr.tools.downloader.download()` 的函数,用于下载预训练模型和数据集。在 Python 脚本中,引入 `keras_ocr.tools` 模块,并使用 `download()` 函数进行下载。示例如下: ``` from keras_ocr.tools import downloader downloader.download() ``` 3. 运行上述代码后,将会弹出一个命令行交互界面,展示可供下载的模型和数据集列表。可以根据需求选择需要下载的模型和数据集。输入数字来选择要下载的内容,然后按下回车键进行确认。 4. 下载过程会自动开始,并显示下载进度。下载完成后,Keras-OCR 自带的模型和数据集将存储在默认的文件夹中,可以在 Python 脚本中直接引用这些文件进行文本识别任务。 总结一下,通过安装 Keras-OCR 并使用 `keras_ocr.tools.downloader.download()` 函数,我们可以方便地下载并使用 Keras-OCR 自带的预训练模型和数据集,以进行光学字符识别。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值