HDF5数据的打包与使用(以图像数据为例)

article/2025/9/12 19:20:22

文章目录

  • 1 什么是HDF5数据
  • 2 HDF5数据格式的生成
  • 3 HDF5数据的查看

注:此篇内容主要作为使用PyTorch构建GAN生成对抗网络博客中,HDF5数据类型的补充介绍。

1 什么是HDF5数据

HDF5 数据是存储在一种名为 Hierarchical Data Format version 5 (HDF5) 的二进制文件格式中的数据。这种文件格式可以用来存储大量的多维数据,并且提供了很多的功能来帮助用户组织和管理数据。

HDF5 数据文件中包含了一系列的数据集,每个数据集都是一个多维数组。数据集的维度可以是任意的数量,并且每个数据集都可以有自己的属性。这使得 HDF5 文件格式非常适合用来存储大量的数值型数据,比如图像、音频、视频等。
在这里插入图片描述
HDF5文件格式主要有以下特点:

  1. 大小:HDF5 数据文件可以非常大,可以达到几十 GB 甚至几 TB。
  2. 数据类型:HDF5 文件可以存储各种各样的数据类型,包括整数、浮点数、字符串、布尔值等。
  3. 多维数组:HDF5 文件中的数据集是多维数组,每个数据集都可以有任意数量的维度。
  4. 数据压缩:HDF5 文件支持数据压缩,可以使用不同的压缩算法来压缩数据集。
  5. 数据分块:HDF5 文件中的数据集可以被分成若干个数据块,每个数据块可以单独读取。这使得 HDF5 文件在处理大型数据集时非常高效。
  6. 索引:HDF5 文件可以使用索引来快速访问数据集中的元素。
  7. 属性:HDF5 文件中的数据集可以有自己的属性,每个属性都是一个键-值对。

2 HDF5数据格式的生成

以CelebA数据集为例,在官网下载时,我们将会得到一个压缩包,里面包含人脸图片与属性标注,如果希望将人脸图片转入到HDF5中的数据集中,可参考的代码如下:

hdf5_file = '你希望的h5py存放地'
Celeba_file='你的数据存放地'
total_images = 10000 # 你需要打包的图片数量with h5py.File(hdf5_file, 'w') as hf:count = 0with zipfile.ZipFile(Celeba_file, 'r') as zf:for i in zf.namelist():if (i[-4:] == '.jpg'):# 图片提取ofile = zf.extract(i)img = imageio.imread(ofile)os.remove(ofile)# 添加数据到HDF5文件hf.create_dataset('img_align_celeba/' + str(count) + '.jpg', data=img, compression="gzip", compression_opts=9)# 停止控制if (count == total_images):break

对上面的代码进行一下讲解:首先我们打开了你下载的人脸数据 zip 文件(官方提供的数据格式就是压缩包的形式,我们下载后也不需要对其解压),并遍历文件中的所有文件名。如果文件名的扩展名是 .jpg,则提取该文件并将其读取为一个图像数组。将图像数组写入一个 HDF5 文件中,保存在你希望的h5py存放地目录下,文件名为递增的数字。
当读取了指定数量的图像时,停止读取过程。之所以设置了停止功能,是因为这个数据集的数据量比较大,有时实验并不需要数据集的全部内容。在处理大型数据集时,也可以添加计数器功能,每处理一定量的文件进行打印进程。

3 HDF5数据的查看

打开数据集可以使用常规的with…as语法:

with h5py.File('数据集位置.h5py', 'r') as file_object:  for group in file_object:print(group)

这段代码用于查看HDF5文件中的数据组名,输出是img_align_celeba,这是因为我们前面在制作HDF5文件时,指定的路径就是保存在img_align_celeba下,所以这些保存进去的数据都被认为是img_align_celeba组中的数据。

with h5py.File('数据集位置.h5py', 'r') as file_object:dataset = file_object['img_align_celeba']image = numpy.array(dataset['1.jpg'])plt.imshow(image, interpolation='none')plt.show()

前面我们制作数据集时,指定了数据集中数据的命名规则是图片序号+‘jpg’,所以可以通过类似字典的方式,打开img_align_celeba数据组中的第一张图片。再通过plt绘制出图片,以判断数据集读取是否成功。执行成功后,应该能看到如下图片:在这里插入图片描述
同时,我们可以看一下这个数据的大小:

print(image.shape)

输出的是(218, 178, 3)。说明这个图片的像素是218*178,3代表的是RGB三层数据。


http://chatgpt.dhexx.cn/article/QLQ6K9ob.shtml

相关文章

HDF5-简介

HDF(Hierarchical Data Format)是一种设计用于存储和组织大量数据的文件格式,最开始由美国国家超算中心研发,后来由一个非盈利组织HDF Group支持.HDF支持多种商业及非商业的软件平台,包括MATLAB、Java、Python、R和Jul…

HDF5到底是什么

HDF5到底是什么 《Python和HDF 5大数据应用》——1.2 HDF5到底是什么-阿里云开发者社区 1.2 HDF5到底是什么 HDF5是一种存储相同类型数值的大数组的机制,适用于可被层次性组织且数据集需要被元数据标记的数据模型。 它跟SQL风格的关系型数据库区别相当大&…

HDF5快速上手全攻略

HDF5快速上手全攻略 1. HDF5简介 Hierarchical Data Format(HDF)是一种针对大量数据进行组织和存储的文件格式。经历了20多年的发展,HDF格式的最新版本是HDF5,它包含了数据模型,库,和文件格式标准。以其便捷有效,移植…

Macbook Pro笔记本双系统MacOS和Windows切换默认启动

一、开机切换 开机时,按住option键不要动,等待Macbook Pro出现以下界面,选择你想开机的系统即可。 (BootCamp就是Windows) 二、默认切换,这里分两种情况 1)默认MacOS开机,切换到W…

笔记本双系统Windows10/Deepin15.11体验记录【Deepin15.11体验记录】第一天

笔记本双系统Windows10/Deepin15.11体验记录 【Deepin15.11体验记录】第一天 今天我试着将笔记本安装了第二个系统(基于Linux的Deepin15.11系统),非常成功。之前接触过虚拟机里的Redhat Linux,但是那种是多年前的版本&#xff0…

华硕ROG枪神配置Ubuntu双系统

华硕ROG枪神配置Ubuntu双系统 最近笔记本刚到,华硕ROG枪神6plus,12900HRTX3060(没错,最低配),想着配置一下Ubuntu系统, 但是网上没有相关参考教程,我自己在下面步骤4设置硬盘启动方…

各笔记本安装双系统遇到的问题

目录 联想Y9000P2023款安装ubuntu出现efi usb device has been blocked by the current security policy导致无法进入安装目录 ​编辑 Thinkpad p15 gen1安装双系统遇到的问题 回忆安装xubuntu20.04LTS出现的问题和解决办法: Thinkpad p15 gen1 合盖关机的设置…

苹果笔记本安装Win10双系统+分区教程《原创完整精华版》

苹果笔记本安装Win10双系统分区教程《完整精华版》 写在前面:1.此款笔记本已测试支持安装Win10 1909版本、1903版本。建议安装比较新的Win10版本。2.此教程是先装Win10系统,再进苹果系统分区。最初我想是先分区,再安装,可无论如何…

红米笔记本linux系统版本,小米笔记本安装Win10+Ubuntu16.04 LTS 双系统

安装Win10+Ubuntu16.04 LTS 双系统(持续更新:Ubuntu安装N卡驱动,续航+2小时) 原贴:http://bbs.xiaomi.cn/t-13391152 (来自小米社区玩机教程) 完成图: 目标:安装Win10 + Ubuntu16.04 LTS 双系统 电脑:小米Air 13.3 高配版 工具: 硬件:U盘(2G就够,镜像包解压后文件大小为1.…

dell笔记本安装Ubuntu20.04双系统+cuckoo布谷鸟沙箱

windows下安装Ubuntu20.04双系统cuckoo布谷鸟沙箱 本篇文章主要是在Ubuntu20.04系统上搭建cuckoo沙箱,之前曾尝试在VMware虚拟机里建立Ubuntu,然后再在Ubuntu虚拟机里安装vbox虚拟机,然后搭建沙箱,但是这种虚拟机里安装虚拟机的想…

戴尔笔记本安装双系统(win10+ubuntu20.04)避坑记录

戴尔笔记本安装双系统(win10ubuntu20.04)避坑记录 从最开始DIY到用联想服务器,再到现在的戴尔某笔记本,一路走来都是从csdn上的各路大神帖子上学习安装,帮助很大,避免了很多弯路;但也有一些不太…

华为笔记本linux双系统,真的有必要吗?华为笔记本搭载双系统

近段时间有消息称,华为将会推出一款12.9寸笔记本电脑将会采用PC、平板二合一的设计,同时搭载Intel平台并且支持Windows 10与Android双系统,日常状态下是运行Windows 10的笔记本电脑,而将键盘拆开后则会变为一台Android平板&#x…

苹果电脑装双系统利弊有哪些

很多人购买了苹果电脑以后,很多用户使用MAC系统还是很不习惯,都担心许多Windows软件不能使用了。那么苹果电脑装双系统有什么好处和坏处呢?很多用户都不清楚苹果电脑装双系统利弊在哪,今天,小编就把苹果电脑装双系统利弊有哪些的介绍分享给大家。 更多…

小米笔记本双固态硬盘安装win10+ubantu20双系统 实录

一.基本信息 电脑型号:小米笔记本Pro15.6 显卡型号:NVIDIA GeForce GTX 1050 Max-Q 原装固态硬盘:英特尔 SSDPEKNW010T8 容量:1024G 加装固态硬盘:三星860 EVO M.2接口(SATA总线) 容量&a…

笔记本双系统安装Ubuntu 20.04.3 LTS没有WIFI的解决方法

笔记本双系统安装Ubuntu 20.04.3 LTS没有WIFI 解决方法 最近使用华硕笔记本安装双系统(win10 ubuntu20.04.3 LTS),安装好之后发现Ubuntu系统的设置里面没有wifi功能,就无法连接WIFI,只能使用有线网来上网。弄了好久终…

双系统笔记本 android,电脑安装双系统 微软 安卓 实现一机多用

在windows系统的电脑上再安装一个安卓系统,实现双系统自由切换。在windows系统中操作运行原来的所有程序,干该干的事;在安卓系统中运行安卓软件,比如 安装游戏APP玩手游、安装“电视家”APP取代机顶盒、安装网络教育APP上网课&…

双系统笔记本 android,安卓不止平板有 教你使用笔记本装安卓,和WINDOWS一起双系统亦可以的哦!(图解)...

随着新iPad的发售,苹果CEO蒂姆库克发表了“后PC时代”言论都表明平板市场的迅速扩张。不过现在我们在日常工作中还是离不开笔记本电脑的。通过开发移植,笔记本现在也可以安装只有移动设备才能使用的安卓系统,并实现大部分功能,同时…

华为笔记本换装linux双系统,matebook的win+ubuntu双系统安装方法

本帖最后由 苍星归来 于 2016-11-2 21:55 编辑 相信大家在使用MateBook系统时想安装第三方的系统来体验下别的系统怎么样。今天我就拿UBUNTU系统安装来给大伙抛砖引玉下。 在我体验UNUBTU系统时除了发现蓝牙驱动时不时的丢失外,别的硬件没有问题。 我们要安装新系统那就要先下…

联想服务器双系统安装教程,联想笔记本装win8/win10双系统教程

不少网友对于新win10系统都是持可接受态度,但还是会担心新系统不好用造成电脑日常使用困扰,那很多网友就比较热衷于双系统安装,但不少用户对于双系统安装都比较不了解,那今天给分享分享联想笔记本win8win10双系统安装教程。 准备工…

笔记本安装双系统教程

双系统教程很多,此处搬运官方教程的Link,非常全面和详细,既作为自己笔记使用,也供读者借鉴; dell计算机双系统安装教程: Ubuntu 以及 Windows 8 至 Windows 11 中的某个操作系统 虽然这是基于dell笔记本的教…