基于HDF5的高维数据有效

Posted 法师漂流

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于HDF5的高维数据有效相关的知识,希望对你有一定的参考价值。

代码:

https://github.com/JiJingYu/concat_dataset

Demo特点

该代码基于自行编写的H5Imageset类与pytorch中的ConcatDataset接口,主要有以下特点:

  1. 有效利用了hdf5读取数据时直接与硬盘交互,无需载入整个数据集到内存中的优势,降低内存开销。

  2. 重载了python内置的__getitem__()方法,使得数据动态生成,无需独立保存数据,降低磁盘开销。

  3. 利用pytorch内置的ConcatDataset类,高效合并多组H5Imageset数据集,统一调用,统一索引。

使用场景

该代码通常用于高维数据,如光场图像(4维),高光谱图像(3维),该类数据有数据量大,处理速度有限等特点。 传统的直接处理数据集、直接生成数据集、保存数据集的方法会使得数据量暴涨。例如ICVL数据集原始数据约30GB, patch=64, stride=16分割之后,数据集会暴涨至500GB,给磁盘、IO和内存带来巨大压力。 用该代码可在不增加磁盘占用,不损失数据集IO时间的前提下,对数据集做有效的预处理,如按patch分割等, 同时可以大幅度降低内存占用。

其他

由于空间有限,此处以少量RGB图像为例,简单展示demo用途。

made by 法师漂流

以上是关于基于HDF5的高维数据有效的主要内容,如果未能解决你的问题,请参考以下文章

基于轮廓系数的高维数据K-Means聚类算法处理

为基于 2D 条件的子集索引大型 3D HDF5 数据集

ECCV | 达摩院基于局部平坦性的流形学习框架DLME

一种基于多属性权重的分类数据子空间聚类算法

如何有效地将数据附加到 C 中的 HDF5 表?

大 HDF5 数据集,如何在每个 epoch 后有效地洗牌