首页 > 编程知识 正文

python h5实例,python怎么打开文件

时间:2023-05-04 23:34:16 阅读:130061 作者:2163

文章前言如何整理HDF和h5摘要数据下载HDFView安装到windows10系统安装后,打开后黑框闪烁的解决方法python对h5文件的操作批量生成h5文件h5文件的提取,nii文件

前言

一般来说,深度学习的训练数据和训练后的参数会存储为h5格式的文件。 对于培训数据,在深度学习中培训大量数据时,从硬盘加载、预处理并传递到网络是一个非常耗时的过程。 其中,从硬盘读取图像需要花费时间,更可以保存到h5文件等一个文件中。

那么h5文件对于深度学习训练具有什么优势呢?

如果可以支持大量数据且数据集大小大于RAM大小,则可以增加培训的batch size可以支持shape HDF和h5配置文件那么什么是HDF5文件呢?

H5文件是分层数据格式的第五代版本(HDF5 ),是用于存储科学数据的文件格式和库文件。

H5是开源文件格式,支持大型复杂的异构数据。 使用类似H5“文件目录”的结构,可以通过多种结构化方式组织文件中的数据,就像组织计算机上的文件一样。 H5格式还可以嵌入元数据以提供自描述性。 如何组织数据h5文件有两种主要结构:组“group”和数据集“dataset”。 一个h5文件夹是“group”和“dataset”一体化的容器。

group :包含零个或多个数据集(数据集)或组(组)实例和支持的元数据的组结构。 dataset :一组类似于数组组织格式的数据,与numpy数组类似。 一个dataset是numpy.ndarray。 具体的dataset包括图像、表格、pdf文件和excel。 group和dataset的处理在许多方面类似于UNIX目录和文件的处理。 与UNIX目录和文件一样,H5文件中的对象通常通过指定完整(或绝对)路径名来描述。H5 group

h5 group是包含0个或多个H5对象的结构。 一个小组有两个部分。

组头:包含名称和属性列表的组符号表:属于此组对象的列表H5 datasets

数据集存储在文件中,有两个部分: header和数据数组

header包含数据集数组部分所需的信息,以及说明或注释数据集的元数据。 header信息包括对象的名称、维、数据类型、数据本身如何存储在磁盘上的信息,以及库用于加速数据集访问和保持文件完整性的其他信息。

HDFView HDFView是H5文件的可视化工具。

单击HDFView官网下载和安装linkcreatefreeaccount创建帐户(只有创建帐户后,才能免费下载该网站的内容),然后单击Downloads

例如,我的电脑是64位Windows系统,我下载了名为hdf view-3.1.2-win 10 _ 64-vs16.zip的文件,下载并解压缩,然后下载. exe文件

安装windows10系统后,打开出现黑框闪回的解决方法安装后,一直打不开软件,发现出现闪回现象,找不到哪里有问题,百度查顺序如下。

配置环境路径:我的电脑-属性-高级系统设置-高级-环境变量-系统变量-变量名称为" PATH ",单击编辑,在路径后继续添加。

c :usersadministratorappdatalocalhdf _ grouphdf viewruntimebin

已确保重新打开HDFView不会闪回。

使用python处理h5文件批量创建h5文件通过深度学习创建训练集h5文件的示例:

输入训练集(图像)的原图和级别,输出h5文件

导入H5 pyimportsimpleitkassitkimportosdefgethdf 5文件(imgpath,labelpath,name='HDF5Filename ' ) 3360f=H5py.file ) ' w ' ()//(如果需要,h5存储路径imglist=OS.list dir (imgpath ) ) /培训集原始图路径中的所有文件名for i in imglist: //根据需要依次遍历所有图像groupname=I.split ).nimglist ),在文件中添加new _ group=f.create _ group (group name )/creatgroupist

读取图片 arr = sitk.GetArrayFromImage(image) //将图片转换为数组形式 Afterarr = (((arr- arr.min()) / (arr.max() - arr.min())) * 255).astype('uint8') //进行归一化 new_group.create_dataset('volume', dtype='uint8', data=Afterarr) //create dataset labellist = os.listdir(labelpath) //获取训练集label路径下所有的文件名 for j in labellist: if i == j: label = sitk.ReadImage(os.path.join(labelpath, j)) label_arr = sitk.GetArrayFromImage(label) label = label_arr.astype('uint8') new_group.create_dataset('segmentation', dtype='uint8', data=label) //根据需求命名 f.close()imgpath = 'E:\imageTr' //训练集原图的路径labelpath = 'E:\labelTr' //训练集label的路径GetHDF5File(imgpath, labelpath, 'HDF5Filename') //根据需要修改h5的文件名, //这里是HDF5Filename h5文件的提取,另存为nii文件 import h5pyimport osimport numpy as npimport SimpleITK as sitkdataset = h5py.File('F:\xxx.h5', 'r') //指定h5文件的路径savepath = "F:\..." //另存为nii文件的路径first_level_keys = [key for key in dataset.keys()]for first_level_key in first_level_keys: if not os.path.exists(os.path.join(savepath, first_level_key)): os.makedirs(os.path.join(savepath, first_level_key)) second_level_keys = [key for key in dataset[first_level_key].keys()] for second_level_key in second_level_keys: if not os.path.exists(os.path.join(savepath, first_level_key, second_level_key)): os.makedirs(os.path.join(savepath, first_level_key, second_level_key)) image_arr = np.array(dataset[first_level_key][second_level_key]) img = sitk.GetImageFromArray(image_arr) img.SetSpacing([1.0, 1.0, 1.0]) //根据需求修改spacing sitk.WriteImage(img, os.path.join(savepath, first_level_key, second_level_key, second_level_key + ".nii.gz")) print(first_level_key)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。